mediawiki_selenium 1.5.0 → 1.6.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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.yardopts +1 -0
  4. data/README.md +43 -318
  5. data/RELEASES.md +353 -0
  6. data/features/login_helper.feature +15 -0
  7. data/features/rspec.feature +64 -0
  8. data/features/saucelabs.feature +7 -2
  9. data/features/screenshots.feature +21 -0
  10. data/features/step_definitions/browser_steps.rb +4 -0
  11. data/features/step_definitions/environment_steps.rb +2 -2
  12. data/features/step_definitions/login_helper_steps.rb +11 -0
  13. data/features/step_definitions/rspec_steps.rb +32 -0
  14. data/features/step_definitions/saucelabs_steps.rb +18 -0
  15. data/features/step_definitions/screenshot_steps.rb +3 -0
  16. data/lib/mediawiki_selenium.rb +6 -3
  17. data/lib/mediawiki_selenium/browser_factory/base.rb +5 -1
  18. data/lib/mediawiki_selenium/cucumber.rb +4 -0
  19. data/lib/mediawiki_selenium/{support → cucumber}/env.rb +2 -4
  20. data/lib/mediawiki_selenium/cucumber/hooks.rb +73 -0
  21. data/lib/mediawiki_selenium/cucumber/sauce.rb +22 -0
  22. data/lib/mediawiki_selenium/{support/modules → cucumber}/strict_pending.rb +0 -0
  23. data/lib/mediawiki_selenium/environment.rb +41 -20
  24. data/lib/mediawiki_selenium/{support/modules → helpers}/api_helper.rb +15 -0
  25. data/lib/mediawiki_selenium/{support/modules → helpers}/headless_helper.rb +21 -13
  26. data/lib/mediawiki_selenium/helpers/login_helper.rb +36 -0
  27. data/lib/mediawiki_selenium/helpers/screenshot_helper.rb +58 -0
  28. data/lib/mediawiki_selenium/{support/modules → helpers}/user_factory_helper.rb +0 -0
  29. data/lib/mediawiki_selenium/pages.rb +3 -0
  30. data/lib/mediawiki_selenium/{support/pages → pages}/login_page.rb +0 -0
  31. data/lib/mediawiki_selenium/{support/pages → pages}/random_page.rb +0 -0
  32. data/lib/mediawiki_selenium/{support/pages → pages}/reset_preferences_page.rb +0 -0
  33. data/lib/mediawiki_selenium/remote_browser_factory.rb +12 -3
  34. data/lib/mediawiki_selenium/rspec.rb +51 -0
  35. data/lib/mediawiki_selenium/rspec/environment.rb +36 -0
  36. data/lib/mediawiki_selenium/rspec/features.rb +49 -0
  37. data/lib/mediawiki_selenium/step_definitions/login_steps.rb +1 -3
  38. data/lib/mediawiki_selenium/version.rb +1 -1
  39. data/mediawiki_selenium.gemspec +2 -2
  40. data/spec/environment_spec.rb +12 -0
  41. data/spec/screenshot_helper_spec.rb +95 -0
  42. data/templates/tests/browser/features/support/env.rb +2 -1
  43. metadata +52 -38
  44. data/lib/mediawiki_selenium/support.rb +0 -4
  45. data/lib/mediawiki_selenium/support/hooks.rb +0 -92
  46. data/lib/mediawiki_selenium/support/pages.rb +0 -3
  47. data/lib/mediawiki_selenium/support/sauce.rb +0 -26
@@ -1,4 +1,5 @@
1
1
  require 'mediawiki_selenium'
2
2
 
3
- require 'mediawiki_selenium/support'
3
+ require 'mediawiki_selenium/cucumber'
4
+ require 'mediawiki_selenium/pages'
4
5
  require 'mediawiki_selenium/step_definitions'
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.5.0
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-07-28 00:00:00.000000000 Z
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.4'
84
+ version: '0.5'
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: 0.4.1
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.4'
94
+ version: '0.5'
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: 0.4.1
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,4 +0,0 @@
1
- require 'mediawiki_selenium/support/env'
2
- require 'mediawiki_selenium/support/hooks'
3
- require 'mediawiki_selenium/support/pages'
4
- require 'mediawiki_selenium/support/sauce'
@@ -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,3 +0,0 @@
1
- require 'mediawiki_selenium/support/pages/login_page'
2
- require 'mediawiki_selenium/support/pages/random_page'
3
- require 'mediawiki_selenium/support/pages/reset_preferences_page'
@@ -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