capybara 3.0.3 → 3.1.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +10 -0
  3. data/lib/capybara.rb +1 -1
  4. data/lib/capybara/helpers.rb +1 -1
  5. data/lib/capybara/minitest/spec.rb +2 -0
  6. data/lib/capybara/node/actions.rb +45 -5
  7. data/lib/capybara/queries/match_query.rb +2 -0
  8. data/lib/capybara/queries/selector_query.rb +3 -4
  9. data/lib/capybara/queries/text_query.rb +4 -5
  10. data/lib/capybara/rack_test/node.rb +6 -4
  11. data/lib/capybara/result.rb +1 -1
  12. data/lib/capybara/rspec/compound.rb +2 -0
  13. data/lib/capybara/selector.rb +72 -18
  14. data/lib/capybara/selector/css.rb +2 -0
  15. data/lib/capybara/selenium/driver.rb +14 -15
  16. data/lib/capybara/selenium/node.rb +23 -29
  17. data/lib/capybara/server.rb +29 -4
  18. data/lib/capybara/session.rb +12 -13
  19. data/lib/capybara/spec/session/all_spec.rb +6 -6
  20. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +2 -3
  21. data/lib/capybara/spec/session/{assert_selector.rb → assert_selector_spec.rb} +0 -0
  22. data/lib/capybara/spec/session/{assert_text.rb → assert_text_spec.rb} +1 -1
  23. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +0 -0
  24. data/lib/capybara/spec/session/check_spec.rb +6 -6
  25. data/lib/capybara/spec/session/click_link_or_button_spec.rb +0 -7
  26. data/lib/capybara/spec/session/current_url_spec.rb +6 -8
  27. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +2 -0
  28. data/lib/capybara/spec/session/element/match_css_spec.rb +2 -0
  29. data/lib/capybara/spec/session/element/match_xpath_spec.rb +2 -0
  30. data/lib/capybara/spec/session/element/matches_selector_spec.rb +2 -0
  31. data/lib/capybara/spec/session/find_by_id_spec.rb +1 -1
  32. data/lib/capybara/spec/session/find_field_spec.rb +1 -1
  33. data/lib/capybara/spec/session/first_spec.rb +12 -12
  34. data/lib/capybara/spec/session/frame/frame_title_spec.rb +1 -1
  35. data/lib/capybara/spec/session/frame/frame_url_spec.rb +1 -1
  36. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +2 -2
  37. data/lib/capybara/spec/session/frame/within_frame_spec.rb +1 -1
  38. data/lib/capybara/spec/session/has_button_spec.rb +5 -0
  39. data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
  40. data/lib/capybara/spec/session/has_field_spec.rb +1 -1
  41. data/lib/capybara/spec/session/has_none_selectors_spec.rb +2 -0
  42. data/lib/capybara/spec/session/has_selector_spec.rb +8 -0
  43. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +0 -0
  44. data/lib/capybara/spec/session/node_spec.rb +4 -4
  45. data/lib/capybara/spec/session/reset_session_spec.rb +2 -2
  46. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +0 -0
  47. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -1
  48. data/lib/capybara/spec/session/select_spec.rb +27 -1
  49. data/lib/capybara/spec/session/selectors_spec.rb +2 -0
  50. data/lib/capybara/spec/session/uncheck_spec.rb +3 -3
  51. data/lib/capybara/spec/session/visit_spec.rb +17 -10
  52. data/lib/capybara/spec/session/window/become_closed_spec.rb +3 -3
  53. data/lib/capybara/spec/session/window/current_window_spec.rb +2 -2
  54. data/lib/capybara/spec/session/window/open_new_window_spec.rb +3 -3
  55. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +5 -5
  56. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +3 -3
  57. data/lib/capybara/spec/session/window/window_spec.rb +24 -9
  58. data/lib/capybara/spec/session/window/windows_spec.rb +2 -2
  59. data/lib/capybara/spec/session/window/within_window_spec.rb +2 -2
  60. data/lib/capybara/spec/session/within_spec.rb +3 -3
  61. data/lib/capybara/spec/spec_helper.rb +7 -5
  62. data/lib/capybara/spec/views/form.erb +9 -0
  63. data/lib/capybara/version.rb +1 -1
  64. data/spec/basic_node_spec.rb +1 -1
  65. data/spec/capybara_spec.rb +4 -14
  66. data/spec/dsl_spec.rb +5 -3
  67. data/spec/fixtures/certificate.pem +25 -0
  68. data/spec/fixtures/key.pem +27 -0
  69. data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
  70. data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
  71. data/spec/rack_test_spec.rb +8 -6
  72. data/spec/result_spec.rb +22 -2
  73. data/spec/rspec/features_spec.rb +4 -2
  74. data/spec/rspec/scenarios_spec.rb +1 -1
  75. data/spec/rspec/shared_spec_matchers.rb +7 -4
  76. data/spec/rspec/views_spec.rb +2 -1
  77. data/spec/rspec_spec.rb +80 -78
  78. data/spec/selenium_spec_marionette.rb +6 -4
  79. data/spec/server_spec.rb +40 -2
  80. data/spec/session_spec.rb +12 -4
  81. data/spec/shared_selenium_session.rb +106 -84
  82. metadata +11 -9
