acceptance_test 1.6.2 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|