lapis_lazuli 2.0.1 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lapis_lazuli.gemspec +3 -2
- data/lib/lapis_lazuli/browser.rb +36 -60
- data/lib/lapis_lazuli/browser/error.rb +89 -62
- data/lib/lapis_lazuli/generators/cucumber/template/README.md +2 -0
- data/lib/lapis_lazuli/generators/cucumber/template/config/config.yml +5 -20
- data/lib/lapis_lazuli/generators/cucumber/template/config/cucumber.yml +42 -13
- data/lib/lapis_lazuli/generators/cucumber/template/config/users.yml +21 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/1_basic.feature +42 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/2_account.feature +38 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/3_todo_list.feature +23 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/helpers/authentication_helper.rb +122 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/helpers/navigation_helper.rb +64 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/helpers/registration_helper.rb +93 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/helpers/user_helper.rb +74 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/account_steps.rb +60 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/basic_steps.rb +65 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/todo_steps.rb +27 -0
- data/lib/lapis_lazuli/generators/cucumber/template/features/support/env.rb +3 -2
- data/lib/lapis_lazuli/options.rb +2 -1
- data/lib/lapis_lazuli/version.rb +1 -1
- data/lib/lapis_lazuli/world/config.rb +348 -334
- data/lib/lapis_lazuli/world/hooks.rb +85 -84
- data/lib/lapis_lazuli/world/logging.rb +1 -1
- data/test/config/config.yml +7 -6
- data/test/config/cucumber.yml +6 -8
- data/test/features/bindings.feature +1 -1
- data/test/features/browser.feature +1 -1
- data/test/features/step_definitions/interaction_steps.rb +5 -2
- data/test/features/step_definitions/validation_steps.rb +2 -2
- data/test/features/support/env.rb +22 -1
- data/test/results/latest_results.json +0 -0
- metadata +49 -16
- data/lib/lapis_lazuli/generators/cucumber/template/features/account.feature +0 -26
- data/lib/lapis_lazuli/generators/cucumber/template/features/example.feature +0 -30
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/interaction_steps.rb +0 -165
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/precondition_steps.rb +0 -63
- data/lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/validation_steps.rb +0 -67
- data/lib/lapis_lazuli/generators/cucumber/template/features/support/functions.rb +0 -68
@@ -7,112 +7,113 @@
|
|
7
7
|
#
|
8
8
|
|
9
9
|
module LapisLazuli
|
10
|
-
module WorldModule
|
11
|
-
##
|
12
|
-
# Module with cucumber hooks
|
13
|
-
#
|
14
|
-
# The module is special in that it does not include other modules. Instead it
|
15
|
-
# always tests whether World responds to a function before calling it.
|
16
|
-
module Hooks
|
10
|
+
module WorldModule
|
17
11
|
##
|
18
|
-
#
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
# Module with cucumber hooks
|
13
|
+
#
|
14
|
+
# The module is special in that it does not include other modules. Instead it
|
15
|
+
# always tests whether World responds to a function before calling it.
|
16
|
+
module Hooks
|
17
|
+
##
|
18
|
+
# Add hooks to one of the four queues :before, :after, :start or :end.
|
19
|
+
HOOK_QUEUES = [
|
20
|
+
:before,
|
21
|
+
:after,
|
22
|
+
:start,
|
23
23
|
# :end # FIXME hard to implement. See issue #13
|
24
|
-
|
25
|
-
def self.add_hook(queue, hook)
|
26
|
-
if not HOOK_QUEUES.include?(queue)
|
27
|
-
raise "Invalid hook queue #{queue}"
|
28
|
-
end
|
24
|
+
]
|
29
25
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
def self.add_hook(queue, hook)
|
27
|
+
if not HOOK_QUEUES.include?(queue)
|
28
|
+
raise "Invalid hook queue #{queue}"
|
29
|
+
end
|
34
30
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
# Update the scenario informaton
|
39
|
-
if respond_to? :scenario
|
40
|
-
scenario.running = true
|
41
|
-
scenario.update(cuke_scenario)
|
31
|
+
@@hooks ||= {}
|
32
|
+
@@hooks[queue] ||= []
|
33
|
+
@@hooks[queue] << hook
|
42
34
|
end
|
43
35
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
36
|
+
##
|
37
|
+
# Hook invoked in BeforeScenario
|
38
|
+
def before_scenario_hook(cuke_scenario)
|
39
|
+
# Update the scenario informaton
|
40
|
+
if respond_to? :scenario
|
41
|
+
scenario.running = true
|
42
|
+
scenario.update(cuke_scenario)
|
43
|
+
end
|
48
44
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
run_queue(:start, cuke_scenario)
|
54
|
-
end
|
45
|
+
# Show the name
|
46
|
+
if respond_to? :log
|
47
|
+
log.info("Starting Scenario: #{scenario.id}")
|
48
|
+
end
|
55
49
|
|
56
|
-
|
57
|
-
|
58
|
-
|
50
|
+
# Run 'start' queue once.
|
51
|
+
@@started ||= false
|
52
|
+
if not @@started
|
53
|
+
@@started = true
|
54
|
+
run_queue(:start, cuke_scenario)
|
55
|
+
end
|
59
56
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
# Run 'after' queue
|
64
|
-
run_queue(:after, cuke_scenario)
|
57
|
+
# Run 'before' queue
|
58
|
+
run_queue(:before, cuke_scenario)
|
59
|
+
end
|
65
60
|
|
66
|
-
|
67
|
-
#
|
61
|
+
##
|
62
|
+
# Hook invoked in AfterScenario
|
63
|
+
def after_scenario_hook(cuke_scenario)
|
64
|
+
# Run 'after' queue
|
65
|
+
run_queue(:after, cuke_scenario)
|
68
66
|
|
69
|
-
|
70
|
-
|
71
|
-
scenario.running = false
|
72
|
-
end
|
67
|
+
# Run 'end' queue
|
68
|
+
# FIXME hard to implement; see issue #13
|
73
69
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
70
|
+
# The current scenario has finished
|
71
|
+
if respond_to? :scenario
|
72
|
+
scenario.running = false
|
73
|
+
end
|
74
|
+
|
75
|
+
# Sleep if needed
|
76
|
+
if respond_to? :config and has_env_or_config?("step_pause_time")
|
77
|
+
sleep env_or_config("step_pause_time")
|
78
|
+
end
|
78
79
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
80
|
+
# Did we fail?
|
81
|
+
if respond_to? :scenario and respond_to? :has_browser? and respond_to? :browser and respond_to? :config
|
82
|
+
if has_browser? and (cuke_scenario.failed? or (scenario.check_browser_errors and browser.has_error?))
|
83
|
+
# Take a screenshot if needed
|
84
|
+
if has_env_or_config?('screenshot_on_failure')
|
85
|
+
if env_or_config("screenshot_scheme") == "new"
|
86
|
+
# Take screenshots on all active browsers
|
87
|
+
LapisLazuli::Browser.browsers.each do |b|
|
88
|
+
fileloc = b.take_screenshot()
|
89
|
+
end
|
90
|
+
else
|
91
|
+
browser.take_screenshot()
|
88
92
|
end
|
89
|
-
else
|
90
|
-
browser.take_screenshot()
|
91
93
|
end
|
92
94
|
end
|
93
95
|
end
|
94
|
-
end
|
95
96
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
# Close browser if needed
|
98
|
+
if respond_to? :has_browser? and respond_to? :browser
|
99
|
+
if has_browser?
|
100
|
+
browser.close_after_scenario(cuke_scenario)
|
101
|
+
end
|
100
102
|
end
|
101
103
|
end
|
102
|
-
end
|
103
104
|
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
private
|
106
|
+
def run_queue(queue, cuke_scenario)
|
107
|
+
@@hooks ||= {}
|
107
108
|
|
108
|
-
|
109
|
-
|
110
|
-
|
109
|
+
if @@hooks[queue].nil?
|
110
|
+
return
|
111
|
+
end
|
111
112
|
|
112
|
-
|
113
|
-
|
113
|
+
@@hooks[queue].each do |hook|
|
114
|
+
self.instance_exec(cuke_scenario, &hook)
|
115
|
+
end
|
114
116
|
end
|
115
|
-
end
|
116
|
-
end # module
|
117
|
-
end # module WorldModule
|
117
|
+
end # module Hooks
|
118
|
+
end # module WorldModule
|
118
119
|
end # module LapisLazuli
|
@@ -37,7 +37,7 @@ module WorldModule
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# Start the logger with the config filename
|
40
|
-
log_file = "#{dir}#{File::SEPARATOR}#{File.basename(Config.
|
40
|
+
log_file = "#{dir}#{File::SEPARATOR}#{File.basename(Config.config_files[0], ".*")}.log"
|
41
41
|
# Or a filename from the environment
|
42
42
|
if has_env_or_config?("log_file")
|
43
43
|
log_file = env_or_config("log_file")
|
data/test/config/config.yml
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
################################################################################
|
10
10
|
# Set the global variables
|
11
|
-
default_env:
|
11
|
+
default_env: local # defines the environment
|
12
12
|
default_device: desktop720 # set the default browser dimensions and/or user agent (See devices.yml)
|
13
13
|
screenshots_dir: screenshots # where to save the screenshots
|
14
14
|
screenshots_height: full # When 'full' the window will be resized to max height before taking a screenshot
|
@@ -29,11 +29,12 @@ error_strings:
|
|
29
29
|
|
30
30
|
################################################################################
|
31
31
|
# Environment specific variables
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
remote:
|
33
|
+
close_browser_after: feature
|
34
|
+
server:
|
35
|
+
url: local_path
|
35
36
|
|
36
|
-
|
37
|
+
local:
|
37
38
|
close_browser_after: feature
|
38
39
|
server:
|
39
|
-
|
40
|
+
url: http://localhost:9090/
|
data/test/config/cucumber.yml
CHANGED
@@ -24,13 +24,11 @@ chrome: BROWSER=chrome
|
|
24
24
|
ie: BROWSER=ie
|
25
25
|
safari: BROWSER=safari
|
26
26
|
|
27
|
-
|
28
|
-
# Listed environments (default is set in config.yml)
|
29
|
-
t: TEST_ENV=test -t @t,@test
|
30
|
-
test: TEST_ENV=test -t @t,@test
|
27
|
+
local: TEST_ENV=local -t @p,@prod
|
31
28
|
|
32
|
-
|
33
|
-
uat: TEST_ENV=acceptatie -t @u,@uat
|
29
|
+
remote: SELENIUM_ENV=remote -t ~@ignore_on_remote TEST_ENV=remote
|
34
30
|
|
35
|
-
|
36
|
-
|
31
|
+
################################################################################
|
32
|
+
# Calliope.pro settings
|
33
|
+
calliope_key: API_KEY=
|
34
|
+
calliope_import: -p calliope_key -c -f pretty -f calliope_import --out ./results/latest_results.json
|
@@ -11,6 +11,9 @@ Given(/^I navigate to the (.*) test page$/) do |page|
|
|
11
11
|
config = "server.url"
|
12
12
|
if has_env?(config)
|
13
13
|
url = env(config)
|
14
|
+
if url == 'local_path'
|
15
|
+
url = 'file://' + File.expand_path(File.dirname(File.dirname(__FILE__))) + '/../server/www/'
|
16
|
+
end
|
14
17
|
browser.goto "#{url}#{page.downcase.gsub(" ", "_")}.html"
|
15
18
|
else
|
16
19
|
error(:env => config)
|
@@ -43,9 +46,9 @@ Given(/I click (the|a) (first|last|random|[0-9]+[a-z]+) (.*)$/) do |arg1, index,
|
|
43
46
|
end
|
44
47
|
|
45
48
|
|
46
|
-
Given(/^I create a firefox browser named "(.*?)"( with proxy to "(.*?)")
|
49
|
+
Given(/^I create a firefox browser named "(.*?)"(?: with proxy to "(.*?)")?$/) do |name, proxy_url|
|
47
50
|
b = nil
|
48
|
-
if
|
51
|
+
if proxy_url
|
49
52
|
log.debug("Starting with profile")
|
50
53
|
require 'selenium-webdriver'
|
51
54
|
profile = Selenium::WebDriver::Firefox::Profile.new
|
@@ -126,11 +126,11 @@ Then(/^within (\d+) seconds I should see added elements with matching$/) do |tim
|
|
126
126
|
elems = browser.multi_wait_all(
|
127
127
|
:timeout => timeout,
|
128
128
|
:condition => :until,
|
129
|
-
:mode => :
|
129
|
+
:mode => :match_any,
|
130
130
|
:groups => ["wait"],
|
131
131
|
:selectors => [
|
132
132
|
{:tag_name => 'span', :class => /foo/, :text => /foo/},
|
133
|
-
{:tag_name => 'div', :id => 'bar', :
|
133
|
+
{:tag_name => 'div', :id => 'bar', :text => "bar"}
|
134
134
|
]
|
135
135
|
)
|
136
136
|
assert (2 == elems.length), "Expected two elements, found #{elems.length}"
|
@@ -4,6 +4,7 @@
|
|
4
4
|
# Author: "spriteCloud" <info@spritecloud.com>
|
5
5
|
require 'lapis_lazuli'
|
6
6
|
require 'lapis_lazuli/cucumber'
|
7
|
+
require 'cucumber/calliope_importer'
|
7
8
|
|
8
9
|
module TestModule
|
9
10
|
def test_func
|
@@ -11,7 +12,7 @@ module TestModule
|
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
LapisLazuli::WorldModule::Config.
|
15
|
+
LapisLazuli::WorldModule::Config.add_config "config/config.yml"
|
15
16
|
World(LapisLazuli, TestModule)
|
16
17
|
|
17
18
|
LapisLazuli::WorldModule::Browser.browser_module(TestModule)
|
@@ -22,7 +23,27 @@ LapisLazuli.Start do
|
|
22
23
|
print "Lapis Lazuli: #{Gem.loaded_specs['lapis_lazuli'].version}\n"
|
23
24
|
print "Selenium webdriver: #{Gem.loaded_specs['selenium-webdriver'].version}\n"
|
24
25
|
print "Watir: #{Gem.loaded_specs['watir'].version}\n"
|
26
|
+
print "Cucumber: #{Gem.loaded_specs['cucumber'].version}\n"
|
25
27
|
print "---- VERSION INFO ----\n\n"
|
28
|
+
|
29
|
+
if ENV['SELENIUM_ENV'] == 'remote'
|
30
|
+
require 'selenium-webdriver'
|
31
|
+
if ENV['BROWSER'] == 'firefox'
|
32
|
+
remote_url = 'http://selenium__standalone-firefox:4444/wd/hub/'
|
33
|
+
caps = Selenium::WebDriver::Remote::Capabilities.firefox
|
34
|
+
else
|
35
|
+
remote_url = 'http://selenium__standalone-chrome:4444/wd/hub/'
|
36
|
+
caps = Selenium::WebDriver::Remote::Capabilities.chrome
|
37
|
+
end
|
38
|
+
client = Selenium::WebDriver::Remote::Http::Default.new
|
39
|
+
client.timeout = 120
|
40
|
+
|
41
|
+
browser :remote, {desired_capabilities: caps, http_client: client, url: remote_url}
|
42
|
+
end
|
43
|
+
|
44
|
+
ENV['TA_OS'] = RUBY_PLATFORM
|
45
|
+
ENV['TA_PLATFORM'] = "#{browser.driver.browser} #{browser.driver.capabilities.version}"
|
46
|
+
ENV['TA_BUILD'] = "Lapis Lazuli #{Gem.loaded_specs['lapis_lazuli'].version}"
|
26
47
|
end
|
27
48
|
|
28
49
|
# Transition function from old codebase to new
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lapis_lazuli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Onno Steenbergen
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2018-02-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -154,19 +154,39 @@ dependencies:
|
|
154
154
|
- !ruby/object:Gem::Version
|
155
155
|
version: '3.1'
|
156
156
|
- !ruby/object:Gem::Dependency
|
157
|
-
name:
|
157
|
+
name: deep_merge
|
158
158
|
requirement: !ruby/object:Gem::Requirement
|
159
159
|
requirements:
|
160
160
|
- - "~>"
|
161
161
|
- !ruby/object:Gem::Version
|
162
|
-
version: '
|
162
|
+
version: '1.2'
|
163
163
|
type: :runtime
|
164
164
|
prerelease: false
|
165
165
|
version_requirements: !ruby/object:Gem::Requirement
|
166
166
|
requirements:
|
167
167
|
- - "~>"
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: '
|
169
|
+
version: '1.2'
|
170
|
+
- !ruby/object:Gem::Dependency
|
171
|
+
name: selenium-webdriver
|
172
|
+
requirement: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '2.0'
|
177
|
+
- - "<"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '4'
|
180
|
+
type: :runtime
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '2.0'
|
187
|
+
- - "<"
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '4'
|
170
190
|
- !ruby/object:Gem::Dependency
|
171
191
|
name: watir
|
172
192
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,16 +205,22 @@ dependencies:
|
|
185
205
|
name: cucumber
|
186
206
|
requirement: !ruby/object:Gem::Requirement
|
187
207
|
requirements:
|
188
|
-
- - "
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '2.0'
|
211
|
+
- - "<"
|
189
212
|
- !ruby/object:Gem::Version
|
190
|
-
version: '
|
213
|
+
version: '4.0'
|
191
214
|
type: :runtime
|
192
215
|
prerelease: false
|
193
216
|
version_requirements: !ruby/object:Gem::Requirement
|
194
217
|
requirements:
|
195
|
-
- - "
|
218
|
+
- - ">="
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '2.0'
|
221
|
+
- - "<"
|
196
222
|
- !ruby/object:Gem::Version
|
197
|
-
version: '
|
223
|
+
version: '4.0'
|
198
224
|
description: "\n LapisLazuli provides cucumber helper functions and scaffolding
|
199
225
|
for easier (web)\n test automation suite development.\n\n A lot of functionality
|
200
226
|
is aimed at dealing better with [Watir](http://watir.com/),\n such as:\n\n -
|
@@ -235,13 +261,18 @@ files:
|
|
235
261
|
- lib/lapis_lazuli/generators/cucumber/template/config/config.yml
|
236
262
|
- lib/lapis_lazuli/generators/cucumber/template/config/cucumber.yml
|
237
263
|
- lib/lapis_lazuli/generators/cucumber/template/config/devices.yml
|
238
|
-
- lib/lapis_lazuli/generators/cucumber/template/
|
239
|
-
- lib/lapis_lazuli/generators/cucumber/template/features/
|
240
|
-
- lib/lapis_lazuli/generators/cucumber/template/features/
|
241
|
-
- lib/lapis_lazuli/generators/cucumber/template/features/
|
242
|
-
- lib/lapis_lazuli/generators/cucumber/template/features/
|
264
|
+
- lib/lapis_lazuli/generators/cucumber/template/config/users.yml
|
265
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/1_basic.feature
|
266
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/2_account.feature
|
267
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/3_todo_list.feature
|
268
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/helpers/authentication_helper.rb
|
269
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/helpers/navigation_helper.rb
|
270
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/helpers/registration_helper.rb
|
271
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/helpers/user_helper.rb
|
272
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/account_steps.rb
|
273
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/basic_steps.rb
|
274
|
+
- lib/lapis_lazuli/generators/cucumber/template/features/step_definitions/todo_steps.rb
|
243
275
|
- lib/lapis_lazuli/generators/cucumber/template/features/support/env.rb
|
244
|
-
- lib/lapis_lazuli/generators/cucumber/template/features/support/functions.rb
|
245
276
|
- lib/lapis_lazuli/generic/assertions.rb
|
246
277
|
- lib/lapis_lazuli/generic/xpath.rb
|
247
278
|
- lib/lapis_lazuli/options.rb
|
@@ -287,6 +318,7 @@ files:
|
|
287
318
|
- test/features/timing.feature
|
288
319
|
- test/features/variable.feature
|
289
320
|
- test/features/xpath.feature
|
321
|
+
- test/results/latest_results.json
|
290
322
|
- test/server/start.rb
|
291
323
|
- test/server/www/button.html
|
292
324
|
- test/server/www/error_html.html
|
@@ -316,7 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
348
|
version: '0'
|
317
349
|
requirements: []
|
318
350
|
rubyforge_project:
|
319
|
-
rubygems_version: 2.6.
|
351
|
+
rubygems_version: 2.6.14
|
320
352
|
signing_key:
|
321
353
|
specification_version: 4
|
322
354
|
summary: Cucumber helper functions and scaffolding for easier test automation suite
|
@@ -348,6 +380,7 @@ test_files:
|
|
348
380
|
- test/features/timing.feature
|
349
381
|
- test/features/variable.feature
|
350
382
|
- test/features/xpath.feature
|
383
|
+
- test/results/latest_results.json
|
351
384
|
- test/server/start.rb
|
352
385
|
- test/server/www/button.html
|
353
386
|
- test/server/www/error_html.html
|