@@ -81,7 +81,7 @@ Capybara::SpecHelper.spec '#has_current_path?' do
81
81
  end
82
82
 
83
83
  it "should not raise an exception if the current_url is nil" do
84
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
84
+ allow_any_instance_of(Capybara::Session).to receive(:current_url).and_return(nil)
85
85
 
86
86
  # Without ignore_query option
87
87
  expect do
@@ -121,7 +121,7 @@ Capybara::SpecHelper.spec '#has_no_current_path?' do
121
121
  end
122
122
 
123
123
  it "should not raise an exception if the current_url is nil" do
124
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
124
+ allow_any_instance_of(Capybara::Session).to receive(:current_url).and_return(nil)
125
125
 
126
126
  # Without ignore_query option
127
127
  expect do
@@ -269,7 +269,7 @@ Capybara::SpecHelper.spec '#has_unchecked_field?' do
269
269
  end
270
270
 
271
271
  it "should support locator-less usage" do
272
- expect(@session.has_unchecked_field?(disabled: true, id: "form_disabled_unchecked_checkbox"))
272
+ expect(@session.has_unchecked_field?(disabled: true, id: "form_disabled_unchecked_checkbox")).to be true
273
273
  expect(@session).to have_unchecked_field(disabled: true, id: "form_disabled_unchecked_checkbox")
274
274
  end
275
275
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec '#have_none_of_selectors' do
2
4
  before do
3
5
  @session.visit('/with_html')
@@ -100,6 +100,14 @@ Capybara::SpecHelper.spec '#has_selector?' do
100
100
  end
101
101
  end
102
102
  end
103
+
104
+ context "datalist" do
105
+ it "should match options" do
106
+ @session.visit('/form')
107
+ expect(@session).to have_selector(:datalist_input, with_options: %w[Jaguar Audi Mercedes])
108
+ expect(@session).not_to have_selector(:datalist_input, with_options: %w[Ford Chevy])
109
+ end
110
+ end
103
111
  end
104
112
 
105
113
  Capybara::SpecHelper.spec '#has_no_selector?' do
@@ -98,7 +98,7 @@ Capybara::SpecHelper.spec "node" do
98
98
  expect { @session.first('//input[@readonly]').set('changed') }.to raise_error(Capybara::ReadOnlyElementError)
99
99
  end
100
100
 
101
- it "should raise if the text field is readonly" do
101
+ it "should raise if the textarea is readonly" do
102
102
  expect { @session.first('//textarea[@readonly]').set('changed') }.to raise_error(Capybara::ReadOnlyElementError)
103
103
  end
104
104
 
@@ -251,7 +251,7 @@ Capybara::SpecHelper.spec "node" do
251
251
  describe "#path" do
252
252
  # Testing for specific XPaths here doesn't make sense since there
253
253
  # are many that can refer to the same element
254
- before :each do
254
+ before do
255
255
  @session.visit('/path')
