rspeckled 0.0.57 → 0.0.58

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1eb5d8d9be099ea2884aefe9f2585b1e19851149c7ab3b804ee813ce6f401d36
4
- data.tar.gz: cc80c306958c0c94a6f060e35dae091d5098b8317a487f35b8afd7b0997d5ef6
3
+ metadata.gz: c3af65690bcacf28a5daa423f8c66645d52f2479d74f1674bb68a61dde168457
4
+ data.tar.gz: '019ab537dde4b335ac377c127b1cea3d77eaf531ac08702ae8a5ed78e327f0b3'
5
5
  SHA512:
6
- metadata.gz: ce741e2f0974145e3673d449346690fa99258df8f3221706d78da0b8e02875e1aaedcb05d335606f92272fa7a0079c91f884d31a58ed04b13e17e620ae8bd6f3
7
- data.tar.gz: a2b6b0400cb39dd6261b4e1ea4656dfcca6a964b5f52aae829cc608077e85dc013b4a3a3df4a2c9a0e7721a766a655d9d01dbe79517c37e2ed1431f1f5354c49
6
+ metadata.gz: 3e0f42e71f3a8368bd3ab6ab2a123b51f9d3d936ab0d16b4763b25c981d4dd73b496a2da58c2e0d01355cae9306abed5e9d07ab5f58ecd9c6acffb865684b9c1
7
+ data.tar.gz: f2b4281e951e792e4ad7dd445c76d8464e2d3dabafb2dd60b1d0a8f3ca1a21bcb7d9799421a6c1052b933a5156c26a9b65d3b054c58018cba5ea12ee0fce50d6
checksums.yaml.gz.sig CHANGED
Binary file
@@ -6,105 +6,96 @@
6
6
  #
7
7
  # If this is not the case, you will need to require it prior to requiring
8
8
  # rspeckled.
9
- #
10
- # The same goes for capybara-webkit. It must be required before rspeckled.
11
9
 
12
10
  require 'capybara/rspec'
13
11
  require 'capybara/rails'
12
+ require 'rspeckled/selenium/drivers/chrome'
13
+ require 'rspeckled/selenium/drivers/firefox'
14
14
 
15
- downloads_directory = "#{Dir.pwd}/tmp/downloads/"
16
- Dir.mkdir(downloads_directory) unless Dir.exist?(downloads_directory)
17
-
18
- chrome_options = {
19
- 'chromeOptions' => {
20
- 'prefs' => {
21
- 'profile.default_content_settings.popups' => 0,
22
- 'download.default_directory' => downloads_directory,
23
- },
24
- 'args' => %w{
25
- window-size=1920,1200
26
- },
27
- },
28
- }
29
-
30
- Capybara.register_driver :chrome do |app|
31
- Capybara::Selenium::Driver.new(
32
- app,
33
- :browser => :chrome,
34
- :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options)
35
- )
15
+ # Configure Capybara
16
+
17
+ Capybara.configure do |config|
18
+ config.exact = true
19
+ config.match = :one
20
+ config.ignore_hidden_elements = true
21
+ config.visible_text_only = true
36
22
  end
37
23
 
38
- headless_chrome_options = chrome_options.dup
39
- headless_chrome_options['chromeOptions']['binary'] = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
40
- headless_chrome_options['chromeOptions']['args'] << 'headless'
41
- headless_chrome_options['chromeOptions']['args'] << 'disable-gpu'
42
-
43
- Capybara.register_driver :headless_chrome do |app|
44
- Capybara::Selenium::Driver.new(
45
- app,
46
- :browser => :chrome,
47
- :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(headless_chrome_options)
48
- )
24
+ if defined?(Chamber)
25
+ Capybara.default_host = Chamber.env.http.base_url
26
+ Capybara.app_host = Chamber.env.http.base_url
27
+ Capybara.asset_host = Chamber.env.http.base_url
28
+ Capybara.server_port = Chamber.env.http.url_components.port
49
29
  end
50
30
 
51
- firefox_profile = Selenium::WebDriver::Firefox::Profile.new
52
- firefox_profile['browser.download.dir'] = downloads_directory
53
- firefox_profile['browser.download.folderList'] = 2
54
- firefox_profile['browser.helperApps.neverAsk.saveToDisk'] = 'images/jpeg, application/pdf, application/octet-stream'
55
- firefox_profile['pdfjs.disabled'] = true
31
+ Capybara.save_path = "#{Dir.pwd}/tmp/screenshots"
32
+
33
+ # Configure Server
34
+
35
+ Capybara.register_server :puma do |app, _port, _host|
36
+ require 'rack/handler/puma'
56
37
 
57
- Capybara.register_driver :firefox do |app|
58
- Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => firefox_profile)
38
+ host = (defined?(Chamber) && Chamber.env.http.url_components.host) || ENV['HOST'] || 'lvh.me'
39
+ port = (defined?(Chamber) && Chamber.env.http.url_components.port) || ENV['PORT'] || '3000'
40
+
41
+ Rack::Handler::Puma.run(app, :Host => host, :Port => port, :Threads => '0:1')
59
42
  end
