rspeckled 0.0.57 → 0.0.58

Sign up to get free protection for your applications and to get access to all the features.
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