256
256
  end
257
257
 
@@ -372,7 +372,7 @@ Capybara::SpecHelper.spec "node" do
372
372
  it "should double click an element" do
373
373
  @session.visit('/with_js')
374
374
  @session.find(:css, '#click-test').double_click
375
- expect(@session.find(:css, '#has-been-double-clicked')).to be
375
+ expect(@session.find(:css, '#has-been-double-clicked')).to be_truthy
376
376
  end
377
377
 
378
378
  it "should allow modifiers", requires: [:js] do
@@ -397,7 +397,7 @@ Capybara::SpecHelper.spec "node" do
397
397
  it "should right click an element" do
398
398
  @session.visit('/with_js')
399
399
  @session.find(:css, '#click-test').right_click
400
- expect(@session.find(:css, '#has-been-right-clicked')).to be
400
+ expect(@session.find(:css, '#has-been-right-clicked')).to be_truthy
401
401
  end
402
402
 
403
403
  it "should allow modifiers", requires: [:js] do
@@ -18,8 +18,8 @@ Capybara::SpecHelper.spec '#reset_session!' do
18
18
  expect(@session.current_path).to eq('/foo')
19
19
 
20
20
  @session.reset_session!
21
- expect([nil, '', 'about:blank']).to include(@session.current_url)
22
- expect(['', nil]).to include(@session.current_path)
21
+ expect(@session.current_url).to satisfy('be a blank url') { |url| [nil, '', 'about:blank'].include? url }
22
+ expect(@session.current_path).to satisfy('be a blank path') { |path| ['', nil].include? path }
23
23
  expect(@session.current_host).to be_nil
24
24
  end
25
25
 
@@ -34,9 +34,10 @@ Capybara::SpecHelper.spec '#save_and_open_screenshot' do
34
34
  context 'when launchy cannot be required' do
35
35
  it 'prints out a correct warning message', requires: [:screenshot] do
36
36
  file_path = File.join(Dir.tmpdir, 'test.png')
37
+ allow(@session).to receive(:warn)
37
38
  allow(@session).to receive(:require).with('launchy').and_raise(LoadError)
38
- expect(@session).to receive(:warn).with("File saved to #{file_path}.\nPlease install the launchy gem to open the file automatically.")
39
39
  @session.save_and_open_screenshot(file_path)
40
+ expect(@session).to have_received(:warn).with("File saved to #{file_path}.\nPlease install the launchy gem to open the file automatically.")
40
41
  end
41
42
  end
42
43
  end
@@ -84,9 +84,35 @@ Capybara::SpecHelper.spec "#select" do
84
84
  expect(@session.find_field('Title').value).to eq('Miss')
85
85
  end
86
86
 
87
+ context "input with datalist" do
88
+ it "should select an option" do
89
+ @session.select("Audi", from: 'manufacturer')
90
+ @session.click_button('awesome')
91
+ expect(extract_results(@session)['manufacturer']).to eq('Audi')
92
+ end
93
+
94
+ it "should not find an input without a datalist" do
95
+ expect do
96
+ @session.select("Thomas", from: 'form_first_name')
97
+ end.to raise_error(/Unable to find visible input box with datalist completion "form_first_name" that is not disabled/)
98
+ end
99
+
100
+ it "should not select an option that doesn't exist" do
101
+ expect do
102
+ @session.select("Tata", from: 'manufacturer')
103
+ end.to raise_error(/Unable to find datalist option "Tata"/)
104
+ end
105
+
106
+ it "should not select a disabled option" do
107
+ expect do
108
+ @session.select("Mercedes", from: 'manufacturer')
109
+ end.to raise_error(/Unable to find datalist option "Mercedes"/)
110
+ end
111
+ end
112
+
87
113
  context "with a locator that doesn't exist" do
88
114
  it "should raise an error" do
89
- msg = "Unable to find visible select box \"does not exist\" that is not disabled"
115
+ msg = /Unable to find visible select box "does not exist" that is not disabled/
90
116
  expect do
91
117
  @session.select('foo', from: 'does not exist')