60
43
 
61
- Selenium::WebDriver.logger.output = 'log/selenium.log' if defined?(Selenium::WebDriver)
44
+ Capybara.server = :puma
62
45
 
63
- if defined?(Capybara::Webkit)
64
- Capybara.javascript_driver = :webkit
46
+ # Configure Browser Drivers
65
47
 
66
- Capybara::Webkit.configure do |config|
67
- config.block_unknown_urls
68
- config.skip_image_loading
48
+ downloads_directory = "#{Dir.pwd}/tmp/downloads/"
49
+ chrome_driver = ::Rspeckled::Selenium::Drivers::Chrome.new(:downloads_directory => downloads_directory)
50
+ firefox_driver = ::Rspeckled::Selenium::Drivers::Firefox.new(:downloads_directory => downloads_directory)
69
51
 
70
- config.allow_url('*.lvh.me')
71
- config.allow_url('*.cloudfront.net')
72
- config.allow_url('*.s3.amazonaws.com')
52
+ Capybara.register_driver(:chrome) { |app| chrome_driver.driver(app) }
53
+ Capybara.register_driver(:headless_chrome) { |app| chrome_driver.headless(app) }
54
+ Capybara.register_driver(:firefox) { |app| firefox_driver.driver(app) }
55
+ Capybara.register_driver(:headless_firefox) { |app| firefox_driver.headless(app) }
73
56
 
74
- if defined?(Chamber)
75
- config.allow_url("*.#{Chamber.env.http.host}")
76
- config.allow_url("*.#{Chamber.env.http.web_client_domain}")
77
- end
57
+ Capybara.javascript_driver = :headless_firefox
58
+
59
+ ::Selenium::WebDriver.logger.output = 'log/selenium.log' if defined?(::Selenium::WebDriver)
60
+
61
+ # Configure Screenshotting
62
+
63
+ if defined?(::Capybara::Screenshot)
64
+ require 'capybara-screenshot/rspec'
65
+
66
+ ::Capybara::Screenshot.autosave_on_failure = true
67
+ ::Capybara::Screenshot.prune_strategy = :keep_last_run
68
+
69
+ ::Capybara::Screenshot::RSpec.add_link_to_screenshot_for_failed_examples = false
70
+
71
+ ::Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example|
72
+ example.full_description.downcase.tr(' ', '-').gsub(%r{^.*/spec/}, '')
78
73
  end
79
- else
80
- Capybara.javascript_driver = :selenium
81
- end
82
74
 
83
- Capybara.configure do |config|
84
- config.exact = true
85
- config.match = :one
86
- config.ignore_hidden_elements = true
87
- config.visible_text_only = true
75
+ ::Capybara::Screenshot.register_driver(:chrome) { |driver, path| driver.browser.save_screenshot(path) }
76
+ ::Capybara::Screenshot.register_driver(:headless_chrome) { |driver, path| driver.browser.save_screenshot(path) }
77
+ ::Capybara::Screenshot.register_driver(:firefox) { |driver, path| driver.browser.save_screenshot(path) }
78
+ ::Capybara::Screenshot.register_driver(:headless_firefox) { |driver, path| driver.browser.save_screenshot(path) }
88
79
  end
89
80
 
90
- if defined?(Chamber)
91
- Capybara.default_host = Chamber.env.http.base_url
92
- Capybara.app_host = Chamber.env.http.base_url
93
- Capybara.server_port = Chamber.env.http.port
94
- end
81
+ # Configure Example Metadata
95
82
 
96
83
  RSpec.configure do |config|
97
84
  config.before(:each, :js => true) do
98
85
  page.driver.reset!
99
86
  end
100
87
 
101
- config.before(:each, :js => true, :autofocus => true) do
88
+ # Focus The Browser on Activation
89
+
90
+ config.around(:each, :js => true, :autofocus => true) do |example|
91
+ browser_name = example.metadata[:driver].to_s.capitalize
92
+
102
93
  Thread.new do
103
94
  sleep 1.5
104
95
 
105
96
  `
106
97
  osascript -e '
107
- tell the application named "Firefox"
98
+ tell the application named "#{browser_name}"
108
99
  activate
109
100
 
110
101
  set theWindow to the first item of windows
@@ -118,17 +109,19 @@ RSpec.configure do |config|
118
109
  ' > /dev/null
119
110
  `
120
111
  end
121
- end
122
112
 
123
- config.after(:each, :js => true, :autofocus => true) do
124
- sleep 10
113
+ example.run
114
+
115
+ sleep example.metadata[:delay]
125
116
  end
126
117
 
127
- config.before(:each, :js => true, :feature => true, :debug => true) do
118
+ # Setup Debug Logging
119
+
120
+ config.before(:each, :js => true, :debug => true) do
128
121
  Selenium::WebDriver.logger.level = :debug if defined?(Selenium::WebDriver)
129
122
  end
130
123
 
131
- config.after(:each, :js => true, :feature => true, :debug => true) do
124
+ config.after(:each, :js => true, :debug => true) do
132
125
  Selenium::WebDriver.logger.level = :warn if defined?(Selenium::WebDriver)
