mediawiki_selenium 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/.yardopts +1 -0
- data/README.md +43 -318
- data/RELEASES.md +353 -0
- data/features/login_helper.feature +15 -0
- data/features/rspec.feature +64 -0
- data/features/saucelabs.feature +7 -2
- data/features/screenshots.feature +21 -0
- data/features/step_definitions/browser_steps.rb +4 -0
- data/features/step_definitions/environment_steps.rb +2 -2
- data/features/step_definitions/login_helper_steps.rb +11 -0
- data/features/step_definitions/rspec_steps.rb +32 -0
- data/features/step_definitions/saucelabs_steps.rb +18 -0
- data/features/step_definitions/screenshot_steps.rb +3 -0
- data/lib/mediawiki_selenium.rb +6 -3
- data/lib/mediawiki_selenium/browser_factory/base.rb +5 -1
- data/lib/mediawiki_selenium/cucumber.rb +4 -0
- data/lib/mediawiki_selenium/{support → cucumber}/env.rb +2 -4
- data/lib/mediawiki_selenium/cucumber/hooks.rb +73 -0
- data/lib/mediawiki_selenium/cucumber/sauce.rb +22 -0
- data/lib/mediawiki_selenium/{support/modules → cucumber}/strict_pending.rb +0 -0
- data/lib/mediawiki_selenium/environment.rb +41 -20
- data/lib/mediawiki_selenium/{support/modules → helpers}/api_helper.rb +15 -0
- data/lib/mediawiki_selenium/{support/modules → helpers}/headless_helper.rb +21 -13
- data/lib/mediawiki_selenium/helpers/login_helper.rb +36 -0
- data/lib/mediawiki_selenium/helpers/screenshot_helper.rb +58 -0
- data/lib/mediawiki_selenium/{support/modules → helpers}/user_factory_helper.rb +0 -0
- data/lib/mediawiki_selenium/pages.rb +3 -0
- data/lib/mediawiki_selenium/{support/pages → pages}/login_page.rb +0 -0
- data/lib/mediawiki_selenium/{support/pages → pages}/random_page.rb +0 -0
- data/lib/mediawiki_selenium/{support/pages → pages}/reset_preferences_page.rb +0 -0
- data/lib/mediawiki_selenium/remote_browser_factory.rb +12 -3
- data/lib/mediawiki_selenium/rspec.rb +51 -0
- data/lib/mediawiki_selenium/rspec/environment.rb +36 -0
- data/lib/mediawiki_selenium/rspec/features.rb +49 -0
- data/lib/mediawiki_selenium/step_definitions/login_steps.rb +1 -3
- data/lib/mediawiki_selenium/version.rb +1 -1
- data/mediawiki_selenium.gemspec +2 -2
- data/spec/environment_spec.rb +12 -0
- data/spec/screenshot_helper_spec.rb +95 -0
- data/templates/tests/browser/features/support/env.rb +2 -1
- metadata +52 -38
- data/lib/mediawiki_selenium/support.rb +0 -4
- data/lib/mediawiki_selenium/support/hooks.rb +0 -92
- data/lib/mediawiki_selenium/support/pages.rb +0 -3
- data/lib/mediawiki_selenium/support/sauce.rb +0 -26
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki_selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris McMahon
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2015-
|
16
|
+
date: 2015-09-25 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: cucumber
|
@@ -81,20 +81,20 @@ dependencies:
|
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0.
|
84
|
+
version: '0.5'
|
85
85
|
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0.
|
87
|
+
version: 0.5.0
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0.
|
94
|
+
version: '0.5'
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 0.
|
97
|
+
version: 0.5.0
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: page-object
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,6 +129,26 @@ dependencies:
|
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.6.7
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: rspec-core
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.14'
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 2.14.4
|
142
|
+
type: :runtime
|
143
|
+
prerelease: false
|
144
|
+
version_requirements: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - "~>"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '2.14'
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 2.14.4
|
132
152
|
- !ruby/object:Gem::Dependency
|
133
153
|
name: rspec-expectations
|
134
154
|
requirement: !ruby/object:Gem::Requirement
|
@@ -263,26 +283,6 @@ dependencies:
|
|
263
283
|
- - "~>"
|
264
284
|
- !ruby/object:Gem::Version
|
265
285
|
version: 0.29.1
|
266
|
-
- !ruby/object:Gem::Dependency
|
267
|
-
name: rspec-core
|
268
|
-
requirement: !ruby/object:Gem::Requirement
|
269
|
-
requirements:
|
270
|
-
- - "~>"
|
271
|
-
- !ruby/object:Gem::Version
|
272
|
-
version: '2.14'
|
273
|
-
- - ">="
|
274
|
-
- !ruby/object:Gem::Version
|
275
|
-
version: 2.14.4
|
276
|
-
type: :development
|
277
|
-
prerelease: false
|
278
|
-
version_requirements: !ruby/object:Gem::Requirement
|
279
|
-
requirements:
|
280
|
-
- - "~>"
|
281
|
-
- !ruby/object:Gem::Version
|
282
|
-
version: '2.14'
|
283
|
-
- - ">="
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: 2.14.4
|
286
286
|
- !ruby/object:Gem::Dependency
|
287
287
|
name: rspec-mocks
|
288
288
|
requirement: !ruby/object:Gem::Requirement
|
@@ -328,15 +328,23 @@ files:
|
|
328
328
|
- Gemfile
|
329
329
|
- LICENSE
|
330
330
|
- README.md
|
331
|
+
- RELEASES.md
|
331
332
|
- UPGRADE.md
|
332
333
|
- bin/mediawiki-selenium-init
|
333
334
|
- features/api.feature
|
334
335
|
- features/basic_usage.feature
|
336
|
+
- features/login_helper.feature
|
335
337
|
- features/recording.feature
|
338
|
+
- features/rspec.feature
|
336
339
|
- features/saucelabs.feature
|
340
|
+
- features/screenshots.feature
|
337
341
|
- features/step_definitions/api_helper_steps.rb
|
338
342
|
- features/step_definitions/browser_steps.rb
|
339
343
|
- features/step_definitions/environment_steps.rb
|
344
|
+
- features/step_definitions/login_helper_steps.rb
|
345
|
+
- features/step_definitions/rspec_steps.rb
|
346
|
+
- features/step_definitions/saucelabs_steps.rb
|
347
|
+
- features/step_definitions/screenshot_steps.rb
|
340
348
|
- features/step_definitions/user_factory_steps.rb
|
341
349
|
- features/support/env.rb
|
342
350
|
- features/user_factory.feature
|
@@ -347,32 +355,37 @@ files:
|
|
347
355
|
- lib/mediawiki_selenium/browser_factory/firefox.rb
|
348
356
|
- lib/mediawiki_selenium/browser_factory/phantomjs.rb
|
349
357
|
- lib/mediawiki_selenium/configuration_error.rb
|
358
|
+
- lib/mediawiki_selenium/cucumber.rb
|
359
|
+
- lib/mediawiki_selenium/cucumber/env.rb
|
360
|
+
- lib/mediawiki_selenium/cucumber/hooks.rb
|
361
|
+
- lib/mediawiki_selenium/cucumber/sauce.rb
|
362
|
+
- lib/mediawiki_selenium/cucumber/strict_pending.rb
|
350
363
|
- lib/mediawiki_selenium/environment.rb
|
364
|
+
- lib/mediawiki_selenium/helpers/api_helper.rb
|
365
|
+
- lib/mediawiki_selenium/helpers/headless_helper.rb
|
366
|
+
- lib/mediawiki_selenium/helpers/login_helper.rb
|
367
|
+
- lib/mediawiki_selenium/helpers/screenshot_helper.rb
|
368
|
+
- lib/mediawiki_selenium/helpers/user_factory_helper.rb
|
351
369
|
- lib/mediawiki_selenium/initializer.rb
|
352
370
|
- lib/mediawiki_selenium/page_factory.rb
|
371
|
+
- lib/mediawiki_selenium/pages.rb
|
372
|
+
- lib/mediawiki_selenium/pages/login_page.rb
|
373
|
+
- lib/mediawiki_selenium/pages/random_page.rb
|
374
|
+
- lib/mediawiki_selenium/pages/reset_preferences_page.rb
|
353
375
|
- lib/mediawiki_selenium/raita.rb
|
354
376
|
- lib/mediawiki_selenium/raita/formatter.rb
|
355
377
|
- lib/mediawiki_selenium/raita/logger.rb
|
356
378
|
- lib/mediawiki_selenium/raita/null_io.rb
|
357
379
|
- lib/mediawiki_selenium/remote_browser_factory.rb
|
380
|
+
- lib/mediawiki_selenium/rspec.rb
|
381
|
+
- lib/mediawiki_selenium/rspec/environment.rb
|
382
|
+
- lib/mediawiki_selenium/rspec/features.rb
|
358
383
|
- lib/mediawiki_selenium/step_definitions.rb
|
359
384
|
- lib/mediawiki_selenium/step_definitions/login_steps.rb
|
360
385
|
- lib/mediawiki_selenium/step_definitions/navigation_steps.rb
|
361
386
|
- lib/mediawiki_selenium/step_definitions/preferences_steps.rb
|
362
387
|
- lib/mediawiki_selenium/step_definitions/resource_loader_steps.rb
|
363
388
|
- lib/mediawiki_selenium/step_definitions/upload_file_steps.rb
|
364
|
-
- lib/mediawiki_selenium/support.rb
|
365
|
-
- lib/mediawiki_selenium/support/env.rb
|
366
|
-
- lib/mediawiki_selenium/support/hooks.rb
|
367
|
-
- lib/mediawiki_selenium/support/modules/api_helper.rb
|
368
|
-
- lib/mediawiki_selenium/support/modules/headless_helper.rb
|
369
|
-
- lib/mediawiki_selenium/support/modules/strict_pending.rb
|
370
|
-
- lib/mediawiki_selenium/support/modules/user_factory_helper.rb
|
371
|
-
- lib/mediawiki_selenium/support/pages.rb
|
372
|
-
- lib/mediawiki_selenium/support/pages/login_page.rb
|
373
|
-
- lib/mediawiki_selenium/support/pages/random_page.rb
|
374
|
-
- lib/mediawiki_selenium/support/pages/reset_preferences_page.rb
|
375
|
-
- lib/mediawiki_selenium/support/sauce.rb
|
376
389
|
- lib/mediawiki_selenium/user_factory.rb
|
377
390
|
- lib/mediawiki_selenium/version.rb
|
378
391
|
- lib/mediawiki_selenium/warnings_formatter.rb
|
@@ -386,6 +399,7 @@ files:
|
|
386
399
|
- spec/headless_helper_spec.rb
|
387
400
|
- spec/page_factory_spec.rb
|
388
401
|
- spec/remote_browser_factory_spec.rb
|
402
|
+
- spec/screenshot_helper_spec.rb
|
389
403
|
- spec/spec_helper.rb
|
390
404
|
- spec/user_factory_helper_spec.rb
|
391
405
|
- spec/user_factory_spec.rb
|
@@ -1,92 +0,0 @@
|
|
1
|
-
Before('@custom-browser') do |scenario|
|
2
|
-
@scenario = scenario
|
3
|
-
end
|
4
|
-
|
5
|
-
AfterConfiguration do |config|
|
6
|
-
# Install a formatter that can be used to show feature-related warnings
|
7
|
-
pretty_format, io = config.formats.find { |(format, _io)| format == 'pretty' }
|
8
|
-
config.formats << ['MediawikiSelenium::WarningsFormatter', io] if pretty_format
|
9
|
-
|
10
|
-
# Set up Raita logging if RAITA_DB_URL is set. Include any useful
|
11
|
-
# environment variables that Jenkins would have set.
|
12
|
-
env = MediawikiSelenium::Environment.load_default
|
13
|
-
raita_url = env.lookup(:raita_url, default: nil)
|
14
|
-
|
15
|
-
if raita_url
|
16
|
-
raita_build = MediawikiSelenium::Raita.build_from(env)
|
17
|
-
config.formats << ['MediawikiSelenium::Raita::Logger', { url: raita_url, build: raita_build }]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# Enforce a dependency check for all scenarios tagged with @extension- tags
|
22
|
-
Before do |scenario|
|
23
|
-
# Backgrounds themselves don't have tags, so get them from the feature
|
24
|
-
if scenario.is_a?(Cucumber::Ast::Background)
|
25
|
-
tag_source = scenario.feature
|
26
|
-
else
|
27
|
-
tag_source = scenario
|
28
|
-
end
|
29
|
-
|
30
|
-
tags = tag_source.source_tag_names
|
31
|
-
dependencies = tags.map { |tag| tag.match(/^@extension-(.+)$/) { |m| m[1].downcase } }.compact
|
32
|
-
|
33
|
-
unless dependencies.empty?
|
34
|
-
extensions = api.meta(:siteinfo, siprop: 'extensions').data['extensions']
|
35
|
-
extensions = extensions.map { |ext| ext['name'] }.compact.map(&:downcase)
|
36
|
-
missing = dependencies - extensions
|
37
|
-
|
38
|
-
if missing.any?
|
39
|
-
scenario.skip_invoke!
|
40
|
-
|
41
|
-
if scenario.feature.respond_to?(:mw_warn)
|
42
|
-
warning = "Skipped feature due to missing wiki extensions: #{missing.join(", ")}"
|
43
|
-
scenario.feature.mw_warn(warning, 'missing wiki extensions')
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
Before do |scenario|
|
50
|
-
# Create a unique random string for this scenario
|
51
|
-
@random_string = Random.new.rand.to_s
|
52
|
-
|
53
|
-
# Annotate sessions with the scenario name and Jenkins build info
|
54
|
-
browser_factory.configure do |options|
|
55
|
-
options[:desired_capabilities][:name] = test_name(scenario)
|
56
|
-
end
|
57
|
-
|
58
|
-
browser_factory.configure(:job_name) do |job, options|
|
59
|
-
options[:desired_capabilities][:name] += " #{job}"
|
60
|
-
end
|
61
|
-
|
62
|
-
browser_factory.configure(:build_number) do |build, options|
|
63
|
-
options[:desired_capabilities][:name] += "##{build}"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
After do |scenario|
|
68
|
-
scenario_name = test_name(scenario)
|
69
|
-
|
70
|
-
if scenario.respond_to?(:status)
|
71
|
-
require 'fileutils'
|
72
|
-
|
73
|
-
teardown(name: scenario_name, status: scenario.status) do |browser|
|
74
|
-
# Embed remote session URLs
|
75
|
-
if remote? && browser.driver.respond_to?(:session_id)
|
76
|
-
embed("http://saucelabs.com/jobs/#{browser.driver.session_id}", 'text/url')
|
77
|
-
end
|
78
|
-
|
79
|
-
# Take screenshots
|
80
|
-
if scenario.failed? && lookup(:screenshot_failures, default: false) == 'true'
|
81
|
-
screen_dir = lookup(:screenshot_failures_path, default: 'screenshots')
|
82
|
-
FileUtils.mkdir_p screen_dir
|
83
|
-
name = scenario_name.gsub(/ /, '_')
|
84
|
-
path = "#{screen_dir}/#{name}.png"
|
85
|
-
browser.screenshot.save path
|
86
|
-
embed path, 'image/png'
|
87
|
-
end
|
88
|
-
end
|
89
|
-
else
|
90
|
-
teardown(name: scenario_name)
|
91
|
-
end
|
92
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'cucumber/formatter/junit'
|
2
|
-
|
3
|
-
module Cucumber::Formatter
|
4
|
-
class Sauce < Junit
|
5
|
-
|
6
|
-
class << self
|
7
|
-
attr_accessor :current_session_id
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def format_exception(exception)
|
13
|
-
if ENV['HEADLESS'] == 'true'
|
14
|
-
job_url = ''
|
15
|
-
elsif self.class.current_session_id
|
16
|
-
job_url = "Sauce Labs job URL: http://saucelabs.com/jobs/#{self.class.current_session_id}\n"
|
17
|
-
else
|
18
|
-
job_url = 'Uh-oh. Could not find link to Sauce Labs job URL.'
|
19
|
-
end
|
20
|
-
|
21
|
-
msgs = [job_url] + ["#{exception.message} (#{exception.class})"] + exception.backtrace
|
22
|
-
|
23
|
-
msgs.join("\n")
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|