92
118
  end.to raise_error(Capybara::ElementNotFound, msg)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec Capybara::Selector do
2
4
  before do
3
5
  @session.visit('/form')
@@ -56,21 +56,21 @@ Capybara::SpecHelper.spec "#uncheck" do
56
56
  end
57
57
 
58
58
  it "should uncheck via clicking the label with :for attribute if possible" do
59
- expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be
59
+ expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be_truthy
60
60
  @session.uncheck('form_cars_jaguar')
61
61
  @session.click_button('awesome')
62
62
  expect(extract_results(@session)['cars']).not_to include('jaguar')
63
63
  end
64
64
 
65
65
  it "should uncheck via clicking the wrapping label if possible" do
66
- expect(@session.find(:checkbox, 'form_cars_koenigsegg', checked: true, visible: :hidden)).to be
66
+ expect(@session.find(:checkbox, 'form_cars_koenigsegg', checked: true, visible: :hidden)).to be_truthy
67
67
  @session.uncheck('form_cars_koenigsegg')
68
68
  @session.click_button('awesome')
69
69
  expect(extract_results(@session)['cars']).not_to include('koenigsegg')
70
70
  end
71
71
 
72
72
  it "should not click the label if unneeded" do
73
- expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be
73
+ expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
74
74
  @session.uncheck('form_cars_tesla')
75
75
  @session.click_button('awesome')
76
76
  expect(extract_results(@session)['cars']).not_to include('tesla')
@@ -54,11 +54,11 @@ Capybara::SpecHelper.spec '#visit' do
54
54
  URI.parse(@session.current_url)
55
55
  end
56
56
 
57
- before(:each) do
57
+ before do
58
58
  Capybara.always_include_port = true
59
59
  end
60
60
 
61
- after(:each) do
61
+ after do
62
62
  Capybara.always_include_port = false
63
63
  end
64
64
 
@@ -73,52 +73,59 @@ Capybara::SpecHelper.spec '#visit' do
73
73
  end
74
74
 
75
75
  it "should add the server port to a visited url if no port specified", requires: [:server] do
76
- expect(@session.driver).to receive(:visit).with("http://www.example.com:#{@session.server.port}")
76
+ allow(@session.driver).to receive(:visit)
77
77
  @session.visit("http://www.example.com")
78
+ expect(@session.driver).to have_received(:visit).with("http://www.example.com:#{@session.server.port}")
78
79
  end
79
80
 
80
81
  it "should not override the visit specified port even if default for scheme", requires: [:server] do
81
- expect(@session.driver).to receive(:visit).with("http://www.example.com:80")
82
+ allow(@session.driver).to receive(:visit)
82
83
  @session.visit('http://www.example.com:80')
84
+ expect(@session.driver).to have_received(:visit).with("http://www.example.com:80")
83
85
  end
84
86
 
85
87
  it "should give preference to app_host port if specified", requires: [:server] do
88
+ allow(@session.driver).to receive(:visit)
86
89
  Capybara.app_host = "http://www.example.com:6666"
87
- expect(@session.driver).to receive(:visit).with("http://www.example.com:6666/random")
88
90
  @session.visit('/random')
91
+ expect(@session.driver).to have_received(:visit).with("http://www.example.com:6666/random")
89
92
  end
90
93
 
91
94
  it "shouldn't override port if no server", requires: [:server] do
92
95
  session = Capybara::Session.new(@session.mode, nil)
93
- expect(session.driver).to receive(:visit).with("http://www.google.com")
96
+ allow(session.driver).to receive(:visit)
94
97
  session.visit("http://www.google.com")
98
+ expect(session.driver).to have_received(:visit).with("http://www.google.com")
95
99
  end
96
100
 
97
101
  it "shouldn't override port if no server but app_host is set", requires: [:server] do
98
102
  session = Capybara::Session.new(@session.mode, nil)
99
103
  Capybara.app_host = "http://www.example.com:6666"
100
- expect(session.driver).to receive(:visit).with("http://www.google.com")
104
+ allow(session.driver).to receive(:visit)
101
105
  session.visit("http://www.google.com")
