capybara 2.10.1 → 2.11.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 +22 -0
- data/README.md +48 -29
- data/lib/capybara/node/actions.rb +39 -48
- data/lib/capybara/node/document.rb +4 -0
- data/lib/capybara/node/document_matchers.rb +13 -14
- data/lib/capybara/node/element.rb +21 -0
- data/lib/capybara/node/finders.rb +3 -3
- data/lib/capybara/node/matchers.rb +38 -31
- data/lib/capybara/node/simple.rb +3 -0
- data/lib/capybara/queries/selector_query.rb +4 -2
- data/lib/capybara/rack_test/node.rb +1 -1
- data/lib/capybara/result.rb +3 -1
- data/lib/capybara/rspec/matchers.rb +53 -95
- data/lib/capybara/selector/selector.rb +10 -5
- data/lib/capybara/selector.rb +7 -7
- data/lib/capybara/selenium/driver.rb +34 -7
- data/lib/capybara/selenium/node.rb +5 -1
- data/lib/capybara/session/matchers.rb +12 -14
- data/lib/capybara/session.rb +30 -29
- data/lib/capybara/spec/public/test.js +4 -0
- data/lib/capybara/spec/session/accept_alert_spec.rb +1 -1
- data/lib/capybara/spec/session/attach_file_spec.rb +1 -1
- data/lib/capybara/spec/session/check_spec.rb +8 -0
- data/lib/capybara/spec/session/choose_spec.rb +5 -0
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +5 -0
- data/lib/capybara/spec/session/click_link_spec.rb +5 -0
- data/lib/capybara/spec/session/element/assert_match_selector.rb +5 -0
- data/lib/capybara/spec/session/element/match_css_spec.rb +6 -0
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +2 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +5 -0
- data/lib/capybara/spec/session/find_spec.rb +1 -1
- data/lib/capybara/spec/session/first_spec.rb +10 -0
- data/lib/capybara/spec/session/has_selector_spec.rb +11 -0
- data/lib/capybara/spec/session/node_spec.rb +12 -1
- data/lib/capybara/spec/session/text_spec.rb +3 -4
- data/lib/capybara/spec/test_app.rb +10 -1
- data/lib/capybara/spec/views/with_js.erb +3 -1
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +18 -2
- data/lib/capybara.rb +8 -9
- data/spec/basic_node_spec.rb +1 -1
- data/spec/capybara_spec.rb +4 -1
- data/spec/fixtures/selenium_driver_rspec_failure.rb +4 -1
- data/spec/fixtures/selenium_driver_rspec_success.rb +4 -1
- data/spec/result_spec.rb +28 -2
- data/spec/rspec/{matchers_spec.rb → shared_spec_matchers.rb} +4 -3
- data/spec/selector_spec.rb +1 -1
- data/spec/selenium_spec_chrome.rb +36 -5
- data/spec/selenium_spec_firefox.rb +67 -0
- data/spec/selenium_spec_marionette.rb +114 -0
- data/spec/shared_selenium_session.rb +6 -4
- metadata +15 -8
- data/spec/selenium_firefox_spec.rb +0 -44
data/spec/result_spec.rb
CHANGED
|
@@ -66,8 +66,8 @@ RSpec.describe Capybara::Result do
|
|
|
66
66
|
|
|
67
67
|
it 'supports all modes of []' do
|
|
68
68
|
expect(result[1].text).to eq 'Beta'
|
|
69
|
-
expect(result[0,2].map
|
|
70
|
-
expect(result[1..3].map
|
|
69
|
+
expect(result[0,2].map(&:text)).to eq ['Alpha', 'Beta']
|
|
70
|
+
expect(result[1..3].map(&:text)).to eq ['Beta', 'Gamma', 'Delta']
|
|
71
71
|
expect(result[-1].text).to eq 'Delta'
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -92,4 +92,30 @@ RSpec.describe Capybara::Result do
|
|
|
92
92
|
result.to_a
|
|
93
93
|
expect(result.instance_variable_get('@result_cache').size).to eq 4
|
|
94
94
|
end
|
|
95
|
+
|
|
96
|
+
context '#each' do
|
|
97
|
+
it 'lazily evaluates' do
|
|
98
|
+
skip 'JRuby has an issue with lazy enumerator next evaluation' if RUBY_PLATFORM == 'java'
|
|
99
|
+
results=[]
|
|
100
|
+
result.each do |el|
|
|
101
|
+
results << el
|
|
102
|
+
expect(result.instance_variable_get('@result_cache').size).to eq results.size
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
expect(results.size).to eq 4
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
context 'without a block' do
|
|
109
|
+
it 'returns an iterator' do
|
|
110
|
+
expect(result.each).to be_a(Enumerator)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it 'lazily evaluates' do
|
|
114
|
+
skip 'JRuby has an issue with lazy enumerator next evaluation' if RUBY_PLATFORM == 'java'
|
|
115
|
+
result.each.with_index do |el, idx|
|
|
116
|
+
expect(result.instance_variable_get('@result_cache').size).to eq(idx+1) # 0 indexing
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
95
121
|
end
|
|
@@ -3,7 +3,8 @@ require 'spec_helper'
|
|
|
3
3
|
require 'capybara/dsl'
|
|
4
4
|
require 'capybara/rspec/matchers'
|
|
5
5
|
|
|
6
|
-
RSpec.
|
|
6
|
+
RSpec.shared_examples Capybara::RSpecMatchers do |session, mode|
|
|
7
|
+
|
|
7
8
|
include Capybara::DSL
|
|
8
9
|
include Capybara::RSpecMatchers
|
|
9
10
|
|
|
@@ -541,7 +542,7 @@ RSpec.describe Capybara::RSpecMatchers do
|
|
|
541
542
|
|
|
542
543
|
context 'with wait' do
|
|
543
544
|
before(:each) do
|
|
544
|
-
@session =
|
|
545
|
+
@session = session
|
|
545
546
|
@session.visit('/with_js')
|
|
546
547
|
end
|
|
547
548
|
|
|
@@ -586,7 +587,7 @@ RSpec.describe Capybara::RSpecMatchers do
|
|
|
586
587
|
|
|
587
588
|
context 'with wait' do
|
|
588
589
|
before(:each) do
|
|
589
|
-
@session =
|
|
590
|
+
@session = session
|
|
590
591
|
@session.visit('/with_js')
|
|
591
592
|
end
|
|
592
593
|
|
data/spec/selector_spec.rb
CHANGED
|
@@ -102,7 +102,7 @@ RSpec.describe Capybara do
|
|
|
102
102
|
table: ".//table"
|
|
103
103
|
}
|
|
104
104
|
selectors.each do |selector, xpath|
|
|
105
|
-
results = string.all(selector,nil).to_a.map
|
|
105
|
+
results = string.all(selector,nil).to_a.map(&:native)
|
|
106
106
|
expect(results.size).to be > 0
|
|
107
107
|
expect(results).to eq string.all(:xpath, xpath).to_a.map(&:native)
|
|
108
108
|
end
|
|
@@ -8,16 +8,47 @@ Capybara.register_driver :selenium_chrome do |app|
|
|
|
8
8
|
Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => args)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
Capybara.register_driver :selenium_chrome_clear_storage do |app|
|
|
12
|
+
args = ENV['TRAVIS'] ? ['no-sandbox' ] : []
|
|
13
|
+
Capybara::Selenium::Driver.new(app, :browser => :chrome,
|
|
14
|
+
:args => args,
|
|
15
|
+
clear_local_storage: true,
|
|
16
|
+
clear_session_storage: true)
|
|
17
|
+
end
|
|
18
|
+
|
|
11
19
|
module TestSessions
|
|
12
20
|
Chrome = Capybara::Session.new(:selenium_chrome, TestApp)
|
|
13
21
|
end
|
|
14
22
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
] unless ENV['TRAVIS'] && (RUBY_PLATFORM == 'java')
|
|
23
|
+
skipped_tests = [:response_headers, :status_code, :trigger]
|
|
24
|
+
skipped_tests << :windows if ENV['TRAVIS'] && !ENV['WINDOW_TEST']
|
|
25
|
+
|
|
26
|
+
Capybara::SpecHelper.run_specs TestSessions::Chrome, "selenium_chrome", capybara_skip: skipped_tests
|
|
20
27
|
|
|
21
28
|
RSpec.describe "Capybara::Session with chrome" do
|
|
22
29
|
include_examples "Capybara::Session", TestSessions::Chrome, :selenium_chrome
|
|
30
|
+
|
|
31
|
+
context "storage" do
|
|
32
|
+
describe "#reset!" do
|
|
33
|
+
it "does not clear either storage by default" do
|
|
34
|
+
@session = TestSessions::Chrome
|
|
35
|
+
@session.visit('/with_js')
|
|
36
|
+
@session.find(:css, '#set-storage').click
|
|
37
|
+
@session.reset!
|
|
38
|
+
@session.visit('/with_js')
|
|
39
|
+
expect(@session.driver.browser.local_storage.keys).not_to be_empty
|
|
40
|
+
expect(@session.driver.browser.session_storage.keys).not_to be_empty
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "clears storage when set" do
|
|
44
|
+
@session = Capybara::Session.new(:selenium_chrome_clear_storage, TestApp)
|
|
45
|
+
@session.visit('/with_js')
|
|
46
|
+
@session.find(:css, '#set-storage').click
|
|
47
|
+
@session.reset!
|
|
48
|
+
@session.visit('/with_js')
|
|
49
|
+
expect(@session.driver.browser.local_storage.keys).to be_empty
|
|
50
|
+
expect(@session.driver.browser.session_storage.keys).to be_empty
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
23
54
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
require "selenium-webdriver"
|
|
4
|
+
require 'shared_selenium_session'
|
|
5
|
+
require 'rspec/shared_spec_matchers'
|
|
6
|
+
|
|
7
|
+
Capybara.register_driver :selenium_firefox do |app|
|
|
8
|
+
Capybara::Selenium::Driver.new(
|
|
9
|
+
app,
|
|
10
|
+
browser: :firefox,
|
|
11
|
+
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: false)
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Capybara.register_driver :selenium_firefox_cant_clear_storage do |app|
|
|
16
|
+
Capybara::Selenium::Driver.new(
|
|
17
|
+
app,
|
|
18
|
+
browser: :firefox,
|
|
19
|
+
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: false),
|
|
20
|
+
clear_local_storage: true,
|
|
21
|
+
clear_session_storage: true
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
module TestSessions
|
|
26
|
+
Selenium = Capybara::Session.new(:selenium_firefox, TestApp)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
skipped_tests = [
|
|
30
|
+
:response_headers,
|
|
31
|
+
:status_code,
|
|
32
|
+
:trigger
|
|
33
|
+
]
|
|
34
|
+
skipped_tests << :windows if ENV['TRAVIS'] && !ENV['WINDOW_TEST']
|
|
35
|
+
|
|
36
|
+
Capybara::SpecHelper.run_specs TestSessions::Selenium, "selenium", capybara_skip: skipped_tests
|
|
37
|
+
|
|
38
|
+
RSpec.describe "Capybara::Session with legacy firefox" do
|
|
39
|
+
include_examples "Capybara::Session", TestSessions::Selenium, :selenium_firefox
|
|
40
|
+
include_examples Capybara::RSpecMatchers, TestSessions::Selenium, :selenium_firefox
|
|
41
|
+
|
|
42
|
+
context "storage" do
|
|
43
|
+
it "warns storage clearing isn't available" do
|
|
44
|
+
@session = Capybara::Session.new(:selenium_firefox_cant_clear_storage, TestApp)
|
|
45
|
+
expect_any_instance_of(Kernel).to receive(:warn).with('sessionStorage clear requested but is not available for this driver')
|
|
46
|
+
expect_any_instance_of(Kernel).to receive(:warn).with('localStorage clear requested but is not available for this driver')
|
|
47
|
+
@session.visit('/')
|
|
48
|
+
@session.reset!
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
RSpec.describe Capybara::Selenium::Driver do
|
|
54
|
+
before do
|
|
55
|
+
@driver = Capybara::Selenium::Driver.new(TestApp, browser: :firefox, desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: false))
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe '#quit' do
|
|
59
|
+
it "should reset browser when quit" do
|
|
60
|
+
expect(@driver.browser).to be
|
|
61
|
+
@driver.quit
|
|
62
|
+
#access instance variable directly so we don't create a new browser instance
|
|
63
|
+
expect(@driver.instance_variable_get(:@browser)).to be_nil
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
require "selenium-webdriver"
|
|
4
|
+
require 'shared_selenium_session'
|
|
5
|
+
require 'rspec/shared_spec_matchers'
|
|
6
|
+
|
|
7
|
+
Capybara.register_driver :selenium_marionette do |app|
|
|
8
|
+
Capybara::Selenium::Driver.new(
|
|
9
|
+
app,
|
|
10
|
+
browser: :firefox,
|
|
11
|
+
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: true)
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Capybara.register_driver :selenium_marionette_clear_storage do |app|
|
|
16
|
+
Capybara::Selenium::Driver.new(
|
|
17
|
+
app,
|
|
18
|
+
browser: :firefox,
|
|
19
|
+
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(marionette: true),
|
|
20
|
+
clear_local_storage: true,
|
|
21
|
+
clear_session_storage: true
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
module TestSessions
|
|
26
|
+
SeleniumMarionette = Capybara::Session.new(:selenium_marionette, TestApp)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
skipped_tests = [
|
|
30
|
+
:response_headers,
|
|
31
|
+
:status_code,
|
|
32
|
+
:trigger
|
|
33
|
+
]
|
|
34
|
+
skipped_tests << :windows if ENV['TRAVIS'] && !ENV['WINDOW_TEST']
|
|
35
|
+
|
|
36
|
+
Capybara::SpecHelper.run_specs TestSessions::SeleniumMarionette, "selenium", capybara_skip: skipped_tests
|
|
37
|
+
|
|
38
|
+
RSpec.describe "Capybara::Session with firefox" do
|
|
39
|
+
include_examples "Capybara::Session", TestSessions::SeleniumMarionette, :selenium_marionette
|
|
40
|
+
include_examples Capybara::RSpecMatchers, TestSessions::SeleniumMarionette, :selenium_marionette
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
RSpec.describe Capybara::Selenium::Driver do
|
|
44
|
+
before do
|
|
45
|
+
@driver = Capybara::Selenium::Driver.new(TestApp, browser: :firefox)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe '#quit' do
|
|
49
|
+
it "should reset browser when quit" do
|
|
50
|
+
expect(@driver.browser).to be
|
|
51
|
+
@driver.quit
|
|
52
|
+
#access instance variable directly so we don't create a new browser instance
|
|
53
|
+
expect(@driver.instance_variable_get(:@browser)).to be_nil
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "with errors" do
|
|
57
|
+
before do
|
|
58
|
+
@original_browser = @driver.browser
|
|
59
|
+
end
|
|
60
|
+
after do
|
|
61
|
+
# Ensure browser is actually quit so we don't leave hanging processe
|
|
62
|
+
RSpec::Mocks.space.proxy_for(@original_browser).reset
|
|
63
|
+
@original_browser.quit
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "warns UnknownError returned during quit because the browser is probably already gone" do
|
|
67
|
+
expect_any_instance_of(Capybara::Selenium::Driver).to receive(:warn).with(/random message/)
|
|
68
|
+
allow(@driver.browser).to(
|
|
69
|
+
receive(:quit)
|
|
70
|
+
.and_raise(Selenium::WebDriver::Error::UnknownError, "random message")
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
expect { @driver.quit }.not_to raise_error
|
|
74
|
+
expect(@driver.instance_variable_get(:@browser)).to be_nil
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "ignores silenced UnknownError returned during quit because the browser is almost definitely already gone" do
|
|
78
|
+
expect_any_instance_of(Capybara::Selenium::Driver).not_to receive(:warn)
|
|
79
|
+
allow(@driver.browser).to(
|
|
80
|
+
receive(:quit)
|
|
81
|
+
.and_raise(Selenium::WebDriver::Error::UnknownError, "Error communicating with the remote browser")
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
expect { @driver.quit }.not_to raise_error
|
|
85
|
+
expect(@driver.instance_variable_get(:@browser)).to be_nil
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context "storage" do
|
|
91
|
+
describe "#reset!" do
|
|
92
|
+
it "does not clear either storage by default" do
|
|
93
|
+
@session = TestSessions::SeleniumMarionette
|
|
94
|
+
@session.visit('/with_js')
|
|
95
|
+
@session.find(:css, '#set-storage').click
|
|
96
|
+
@session.reset!
|
|
97
|
+
@session.visit('/with_js')
|
|
98
|
+
expect(@session.driver.browser.local_storage.keys).not_to be_empty
|
|
99
|
+
expect(@session.driver.browser.session_storage.keys).not_to be_empty
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "clears storage when set" do
|
|
103
|
+
@session = Capybara::Session.new(:selenium_marionette_clear_storage, TestApp)
|
|
104
|
+
@session.visit('/with_js')
|
|
105
|
+
@session.find(:css, '#set-storage').click
|
|
106
|
+
@session.reset!
|
|
107
|
+
@session.visit('/with_js')
|
|
108
|
+
expect(@session.driver.browser.local_storage.keys).to be_empty
|
|
109
|
+
expect(@session.driver.browser.session_storage.keys).to be_empty
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
@@ -41,14 +41,16 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "should have return code 1 when running selenium_driver_rspec_failure.rb" do
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
env = { 'SELENIUM_BROWSER' => @session.driver.options[:browser].to_s,
|
|
45
|
+
'LEGACY_FIREFOX' => (mode == :selenium_firefox ? 'TRUE' : nil) }
|
|
46
|
+
system(env, 'rspec spec/fixtures/selenium_driver_rspec_failure.rb', out: File::NULL, err: File::NULL)
|
|
46
47
|
expect($?.exitstatus).to eq(1)
|
|
47
48
|
end
|
|
48
49
|
|
|
49
50
|
it "should have return code 0 when running selenium_driver_rspec_success.rb" do
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
env = { 'SELENIUM_BROWSER' => @session.driver.options[:browser].to_s,
|
|
52
|
+
'LEGACY_FIREFOX' => (mode == :selenium_firefox ? 'TRUE' : nil) }
|
|
53
|
+
system(env, 'rspec spec/fixtures/selenium_driver_rspec_success.rb', out: File::NULL, err: File::NULL)
|
|
52
54
|
expect($?.exitstatus).to eq(0)
|
|
53
55
|
end
|
|
54
56
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: capybara
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas Walpole
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain:
|
|
12
12
|
- gem-public_cert.pem
|
|
13
|
-
date: 2016-
|
|
13
|
+
date: 2016-12-05 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: nokogiri
|
|
@@ -100,16 +100,22 @@ dependencies:
|
|
|
100
100
|
name: selenium-webdriver
|
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
|
102
102
|
requirements:
|
|
103
|
-
- - "
|
|
103
|
+
- - ">="
|
|
104
104
|
- !ruby/object:Gem::Version
|
|
105
105
|
version: '2.0'
|
|
106
|
+
- - "<"
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '4.0'
|
|
106
109
|
type: :development
|
|
107
110
|
prerelease: false
|
|
108
111
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
112
|
requirements:
|
|
110
|
-
- - "
|
|
113
|
+
- - ">="
|
|
111
114
|
- !ruby/object:Gem::Version
|
|
112
115
|
version: '2.0'
|
|
116
|
+
- - "<"
|
|
117
|
+
- !ruby/object:Gem::Version
|
|
118
|
+
version: '4.0'
|
|
113
119
|
- !ruby/object:Gem::Dependency
|
|
114
120
|
name: sinatra
|
|
115
121
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -412,17 +418,18 @@ files:
|
|
|
412
418
|
- spec/rack_test_spec.rb
|
|
413
419
|
- spec/result_spec.rb
|
|
414
420
|
- spec/rspec/features_spec.rb
|
|
415
|
-
- spec/rspec/matchers_spec.rb
|
|
416
421
|
- spec/rspec/scenarios_spec.rb
|
|
422
|
+
- spec/rspec/shared_spec_matchers.rb
|
|
417
423
|
- spec/rspec/views_spec.rb
|
|
418
424
|
- spec/rspec_spec.rb
|
|
419
425
|
- spec/selector_spec.rb
|
|
420
|
-
- spec/selenium_firefox_spec.rb
|
|
421
426
|
- spec/selenium_spec_chrome.rb
|
|
427
|
+
- spec/selenium_spec_firefox.rb
|
|
428
|
+
- spec/selenium_spec_marionette.rb
|
|
422
429
|
- spec/server_spec.rb
|
|
423
430
|
- spec/shared_selenium_session.rb
|
|
424
431
|
- spec/spec_helper.rb
|
|
425
|
-
homepage: https://github.com/
|
|
432
|
+
homepage: https://github.com/teamcapybara/capybara
|
|
426
433
|
licenses:
|
|
427
434
|
- MIT
|
|
428
435
|
metadata: {}
|
|
@@ -442,7 +449,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
442
449
|
version: '0'
|
|
443
450
|
requirements: []
|
|
444
451
|
rubyforge_project:
|
|
445
|
-
rubygems_version: 2.5.
|
|
452
|
+
rubygems_version: 2.5.2
|
|
446
453
|
signing_key:
|
|
447
454
|
specification_version: 4
|
|
448
455
|
summary: Capybara aims to simplify the process of integration testing Rack applications,
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
require "selenium-webdriver"
|
|
4
|
-
require 'shared_selenium_session'
|
|
5
|
-
|
|
6
|
-
Capybara.register_driver :selenium_focus do |app|
|
|
7
|
-
# profile = Selenium::WebDriver::Firefox::Profile.new
|
|
8
|
-
# profile["focusmanager.testmode"] = true
|
|
9
|
-
# Capybara::Selenium::Driver.new(app, browser: :firefox, profile: profile)
|
|
10
|
-
Capybara::Selenium::Driver.new(app, browser: :firefox)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
module TestSessions
|
|
14
|
-
Selenium = Capybara::Session.new(:selenium_focus, TestApp)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
skipped_tests = [
|
|
18
|
-
:response_headers,
|
|
19
|
-
:status_code,
|
|
20
|
-
:trigger
|
|
21
|
-
]
|
|
22
|
-
skipped_tests << :windows if ENV['TRAVIS'] && !ENV['WINDOW_TEST']
|
|
23
|
-
|
|
24
|
-
Capybara::SpecHelper.run_specs TestSessions::Selenium, "selenium", capybara_skip: skipped_tests
|
|
25
|
-
|
|
26
|
-
RSpec.describe "Capybara::Session with firefox" do
|
|
27
|
-
include_examples "Capybara::Session", TestSessions::Selenium, :selenium_focus
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
RSpec.describe Capybara::Selenium::Driver do
|
|
31
|
-
before do
|
|
32
|
-
@driver = Capybara::Selenium::Driver.new(TestApp, browser: :firefox)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe '#quit' do
|
|
36
|
-
it "should reset browser when quit" do
|
|
37
|
-
expect(@driver.browser).to be
|
|
38
|
-
@driver.quit
|
|
39
|
-
#access instance variable directly so we don't create a new browser instance
|
|
40
|
-
expect(@driver.instance_variable_get(:@browser)).to be_nil
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|