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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/rspeckled/plugins/capybara.rb +67 -74
- data/lib/rspeckled/selenium/drivers/chrome.rb +62 -0
- data/lib/rspeckled/selenium/drivers/firefox.rb +50 -0
- data/lib/rspeckled/support.rb +4 -2
- data/lib/rspeckled/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3af65690bcacf28a5daa423f8c66645d52f2479d74f1674bb68a61dde168457
|
4
|
+
data.tar.gz: '019ab537dde4b335ac377c127b1cea3d77eaf531ac08702ae8a5ed78e327f0b3'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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
|
-
|
58
|
-
|
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
|
-
|
44
|
+
Capybara.server = :puma
|
62
45
|
|
63
|
-
|
64
|
-
Capybara.javascript_driver = :webkit
|
46
|
+
# Configure Browser Drivers
|
65
47
|
|
66
|
-
|
67
|
-
|
68
|
-
|
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
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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.
|
84
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
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
|
-
|
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 "
|
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
|
-
|
124
|
-
|
113
|
+
example.run
|
114
|
+
|
115
|
+
sleep example.metadata[:delay]
|
125
116
|
end
|
126
117
|
|
127
|
-
|
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, :
|
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
|
data/lib/rspeckled/support.rb
CHANGED
@@ -96,13 +96,15 @@ RSpec.configure do |config|
|
|
96
96
|
:autofocus => true,
|
97
97
|
:js => true,
|
98
98
|
:debug => true,
|
99
|
-
:
|
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
|
-
:
|
106
|
+
:delay => 0,
|
107
|
+
:driver => :firefox
|
106
108
|
|
107
109
|
config.order = 'random'
|
108
110
|
config.silence_filter_announcements = true
|
data/lib/rspeckled/version.rb
CHANGED
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.
|
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-
|
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
|