106
+ expect(session.driver).to have_received(:visit).with("http://www.google.com")
102
107
  end
103
108
  end
104
109
 
105
110
  context "when Capybara.always_include_port is false" do
106
- before(:each) do
111
+ before do
107
112
  Capybara.always_include_port = false
108
113
  end
109
114
 
110
115
  it "shouldn't overwrite port if app_host is set", requires: [:server] do
111
116
  session = Capybara::Session.new(@session.mode, nil)
112
117
  Capybara.app_host = "http://www.example.com:6666"
113
- expect(session.driver).to receive(:visit).with("http://www.google.com")
118
+ allow(session.driver).to receive(:visit)
114
119
  session.visit("http://www.google.com")
120
+ expect(session.driver).to have_received(:visit).with("http://www.google.com")
115
121
  end
116
122
 
117
123
  it "shouldn't overwrite port if port specfified", requires: [:server] do
118
124
  session = Capybara::Session.new(@session.mode, nil)
119
125
  Capybara.app_host = "http://www.example.com:6666"
120
- expect(session.driver).to receive(:visit).with("http://www.google.com:99")
126
+ allow(session.driver).to receive(:visit)
121
127
  session.visit("http://www.google.com:99")
128
+ expect(session.driver).to have_received(:visit).with("http://www.google.com:99")
122
129
  end
123
130
  end
124
131
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#become_closed', requires: %i[windows js] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
7
  @other_window = @session.window_opened_by do
@@ -9,7 +9,7 @@ Capybara::SpecHelper.spec '#become_closed', requires: %i[windows js] do
9
9
  end
10
10
  end
11
11
 
12
- after(:each) do
12
+ after do
13
13
  @session.document.synchronize(5, errors: [Capybara::CapybaraError]) do
14
14
  raise Capybara::CapybaraError if @session.windows.size != 1
15
15
  end
@@ -68,7 +68,7 @@ Capybara::SpecHelper.spec '#become_closed', requires: %i[windows js] do
68
68
  Capybara.using_wait_time 0.3 do
69
69
  expect do
70
70
  expect(@other_window).not_to become_closed
71
- end
71
+ end.not_to raise_error
72
72
  end
73
73
  end
74
74
 
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#current_window', requires: [:windows] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
7
  end
8
- after(:each) do
8
+ after do
9
9
  (@session.windows - [@window]).each do |w|
10
10
  @session.switch_to_window w
11
11
  w.close
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#open_new_window', requires: [:windows] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
7
  end
8
- after(:each) do
8
+ after do
9
9
  (@session.windows - [@window]).each do |w|
10
10
  @session.switch_to_window w
11
11
  w.close
@@ -16,7 +16,7 @@ Capybara::SpecHelper.spec '#open_new_window', requires: [:windows] do
16
16
  it 'should open new window with blank url and title' do
17
17
  window = @session.open_new_window
18
18
  @session.switch_to_window(window)
19
- expect(['', 'about:blank']).to include(@session.title)
19
+ expect(@session.title).to satisfy('be a blank title') { |title| ['', 'about:blank'].include? title }
20
20
  expect(@session.current_url).to eq('about:blank')
21
21
  end
22
22
 
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#switch_to_window', requires: [:windows] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
- expect(@session).to have_css('body.loaded')
7
+ @session.assert_selector(:css, 'body.loaded')
8
8
  end
9
9
 
10
- after(:each) do
10
+ after do
11
11
  (@session.windows - [@window]).each do |w|
12
12
  @session.switch_to_window w
13
13
  w.close
@@ -32,7 +32,7 @@ Capybara::SpecHelper.spec '#switch_to_window', requires: [:windows] do
32
32
  window = @session.open_new_window
33
33
  expect(@session.title).to eq('With Windows')
34
34
  @session.switch_to_window(window)
35
- expect(['', 'about:blank']).to include(@session.title)
35
+ expect(@session.title).to satisfy('be a blank title') { |title| ['', 'about:blank'].include? title }
36
36
  end
37
37
 
38
38
  it "should raise error when closed window is passed" do
