spreewald 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +6 -3
- data/lib/spreewald/email_steps.rb +3 -1
- data/lib/spreewald/web_steps.rb +11 -14
- data/lib/spreewald_support/version.rb +1 -1
- data/lib/spreewald_support/web_steps_helpers.rb +17 -0
- data/tests/rails-3_capybara-1/Gemfile.lock +1 -1
- data/tests/rails-3_capybara-2/Gemfile.lock +1 -1
- data/tests/rails-4_capybara-3/Gemfile.lock +1 -1
- data/tests/rails-6_capybara-3/Gemfile.lock +1 -1
- data/tests/shared/app/views/forms/disabled_elements.html.haml +18 -0
- data/tests/shared/app/views/mailer/html_email_with_links.haml +2 -0
- data/tests/shared/app/views/mailer/text_email_with_links.text.erb +1 -0
- data/tests/shared/features/shared/web_steps.feature +7 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59c446ad46ae093a7bb103d7e4959dbbc7e29327cbc30e5730aff221f8488e36
|
4
|
+
data.tar.gz: e23e4bd833a6234e6ce2b4e6ab104f102708bab13ab54f10aad8b97df08cd39b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d7b6e7ddd55b75433d7c800045c09f68b7175646de8a3f9ac11a5741ee83ce39c22d8bb5a8b5d9d77b4d22df01eda5de51093de4a76cabf73ae354308b12abc
|
7
|
+
data.tar.gz: bc169b566a8878be0ad26b2b1522b960b57772d80d135ffbe4a34476c673282d75b7666d9ccf14a585c229739b3d543620f578c3b59a7e6f62cf036a5df2f90c
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
5
5
|
|
6
|
+
## 2.8.0
|
7
|
+
- Add radio buttons to the `the "..." (field|button|checkbox|radio button) should( not)? be disabled` step.
|
8
|
+
|
9
|
+
## 2.7.2
|
10
|
+
- Fix the step `I follow the ... link in the email` if the email contains non-HTTP(S) links
|
11
|
+
|
6
12
|
## 2.7.1
|
7
13
|
- Support RFC-compliant encoding of filenames in `Content-Disposition` header (e.g. send_data), as provided by Rails 6.
|
8
14
|
|
data/README.md
CHANGED
@@ -247,6 +247,9 @@ the step definitions.
|
|
247
247
|
|
248
248
|
* **When I follow the (first|second|third)? link in the e?mail**
|
249
249
|
|
250
|
+
Please note that this step will only follow HTTP and HTTPS links.
|
251
|
+
Other links (such as mailto: or ftp:// links) are ignored.
|
252
|
+
|
250
253
|
|
251
254
|
* **Then no e?mail should have been sent**
|
252
255
|
|
@@ -680,7 +683,7 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
680
683
|
|
681
684
|
Then "Sponsor" should link to "http://makandra.com/"
|
682
685
|
|
683
|
-
Don't forget the trailing slash. Otherwise you'll get the error
|
686
|
+
Don't forget the trailing slash. Otherwise you'll get the error
|
684
687
|
expected: /http:\/\/makandra.com(\?[^\/]*)?$/
|
685
688
|
got: "http://makandra.com/" (using =~)
|
686
689
|
|
@@ -715,9 +718,9 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
715
718
|
* **When I enter "..." into the browser dialog**
|
716
719
|
|
717
720
|
|
718
|
-
* **Then the "..." (field|button|checkbox) should( not)? be disabled**
|
721
|
+
* **Then the "..." (field|button|checkbox|radio button) should( not)? be disabled**
|
719
722
|
|
720
|
-
Tests that an input, button or
|
723
|
+
Tests that an input, button, checkbox or radio button with the given label is disabled.
|
721
724
|
|
722
725
|
|
723
726
|
* **Then the "..." field should( not)? be visible**
|
@@ -65,6 +65,8 @@ Then /^(an|no) e?mail should have been sent((?: |and|with|from "[^"]+"|bcc "[^"]
|
|
65
65
|
end
|
66
66
|
end.overridable
|
67
67
|
|
68
|
+
# Please note that this step will only follow HTTP and HTTPS links.
|
69
|
+
# Other links (such as mailto: or ftp:// links) are ignored.
|
68
70
|
When /^I follow the (first|second|third)? ?link in the e?mail$/ do |index_in_words|
|
69
71
|
mail = @mail || ActionMailer::Base.deliveries.last
|
70
72
|
index = { nil => 0, 'first' => 0, 'second' => 1, 'third' => 2 }[index_in_words]
|
@@ -72,7 +74,7 @@ When /^I follow the (first|second|third)? ?link in the e?mail$/ do |index_in_wor
|
|
72
74
|
|
73
75
|
paths = if mail.html_part
|
74
76
|
dom = Nokogiri::HTML(mail.html_part.body.to_s)
|
75
|
-
(dom / 'a[href]').map { |a| a['href'].match(url_pattern)[1] }
|
77
|
+
(dom / 'a[href]').map { |a| a['href'].match(url_pattern) }.compact.map { |match| match[1] }
|
76
78
|
else
|
77
79
|
mail_body = MailFinder.email_text_body(mail).to_s
|
78
80
|
mail_body.scan(url_pattern).flatten(1)
|
data/lib/spreewald/web_steps.rb
CHANGED
@@ -606,7 +606,7 @@ end.overridable(priority: -5) # priority lower than within
|
|
606
606
|
#
|
607
607
|
# Then "Sponsor" should link to "http://makandra.com/"
|
608
608
|
#
|
609
|
-
# Don't forget the trailing slash. Otherwise you'll get the error
|
609
|
+
# Don't forget the trailing slash. Otherwise you'll get the error
|
610
610
|
# expected: /http:\/\/makandra.com(\?[^\/]*)?$/
|
611
611
|
# got: "http://makandra.com/" (using =~)
|
612
612
|
Then /^"([^"]*)" should link to "([^"]*)"$/ do |link_label, target|
|
@@ -670,23 +670,20 @@ When /^I enter "([^"]*)" into the browser dialog$/ do |text|
|
|
670
670
|
end
|
671
671
|
end.overridable
|
672
672
|
|
673
|
-
# Tests that an input, button or
|
674
|
-
Then /^the "([^\"]*)" (field|button|checkbox) should( not)? be disabled$/ do |label, kind, negate|
|
673
|
+
# Tests that an input, button, checkbox or radio button with the given label is disabled.
|
674
|
+
Then /^the "([^\"]*)" (field|button|checkbox|radio button) should( not)? be disabled$/ do |label, kind, negate|
|
675
|
+
element = if kind == 'button'
|
676
|
+
find_with_disabled(:button, label)
|
677
|
+
else
|
678
|
+
find_with_disabled(:field, label)
|
679
|
+
end
|
680
|
+
|
675
681
|
if Spreewald::Comparison.compare_versions(Capybara::VERSION, :<, "2.1")
|
676
|
-
if kind == 'field' || kind == 'checkbox'
|
677
|
-
element = find_field(label)
|
678
|
-
else
|
679
|
-
element = find_button(label)
|
680
|
-
end
|
681
682
|
expect(element[:disabled]).send(negate ? :to : :not_to, eq(nil))
|
682
683
|
else
|
683
|
-
|
684
|
-
element = find_field(label, disabled: !negate)
|
685
|
-
else
|
686
|
-
element = find_button(label, disabled: !negate)
|
687
|
-
end
|
688
|
-
expect(element).to be_present
|
684
|
+
expect(!!element.disabled?).to be !negate
|
689
685
|
end
|
686
|
+
|
690
687
|
end.overridable
|
691
688
|
|
692
689
|
# Tests that a field with the given label is visible.
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'spreewald_support/comparison'
|
2
|
+
|
1
3
|
module WebStepsHelpers
|
2
4
|
|
3
5
|
def assert_visible(options)
|
@@ -8,6 +10,21 @@ module WebStepsHelpers
|
|
8
10
|
visibility_test(options.merge(:expectation => :hidden))
|
9
11
|
end
|
10
12
|
|
13
|
+
def find_with_disabled(*args, **options, &optional_filter_block)
|
14
|
+
if Spreewald::Comparison.compare_versions(Capybara::VERSION, :<, "2.0")
|
15
|
+
find(:xpath, XPath::HTML.send(args[0], args[1])) # Versions < 2.0 will find both enabled and disabled fields, nothing to do
|
16
|
+
elsif Spreewald::Comparison.compare_versions(Capybara::VERSION, :<, "2.6")
|
17
|
+
begin
|
18
|
+
find(*args, **options, disabled: false, &optional_filter_block)
|
19
|
+
rescue Capybara::ElementNotFound
|
20
|
+
find(*args, **options, disabled: true, &optional_filter_block)
|
21
|
+
end
|
22
|
+
else
|
23
|
+
options_with_disabled = { disabled: :all }.merge(options)
|
24
|
+
find(*args, **options_with_disabled, &optional_filter_block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
11
28
|
private
|
12
29
|
|
13
30
|
def visibility_test(options)
|
@@ -51,3 +51,21 @@
|
|
51
51
|
|
52
52
|
= label_tag 'enabled_field_2', 'Enabled field #2'
|
53
53
|
= text_field_tag 'enabled_field_2', 'value'
|
54
|
+
|
55
|
+
-# radio buttons
|
56
|
+
= form_tag do
|
57
|
+
- selected = false
|
58
|
+
= label_tag 'disabled_radio_1', 'Disabled radio button #1'
|
59
|
+
= radio_button_tag 'disabled_radio', '1', selected, disabled: true
|
60
|
+
|
61
|
+
= label_tag 'disabled_radio_2', 'Disabled radio button #2'
|
62
|
+
= radio_button_tag 'disabled_radio', '2', selected, disabled: ''
|
63
|
+
|
64
|
+
= label_tag 'disabled_radio_3', 'Disabled radio button #3'
|
65
|
+
= radio_button_tag 'disabled_radio', '3', selected, disabled: 'aaa'
|
66
|
+
|
67
|
+
= label_tag 'enabled_radio_1', 'Enabled radio button #1'
|
68
|
+
= radio_button_tag 'enabled_radio', '1', selected, disabled: false
|
69
|
+
|
70
|
+
= label_tag 'enabled_radio_2', 'Enabled radio button #2'
|
71
|
+
= radio_button_tag 'enabled_radio', '2', selected
|
@@ -3,4 +3,6 @@
|
|
3
3
|
%body
|
4
4
|
%img(src="https://www.example.com/image.png")
|
5
5
|
%a(href="https://www.example.com/static_pages/link_target") Click me
|
6
|
+
%a(href="mailto:user@example.com") mailto links should be ignored
|
7
|
+
%a(href="ftp://ftp.example.com/") FTP links are also ignored
|
6
8
|
%a(href="https://www.example.com/static_pages/second_link_target") Other link
|
@@ -85,7 +85,7 @@ Feature: Web steps
|
|
85
85
|
Scenario: /^I go back$/
|
86
86
|
Given I go to "/static_pages/link_to_home"
|
87
87
|
And I follow "Home"
|
88
|
-
|
88
|
+
|
89
89
|
When I go back
|
90
90
|
Then I should be on "/static_pages/link_to_home"
|
91
91
|
|
@@ -341,6 +341,12 @@ Feature: Web steps
|
|
341
341
|
But the "Enabled field #1" field should not be disabled
|
342
342
|
And the "Enabled field #2" field should not be disabled
|
343
343
|
|
344
|
+
# radio buttons
|
345
|
+
And the "Disabled radio button #1" radio button should be disabled
|
346
|
+
And the "Disabled radio button #2" radio button should be disabled
|
347
|
+
And the "Disabled radio button #3" radio button should be disabled
|
348
|
+
But the "Enabled radio button #1" radio button should not be disabled
|
349
|
+
And the "Enabled radio button #2" radio button should not be disabled
|
344
350
|
|
345
351
|
Scenario: /^the window should be titled "([^"]*)"$/
|
346
352
|
When I go to "/static_pages/home"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreewald
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Kraze
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -410,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
410
410
|
- !ruby/object:Gem::Version
|
411
411
|
version: '0'
|
412
412
|
requirements: []
|
413
|
-
rubygems_version: 3.
|
413
|
+
rubygems_version: 3.1.2
|
414
414
|
signing_key:
|
415
415
|
specification_version: 4
|
416
416
|
summary: Collection of useful cucumber steps.
|