acceptance_test 1.6.2 → 1.7.1
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 +5 -13
- data/.ruby-version +1 -1
- data/CHANGES +5 -1
- data/Gemfile +5 -5
- data/Gemfile.lock +0 -10
- data/lib/acceptance_test/acceptance_test.rb +58 -99
- data/lib/acceptance_test/cucumber_ext.rb +17 -0
- data/lib/acceptance_test/driver_manager.rb +69 -91
- data/lib/acceptance_test/shared_context_builder.rb +55 -0
- data/lib/acceptance_test/version.rb +1 -1
- data/spec/acceptance_config.yml +1 -1
- data/spec/support/steps/search_with_drivers_steps.rb +0 -2
- data/spec/support/steps/search_with_examples_from_csv_steps.rb +0 -1
- data/spec/support/steps/search_with_pages_steps.rb +0 -2
- data/spec/support/steps/search_with_table_steps.rb +0 -1
- data/spec/turnip_helper.rb +6 -1
- data/spec/wikipedia_search_spec.rb +6 -5
- data/spec/wikipedia_search_with_config_spec.rb +5 -2
- data/spec/wikipedia_search_with_pages_spec.rb +5 -30
- metadata +24 -22
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NjUyNTg4YjcxNTAwMjY3YzY0OWFkOGU3ZWQ3OWMyNjZlMTNkOTVlYQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c5a6f1452bd6f0adc7050128629b5b67a5abe04e
|
4
|
+
data.tar.gz: dd7caafa384ec0312421cfbdd35e07ee9f458f1c
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjBjOTJlYzI3N2U1ZTIzYmIxMGZkODc2NmU4Zjc3NmE3Yzg3NTI0MDA0YmUz
|
11
|
-
ZmU2MmIzZmVjMTJiMTA5MTRlYmI1NWZlM2Y3YzcwY2I5YWFjOGY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NTRlYTk4ZWRmYmQ2ZjQwNmZhNzMwOTI3ZjczNmIyYjdkZjZlODFjZWI3OTNl
|
14
|
-
NTBhNGE3ZTE5YzgxMzE2NjU2NTkyZjMyMTgwNjE1MDkwZmY5ZmM2MmVjNWNh
|
15
|
-
NzQ4ZDI4NzIxNjFiOWRlMzZhOGU3ODBlOWVlNTU3NTAxM2NhMGQ=
|
6
|
+
metadata.gz: f393d462ed43fff25f4a7c82c6fc113a92ddcbebb8de0a6c90a22d930c84f2e8973f698d47954f74fc4890be313488b32f50203df97e561c43cf31c193bcc370
|
7
|
+
data.tar.gz: 5296f06d5e1c2fc379ee70aff80ba6ab3b200b3017d32842b1a41fd102736c673e48cd0ce30e7bc5dd5ba9df7fbe31e7f96b8a65efe312775e7d011f644795f1
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
2.1.3
|
data/CHANGES
CHANGED
data/Gemfile
CHANGED
@@ -36,9 +36,9 @@ group :acceptance_test do
|
|
36
36
|
gem "poltergeist", "~> 1.5.1"
|
37
37
|
end
|
38
38
|
|
39
|
-
group :debug do
|
40
|
-
gem "debugger-ruby_core_source"
|
41
|
-
gem "ruby-debug-base19x", "0.11.30.pre12"
|
42
|
-
gem "ruby-debug-ide", "0.4.17"
|
43
|
-
end
|
39
|
+
# group :debug do
|
40
|
+
# gem "debugger-ruby_core_source"
|
41
|
+
# gem "ruby-debug-base19x", "0.11.30.pre12"
|
42
|
+
# gem "ruby-debug-ide", "0.4.17"
|
43
|
+
# end
|
44
44
|
|
data/Gemfile.lock
CHANGED
@@ -30,7 +30,6 @@ GEM
|
|
30
30
|
gherkin (~> 2.12)
|
31
31
|
multi_json (>= 1.7.5, < 2.0)
|
32
32
|
multi_test (>= 0.1.1)
|
33
|
-
debugger-ruby_core_source (1.3.5)
|
34
33
|
diff-lcs (1.2.5)
|
35
34
|
ffi (1.9.6)
|
36
35
|
file_utils (1.0.7)
|
@@ -66,7 +65,6 @@ GEM
|
|
66
65
|
rack (1.5.2)
|
67
66
|
rack-test (0.6.2)
|
68
67
|
rack (>= 1.0)
|
69
|
-
rake (10.3.2)
|
70
68
|
rspec (3.1.0)
|
71
69
|
rspec-core (~> 3.1.0)
|
72
70
|
rspec-expectations (~> 3.1.0)
|
@@ -81,11 +79,6 @@ GEM
|
|
81
79
|
rspec-mocks (3.1.3)
|
82
80
|
rspec-support (~> 3.1.0)
|
83
81
|
rspec-support (3.1.2)
|
84
|
-
ruby-debug-base19x (0.11.30.pre12)
|
85
|
-
debugger-ruby_core_source (>= 1.1.4)
|
86
|
-
rake (>= 0.8.1)
|
87
|
-
ruby-debug-ide (0.4.17)
|
88
|
-
rake (>= 0.8.1)
|
89
82
|
rubyzip (1.1.6)
|
90
83
|
selenium-webdriver (2.43.0)
|
91
84
|
childprocess (~> 0.5)
|
@@ -121,7 +114,6 @@ DEPENDENCIES
|
|
121
114
|
capybara-firebug (~> 2.1.0)
|
122
115
|
capybara-webkit (~> 1.3.0)
|
123
116
|
cucumber (~> 1.3.17)
|
124
|
-
debugger-ruby_core_source
|
125
117
|
gemcutter
|
126
118
|
gemspec_deps_gen
|
127
119
|
gnawrnip
|
@@ -129,8 +121,6 @@ DEPENDENCIES
|
|
129
121
|
poltergeist (~> 1.5.1)
|
130
122
|
rspec
|
131
123
|
rspec-example_steps (~> 3.0.2)
|
132
|
-
ruby-debug-base19x (= 0.11.30.pre12)
|
133
|
-
ruby-debug-ide (= 0.4.17)
|
134
124
|
selenium-webdriver (~> 2.43.0)
|
135
125
|
turnip (~> 1.2.4)
|
136
126
|
turnip_formatter
|
@@ -1,16 +1,18 @@
|
|
1
1
|
require 'singleton'
|
2
|
+
require 'capybara'
|
2
3
|
require 'active_support/core_ext/hash'
|
3
4
|
|
5
|
+
require 'acceptance_test/shared_context_builder'
|
6
|
+
require 'acceptance_test/driver_manager'
|
4
7
|
require 'acceptance_test/gherkin_ext'
|
8
|
+
require 'acceptance_test/turnip_ext'
|
5
9
|
|
6
10
|
class AcceptanceTest
|
7
11
|
include Singleton
|
8
12
|
|
9
|
-
attr_reader :config
|
13
|
+
attr_reader :config, :driver_manager
|
10
14
|
|
11
15
|
def initialize
|
12
|
-
require 'capybara'
|
13
|
-
|
14
16
|
Capybara.default_driver = :selenium
|
15
17
|
|
16
18
|
@config = HashWithIndifferentAccess.new
|
@@ -19,23 +21,20 @@ class AcceptanceTest
|
|
19
21
|
@config[:screenshot_dir] = File.expand_path('tmp')
|
20
22
|
@config[:timeout_in_seconds] = 20
|
21
23
|
|
22
|
-
|
24
|
+
@driver_manager = DriverManager.new
|
23
25
|
end
|
24
26
|
|
25
27
|
def configure hash={}
|
26
28
|
config.merge!(HashWithIndifferentAccess.new(hash))
|
27
29
|
end
|
28
30
|
|
29
|
-
def setup page=nil
|
30
|
-
driver =
|
31
|
-
browser =
|
32
|
-
remote = !config[:selenium_url].nil?
|
33
|
-
|
34
|
-
register_driver(driver, browser, remote)
|
31
|
+
def setup page=nil, metadata={}
|
32
|
+
driver = driver(metadata)
|
33
|
+
browser = browser(metadata)
|
35
34
|
|
36
|
-
driver_name =
|
35
|
+
driver_name = driver_manager.register_driver(driver, browser, config[:selenium_url])
|
37
36
|
|
38
|
-
use_driver(driver_name, page)
|
37
|
+
driver_manager.use_driver(driver_name, page)
|
39
38
|
|
40
39
|
Capybara.app_host = config[:webapp_url]
|
41
40
|
|
@@ -48,71 +47,42 @@ class AcceptanceTest
|
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
|
-
def teardown
|
52
|
-
|
53
|
-
|
54
|
-
Capybara.configure do |conf|
|
55
|
-
conf.default_wait_time = 2
|
56
|
-
end
|
57
|
-
|
58
|
-
Capybara.default_driver = :rack_test
|
59
|
-
end
|
50
|
+
def teardown page=nil, metadata={}, exception=nil
|
51
|
+
driver = driver(metadata)
|
60
52
|
|
61
|
-
|
62
|
-
|
53
|
+
if driver and exception and page and not [:webkit].include? driver
|
54
|
+
screenshot_dir = File.expand_path(config[:screenshot_dir])
|
63
55
|
|
64
|
-
|
65
|
-
when :poltergeist
|
66
|
-
require 'capybara/poltergeist'
|
56
|
+
FileUtils.mkdir_p screenshot_dir
|
67
57
|
|
68
|
-
|
69
|
-
require "capybara-webkit"
|
58
|
+
screenshot_maker = ScreenshotMaker.new screenshot_dir
|
70
59
|
|
71
|
-
|
72
|
-
require 'capybara/firebug'
|
60
|
+
screenshot_maker.make page, metadata
|
73
61
|
|
74
|
-
|
75
|
-
|
62
|
+
puts metadata[:full_description]
|
63
|
+
puts "Screenshot: #{screenshot_maker.screenshot_url(metadata)}"
|
76
64
|
end
|
77
65
|
|
78
|
-
|
79
|
-
properties = {}
|
80
|
-
properties[:debug] = false
|
81
|
-
|
82
|
-
Capybara.register_driver :poltergeist do |app|
|
83
|
-
Capybara::Poltergeist::Driver.new(app, properties)
|
84
|
-
end
|
85
|
-
else
|
86
|
-
properties = {}
|
87
|
-
properties[:browser] = browser
|
66
|
+
Capybara.app_host = nil
|
88
67
|
|
89
|
-
|
90
|
-
|
91
|
-
end
|
68
|
+
Capybara.configure do |conf|
|
69
|
+
conf.default_wait_time = 2
|
92
70
|
end
|
93
71
|
|
94
|
-
|
72
|
+
Capybara.current_driver = Capybara.default_driver
|
73
|
+
Capybara.javascript_driver = Capybara.default_driver
|
95
74
|
end
|
96
75
|
|
97
|
-
|
98
|
-
|
99
|
-
#
|
100
|
-
# properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
|
101
|
-
#properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.internet_explorer
|
102
|
-
|
103
|
-
def use_driver driver, page=nil
|
104
|
-
if driver and Capybara.drivers[driver]
|
105
|
-
Capybara.current_driver = driver
|
106
|
-
Capybara.javascript_driver = driver
|
107
|
-
|
108
|
-
page.instance_variable_set(:@mode, driver) if page
|
109
|
-
end
|
76
|
+
def create_shared_context name
|
77
|
+
SharedContextBuilder.instance.build name, self
|
110
78
|
end
|
111
79
|
|
112
|
-
def
|
113
|
-
|
80
|
+
def extend_turnip
|
81
|
+
shared_context_name = "#{random_name}AcceptanceTest"
|
114
82
|
|
115
|
-
|
83
|
+
SharedContextBuilder.instance.build shared_context_name, self
|
84
|
+
|
85
|
+
TurnipExt.shared_context_with_turnip shared_context_name
|
116
86
|
end
|
117
87
|
|
118
88
|
def enable_external_source data_reader
|
@@ -124,6 +94,8 @@ class AcceptanceTest
|
|
124
94
|
require 'turnip/capybara'
|
125
95
|
|
126
96
|
configure_turnip_formatter report_name
|
97
|
+
|
98
|
+
extend_turnip
|
127
99
|
end
|
128
100
|
|
129
101
|
def configure_turnip_formatter report_name
|
@@ -142,57 +114,44 @@ class AcceptanceTest
|
|
142
114
|
Gnawrnip.ready!
|
143
115
|
end
|
144
116
|
|
145
|
-
|
146
|
-
tags = scenario.source_tag_names.collect { |a| a.gsub("@", '') }
|
147
|
-
|
148
|
-
metadata = {}
|
149
|
-
|
150
|
-
if tags.size > 0
|
151
|
-
tag = tags.first.to_sym
|
152
|
-
|
153
|
-
if driver_manager.supported_drivers.include? tag
|
154
|
-
metadata[:driver] = tag
|
155
|
-
end
|
156
|
-
end
|
117
|
+
private
|
157
118
|
|
158
|
-
|
159
|
-
|
119
|
+
def driver metadata
|
120
|
+
driver = ENV['DRIVER'].nil? ? nil : ENV['DRIVER'].to_sym
|
160
121
|
|
161
|
-
|
122
|
+
driver = config[:driver].to_sym if driver.nil? and config[:driver]
|
162
123
|
|
163
|
-
|
164
|
-
# try to load capybara-related rspec library
|
165
|
-
begin
|
166
|
-
require 'capybara/rspec'
|
124
|
+
driver = metadata[:driver] if driver.nil?
|
167
125
|
|
168
|
-
|
169
|
-
|
170
|
-
|
126
|
+
driver_manager.supported_drivers.each do |supported_driver|
|
127
|
+
driver = supported_driver if metadata[supported_driver]
|
128
|
+
break if driver
|
129
|
+
end if driver.nil?
|
171
130
|
|
172
|
-
|
173
|
-
conf.include Capybara::DSL
|
174
|
-
end
|
131
|
+
driver = :webkit if driver.nil?
|
175
132
|
|
176
|
-
|
177
|
-
rescue
|
178
|
-
;
|
179
|
-
end
|
133
|
+
driver
|
180
134
|
end
|
181
135
|
|
182
|
-
def
|
183
|
-
|
136
|
+
def browser metadata
|
137
|
+
browser = ENV['BROWSER'].nil? ? nil : ENV['BROWSER'].to_sym
|
184
138
|
|
185
|
-
|
139
|
+
browser = config[:browser].to_sym if browser.nil?
|
186
140
|
|
187
|
-
|
141
|
+
browser = metadata[:browser] if browser.nil?
|
188
142
|
|
189
|
-
|
143
|
+
driver_manager.supported_browsers.each do |supported_browser|
|
144
|
+
browser = supported_browser if metadata[supported_browser]
|
145
|
+
break if browser
|
146
|
+
end if browser.nil?
|
190
147
|
|
191
|
-
|
148
|
+
browser = :firefox if browser.nil?
|
192
149
|
|
193
|
-
|
150
|
+
browser
|
151
|
+
end
|
194
152
|
|
195
|
-
|
153
|
+
def random_name
|
154
|
+
('a'..'z').to_a.shuffle[0, 12].join
|
196
155
|
end
|
197
156
|
|
198
157
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CucumberExt
|
2
|
+
def self.metadata_from_scenario scenario
|
3
|
+
tags = scenario.source_tag_names.collect { |a| a.gsub("@", '') }
|
4
|
+
|
5
|
+
metadata = {}
|
6
|
+
|
7
|
+
if tags.size > 0
|
8
|
+
tag = tags.first.to_sym
|
9
|
+
|
10
|
+
if AcceptanceTest.instance.driver_manager.supported_drivers.include? tag
|
11
|
+
metadata[:driver] = tag
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
metadata
|
16
|
+
end
|
17
|
+
end
|
@@ -3,13 +3,6 @@ require 'capybara'
|
|
3
3
|
class DriverManager
|
4
4
|
|
5
5
|
def initialize
|
6
|
-
Capybara.configure do |conf|
|
7
|
-
#conf.default_wait_time = timeout_in_seconds
|
8
|
-
conf.match = :first
|
9
|
-
|
10
|
-
conf.ignore_hidden_elements = false
|
11
|
-
end
|
12
|
-
|
13
6
|
# try to load capybara-related rspec library
|
14
7
|
begin
|
15
8
|
require 'capybara/rspec'
|
@@ -29,109 +22,94 @@ class DriverManager
|
|
29
22
|
end
|
30
23
|
|
31
24
|
def supported_drivers
|
32
|
-
[:selenium, :
|
25
|
+
[:selenium, :webkit, :poltergeist]
|
33
26
|
end
|
34
27
|
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
if driver_name
|
39
|
-
unless Capybara.drivers[driver_name]
|
40
|
-
if selenium_url # remote
|
41
|
-
properties = {}
|
42
|
-
|
43
|
-
properties[:browser] = :remote
|
44
|
-
properties[:url] = selenium_url
|
45
|
-
#properties[:desired_capabilities] = capabilities if capabilities
|
46
|
-
|
47
|
-
driver_name = "#{driver_name}_remote".to_sym
|
48
|
-
|
49
|
-
Capybara.register_driver driver_name do |app|
|
50
|
-
Capybara::Selenium::Driver.new(app, properties)
|
51
|
-
end
|
52
|
-
else
|
53
|
-
case driver_name
|
54
|
-
when :poltergeist
|
55
|
-
require 'capybara/poltergeist'
|
56
|
-
|
57
|
-
Capybara.register_driver :poltergeist do |app|
|
58
|
-
Capybara::Poltergeist::Driver.new(app, { debug: false })
|
59
|
-
end
|
60
|
-
|
61
|
-
when :webkit
|
62
|
-
require "capybara-webkit"
|
63
|
-
|
64
|
-
when :firefox_with_firebug
|
65
|
-
require 'capybara/firebug'
|
66
|
-
|
67
|
-
# profile = Selenium::WebDriver::Firefox::Profile.new
|
68
|
-
# profile.enable_firebug
|
69
|
-
#
|
70
|
-
# properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
|
71
|
-
#properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.internet_explorer
|
72
|
-
|
73
|
-
else
|
74
|
-
properties = {}
|
75
|
-
properties[:browser] = browser
|
76
|
-
|
77
|
-
Capybara.register_driver driver_name do |app|
|
78
|
-
Capybara::Selenium::Driver.new(app, properties)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
driver_name
|
28
|
+
def supported_browsers
|
29
|
+
[:firefox, :chrome]
|
86
30
|
end
|
87
31
|
|
88
|
-
def
|
32
|
+
def register_driver(driver, browser=:firefox, selenium_url=nil)
|
33
|
+
driver_name = build_driver_name(driver, browser, selenium_url)
|
34
|
+
|
89
35
|
case driver
|
36
|
+
when :poltergeist
|
37
|
+
require 'capybara/poltergeist'
|
38
|
+
|
90
39
|
when :webkit
|
91
|
-
|
40
|
+
require "capybara-webkit"
|
92
41
|
|
93
|
-
when :
|
42
|
+
when :firefox_with_firebug
|
43
|
+
require 'capybara/firebug'
|
94
44
|
|
95
|
-
|
96
|
-
|
97
|
-
|
45
|
+
else
|
46
|
+
;
|
47
|
+
end
|
98
48
|
|
99
|
-
|
100
|
-
|
49
|
+
if driver == :poltergeist
|
50
|
+
properties = {}
|
51
|
+
properties[:debug] = false
|
101
52
|
|
102
|
-
|
103
|
-
|
53
|
+
Capybara.register_driver :poltergeist do |app|
|
54
|
+
Capybara::Poltergeist::Driver.new(app, properties)
|
55
|
+
end
|
56
|
+
elsif driver == :webkit
|
57
|
+
;
|
58
|
+
else
|
59
|
+
properties = {}
|
104
60
|
|
105
|
-
|
106
|
-
|
61
|
+
if selenium_url
|
62
|
+
properties[:browser] = :remote
|
63
|
+
properties[:url] = selenium_url
|
64
|
+
#properties[:desired_capabilities] = capabilities if capabilities
|
107
65
|
|
108
|
-
|
109
|
-
|
66
|
+
# profile = Selenium::WebDriver::Firefox::Profile.new
|
67
|
+
# profile.enable_firebug
|
68
|
+
#
|
69
|
+
# properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
|
70
|
+
#properties[:desired_capabilities] = Selenium::WebDriver::Remote::Capabilities.internet_explorer
|
110
71
|
|
111
|
-
|
112
|
-
|
113
|
-
|
72
|
+
else
|
73
|
+
properties[:browser] = browser
|
74
|
+
end
|
114
75
|
|
115
|
-
|
116
|
-
|
76
|
+
Capybara.register_driver driver_name do |app|
|
77
|
+
Capybara::Selenium::Driver.new(app, properties)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
driver_name
|
82
|
+
end
|
83
|
+
|
84
|
+
def use_driver driver, page=nil
|
85
|
+
if driver and Capybara.drivers[driver]
|
86
|
+
Capybara.current_driver = driver
|
87
|
+
Capybara.javascript_driver = driver
|
88
|
+
|
89
|
+
page.instance_variable_set(:@mode, driver) if page
|
90
|
+
end
|
91
|
+
end
|
117
92
|
|
118
|
-
|
119
|
-
case browser
|
120
|
-
when :firefox
|
121
|
-
:selenium_remote_firefox
|
93
|
+
private
|
122
94
|
|
123
|
-
|
124
|
-
|
95
|
+
def build_driver_name driver, browser, selenium_url=nil
|
96
|
+
case driver
|
97
|
+
when :webkit
|
98
|
+
:webkit
|
99
|
+
when :poltergeist
|
100
|
+
:poltergeist
|
101
|
+
when :selenium
|
102
|
+
name = ""
|
103
|
+
name += driver ? "#{driver}_" : "#{Capybara.default_driver}_"
|
125
104
|
|
126
|
-
|
127
|
-
|
105
|
+
name += "#{browser}_" if browser
|
106
|
+
name += "remote" if selenium_url
|
107
|
+
name = name[0..name.size-2] if name[name.size-1] == "_"
|
128
108
|
|
129
|
-
|
130
|
-
:unsupported
|
131
|
-
end
|
109
|
+
name.to_sym
|
132
110
|
else
|
133
111
|
:unsupported
|
134
|
-
|
112
|
+
end
|
135
113
|
end
|
136
114
|
|
137
|
-
end
|
115
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
class SharedContextBuilder
|
4
|
+
include Singleton
|
5
|
+
|
6
|
+
def build name, acceptance_test
|
7
|
+
throw "rspec library is not available" unless defined? RSpec
|
8
|
+
|
9
|
+
parent = self
|
10
|
+
|
11
|
+
acceptance_test_lambda = lambda do
|
12
|
+
parent.configure_rspec acceptance_test, self
|
13
|
+
end
|
14
|
+
|
15
|
+
RSpec.shared_context name do
|
16
|
+
self.define_singleton_method(:include_context, acceptance_test_lambda)
|
17
|
+
|
18
|
+
include_context
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_rspec acceptance_test, object=nil
|
23
|
+
# acceptance_test = self
|
24
|
+
|
25
|
+
# if object
|
26
|
+
# if object.kind_of? RSpec::Core::Example
|
27
|
+
# rspec_conf = object.example_group.parent_groups.last
|
28
|
+
# else
|
29
|
+
# rspec_conf = object
|
30
|
+
# end
|
31
|
+
# else
|
32
|
+
# rspec_conf = RSpec.configuration
|
33
|
+
# end
|
34
|
+
|
35
|
+
rspec_conf = object
|
36
|
+
|
37
|
+
rspec_conf.around(:each) do |example|
|
38
|
+
old_driver = Capybara.current_driver
|
39
|
+
|
40
|
+
acceptance_test.setup(page, example.metadata)
|
41
|
+
|
42
|
+
new_driver = Capybara.current_driver
|
43
|
+
|
44
|
+
if old_driver != new_driver
|
45
|
+
example.metadata.delete(old_driver)
|
46
|
+
example.metadata[new_driver] = true
|
47
|
+
end
|
48
|
+
|
49
|
+
example.run
|
50
|
+
|
51
|
+
acceptance_test.teardown(page, example.metadata, example.exception)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/spec/acceptance_config.yml
CHANGED
data/spec/turnip_helper.rb
CHANGED
@@ -6,7 +6,12 @@ require 'test_helper'
|
|
6
6
|
|
7
7
|
require 'acceptance_test'
|
8
8
|
|
9
|
-
|
9
|
+
config_name = File.expand_path("spec/acceptance_config.yml")
|
10
|
+
config = config_name ? HashWithIndifferentAccess.new(YAML.load_file(config_name)) : {}
|
11
|
+
|
12
|
+
AcceptanceTest.instance.configure(config)
|
13
|
+
|
14
|
+
# AcceptanceTest.instance.configure(webapp_url: 'http://www.wikipedia.org')
|
10
15
|
# AcceptanceTest.instance.register_driver(:webkit)
|
11
16
|
# AcceptanceTest.instance.register_driver(:poltergeist)
|
12
17
|
|
@@ -1,17 +1,18 @@
|
|
1
|
+
require 'rspec/expectations'
|
1
2
|
require 'acceptance_test'
|
2
3
|
|
3
4
|
AcceptanceTest.instance.configure({webapp_url: 'http://www.wikipedia.org', timeout_in_seconds: 10})
|
4
5
|
|
5
|
-
AcceptanceTest.instance.register_driver(:selenium, :chrome)
|
6
|
-
AcceptanceTest.instance.register_driver(:webkit)
|
7
|
-
AcceptanceTest.instance.register_driver(:poltergeist)
|
6
|
+
AcceptanceTest.instance.driver_manager.register_driver(:selenium, :chrome)
|
7
|
+
AcceptanceTest.instance.driver_manager.register_driver(:webkit)
|
8
|
+
AcceptanceTest.instance.driver_manager.register_driver(:poltergeist)
|
8
9
|
|
9
10
|
RSpec.describe 'Wikipedia Search' do
|
10
|
-
|
11
|
+
include Capybara::DSL
|
11
12
|
|
12
13
|
before do
|
13
14
|
AcceptanceTest.instance.setup
|
14
|
-
AcceptanceTest.instance.use_driver(:selenium_chrome
|
15
|
+
AcceptanceTest.instance.driver_manager.use_driver(:selenium_chrome)
|
15
16
|
|
16
17
|
puts "Using driver: #{Capybara.current_driver}."
|
17
18
|
puts "Default wait time: #{Capybara.default_wait_time}."
|
@@ -1,22 +1,25 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'active_support/core_ext/hash'
|
3
3
|
require 'acceptance_test'
|
4
|
+
require 'rspec/expectations'
|
4
5
|
|
5
6
|
config_name = File.expand_path("spec/acceptance_config.yml")
|
6
7
|
config = config_name ? HashWithIndifferentAccess.new(YAML.load_file(config_name)) : {}
|
7
8
|
|
8
9
|
AcceptanceTest.instance.configure(config)
|
9
10
|
|
11
|
+
AcceptanceTest.instance.create_shared_context "WikipediaAcceptanceTest"
|
12
|
+
|
10
13
|
puts "Application URL : #{config[:webapp_url]}" if config[:webapp_url]
|
11
14
|
puts "Selenium URL : #{config[:selenium_url]}" if config[:selenium_url]
|
12
15
|
puts "Default Wait Time : #{Capybara.default_wait_time}"
|
13
16
|
puts "Browser : #{config[:browser]}" if config[:browser]
|
14
17
|
|
15
18
|
RSpec.describe 'Wikipedia Search' do
|
16
|
-
|
19
|
+
include Capybara::DSL
|
20
|
+
include_context "WikipediaAcceptanceTest"
|
17
21
|
|
18
22
|
before do
|
19
|
-
AcceptanceTest.instance.setup
|
20
23
|
puts "Capybara current driver: #{Capybara.current_driver}"
|
21
24
|
end
|
22
25
|
|
@@ -1,15 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# acceptance_test = AcceptanceTest.instance
|
4
|
-
# acceptance_test.configure({webapp_url: "http://www.wikipedia.org", timeout_in_seconds: 10})
|
5
|
-
# acceptance_test.configure_rspec
|
1
|
+
require 'acceptance_test'
|
2
|
+
require 'rspec/expectations'
|
6
3
|
|
7
|
-
# require "capybara"
|
8
|
-
# require 'selenium/webdriver'
|
9
|
-
#
|
10
|
-
# RSpec.configure do |config|
|
11
|
-
# config.include Capybara::DSL
|
12
|
-
# end
|
13
4
|
|
14
5
|
# profile = Selenium::WebDriver::Chrome::Profile.new
|
15
6
|
# # profile['download.prompt_for_download'] = false
|
@@ -25,31 +16,15 @@
|
|
25
16
|
#
|
26
17
|
# # ENV['webdriver.chrome.driver'] = "c:\work\selenium-server\chromedriver.exe"
|
27
18
|
# #properties[:desired_capabilities]['webdriver.chrome.driver'] = "c:\work\selenium-server\chromedriver.exe"
|
28
|
-
#
|
29
|
-
# Capybara.register_driver :selenium_remote do |app|
|
30
|
-
# Capybara::Selenium::Driver.new(app, properties)
|
31
|
-
# end
|
32
|
-
#
|
33
|
-
# Capybara.app_host = "http://www.wikipedia.org"
|
34
|
-
# Capybara.default_driver = :selenium_remote
|
35
|
-
|
36
|
-
|
37
|
-
# Capybara.register_driver :selenium_chrome do |app|
|
38
|
-
# Capybara::Selenium::Driver.new(app, browser: :chrome)
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
# Capybara.app_host = "http://www.wikipedia.org"
|
42
|
-
# Capybara.default_driver = :selenium_chrome
|
43
|
-
|
44
|
-
require 'acceptance_test'
|
45
19
|
|
46
|
-
AcceptanceTest.instance.configure({webapp_url: 'http://www.wikipedia.org', timeout_in_seconds: 10
|
20
|
+
AcceptanceTest.instance.configure({webapp_url: 'http://www.wikipedia.org', timeout_in_seconds: 10,
|
21
|
+
driver: :selenium, browser: :chrome})
|
47
22
|
|
48
23
|
require 'test_helper'
|
49
24
|
require 'pages/wikipedia_pages'
|
50
25
|
|
51
26
|
RSpec.describe 'Wikipedia Search' do
|
52
|
-
|
27
|
+
include Capybara::DSL
|
53
28
|
|
54
29
|
let(:page_set) { WikipediaPages.new(page) }
|
55
30
|
|
metadata
CHANGED
@@ -1,62 +1,62 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acceptance_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Shvets
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gemspec_deps_gen
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: gemcutter
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description:
|
41
|
+
description: 'Description: simplifies congiguration and run of acceptance tests.'
|
42
42
|
email: alexander.shvets@gmail.com
|
43
43
|
executables: []
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
-
- .gitignore
|
48
|
-
- .idea/.rakeTasks
|
49
|
-
- .idea/acceptance_test.iml
|
50
|
-
- .idea/encodings.xml
|
51
|
-
- .idea/jenkinsSettings.xml
|
52
|
-
- .idea/misc.xml
|
53
|
-
- .idea/modules.xml
|
54
|
-
- .idea/runConfigurations/wikipedia_search__acceptance_test.xml
|
55
|
-
- .idea/scopes/scope_settings.xml
|
56
|
-
- .idea/vcs.xml
|
57
|
-
- .rspec
|
58
|
-
- .ruby-gemset
|
59
|
-
- .ruby-version
|
47
|
+
- ".gitignore"
|
48
|
+
- ".idea/.rakeTasks"
|
49
|
+
- ".idea/acceptance_test.iml"
|
50
|
+
- ".idea/encodings.xml"
|
51
|
+
- ".idea/jenkinsSettings.xml"
|
52
|
+
- ".idea/misc.xml"
|
53
|
+
- ".idea/modules.xml"
|
54
|
+
- ".idea/runConfigurations/wikipedia_search__acceptance_test.xml"
|
55
|
+
- ".idea/scopes/scope_settings.xml"
|
56
|
+
- ".idea/vcs.xml"
|
57
|
+
- ".rspec"
|
58
|
+
- ".ruby-gemset"
|
59
|
+
- ".ruby-version"
|
60
60
|
- CHANGES
|
61
61
|
- Gemfile
|
62
62
|
- Gemfile.lock
|
@@ -72,11 +72,13 @@ files:
|
|
72
72
|
- lib/acceptance_test.rb
|
73
73
|
- lib/acceptance_test/acceptance_test.rb
|
74
74
|
- lib/acceptance_test/acceptance_test_old.rb
|
75
|
+
- lib/acceptance_test/cucumber_ext.rb
|
75
76
|
- lib/acceptance_test/driver_manager.rb
|
76
77
|
- lib/acceptance_test/gherkin_ext.rb
|
77
78
|
- lib/acceptance_test/page.rb
|
78
79
|
- lib/acceptance_test/page_set.rb
|
79
80
|
- lib/acceptance_test/screenshot_maker.rb
|
81
|
+
- lib/acceptance_test/shared_context_builder.rb
|
80
82
|
- lib/acceptance_test/turnip_ext.rb
|
81
83
|
- lib/acceptance_test/version.rb
|
82
84
|
- lib/tasks/rspec.rake
|
@@ -109,12 +111,12 @@ require_paths:
|
|
109
111
|
- lib
|
110
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
111
113
|
requirements:
|
112
|
-
- -
|
114
|
+
- - ">="
|
113
115
|
- !ruby/object:Gem::Version
|
114
116
|
version: '0'
|
115
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
118
|
requirements:
|
117
|
-
- -
|
119
|
+
- - ">="
|
118
120
|
- !ruby/object:Gem::Version
|
119
121
|
version: '0'
|
120
122
|
requirements: []
|