@@ -48,7 +48,7 @@ Capybara::SpecHelper.spec '#switch_to_window', requires: [:windows] do
48
48
  end
49
49
 
50
50
  context "with block" do
51
- before(:each) do
51
+ before do
52
52
  @session.find(:css, '#openTwoWindows').click
53
53
  sleep(1) # wait for the windows to open
54
54
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#window_opened_by', requires: [:windows] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
- expect(@session).to have_css('body.loaded')
7
+ @session.assert_selector(:css, 'body.loaded')
8
8
  end
9
- after(:each) do
9
+ after do
10
10
  (@session.windows - [@window]).each do |w|
11
11
  @session.switch_to_window w
12
12
  w.close
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
4
- before(:each) do
4
+ before do
5
5
  @window = @session.current_window
6
6
  @session.visit('/with_windows')
7
7
  end
8
- after(:each) do
8
+ after do
9
9
  (@session.windows - [@window]).each do |w|
10
10
  @session.switch_to_window w
11
11
  w.close
@@ -14,7 +14,7 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
14
14
  end
15
15
 
16
16
  describe '#exists?' do
17
- before(:each) do
17
+ before do
18
18
  @other_window = @session.window_opened_by do
19
19
  @session.find(:css, '#openWindow').click
20
20
  end
@@ -41,7 +41,7 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
41
41
  end
42
42
 
43
43
  describe '#current?' do
44
- before(:each) do
44
+ before do
45
45
  @other_window = @session.window_opened_by do
46
46
  @session.find(:css, '#openWindow').click
47
47
  end
@@ -61,7 +61,7 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
61
61
  end
62
62
 
63
63
  describe '#close' do
64
- before(:each) do
64
+ before do
65
65
  @other_window = @session.window_opened_by do
66
66
  @session.find(:css, '#openWindow').click
67
67
  end
@@ -109,8 +109,16 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
109
109
  end
110
110
 
111
111
  describe '#resize_to' do
112
+ before do
113
+ @initial_size = @session.current_window.size
114
+ end
115
+ after do
116
+ @session.current_window.resize_to(*@initial_size)
117
+ sleep 0.5
118
+ end
119
+
112
120
  it 'should be able to resize window', requires: %i[windows js] do
113
- width, height = @session.current_window.size
121
+ width, height = @initial_size
114
122
  @session.current_window.resize_to(width - 100, height - 100)
115
123
  sleep 1
116
124
  expect(@session.current_window.size).to eq([width - 100, height - 100])
@@ -132,6 +140,14 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
132
140
  end
133
141
 
134
142
  describe '#maximize' do
143
+ before do
144
+ @initial_size = @session.current_window.size
145
+ end
146
+ after do
147
+ @session.current_window.resize_to(*@initial_size)
148
+ sleep 0.5
149
+ end
150
+
135
151
  it 'should be able to maximize window', requires: %i[windows js] do
136
152
  start_width, start_height = 400, 300
137
153
  @session.current_window.resize_to(start_width, start_height)
@@ -148,18 +164,17 @@ Capybara::SpecHelper.spec Capybara::Window, requires: [:windows] do
148
164
  end
149
165
 
150
166
  it 'should stay on current window if invoked not for current window', requires: %i[windows js] do
151
- cur_window_size = @session.current_window.size
152
167
  @other_window = @session.window_opened_by do
153
168
  @session.find(:css, '#openWindow').click
154
169
  end
155
-
156
170
  @other_window.resize_to(400, 300)
157
171
  sleep 0.5
158
172
  @other_window.maximize
159
173
  sleep 0.5 # The timing on maximize is finicky on Travis -- wait a bit for maximize to occur
160
174
 
161
175
  expect(@session.current_window).to eq(@window)
162
- expect(@session.current_window.size).to eq(cur_window_size)
176
+ # Maximizing the browser affects all tabs so this may not be valid in real browsers
177
+ # expect(@session.current_window.size).to eq(@initial_size)
163
178
 
164
179
  ow_width, ow_height = @other_window.size
165
180
  expect(ow_width).to be > 400