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.
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