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,78 +0,0 @@
|
|
1
|
-
shared_examples_for "all" do
|
2
|
-
describe '#all' do
|
3
|
-
before do
|
4
|
-
@session.visit('/with_html')
|
5
|
-
end
|
6
|
-
|
7
|
-
it "should find all elements using the given locator" do
|
8
|
-
@session.all('//p').should have(3).elements
|
9
|
-
@session.all('//h1').first.text.should == 'This is a test'
|
10
|
-
@session.all("//input[@id='test_field']").first[:value].should == 'monkey'
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should return an empty array when nothing was found" do
|
14
|
-
@session.all('//div[@id="nosuchthing"]').should be_empty
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should accept an XPath instance" do
|
18
|
-
@session.visit('/form')
|
19
|
-
@xpath = XPath::HTML.fillable_field('Name')
|
20
|
-
@result = @session.all(@xpath).map { |r| r.value }
|
21
|
-
@result.should include('Smith', 'John', 'John Smith')
|
22
|
-
end
|
23
|
-
|
24
|
-
context "with css selectors" do
|
25
|
-
it "should find all elements using the given selector" do
|
26
|
-
@session.all(:css, 'h1').first.text.should == 'This is a test'
|
27
|
-
@session.all(:css, "input[id='test_field']").first[:value].should == 'monkey'
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should find all elements when given a list of selectors" do
|
31
|
-
@session.all(:css, 'h1, p').should have(4).elements
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context "with xpath selectors" do
|
36
|
-
it "should find the first element using the given locator" do
|
37
|
-
@session.all(:xpath, '//h1').first.text.should == 'This is a test'
|
38
|
-
@session.all(:xpath, "//input[@id='test_field']").first[:value].should == 'monkey'
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "with css as default selector" do
|
43
|
-
before { Capybara.default_selector = :css }
|
44
|
-
it "should find the first element using the given locator" do
|
45
|
-
@session.all('h1').first.text.should == 'This is a test'
|
46
|
-
@session.all("input[id='test_field']").first[:value].should == 'monkey'
|
47
|
-
end
|
48
|
-
after { Capybara.default_selector = :xpath }
|
49
|
-
end
|
50
|
-
|
51
|
-
context "with visible filter" do
|
52
|
-
after { Capybara.ignore_hidden_elements = false }
|
53
|
-
it "should only find visible nodes" do
|
54
|
-
@session.all("//a[@title='awesome title']").should have(2).elements
|
55
|
-
@session.all("//a[@title='awesome title']", :visible => true).should have(1).elements
|
56
|
-
Capybara.ignore_hidden_elements = true
|
57
|
-
@session.all("//a[@title='awesome title']").should have(1).elements
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should only find invisible nodes" do
|
61
|
-
Capybara.ignore_hidden_elements = true
|
62
|
-
@session.all("//a[@title='awesome title']", :visible => false).should have(2).elements
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
context "within a scope" do
|
67
|
-
before do
|
68
|
-
@session.visit('/with_scope')
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should find any element using the given locator" do
|
72
|
-
@session.within(:xpath, "//div[@id='for_bar']") do
|
73
|
-
@session.all('.//li').should have(2).elements
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
shared_examples_for "attach_file" do
|
2
|
-
|
3
|
-
describe "#attach_file" do
|
4
|
-
before do
|
5
|
-
@test_file_path = File.expand_path('../fixtures/test_file.txt', File.dirname(__FILE__))
|
6
|
-
@test_jpg_file_path = File.expand_path('../fixtures/capybara.jpg', File.dirname(__FILE__))
|
7
|
-
@session.visit('/form')
|
8
|
-
end
|
9
|
-
|
10
|
-
context "with normal form" do
|
11
|
-
it "should set a file path by id" do
|
12
|
-
@session.attach_file "form_image", __FILE__
|
13
|
-
@session.click_button('awesome')
|
14
|
-
extract_results(@session)['image'].should == File.basename(__FILE__)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should set a file path by label" do
|
18
|
-
@session.attach_file "Image", __FILE__
|
19
|
-
@session.click_button('awesome')
|
20
|
-
extract_results(@session)['image'].should == File.basename(__FILE__)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "with multipart form" do
|
25
|
-
it "should set a file path by id" do
|
26
|
-
@session.attach_file "form_document", @test_file_path
|
27
|
-
@session.click_button('Upload')
|
28
|
-
@session.body.should include(File.read(@test_file_path))
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should set a file path by label" do
|
32
|
-
@session.attach_file "Document", @test_file_path
|
33
|
-
@session.click_button('Upload')
|
34
|
-
@session.body.should include(File.read(@test_file_path))
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should not break if no file is submitted" do
|
38
|
-
@session.click_button('Upload')
|
39
|
-
@session.body.should include('No file uploaded')
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should send content type text/plain when uploading a text file" do
|
43
|
-
@session.attach_file "Document", @test_file_path
|
44
|
-
@session.click_button 'Upload'
|
45
|
-
@session.body.should include('text/plain')
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should send content type image/jpeg when uploading an image" do
|
49
|
-
@session.attach_file "Document", @test_jpg_file_path
|
50
|
-
@session.click_button 'Upload'
|
51
|
-
@session.body.should include('image/jpeg')
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should not break when using HTML5 multiple file input" do
|
55
|
-
@session.attach_file "Multiple Documents", @test_file_path
|
56
|
-
@session.click_button('Upload Multiple')
|
57
|
-
@session.body.should include(File.read(@test_file_path))
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "with a locator that doesn't exist" do
|
62
|
-
it "should raise an error" do
|
63
|
-
running { @session.attach_file('does not exist', @test_file_path) }.should raise_error(Capybara::ElementNotFound)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "with a path that doesn't exist" do
|
68
|
-
it "should raise an error" do
|
69
|
-
running { @session.attach_file('Image', '/no_such_file.png') }.should raise_error(Capybara::FileNotFound)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
shared_examples_for "check" do
|
2
|
-
|
3
|
-
describe "#check" do
|
4
|
-
before do
|
5
|
-
@session.visit('/form')
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "'checked' attribute" do
|
9
|
-
it "should be true if checked" do
|
10
|
-
@session.check("Terms of Use")
|
11
|
-
@session.find(:xpath, "//input[@id='form_terms_of_use']")['checked'].should be_true
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should be false if unchecked" do
|
15
|
-
@session.find(:xpath, "//input[@id='form_terms_of_use']")['checked'].should be_false
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "checking" do
|
20
|
-
it "should not change an already checked checkbox" do
|
21
|
-
@session.find(:xpath, "//input[@id='form_pets_dog']")['checked'].should be_true
|
22
|
-
@session.check('form_pets_dog')
|
23
|
-
@session.find(:xpath, "//input[@id='form_pets_dog']")['checked'].should be_true
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should check an unchecked checkbox" do
|
27
|
-
@session.find(:xpath, "//input[@id='form_pets_cat']")['checked'].should be_false
|
28
|
-
@session.check('form_pets_cat')
|
29
|
-
@session.find(:xpath, "//input[@id='form_pets_cat']")['checked'].should be_true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "unchecking" do
|
34
|
-
it "should not change an already unchecked checkbox" do
|
35
|
-
@session.find(:xpath, "//input[@id='form_pets_cat']")['checked'].should be_false
|
36
|
-
@session.uncheck('form_pets_cat')
|
37
|
-
@session.find(:xpath, "//input[@id='form_pets_cat']")['checked'].should be_false
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should uncheck a checked checkbox" do
|
41
|
-
@session.find(:xpath, "//input[@id='form_pets_dog']")['checked'].should be_true
|
42
|
-
@session.uncheck('form_pets_dog')
|
43
|
-
@session.find(:xpath, "//input[@id='form_pets_dog']")['checked'].should be_false
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should check a checkbox by id" do
|
48
|
-
@session.check("form_pets_cat")
|
49
|
-
@session.click_button('awesome')
|
50
|
-
extract_results(@session)['pets'].should include('dog', 'cat', 'hamster')
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should check a checkbox by label" do
|
54
|
-
@session.check("Cat")
|
55
|
-
@session.click_button('awesome')
|
56
|
-
extract_results(@session)['pets'].should include('dog', 'cat', 'hamster')
|
57
|
-
end
|
58
|
-
|
59
|
-
context "with a locator that doesn't exist" do
|
60
|
-
it "should raise an error" do
|
61
|
-
running { @session.check('does not exist') }.should raise_error(Capybara::ElementNotFound)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
shared_examples_for "choose" do
|
2
|
-
|
3
|
-
describe "#choose" do
|
4
|
-
before do
|
5
|
-
@session.visit('/form')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should choose a radio button by id" do
|
9
|
-
@session.choose("gender_male")
|
10
|
-
@session.click_button('awesome')
|
11
|
-
extract_results(@session)['gender'].should == 'male'
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should choose a radio button by label" do
|
15
|
-
@session.choose("Both")
|
16
|
-
@session.click_button('awesome')
|
17
|
-
extract_results(@session)['gender'].should == 'both'
|
18
|
-
end
|
19
|
-
|
20
|
-
context "with a locator that doesn't exist" do
|
21
|
-
it "should raise an error" do
|
22
|
-
running { @session.choose('does not exist') }.should raise_error(Capybara::ElementNotFound)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,304 +0,0 @@
|
|
1
|
-
shared_examples_for "click_button" do
|
2
|
-
describe '#click_button' do
|
3
|
-
before do
|
4
|
-
@session.visit('/form')
|
5
|
-
end
|
6
|
-
|
7
|
-
context "with multiple values with the same name" do
|
8
|
-
it "should use the latest given value" do
|
9
|
-
@session.check('Terms of Use')
|
10
|
-
@session.click_button('awesome')
|
11
|
-
extract_results(@session)['terms_of_use'].should == '1'
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context "with a form that has a relative url as an action" do
|
16
|
-
it "should post to the correct url" do
|
17
|
-
@session.click_button('Relative Action')
|
18
|
-
@session.current_path.should == '/relative'
|
19
|
-
extract_results(@session)['relative'].should == 'Relative Action'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "with a form that has no action specified" do
|
24
|
-
it "should post to the correct url" do
|
25
|
-
@session.click_button('No Action')
|
26
|
-
@session.current_path.should == '/form'
|
27
|
-
extract_results(@session)['no_action'].should == 'No Action'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "with value given on a submit button" do
|
32
|
-
context "on a form with HTML5 fields" do
|
33
|
-
before do
|
34
|
-
@session.click_button('html5_submit')
|
35
|
-
@results = extract_results(@session)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should serialise and submit search fields" do
|
39
|
-
@results['html5_search'].should == 'what are you looking for'
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should serialise and submit email fields" do
|
43
|
-
@results['html5_email'].should == 'person@email.com'
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should serialise and submit url fields" do
|
47
|
-
@results['html5_url'].should == 'http://www.example.com'
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should serialise and submit tel fields" do
|
51
|
-
@results['html5_tel'].should == '911'
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should serialise and submit color fields" do
|
55
|
-
@results['html5_color'].should == '#FFFFFF'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context "on an HTML4 form" do
|
60
|
-
before do
|
61
|
-
@session.click_button('awesome')
|
62
|
-
@results = extract_results(@session)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should serialize and submit text fields" do
|
66
|
-
@results['first_name'].should == 'John'
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should escape fields when submitting" do
|
70
|
-
@results['phone'].should == '+1 555 7021'
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should serialize and submit password fields" do
|
74
|
-
@results['password'].should == 'seeekrit'
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should serialize and submit hidden fields" do
|
78
|
-
@results['token'].should == '12345'
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should not serialize fields from other forms" do
|
82
|
-
@results['middle_name'].should be_nil
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should submit the button that was clicked, but not other buttons" do
|
86
|
-
@results['awesome'].should == 'awesome'
|
87
|
-
@results['crappy'].should be_nil
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should serialize radio buttons" do
|
91
|
-
@results['gender'].should == 'female'
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should serialize check boxes" do
|
95
|
-
@results['pets'].should include('dog', 'hamster')
|
96
|
-
@results['pets'].should_not include('cat')
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should serialize text areas" do
|
100
|
-
@results['description'].should == 'Descriptive text goes here'
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should serialize select tag with values" do
|
104
|
-
@results['locale'].should == 'en'
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should serialize select tag without values" do
|
108
|
-
@results['region'].should == 'Norway'
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should serialize first option for select tag with no selection" do
|
112
|
-
@results['city'].should == 'London'
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should not serialize a select tag without options" do
|
116
|
-
@results['tendency'].should be_nil
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should not submit disabled fields" do
|
120
|
-
@results['disabled_text_field'].should be_nil
|
121
|
-
@results['disabled_textarea'].should be_nil
|
122
|
-
@results['disabled_checkbox'].should be_nil
|
123
|
-
@results['disabled_radio'].should be_nil
|
124
|
-
@results['disabled_select'].should be_nil
|
125
|
-
@results['disabled_file'].should be_nil
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
context "with id given on a submit button" do
|
131
|
-
it "should submit the associated form" do
|
132
|
-
@session.click_button('awe123')
|
133
|
-
extract_results(@session)['first_name'].should == 'John'
|
134
|
-
end
|
135
|
-
|
136
|
-
it "should work with partial matches" do
|
137
|
-
@session.click_button('Go')
|
138
|
-
@session.body.should include('You landed')
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
context "with title given on a submit button" do
|
143
|
-
it "should submit the associated form" do
|
144
|
-
@session.click_button('What an Awesome Button')
|
145
|
-
extract_results(@session)['first_name'].should == 'John'
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should work with partial matches" do
|
149
|
-
@session.click_button('What an Awesome')
|
150
|
-
extract_results(@session)['first_name'].should == 'John'
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
context "with alt given on an image button" do
|
155
|
-
it "should submit the associated form" do
|
156
|
-
@session.click_button('oh hai thar')
|
157
|
-
extract_results(@session)['first_name'].should == 'John'
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should work with partial matches" do
|
161
|
-
@session.click_button('hai')
|
162
|
-
extract_results(@session)['first_name'].should == 'John'
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
context "with value given on an image button" do
|
167
|
-
it "should submit the associated form" do
|
168
|
-
@session.click_button('okay')
|
169
|
-
extract_results(@session)['first_name'].should == 'John'
|
170
|
-
end
|
171
|
-
|
172
|
-
it "should work with partial matches" do
|
173
|
-
@session.click_button('kay')
|
174
|
-
extract_results(@session)['first_name'].should == 'John'
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
context "with id given on an image button" do
|
179
|
-
it "should submit the associated form" do
|
180
|
-
@session.click_button('okay556')
|
181
|
-
extract_results(@session)['first_name'].should == 'John'
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
context "with title given on an image button" do
|
186
|
-
it "should submit the associated form" do
|
187
|
-
@session.click_button('Okay 556 Image')
|
188
|
-
extract_results(@session)['first_name'].should == 'John'
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should work with partial matches" do
|
192
|
-
@session.click_button('Okay 556')
|
193
|
-
extract_results(@session)['first_name'].should == 'John'
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context "with text given on a button defined by <button> tag" do
|
198
|
-
it "should submit the associated form" do
|
199
|
-
@session.click_button('Click me')
|
200
|
-
extract_results(@session)['first_name'].should == 'John'
|
201
|
-
end
|
202
|
-
|
203
|
-
it "should work with partial matches" do
|
204
|
-
@session.click_button('Click')
|
205
|
-
extract_results(@session)['first_name'].should == 'John'
|
206
|
-
end
|
207
|
-
|
208
|
-
it "should prefer exact matches over partial matches" do
|
209
|
-
@session.click_button('Just an input')
|
210
|
-
extract_results(@session)['button'].should == 'button_second'
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
context "with id given on a button defined by <button> tag" do
|
215
|
-
it "should submit the associated form" do
|
216
|
-
@session.click_button('click_me_123')
|
217
|
-
extract_results(@session)['first_name'].should == 'John'
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should serialize and send GET forms" do
|
221
|
-
@session.visit('/form')
|
222
|
-
@session.click_button('med')
|
223
|
-
@results = extract_results(@session)
|
224
|
-
@results['middle_name'].should == 'Darren'
|
225
|
-
@results['foo'].should be_nil
|
226
|
-
end
|
227
|
-
end
|
228
|
-
|
229
|
-
context "with value given on a button defined by <button> tag" do
|
230
|
-
it "should submit the associated form" do
|
231
|
-
@session.click_button('click_me')
|
232
|
-
extract_results(@session)['first_name'].should == 'John'
|
233
|
-
end
|
234
|
-
|
235
|
-
it "should work with partial matches" do
|
236
|
-
@session.click_button('ck_me')
|
237
|
-
extract_results(@session)['first_name'].should == 'John'
|
238
|
-
end
|
239
|
-
|
240
|
-
it "should prefer exact matches over partial matches" do
|
241
|
-
@session.click_button('Just a button')
|
242
|
-
extract_results(@session)['button'].should == 'Just a button'
|
243
|
-
end
|
244
|
-
end
|
245
|
-
|
246
|
-
context "with title given on a button defined by <button> tag" do
|
247
|
-
it "should submit the associated form" do
|
248
|
-
@session.click_button('Click Title button')
|
249
|
-
extract_results(@session)['first_name'].should == 'John'
|
250
|
-
end
|
251
|
-
|
252
|
-
it "should work with partial matches" do
|
253
|
-
@session.click_button('Click Title')
|
254
|
-
extract_results(@session)['first_name'].should == 'John'
|
255
|
-
end
|
256
|
-
end
|
257
|
-
context "with a locator that doesn't exist" do
|
258
|
-
it "should raise an error" do
|
259
|
-
running do
|
260
|
-
@session.click_button('does not exist')
|
261
|
-
end.should raise_error(Capybara::ElementNotFound)
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
it "should serialize and send valueless buttons that were clicked" do
|
266
|
-
@session.click_button('No Value!')
|
267
|
-
@results = extract_results(@session)
|
268
|
-
@results['no_value'].should_not be_nil
|
269
|
-
end
|
270
|
-
|
271
|
-
it "should not send image buttons that were not clicked" do
|
272
|
-
@session.click_button('Click me!')
|
273
|
-
@results = extract_results(@session)
|
274
|
-
@results['okay'].should be_nil
|
275
|
-
end
|
276
|
-
|
277
|
-
it "should serialize and send GET forms" do
|
278
|
-
@session.visit('/form')
|
279
|
-
@session.click_button('med')
|
280
|
-
@results = extract_results(@session)
|
281
|
-
@results['middle_name'].should == 'Darren'
|
282
|
-
@results['foo'].should be_nil
|
283
|
-
end
|
284
|
-
|
285
|
-
it "should follow redirects" do
|
286
|
-
@session.click_button('Go FAR')
|
287
|
-
@session.current_url.should match(%r{/landed$})
|
288
|
-
@session.body.should include('You landed')
|
289
|
-
end
|
290
|
-
|
291
|
-
it "should post pack to the same URL when no action given" do
|
292
|
-
@session.visit('/postback')
|
293
|
-
@session.click_button('With no action')
|
294
|
-
@session.body.should include('Postback')
|
295
|
-
end
|
296
|
-
|
297
|
-
it "should post pack to the same URL when blank action given" do
|
298
|
-
@session.visit('/postback')
|
299
|
-
@session.click_button('With blank action')
|
300
|
-
@session.body.should include('Postback')
|
301
|
-
end
|
302
|
-
end
|
303
|
-
|
304
|
-
end
|