133
126
  end
134
127
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rspeckled
4
+ module Selenium
5
+ module Drivers
6
+ class Chrome
7
+ attr_reader :downloads_directory
8
+
9
+ def initialize(options)
10
+ self.downloads_directory = options.fetch(:downloads_directory)
11
+ end
12
+
13
+ def driver(app)
14
+ ::Capybara::Selenium::Driver.new(
15
+ app,
16
+ :browser => :chrome,
17
+ :desired_capabilities => ::Selenium::WebDriver::Remote::Capabilities.chrome(options)
18
+ )
19
+ end
20
+
21
+ def headless(app)
22
+ ::Capybara::Selenium::Driver.new(
23
+ app,
24
+ :browser => :chrome,
25
+ :desired_capabilities => ::Selenium::WebDriver::Remote::Capabilities.chrome(headless_options)
26
+ )
27
+ end
28
+
29
+ private
30
+
31
+ def downloads_directory=(dir)
32
+ Dir.mkdir(dir) unless Dir.exist?(dir)
33
+
34
+ @downloads_directory = dir
35
+ end
36
+
37
+ def options
38
+ {
39
+ 'chromeOptions' => {
40
+ 'prefs' => {
41
+ 'profile.default_content_settings.popups' => 0,
42
+ 'download.default_directory' => downloads_directory,
43
+ },
44
+ 'args' => %w{
45
+ window-size=1920,1200
46
+ },
47
+ },
48
+ }
49
+ end
50
+
51
+ def headless_options
52
+ options.dup.tap do |browser_options|
53
+ browser_options['chromeOptions']['binary'] = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
54
+
55
+ browser_options['chromeOptions']['args'] << 'headless'
56
+ browser_options['chromeOptions']['args'] << 'disable-gpu'
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rspeckled
4
+ module Selenium
5
+ module Drivers
6
+ class Firefox
7
+ attr_reader :downloads_directory
8
+
9
+ def initialize(options)
10
+ self.downloads_directory = options.fetch(:downloads_directory)
11
+ end
12
+
13
+ def driver(app)
14
+ ::Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile, :options => options)
15
+ end
16
+
17
+ def headless(app)
18
+ ::Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile, :options => headless_options)
19
+ end
20
+
21
+ private
22
+
23
+ def downloads_directory=(dir)
24
+ Dir.mkdir(dir) unless Dir.exist?(dir)
25
+
26
+ @downloads_directory = dir
27
+ end
28
+
29
+ def profile
30
+ ::Selenium::WebDriver::Firefox::Profile.new.tap do |profile|
31
+ profile['browser.download.dir'] = downloads_directory
32
+ profile['browser.download.folderList'] = 2
33
+ profile['browser.helperApps.neverAsk.saveToDisk'] = 'images/jpeg, application/pdf, application/octet-stream'
34
+ profile['pdfjs.disabled'] = true
35
+ end
36
+ end
37
+
38
+ def options
39
+ ::Selenium::WebDriver::Firefox::Options.new
40
+ end
41
+
42
+ def headless_options
43
+ options.dup.tap do |browser_options|
44
+ browser_options.args << '--headless'
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -96,13 +96,15 @@ RSpec.configure do |config|
96
96
  :autofocus => true,
97
97
  :js => true,
98
98
  :debug => true,
99
- :driver => :selenium
99
+ :delay => 0,
100
+ :driver => :firefox
100
101
 
101
102
  config.alias_example_to :sscenario, :focused => true,
102
103
  :autofocus => true,
103
104
  :js => true,
104
105
  :debug => true,
105
- :driver => :selenium
106
+ :delay => 0,
107
+ :driver => :firefox
106
108
 
107
109
  config.order = 'random'
108
110
  config.silence_filter_announcements = true
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rspeckled
4
- VERSION = '0.0.57'
4
+ VERSION = '0.0.58'
5
5
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspeckled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.57
4
+ version: 0.0.58
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -35,7 +35,7 @@ cert_chain:
35
35
  eUgMp+qKjyM1NGj/222soSUpWqOE16L23vv8sWIbMIADdR8dephQ6jMovYylUmE5
36
36
  KHp+JJQviSN0i4z8gVL2zloo+xZf791LiJH8Kcjpx43jhg0WdR4=
37
37
  -----END CERTIFICATE-----
38
- date: 2018-08-15 00:00:00.000000000 Z
38
+ date: 2018-08-17 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rspec
@@ -155,6 +155,8 @@ files:
155
155
  - lib/rspeckled/reporting/outputs/csv.rb
156
156
  - lib/rspeckled/reporting/outputs/text.rb
157
157
  - lib/rspeckled/reporting/runner.rb
158
+ - lib/rspeckled/selenium/drivers/chrome.rb
159
+ - lib/rspeckled/selenium/drivers/firefox.rb
158
160
  - lib/rspeckled/spec_helpers/active_record_basic.rb
159
161
  - lib/rspeckled/spec_helpers/active_record_connection_setup.rb
160
162
  - lib/rspeckled/spec_helpers/rails.rb
metadata.gz.sig CHANGED
Binary file