capybara 3.3.1 → 3.4.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/History.md +16 -0
- data/README.md +5 -7
- data/lib/capybara.rb +7 -6
- data/lib/capybara/config.rb +1 -1
- data/lib/capybara/dsl.rb +2 -2
- data/lib/capybara/helpers.rb +3 -3
- data/lib/capybara/minitest/spec.rb +3 -3
- data/lib/capybara/node/actions.rb +18 -18
- data/lib/capybara/node/base.rb +1 -1
- data/lib/capybara/node/element.rb +2 -2
- data/lib/capybara/node/finders.rb +6 -6
- data/lib/capybara/node/matchers.rb +5 -5
- data/lib/capybara/node/simple.rb +2 -2
- data/lib/capybara/queries/ancestor_query.rb +1 -1
- data/lib/capybara/queries/base_query.rb +12 -11
- data/lib/capybara/queries/current_path_query.rb +1 -1
- data/lib/capybara/queries/selector_query.rb +39 -15
- data/lib/capybara/queries/sibling_query.rb +1 -1
- data/lib/capybara/queries/text_query.rb +1 -1
- data/lib/capybara/rack_test/browser.rb +7 -7
- data/lib/capybara/rack_test/driver.rb +1 -1
- data/lib/capybara/rack_test/form.rb +7 -7
- data/lib/capybara/rack_test/node.rb +16 -16
- data/lib/capybara/rails.rb +1 -1
- data/lib/capybara/result.rb +8 -4
- data/lib/capybara/rspec/features.rb +4 -4
- data/lib/capybara/rspec/matchers.rb +6 -6
- data/lib/capybara/selector.rb +106 -90
- data/lib/capybara/selector/css.rb +4 -4
- data/lib/capybara/selector/filter_set.rb +52 -8
- data/lib/capybara/selector/selector.rb +39 -15
- data/lib/capybara/selenium/driver.rb +10 -10
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +8 -0
- data/lib/capybara/selenium/node.rb +9 -10
- data/lib/capybara/selenium/nodes/chrome_node.rb +18 -0
- data/lib/capybara/selenium/nodes/marionette_node.rb +32 -7
- data/lib/capybara/server.rb +3 -3
- data/lib/capybara/server/animation_disabler.rb +1 -1
- data/lib/capybara/server/middleware.rb +1 -1
- data/lib/capybara/session.rb +23 -19
- data/lib/capybara/session/config.rb +18 -3
- data/lib/capybara/spec/public/test.js +1 -1
- data/lib/capybara/spec/session/accept_alert_spec.rb +10 -10
- data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -3
- data/lib/capybara/spec/session/accept_prompt_spec.rb +9 -10
- data/lib/capybara/spec/session/all_spec.rb +33 -32
- data/lib/capybara/spec/session/ancestor_spec.rb +19 -19
- data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +38 -38
- data/lib/capybara/spec/session/assert_current_path_spec.rb +16 -16
- data/lib/capybara/spec/session/assert_selector_spec.rb +53 -53
- data/lib/capybara/spec/session/assert_style_spec.rb +3 -3
- data/lib/capybara/spec/session/assert_text_spec.rb +31 -30
- data/lib/capybara/spec/session/assert_title_spec.rb +12 -12
- data/lib/capybara/spec/session/attach_file_spec.rb +51 -52
- data/lib/capybara/spec/session/body_spec.rb +6 -6
- data/lib/capybara/spec/session/check_spec.rb +52 -47
- data/lib/capybara/spec/session/choose_spec.rb +32 -32
- data/lib/capybara/spec/session/click_button_spec.rb +103 -103
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +24 -23
- data/lib/capybara/spec/session/click_link_spec.rb +49 -48
- data/lib/capybara/spec/session/current_scope_spec.rb +7 -7
- data/lib/capybara/spec/session/current_url_spec.rb +26 -27
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +3 -3
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +2 -2
- data/lib/capybara/spec/session/element/assert_match_selector_spec.rb +8 -8
- data/lib/capybara/spec/session/element/match_css_spec.rb +10 -10
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +6 -6
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +51 -51
- data/lib/capybara/spec/session/evaluate_async_script_spec.rb +7 -7
- data/lib/capybara/spec/session/evaluate_script_spec.rb +15 -8
- data/lib/capybara/spec/session/execute_script_spec.rb +7 -7
- data/lib/capybara/spec/session/fill_in_spec.rb +43 -42
- data/lib/capybara/spec/session/find_button_spec.rb +23 -23
- data/lib/capybara/spec/session/find_by_id_spec.rb +7 -7
- data/lib/capybara/spec/session/find_field_spec.rb +32 -30
- data/lib/capybara/spec/session/find_link_spec.rb +21 -21
- data/lib/capybara/spec/session/find_spec.rb +153 -135
- data/lib/capybara/spec/session/first_spec.rb +41 -41
- data/lib/capybara/spec/session/frame/frame_title_spec.rb +5 -5
- data/lib/capybara/spec/session/frame/frame_url_spec.rb +5 -5
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +17 -17
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +31 -17
- data/lib/capybara/spec/session/go_back_spec.rb +1 -1
- data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
- data/lib/capybara/spec/session/has_all_selectors_spec.rb +17 -17
- data/lib/capybara/spec/session/has_button_spec.rb +13 -13
- data/lib/capybara/spec/session/has_css_spec.rb +133 -131
- data/lib/capybara/spec/session/has_current_path_spec.rb +29 -29
- data/lib/capybara/spec/session/has_field_spec.rb +58 -58
- data/lib/capybara/spec/session/has_link_spec.rb +4 -4
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +24 -24
- data/lib/capybara/spec/session/has_select_spec.rb +43 -43
- data/lib/capybara/spec/session/has_selector_spec.rb +71 -71
- data/lib/capybara/spec/session/has_style_spec.rb +3 -3
- data/lib/capybara/spec/session/has_table_spec.rb +4 -4
- data/lib/capybara/spec/session/has_text_spec.rb +53 -52
- data/lib/capybara/spec/session/has_title_spec.rb +14 -14
- data/lib/capybara/spec/session/has_xpath_spec.rb +39 -38
- data/lib/capybara/spec/session/headers_spec.rb +1 -1
- data/lib/capybara/spec/session/html_spec.rb +6 -6
- data/lib/capybara/spec/session/node_spec.rb +129 -123
- data/lib/capybara/spec/session/node_wrapper_spec.rb +10 -7
- data/lib/capybara/spec/session/refresh_spec.rb +4 -7
- data/lib/capybara/spec/session/reset_session_spec.rb +28 -28
- data/lib/capybara/spec/session/response_code_spec.rb +1 -1
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +2 -2
- data/lib/capybara/spec/session/save_page_spec.rb +37 -37
- data/lib/capybara/spec/session/save_screenshot_spec.rb +6 -6
- data/lib/capybara/spec/session/screenshot_spec.rb +2 -2
- data/lib/capybara/spec/session/select_spec.rb +81 -81
- data/lib/capybara/spec/session/selectors_spec.rb +17 -17
- data/lib/capybara/spec/session/sibling_spec.rb +9 -9
- data/lib/capybara/spec/session/text_spec.rb +23 -23
- data/lib/capybara/spec/session/title_spec.rb +5 -5
- data/lib/capybara/spec/session/uncheck_spec.rb +24 -20
- data/lib/capybara/spec/session/unselect_spec.rb +37 -37
- data/lib/capybara/spec/session/visit_spec.rb +48 -49
- data/lib/capybara/spec/session/window/current_window_spec.rb +1 -1
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +16 -16
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +2 -2
- data/lib/capybara/spec/session/window/window_spec.rb +4 -4
- data/lib/capybara/spec/session/window/within_window_spec.rb +14 -14
- data/lib/capybara/spec/session/within_spec.rb +41 -41
- data/lib/capybara/spec/spec_helper.rb +11 -9
- data/lib/capybara/spec/test_app.rb +18 -17
- data/lib/capybara/spec/views/form.erb +29 -31
- data/lib/capybara/spec/views/with_html.erb +2 -2
- data/lib/capybara/version.rb +1 -1
- data/spec/basic_node_spec.rb +23 -23
- data/spec/capybara_spec.rb +20 -20
- data/spec/css_splitter_spec.rb +7 -7
- data/spec/dsl_spec.rb +37 -32
- data/spec/filter_set_spec.rb +4 -4
- data/spec/fixtures/selenium_driver_rspec_failure.rb +1 -1
- data/spec/fixtures/selenium_driver_rspec_success.rb +1 -1
- data/spec/minitest_spec.rb +4 -4
- data/spec/minitest_spec_spec.rb +23 -23
- data/spec/per_session_config_spec.rb +5 -5
- data/spec/rack_test_spec.rb +44 -44
- data/spec/result_spec.rb +14 -14
- data/spec/rspec/features_spec.rb +13 -13
- data/spec/rspec/scenarios_spec.rb +4 -4
- data/spec/rspec/shared_spec_matchers.rb +282 -281
- data/spec/rspec/views_spec.rb +3 -3
- data/spec/rspec_matchers_spec.rb +10 -10
- data/spec/rspec_spec.rb +29 -29
- data/spec/selector_spec.rb +64 -64
- data/spec/selenium_spec_chrome.rb +14 -22
- data/spec/selenium_spec_chrome_remote.rb +28 -8
- data/spec/selenium_spec_edge.rb +9 -4
- data/spec/selenium_spec_firefox_remote.rb +87 -0
- data/spec/selenium_spec_ie.rb +9 -4
- data/spec/selenium_spec_marionette.rb +42 -18
- data/spec/server_spec.rb +29 -27
- data/spec/session_spec.rb +17 -17
- data/spec/shared_selenium_session.rb +70 -52
- data/spec/spec_helper.rb +1 -1
- metadata +4 -2
@@ -5,17 +5,17 @@ class NodeWrapper
|
|
5
5
|
def to_capybara_node(); @element end
|
6
6
|
end
|
7
7
|
|
8
|
-
Capybara::SpecHelper.spec
|
8
|
+
Capybara::SpecHelper.spec '#to_capybara_node' do
|
9
9
|
before do
|
10
10
|
@session.visit('/with_html')
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
13
|
+
it 'should support have_xxx expectations' do
|
14
14
|
para = NodeWrapper.new(@session.find(:css, '#first'))
|
15
|
-
expect(para).to have_link(
|
15
|
+
expect(para).to have_link('ullamco')
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'should support within' do
|
19
19
|
para = NodeWrapper.new(@session.find(:css, '#first'))
|
20
20
|
expect(@session).to have_css('#second')
|
21
21
|
@session.within(para) do
|
@@ -24,13 +24,16 @@ Capybara::SpecHelper.spec "#to_capybara_node" do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
27
|
+
it 'should generate correct errors' do
|
28
28
|
para = NodeWrapper.new(@session.find(:css, '#first'))
|
29
29
|
expect do
|
30
|
-
expect(para).to have_text(
|
30
|
+
expect(para).to have_text('Header Class Test One')
|
31
31
|
end.to raise_error(/^expected to find text "Header Class Test One" in "Lore/)
|
32
32
|
expect do
|
33
33
|
expect(para).to have_css('#second')
|
34
|
-
end.to raise_error(/^expected to find
|
34
|
+
end.to raise_error(/^expected to find css "#second" within #<Capybara::Node::Element/)
|
35
|
+
expect do
|
36
|
+
expect(para).to have_link(href: %r{/without_simple_html})
|
37
|
+
end.to raise_error(%r{^expected to find visible link nil with href matching /\\/without_simple_html/ within #<Capybara::Node::Element})
|
35
38
|
end
|
36
39
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#refresh' do
|
4
|
-
it
|
4
|
+
it 'reload the page' do
|
5
5
|
@session.visit('/form')
|
6
6
|
expect(@session).to have_select('form_locale', selected: 'English')
|
7
7
|
@session.select('Swedish', from: 'form_locale')
|
@@ -10,17 +10,14 @@ Capybara::SpecHelper.spec '#refresh' do
|
|
10
10
|
expect(@session).to have_select('form_locale', selected: 'English')
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
14
|
-
quietly { @session.visit(
|
13
|
+
it 'raises any errors caught inside the server', requires: [:server] do
|
14
|
+
quietly { @session.visit('/error') }
|
15
15
|
expect do
|
16
16
|
@session.refresh
|
17
17
|
end.to raise_error(TestApp::TestAppError)
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
21
|
-
if marionette?(@session) || edge?(@session) || ie?(@session)
|
22
|
-
skip "Firefox and Edge insist on prompting without providing a way to suppress"
|
23
|
-
end
|
20
|
+
it 'it reposts' do
|
24
21
|
@session.visit('/form')
|
25
22
|
@session.select('Sweden', from: 'form_region')
|
26
23
|
@session.click_button('awesome')
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#reset_session!' do
|
4
|
-
it
|
4
|
+
it 'removes cookies' do
|
5
5
|
@session.visit('/set_cookie')
|
6
6
|
@session.visit('/get_cookie')
|
7
7
|
expect(@session).to have_content('test_cookie')
|
@@ -11,7 +11,7 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
11
11
|
expect(@session.body).not_to include('test_cookie')
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'resets current url, host, path' do
|
15
15
|
@session.visit '/foo'
|
16
16
|
expect(@session.current_url).not_to be_empty
|
17
17
|
expect(@session.current_host).not_to be_empty
|
@@ -23,7 +23,7 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
23
23
|
expect(@session.current_host).to be_nil
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
26
|
+
it 'resets page body' do
|
27
27
|
@session.visit('/with_html')
|
28
28
|
expect(@session).to have_content('This is a test')
|
29
29
|
expect(@session.find('.//h1').text).to include('This is a test')
|
@@ -33,37 +33,37 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
33
33
|
expect(@session).to have_no_selector('.//h1')
|
34
34
|
end
|
35
35
|
|
36
|
-
it
|
37
|
-
@session.visit(
|
36
|
+
it 'is synchronous' do
|
37
|
+
@session.visit('/with_slow_unload')
|
38
38
|
expect(@session).to have_selector(:css, 'div')
|
39
39
|
@session.reset_session!
|
40
|
-
expect(@session).to have_no_selector :xpath,
|
40
|
+
expect(@session).to have_no_selector :xpath, '/html/body/*', wait: false
|
41
41
|
end
|
42
42
|
|
43
|
-
it
|
43
|
+
it 'handles modals during unload', requires: [:modals] do
|
44
44
|
@session.visit('/with_unload_alert')
|
45
45
|
expect(@session).to have_selector(:css, 'div')
|
46
46
|
expect { @session.reset_session! }.not_to raise_error
|
47
|
-
expect(@session).to have_no_selector :xpath,
|
47
|
+
expect(@session).to have_no_selector :xpath, '/html/body/*', wait: false
|
48
48
|
end
|
49
49
|
|
50
|
-
it
|
50
|
+
it 'handles already open modals', requires: [:modals] do
|
51
51
|
@session.visit('/with_unload_alert')
|
52
52
|
@session.click_link('Go away')
|
53
53
|
expect { @session.reset_session! }.not_to raise_error
|
54
|
-
expect(@session).to have_no_selector :xpath,
|
54
|
+
expect(@session).to have_no_selector :xpath, '/html/body/*', wait: false
|
55
55
|
end
|
56
56
|
|
57
|
-
it
|
58
|
-
quietly { @session.visit(
|
57
|
+
it 'raises any standard errors caught inside the server', requires: [:server] do
|
58
|
+
quietly { @session.visit('/error') }
|
59
59
|
expect do
|
60
60
|
@session.reset_session!
|
61
61
|
end.to raise_error(TestApp::TestAppError)
|
62
|
-
@session.visit(
|
63
|
-
expect(@session.current_path).to eq(
|
62
|
+
@session.visit('/')
|
63
|
+
expect(@session.current_path).to eq('/')
|
64
64
|
end
|
65
65
|
|
66
|
-
it
|
66
|
+
it 'closes extra windows', requires: [:windows] do
|
67
67
|
@session.visit('/with_html')
|
68
68
|
@session.open_new_window
|
69
69
|
@session.open_new_window
|
@@ -72,7 +72,7 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
72
72
|
expect(@session.windows.size).to eq 1
|
73
73
|
end
|
74
74
|
|
75
|
-
it
|
75
|
+
it 'closes extra windows when not on the first window', requires: [:windows] do
|
76
76
|
@session.visit('/with_html')
|
77
77
|
@session.switch_to_window(@session.open_new_window)
|
78
78
|
@session.open_new_window
|
@@ -81,22 +81,22 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
81
81
|
expect(@session.windows.size).to eq 1
|
82
82
|
end
|
83
83
|
|
84
|
-
context
|
84
|
+
context 'When reuse_server == false' do
|
85
85
|
before do
|
86
86
|
@reuse_server = Capybara.reuse_server
|
87
87
|
Capybara.reuse_server = false
|
88
88
|
end
|
89
89
|
|
90
|
-
it
|
90
|
+
it 'raises any standard errors caught inside the server during a second session', requires: [:server] do
|
91
91
|
Capybara.using_driver(@session.mode) do
|
92
92
|
Capybara.using_session(:another_session) do
|
93
93
|
@another_session = Capybara.current_session
|
94
|
-
quietly { @another_session.visit(
|
94
|
+
quietly { @another_session.visit('/error') }
|
95
95
|
expect do
|
96
96
|
@another_session.reset_session!
|
97
97
|
end.to raise_error(TestApp::TestAppError)
|
98
|
-
@another_session.visit(
|
99
|
-
expect(@another_session.current_path).to eq(
|
98
|
+
@another_session.visit('/')
|
99
|
+
expect(@another_session.current_path).to eq('/')
|
100
100
|
end
|
101
101
|
end
|
102
102
|
end
|
@@ -106,16 +106,16 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
-
it
|
109
|
+
it 'raises configured errors caught inside the server', requires: [:server] do
|
110
110
|
prev_errors = Capybara.server_errors.dup
|
111
111
|
|
112
112
|
Capybara.server_errors = [LoadError]
|
113
|
-
quietly { @session.visit(
|
113
|
+
quietly { @session.visit('/error') }
|
114
114
|
expect do
|
115
115
|
@session.reset_session!
|
116
116
|
end.not_to raise_error
|
117
117
|
|
118
|
-
quietly { @session.visit(
|
118
|
+
quietly { @session.visit('/load_error') }
|
119
119
|
expect do
|
120
120
|
@session.reset_session!
|
121
121
|
end.to raise_error(LoadError)
|
@@ -123,11 +123,11 @@ Capybara::SpecHelper.spec '#reset_session!' do
|
|
123
123
|
Capybara.server_errors = prev_errors
|
124
124
|
end
|
125
125
|
|
126
|
-
it
|
126
|
+
it 'ignores server errors when `Capybara.raise_server_errors = false`', requires: [:server] do
|
127
127
|
Capybara.raise_server_errors = false
|
128
|
-
quietly { @session.visit(
|
128
|
+
quietly { @session.visit('/error') }
|
129
129
|
@session.reset_session!
|
130
|
-
@session.visit(
|
131
|
-
expect(@session.current_path).to eq(
|
130
|
+
@session.visit('/')
|
131
|
+
expect(@session.current_path).to eq('/')
|
132
132
|
end
|
133
133
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#status_code' do
|
4
|
-
it
|
4
|
+
it 'should return response codes', requires: [:status_code] do
|
5
5
|
@session.visit('/with_simple_html')
|
6
6
|
expect(@session.status_code).to eq(200)
|
7
7
|
end
|
@@ -8,12 +8,12 @@ Capybara::SpecHelper.spec '#save_and_open_page' do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
after do
|
11
|
-
Dir.glob(
|
11
|
+
Dir.glob('capybara-*.html').each do |file|
|
12
12
|
FileUtils.rm(file)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
16
|
+
it 'sends open method to launchy' do
|
17
17
|
allow(Launchy).to receive(:open)
|
18
18
|
@session.save_and_open_page
|
19
19
|
expect(Launchy).to have_received(:open).with(/capybara-\d+\.html/)
|
@@ -1,79 +1,79 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#save_page' do
|
4
|
-
let(:alternative_path) { File.join(Dir.pwd,
|
4
|
+
let(:alternative_path) { File.join(Dir.pwd, 'save_and_open_page_tmp') }
|
5
5
|
before do
|
6
6
|
@old_save_path = Capybara.save_path
|
7
7
|
Capybara.save_path = nil
|
8
|
-
@session.visit(
|
8
|
+
@session.visit('/foo')
|
9
9
|
end
|
10
10
|
|
11
11
|
after do
|
12
12
|
Capybara.save_path = @old_save_path
|
13
|
-
Dir.glob(
|
13
|
+
Dir.glob('capybara-*.html').each do |file|
|
14
14
|
FileUtils.rm(file)
|
15
15
|
end
|
16
16
|
FileUtils.rm_rf alternative_path
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
19
|
+
it 'saves the page in the root directory' do
|
20
20
|
@session.save_page
|
21
|
-
path = Dir.glob(
|
22
|
-
expect(File.read(path)).to include(
|
21
|
+
path = Dir.glob('capybara-*.html').first
|
22
|
+
expect(File.read(path)).to include('Another World')
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it 'generates a sensible filename' do
|
26
26
|
@session.save_page
|
27
|
-
filename = Dir.glob(
|
27
|
+
filename = Dir.glob('capybara-*.html').first
|
28
28
|
expect(filename).to match(/^capybara-\d+\.html$/)
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
31
|
+
it 'can store files in a specified directory' do
|
32
32
|
Capybara.save_path = alternative_path
|
33
33
|
@session.save_page
|
34
|
-
path = Dir.glob(alternative_path +
|
35
|
-
expect(File.read(path)).to include(
|
34
|
+
path = Dir.glob(alternative_path + '/capybara-*.html').first
|
35
|
+
expect(File.read(path)).to include('Another World')
|
36
36
|
end
|
37
37
|
|
38
|
-
it
|
39
|
-
@session.save_page(
|
40
|
-
expect(File.read(
|
38
|
+
it 'uses the given filename' do
|
39
|
+
@session.save_page('capybara-001122.html')
|
40
|
+
expect(File.read('capybara-001122.html')).to include('Another World')
|
41
41
|
end
|
42
42
|
|
43
|
-
it
|
43
|
+
it 'can store files in a specified directory with a given filename' do
|
44
44
|
Capybara.save_path = alternative_path
|
45
|
-
@session.save_page(
|
46
|
-
path = alternative_path +
|
47
|
-
expect(File.read(path)).to include(
|
45
|
+
@session.save_page('capybara-001133.html')
|
46
|
+
path = alternative_path + '/capybara-001133.html'
|
47
|
+
expect(File.read(path)).to include('Another World')
|
48
48
|
end
|
49
49
|
|
50
|
-
it
|
50
|
+
it 'can store files in a specified directory with a given relative filename' do
|
51
51
|
Capybara.save_path = alternative_path
|
52
|
-
@session.save_page(
|
53
|
-
path = alternative_path +
|
54
|
-
expect(File.read(path)).to include(
|
52
|
+
@session.save_page('tmp/capybara-001144.html')
|
53
|
+
path = alternative_path + '/tmp/capybara-001144.html'
|
54
|
+
expect(File.read(path)).to include('Another World')
|
55
55
|
end
|
56
56
|
|
57
|
-
it
|
57
|
+
it 'returns an absolute path in pwd' do
|
58
58
|
result = @session.save_page
|
59
|
-
path = File.expand_path(Dir.glob(
|
59
|
+
path = File.expand_path(Dir.glob('capybara-*.html').first, Dir.pwd)
|
60
60
|
expect(result).to eq(path)
|
61
61
|
end
|
62
62
|
|
63
|
-
it
|
63
|
+
it 'returns an absolute path in given directory' do
|
64
64
|
Capybara.save_path = alternative_path
|
65
65
|
result = @session.save_page
|
66
|
-
path = File.expand_path(Dir.glob(alternative_path +
|
66
|
+
path = File.expand_path(Dir.glob(alternative_path + '/capybara-*.html').first, alternative_path)
|
67
67
|
expect(result).to eq(path)
|
68
68
|
end
|
69
69
|
|
70
|
-
context
|
71
|
-
before { Capybara.asset_host =
|
70
|
+
context 'asset_host contains a string' do
|
71
|
+
before { Capybara.asset_host = 'http://example.com' }
|
72
72
|
|
73
73
|
after { Capybara.asset_host = nil }
|
74
74
|
|
75
|
-
it
|
76
|
-
@session.visit(
|
75
|
+
it 'prepends base tag with value from asset_host to the head' do
|
76
|
+
@session.visit('/with_js')
|
77
77
|
path = @session.save_page
|
78
78
|
|
79
79
|
result = File.read(path)
|
@@ -82,29 +82,29 @@ Capybara::SpecHelper.spec '#save_page' do
|
|
82
82
|
|
83
83
|
it "doesn't prepend base tag to pages when asset_host is nil" do
|
84
84
|
Capybara.asset_host = nil
|
85
|
-
@session.visit(
|
85
|
+
@session.visit('/with_js')
|
86
86
|
path = @session.save_page
|
87
87
|
|
88
88
|
result = File.read(path)
|
89
89
|
expect(result).to include('<html')
|
90
|
-
expect(result).not_to include(
|
90
|
+
expect(result).not_to include('http://example.com')
|
91
91
|
end
|
92
92
|
|
93
93
|
it "doesn't prepend base tag to pages which already have it" do
|
94
|
-
@session.visit(
|
94
|
+
@session.visit('/with_base_tag')
|
95
95
|
path = @session.save_page
|
96
96
|
|
97
97
|
result = File.read(path)
|
98
98
|
expect(result).to include('<html')
|
99
|
-
expect(result).not_to include(
|
99
|
+
expect(result).not_to include('http://example.com')
|
100
100
|
end
|
101
101
|
|
102
|
-
it
|
103
|
-
@session.visit(
|
102
|
+
it 'executes successfully even if the page is missing a <head>' do
|
103
|
+
@session.visit('/with_simple_html')
|
104
104
|
path = @session.save_page
|
105
105
|
|
106
106
|
result = File.read(path)
|
107
|
-
expect(result).to include(
|
107
|
+
expect(result).to include('Bar')
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
4
|
-
let(:alternative_path) { File.join(Dir.pwd,
|
4
|
+
let(:alternative_path) { File.join(Dir.pwd, 'save_screenshot_tmp') }
|
5
5
|
before do
|
6
6
|
@old_save_path = Capybara.save_path
|
7
7
|
Capybara.save_path = nil
|
@@ -13,7 +13,7 @@ Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
|
13
13
|
FileUtils.rm_rf alternative_path
|
14
14
|
end
|
15
15
|
|
16
|
-
it
|
16
|
+
it 'generates sensible filename' do
|
17
17
|
allow(@session.driver).to receive(:save_screenshot)
|
18
18
|
|
19
19
|
@session.save_screenshot
|
@@ -22,7 +22,7 @@ Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
|
22
22
|
expect(@session.driver).to have_received(:save_screenshot).with(regexp, {})
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
25
|
+
it 'allows to specify another path' do
|
26
26
|
allow(@session.driver).to receive(:save_screenshot)
|
27
27
|
|
28
28
|
custom_path = 'screenshots/1.png'
|
@@ -31,8 +31,8 @@ Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
|
31
31
|
expect(@session.driver).to have_received(:save_screenshot).with(/#{custom_path}$/, {})
|
32
32
|
end
|
33
33
|
|
34
|
-
context
|
35
|
-
it
|
34
|
+
context 'with Capybara.save_path' do
|
35
|
+
it 'file is generated in the correct location' do
|
36
36
|
Capybara.save_path = alternative_path
|
37
37
|
allow(@session.driver).to receive(:save_screenshot)
|
38
38
|
|
@@ -42,7 +42,7 @@ Capybara::SpecHelper.spec '#save_screenshot', requires: [:screenshot] do
|
|
42
42
|
expect(@session.driver).to have_received(:save_screenshot).with(regexp, {})
|
43
43
|
end
|
44
44
|
|
45
|
-
it
|
45
|
+
it 'relative paths are relative to save_path' do
|
46
46
|
Capybara.save_path = alternative_path
|
47
47
|
allow(@session.driver).to receive(:save_screenshot)
|
48
48
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# coding: US-ASCII
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
Capybara::SpecHelper.spec
|
4
|
+
Capybara::SpecHelper.spec '#save_screenshot' do
|
5
5
|
let(:image_path) { File.join(Dir.tmpdir, 'capybara-screenshot.png') }
|
6
6
|
|
7
7
|
before do
|
8
8
|
@session.visit '/'
|
9
9
|
end
|
10
10
|
|
11
|
-
it
|
11
|
+
it 'should generate PNG file', requires: [:screenshot] do
|
12
12
|
path = @session.save_screenshot image_path
|
13
13
|
|
14
14
|
magic = File.read(image_path, 4)
|