capybara_minitest_spec 0.2.2 → 1.0.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.
- data/.rvmrc +1 -1
- data/HISTORY.md +0 -0
- data/README.md +31 -32
- data/Rakefile +2 -2
- data/capybara_minitest_spec.gemspec +6 -4
- data/lib/capybara_minitest_spec.rb +53 -6
- data/lib/capybara_minitest_spec/test_name.rb +67 -0
- data/lib/capybara_minitest_spec/version.rb +1 -1
- data/spec/capybara_minitest_spec.spec.rb +13 -0
- data/spec/capybara_rspec_matchers.spec.rb +580 -0
- data/spec/helper.rb +39 -0
- data/{test_app → spec/test_app}/test_app.rb +0 -0
- data/{test_app → spec/test_app}/views/buttons.erb +0 -0
- data/{test_app → spec/test_app}/views/fieldsets.erb +0 -0
- data/{test_app → spec/test_app}/views/form.erb +0 -0
- data/{test_app → spec/test_app}/views/frame_one.erb +0 -0
- data/{test_app → spec/test_app}/views/frame_two.erb +0 -0
- data/{test_app → spec/test_app}/views/header_links.erb +0 -0
- data/{test_app → spec/test_app}/views/host_links.erb +0 -0
- data/{test_app → spec/test_app}/views/popup_one.erb +0 -0
- data/{test_app → spec/test_app}/views/popup_two.erb +0 -0
- data/{test_app → spec/test_app}/views/postback.erb +0 -0
- data/{test_app → spec/test_app}/views/tables.erb +0 -0
- data/{test_app → spec/test_app}/views/with_html.erb +0 -0
- data/{test_app → spec/test_app}/views/with_html_entities.erb +0 -0
- data/{test_app → spec/test_app}/views/with_js.erb +0 -0
- data/{test_app → spec/test_app}/views/with_scope.erb +0 -0
- data/{test_app → spec/test_app}/views/with_simple_html.erb +0 -0
- data/{test_app → spec/test_app}/views/within_frames.erb +0 -0
- data/{test_app → spec/test_app}/views/within_popups.erb +0 -0
- data/spec/test_name.spec.rb +47 -0
- metadata +142 -121
- data/lib/capybara_minitest_spec/matcher.rb +0 -126
- data/test/capybara_node_matchers_spec.rb +0 -471
- data/test/custom_matcher_spec.rb +0 -29
- data/test/matcher_spec.rb +0 -45
- data/test/spec_helper.rb +0 -14
- data/test_app/driver.rb +0 -297
- data/test_app/fixtures/capybara.jpg +0 -3
- data/test_app/fixtures/test_file.txt +0 -1
- data/test_app/public/test.js +0 -43
- data/test_app/session.rb +0 -154
- data/test_app/session/all_spec.rb +0 -78
- data/test_app/session/attach_file_spec.rb +0 -73
- data/test_app/session/check_spec.rb +0 -65
- data/test_app/session/choose_spec.rb +0 -26
- data/test_app/session/click_button_spec.rb +0 -304
- data/test_app/session/click_link_or_button_spec.rb +0 -36
- data/test_app/session/click_link_spec.rb +0 -119
- data/test_app/session/current_host_spec.rb +0 -68
- data/test_app/session/current_url_spec.rb +0 -15
- data/test_app/session/fill_in_spec.rb +0 -125
- data/test_app/session/find_button_spec.rb +0 -18
- data/test_app/session/find_by_id_spec.rb +0 -18
- data/test_app/session/find_field_spec.rb +0 -26
- data/test_app/session/find_link_spec.rb +0 -19
- data/test_app/session/find_spec.rb +0 -149
- data/test_app/session/first_spec.rb +0 -105
- data/test_app/session/has_button_spec.rb +0 -32
- data/test_app/session/has_content_spec.rb +0 -106
- data/test_app/session/has_css_spec.rb +0 -243
- data/test_app/session/has_field_spec.rb +0 -192
- data/test_app/session/has_link_spec.rb +0 -37
- data/test_app/session/has_select_spec.rb +0 -129
- data/test_app/session/has_selector_spec.rb +0 -129
- data/test_app/session/has_table_spec.rb +0 -96
- data/test_app/session/has_xpath_spec.rb +0 -123
- data/test_app/session/headers.rb +0 -19
- data/test_app/session/javascript.rb +0 -289
- data/test_app/session/response_code.rb +0 -19
- data/test_app/session/select_spec.rb +0 -113
- data/test_app/session/text_spec.rb +0 -19
- data/test_app/session/uncheck_spec.rb +0 -21
- data/test_app/session/unselect_spec.rb +0 -61
- data/test_app/session/within_spec.rb +0 -178
@@ -1,19 +0,0 @@
|
|
1
|
-
shared_examples_for "session with status code support" do
|
2
|
-
describe '#status_code' do
|
3
|
-
it "should return response codes" do
|
4
|
-
@session.visit('/with_simple_html')
|
5
|
-
@session.status_code.should == 200
|
6
|
-
end
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
shared_examples_for "session without status code support" do
|
11
|
-
describe "#status_code" do
|
12
|
-
before{ @session.visit('/with_simple_html') }
|
13
|
-
it "should raise an error" do
|
14
|
-
running {
|
15
|
-
@session.status_code
|
16
|
-
}.should raise_error(Capybara::NotSupportedByDriverError)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,113 +0,0 @@
|
|
1
|
-
shared_examples_for "select" do
|
2
|
-
describe "#select" do
|
3
|
-
before do
|
4
|
-
@session.visit('/form')
|
5
|
-
end
|
6
|
-
|
7
|
-
it "should return value of the first option" do
|
8
|
-
@session.find_field('Title').value.should == 'Mrs'
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should return value of the selected option" do
|
12
|
-
@session.select("Miss", :from => 'Title')
|
13
|
-
@session.find_field('Title').value.should == 'Miss'
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should return the value attribute rather than content if present" do
|
17
|
-
@session.find_field('Locale').value.should == 'en'
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should select an option from a select box by id" do
|
21
|
-
@session.select("Finish", :from => 'form_locale')
|
22
|
-
@session.click_button('awesome')
|
23
|
-
extract_results(@session)['locale'].should == 'fi'
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should select an option from a select box by label" do
|
27
|
-
@session.select("Finish", :from => 'Locale')
|
28
|
-
@session.click_button('awesome')
|
29
|
-
extract_results(@session)['locale'].should == 'fi'
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should select an option without giving a select box" do
|
33
|
-
@session.select("Mr")
|
34
|
-
@session.click_button('awesome')
|
35
|
-
extract_results(@session)['title'].should == 'Mr'
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should favour exact matches to option labels" do
|
39
|
-
@session.select("Mr", :from => 'Title')
|
40
|
-
@session.click_button('awesome')
|
41
|
-
extract_results(@session)['title'].should == 'Mr'
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should escape quotes" do
|
45
|
-
@session.select("John's made-up language", :from => 'Locale')
|
46
|
-
@session.click_button('awesome')
|
47
|
-
extract_results(@session)['locale'].should == 'jo'
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should obey from" do
|
51
|
-
@session.select("Miss", :from => "Other title")
|
52
|
-
@session.click_button('awesome')
|
53
|
-
results = extract_results(@session)
|
54
|
-
results['other_title'].should == "Miss"
|
55
|
-
results['title'].should_not == "Miss"
|
56
|
-
end
|
57
|
-
|
58
|
-
it "show match labels with preceding or trailing whitespace" do
|
59
|
-
@session.select("Lojban", :from => 'Locale')
|
60
|
-
@session.click_button('awesome')
|
61
|
-
extract_results(@session)['locale'].should == 'jbo'
|
62
|
-
end
|
63
|
-
|
64
|
-
context "with a locator that doesn't exist" do
|
65
|
-
it "should raise an error" do
|
66
|
-
running { @session.select('foo', :from => 'does not exist') }.should raise_error(Capybara::ElementNotFound)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "with an option that doesn't exist" do
|
71
|
-
it "should raise an error" do
|
72
|
-
running { @session.select('Does not Exist', :from => 'form_locale') }.should raise_error(Capybara::ElementNotFound)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
context "with multiple select" do
|
77
|
-
it "should return an empty value" do
|
78
|
-
@session.find_field('Language').value.should == []
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should return value of the selected options" do
|
82
|
-
@session.select("Ruby", :from => 'Language')
|
83
|
-
@session.select("Javascript", :from => 'Language')
|
84
|
-
@session.find_field('Language').value.should include('Ruby', 'Javascript')
|
85
|
-
end
|
86
|
-
|
87
|
-
it "should select one option" do
|
88
|
-
@session.select("Ruby", :from => 'Language')
|
89
|
-
@session.click_button('awesome')
|
90
|
-
extract_results(@session)['languages'].should == ['Ruby']
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should select multiple options" do
|
94
|
-
@session.select("Ruby", :from => 'Language')
|
95
|
-
@session.select("Javascript", :from => 'Language')
|
96
|
-
@session.click_button('awesome')
|
97
|
-
extract_results(@session)['languages'].should include('Ruby', 'Javascript')
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should remain selected if already selected" do
|
101
|
-
@session.select("Ruby", :from => 'Language')
|
102
|
-
@session.select("Javascript", :from => 'Language')
|
103
|
-
@session.select("Ruby", :from => 'Language')
|
104
|
-
@session.click_button('awesome')
|
105
|
-
extract_results(@session)['languages'].should include('Ruby', 'Javascript')
|
106
|
-
end
|
107
|
-
|
108
|
-
it "should return value attribute rather than content if present" do
|
109
|
-
@session.find_field('Underwear').value.should include('thermal')
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
shared_examples_for "text" do
|
2
|
-
describe '#text' do
|
3
|
-
before do
|
4
|
-
@session.visit('/with_simple_html')
|
5
|
-
end
|
6
|
-
|
7
|
-
it "should print the text of the page" do
|
8
|
-
@session.text.should == 'Bar'
|
9
|
-
end
|
10
|
-
|
11
|
-
context "with css as default selector" do
|
12
|
-
before { Capybara.default_selector = :css }
|
13
|
-
it "should print the text of the page" do
|
14
|
-
@session.text.should == 'Bar'
|
15
|
-
end
|
16
|
-
after { Capybara.default_selector = :xpath }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
shared_examples_for "uncheck" do
|
2
|
-
describe "#uncheck" do
|
3
|
-
before do
|
4
|
-
@session.visit('/form')
|
5
|
-
end
|
6
|
-
|
7
|
-
it "should uncheck a checkbox by id" do
|
8
|
-
@session.uncheck("form_pets_hamster")
|
9
|
-
@session.click_button('awesome')
|
10
|
-
extract_results(@session)['pets'].should include('dog')
|
11
|
-
extract_results(@session)['pets'].should_not include('hamster')
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should uncheck a checkbox by label" do
|
15
|
-
@session.uncheck("Hamster")
|
16
|
-
@session.click_button('awesome')
|
17
|
-
extract_results(@session)['pets'].should include('dog')
|
18
|
-
extract_results(@session)['pets'].should_not include('hamster')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
shared_examples_for "unselect" do
|
2
|
-
describe "#unselect" do
|
3
|
-
before do
|
4
|
-
@session.visit('/form')
|
5
|
-
end
|
6
|
-
|
7
|
-
context "with multiple select" do
|
8
|
-
it "should unselect an option from a select box by id" do
|
9
|
-
@session.unselect('Commando', :from => 'form_underwear')
|
10
|
-
@session.click_button('awesome')
|
11
|
-
extract_results(@session)['underwear'].should include('Briefs', 'Boxer Briefs')
|
12
|
-
extract_results(@session)['underwear'].should_not include('Commando')
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should unselect an option without a select box" do
|
16
|
-
@session.unselect('Commando')
|
17
|
-
@session.click_button('awesome')
|
18
|
-
extract_results(@session)['underwear'].should include('Briefs', 'Boxer Briefs')
|
19
|
-
extract_results(@session)['underwear'].should_not include('Commando')
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should unselect an option from a select box by label" do
|
23
|
-
@session.unselect('Commando', :from => 'Underwear')
|
24
|
-
@session.click_button('awesome')
|
25
|
-
extract_results(@session)['underwear'].should include('Briefs', 'Boxer Briefs')
|
26
|
-
extract_results(@session)['underwear'].should_not include('Commando')
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should favour exact matches to option labels" do
|
30
|
-
@session.unselect("Briefs", :from => 'Underwear')
|
31
|
-
@session.click_button('awesome')
|
32
|
-
extract_results(@session)['underwear'].should include('Commando', 'Boxer Briefs')
|
33
|
-
extract_results(@session)['underwear'].should_not include('Briefs')
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should escape quotes" do
|
37
|
-
@session.unselect("Frenchman's Pantalons", :from => 'Underwear')
|
38
|
-
@session.click_button('awesome')
|
39
|
-
extract_results(@session)['underwear'].should_not include("Frenchman's Pantalons")
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
context "with single select" do
|
44
|
-
it "should raise an error" do
|
45
|
-
running { @session.unselect("English", :from => 'form_locale') }.should raise_error(Capybara::UnselectNotAllowed)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "with a locator that doesn't exist" do
|
50
|
-
it "should raise an error" do
|
51
|
-
running { @session.unselect('foo', :from => 'does not exist') }.should raise_error(Capybara::ElementNotFound)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
context "with an option that doesn't exist" do
|
56
|
-
it "should raise an error" do
|
57
|
-
running { @session.unselect('Does not Exist', :from => 'form_underwear') }.should raise_error(Capybara::ElementNotFound)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,178 +0,0 @@
|
|
1
|
-
shared_examples_for "within" do
|
2
|
-
describe '#within' do
|
3
|
-
before do
|
4
|
-
@session.visit('/with_scope')
|
5
|
-
end
|
6
|
-
|
7
|
-
context "with CSS selector" do
|
8
|
-
it "should click links in the given scope" do
|
9
|
-
@session.within(:css, "ul li[contains('With Simple HTML')]") do
|
10
|
-
@session.click_link('Go')
|
11
|
-
end
|
12
|
-
@session.body.should include('Bar')
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should assert content in the given scope" do
|
16
|
-
@session.within(:css, "#for_foo") do
|
17
|
-
@session.should_not have_content('First Name')
|
18
|
-
end
|
19
|
-
@session.should have_content('First Name')
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should accept additional options" do
|
23
|
-
@session.within(:css, "ul li", :text => 'With Simple HTML') do
|
24
|
-
@session.click_link('Go')
|
25
|
-
end
|
26
|
-
@session.body.should include('Bar')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "with XPath selector" do
|
31
|
-
it "should click links in the given scope" do
|
32
|
-
@session.within(:xpath, "//li[contains(.,'With Simple HTML')]") do
|
33
|
-
@session.click_link('Go')
|
34
|
-
end
|
35
|
-
@session.body.should include('Bar')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "with the default selector" do
|
40
|
-
it "should use XPath" do
|
41
|
-
@session.within("//li[contains(., 'With Simple HTML')]") do
|
42
|
-
@session.click_link('Go')
|
43
|
-
end
|
44
|
-
@session.body.should include('Bar')
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "with Node rather than selector" do
|
49
|
-
it "should click links in the given scope" do
|
50
|
-
node_of_interest = @session.find(:css, "ul li[contains('With Simple HTML')]")
|
51
|
-
|
52
|
-
@session.within(node_of_interest) do
|
53
|
-
@session.click_link('Go')
|
54
|
-
end
|
55
|
-
@session.body.should include('Bar')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "with the default selector set to CSS" do
|
60
|
-
before { Capybara.default_selector = :css }
|
61
|
-
it "should use CSS" do
|
62
|
-
@session.within("ul li[contains('With Simple HTML')]") do
|
63
|
-
@session.click_link('Go')
|
64
|
-
end
|
65
|
-
@session.body.should include('Bar')
|
66
|
-
end
|
67
|
-
after { Capybara.default_selector = :xpath }
|
68
|
-
end
|
69
|
-
|
70
|
-
context "with click_link" do
|
71
|
-
it "should click links in the given scope" do
|
72
|
-
@session.within("//li[contains(.,'With Simple HTML')]") do
|
73
|
-
@session.click_link('Go')
|
74
|
-
end
|
75
|
-
@session.body.should include('Bar')
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with nested scopes" do
|
79
|
-
it "should respect the inner scope" do
|
80
|
-
@session.within("//div[@id='for_bar']") do
|
81
|
-
@session.within(".//li[contains(.,'Bar')]") do
|
82
|
-
@session.click_link('Go')
|
83
|
-
end
|
84
|
-
end
|
85
|
-
@session.body.should include('Another World')
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should respect the outer scope" do
|
89
|
-
@session.within("//div[@id='another_foo']") do
|
90
|
-
@session.within(".//li[contains(.,'With Simple HTML')]") do
|
91
|
-
@session.click_link('Go')
|
92
|
-
end
|
93
|
-
end
|
94
|
-
@session.body.should include('Hello world')
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should raise an error if the scope is not found on the page" do
|
99
|
-
running {
|
100
|
-
@session.within("//div[@id='doesnotexist']") do
|
101
|
-
end
|
102
|
-
}.should raise_error(Capybara::ElementNotFound)
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should restore the scope when an error is raised" do
|
106
|
-
running {
|
107
|
-
@session.within("//div[@id='for_bar']") do
|
108
|
-
running {
|
109
|
-
running {
|
110
|
-
@session.within(".//div[@id='doesnotexist']") do
|
111
|
-
end
|
112
|
-
}.should raise_error(Capybara::ElementNotFound)
|
113
|
-
}.should_not change { @session.has_xpath?(".//div[@id='another_foo']") }.from(false)
|
114
|
-
end
|
115
|
-
}.should_not change { @session.has_xpath?(".//div[@id='another_foo']") }.from(true)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "with forms" do
|
120
|
-
it "should fill in a field and click a button" do
|
121
|
-
@session.within("//li[contains(.,'Bar')]") do
|
122
|
-
@session.click_button('Go')
|
123
|
-
end
|
124
|
-
extract_results(@session)['first_name'].should == 'Peter'
|
125
|
-
@session.visit('/with_scope')
|
126
|
-
@session.within("//li[contains(.,'Bar')]") do
|
127
|
-
@session.fill_in('First Name', :with => 'Dagobert')
|
128
|
-
@session.click_button('Go')
|
129
|
-
end
|
130
|
-
extract_results(@session)['first_name'].should == 'Dagobert'
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
describe '#within_fieldset' do
|
136
|
-
before do
|
137
|
-
@session.visit('/fieldsets')
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should restrict scope to a fieldset given by id" do
|
141
|
-
@session.within_fieldset("villain_fieldset") do
|
142
|
-
@session.fill_in("Name", :with => 'Goldfinger')
|
143
|
-
@session.click_button("Create")
|
144
|
-
end
|
145
|
-
extract_results(@session)['villain_name'].should == 'Goldfinger'
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should restrict scope to a fieldset given by legend" do
|
149
|
-
@session.within_fieldset("Villain") do
|
150
|
-
@session.fill_in("Name", :with => 'Goldfinger')
|
151
|
-
@session.click_button("Create")
|
152
|
-
end
|
153
|
-
extract_results(@session)['villain_name'].should == 'Goldfinger'
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
describe '#within_table' do
|
158
|
-
before do
|
159
|
-
@session.visit('/tables')
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should restrict scope to a fieldset given by id" do
|
163
|
-
@session.within_table("girl_table") do
|
164
|
-
@session.fill_in("Name", :with => 'Christmas')
|
165
|
-
@session.click_button("Create")
|
166
|
-
end
|
167
|
-
extract_results(@session)['girl_name'].should == 'Christmas'
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should restrict scope to a fieldset given by legend" do
|
171
|
-
@session.within_table("Villain") do
|
172
|
-
@session.fill_in("Name", :with => 'Quantum')
|
173
|
-
@session.click_button("Create")
|
174
|
-
end
|
175
|
-
extract_results(@session)['villain_name'].should == 'Quantum'
|
176
|
-
end
|
177
|
-
end
|
178
|
-
end
|