rainforest_ruby_runtime 0.0.1 → 0.0.2
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
- data/.gitignore +1 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +2 -2
- data/Gemfile +3 -1
- data/README.md +7 -2
- data/lib/rainforest_ruby_runtime.rb +8 -1
- data/lib/rainforest_ruby_runtime/drivers/browser_stack.rb +42 -0
- data/lib/rainforest_ruby_runtime/drivers/testing_bot.rb +34 -0
- data/lib/rainforest_ruby_runtime/dsl.rb +10 -2
- data/lib/rainforest_ruby_runtime/empty.rb +7 -0
- data/lib/rainforest_ruby_runtime/nil_delegator.rb +14 -0
- data/lib/rainforest_ruby_runtime/runner.rb +52 -12
- data/lib/rainforest_ruby_runtime/test.rb +10 -4
- data/lib/rainforest_ruby_runtime/version.rb +1 -1
- data/rainforest_ruby_runtime.gemspec +13 -9
- data/sample_tests/two_steps.rb +8 -0
- data/test/runner_test.rb +75 -2
- metadata +79 -15
- data/.rvmrc +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12bd4da6f90002d9083b6b02f4a35fce42df209
|
4
|
+
data.tar.gz: caabdbef344fb27cf6e0cede1b9209ce66db6579
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90c4ddf50e7eba5665186c1eed38dcc1b950792e9e701a339deb78fa5824910c6567d5e3466372e2c1e5ce56f49d18e2a63f6228d6c5c567d23495e563ee4422
|
7
|
+
data.tar.gz: 2d2fe0da4b72fe4ecde81800131b3cabb4270c3a9f126c067c1178625987655a7d3c84f1e97a9d343d96c5472d1995c6a206207890957c41b66952a692386ec0
|
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rainforest_ruby_runtime
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.3
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/rainforestapp/rainforest_ruby_runtime)
|
4
4
|
|
5
|
-
|
5
|
+
Gem to run Rainforest Automated Tests locally or on Sauce Labs.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -20,7 +20,12 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
You can then run the tests using the following command:
|
24
|
+
```
|
25
|
+
bundle exec rainforest_test <test-file.rb>
|
26
|
+
```
|
27
|
+
|
28
|
+
To run the tests on Sauce Labs you should set the `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables.
|
24
29
|
|
25
30
|
## Contributing
|
26
31
|
|
@@ -1,13 +1,20 @@
|
|
1
1
|
require "sauce"
|
2
2
|
require "sauce/capybara"
|
3
|
-
require
|
3
|
+
require "testingbot"
|
4
|
+
require "testingbot/capybara"
|
5
|
+
require "rspec/expectations"
|
6
|
+
require "logger"
|
4
7
|
|
5
8
|
require "rainforest_ruby_runtime/version"
|
6
9
|
require "rainforest_ruby_runtime/exceptions"
|
7
10
|
require "rainforest_ruby_runtime/test"
|
11
|
+
require "rainforest_ruby_runtime/empty"
|
12
|
+
require "rainforest_ruby_runtime/nil_delegator"
|
8
13
|
require "rainforest_ruby_runtime/dsl"
|
9
14
|
require "rainforest_ruby_runtime/runner"
|
10
15
|
require "rainforest_ruby_runtime/drivers/sauce"
|
16
|
+
require "rainforest_ruby_runtime/drivers/browser_stack"
|
17
|
+
require "rainforest_ruby_runtime/drivers/testing_bot"
|
11
18
|
require "rainforest_ruby_runtime/drivers/selenium"
|
12
19
|
require "rainforest_ruby_runtime/variables/value"
|
13
20
|
require "rainforest_ruby_runtime/variables/registery"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'selenium/webdriver'
|
2
|
+
|
3
|
+
module RainforestRubyRuntime
|
4
|
+
module Drivers
|
5
|
+
class BrowserStack
|
6
|
+
attr_reader :options
|
7
|
+
|
8
|
+
def initialize(options)
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
url = "https://#{ENV['BROWSER_STACK_USERNAME']}:#{ENV['BROWSER_STACK_PASSWORD']}@hub.browserstack.com/wd/hub"
|
14
|
+
capabilities = ::Selenium::WebDriver::Remote::Capabilities.new browsers.first
|
15
|
+
capabilities['browserstack.debug'] = 'true'
|
16
|
+
|
17
|
+
::Capybara.register_driver :browser_stack do |app|
|
18
|
+
::Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: capabilities)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def browsers
|
25
|
+
Array(options[:browsers]).map do |browser|
|
26
|
+
{
|
27
|
+
"ie8" => {platform: "WINDOWS", browser: "internet explorer", browser_version: 8},
|
28
|
+
"ie9" => {platform: "WINDOWS", browser: "internet explorer", browser_version: 9},
|
29
|
+
"ie10" => {platform: "WINDOWS", browser: "internet explorer", browser_version: 10},
|
30
|
+
"ie11" => {platform: "WINDOWS", browser: "internet explorer", browser_version: 11},
|
31
|
+
"chrome" => {platform: "WINDOWS", browser: "chrome"},
|
32
|
+
"firefox" => {platform: "WINDOWS", browser: "firefox", browser_version: 30.0},
|
33
|
+
"safari" => {platform: "MAC", browser: "safari", browser_version: 7},
|
34
|
+
}.fetch(browser)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Capybara.register_driver :browser_stack do |app|
|
42
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module RainforestRubyRuntime
|
2
|
+
module Drivers
|
3
|
+
class TestingBot
|
4
|
+
attr_reader :options
|
5
|
+
|
6
|
+
def initialize(options)
|
7
|
+
@options = options
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
::TestingBot.config do |c|
|
12
|
+
c[:desired_capabilities] = browsers
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def browsers
|
19
|
+
Array(options[:browsers]).map do |browser|
|
20
|
+
{
|
21
|
+
"ie8" => {platform: "WINDOWS", browserName: "internet explorer", version: 8, idletimeout: 90},
|
22
|
+
"ie9" => {platform: "WINDOWS", browserName: "internet explorer", version: 9, idletimeout: 90},
|
23
|
+
"ie10" => {platform: "WINDOWS", browserName: "internet explorer", version: 10, idletimeout: 90},
|
24
|
+
"ie11" => {platform: "WINDOWS", browserName: "internet explorer", version: 11, idletimeout: 90},
|
25
|
+
"chrome" => {platform: "XP", browserName: "googlechrome", idletimeout: 90},
|
26
|
+
"firefox" => {platform: "XP", browserName: "firefox", version: 30.0, idletimeout: 90},
|
27
|
+
"safari" => {platform: "MAC", browserName: "safari", version: 7, idletimeout: 90},
|
28
|
+
}.fetch(browser)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -1,13 +1,21 @@
|
|
1
1
|
module RainforestRubyRuntime
|
2
|
-
|
2
|
+
class DSL
|
3
|
+
def initialize(callback: )
|
4
|
+
@callback = callback
|
5
|
+
end
|
6
|
+
|
3
7
|
def test(id: , title: , &block)
|
4
|
-
RainforestRubyRuntime::Test.new(id: id, title: title, &block)
|
8
|
+
RainforestRubyRuntime::Test.new(id: id, title: title, callback: @callback, &block)
|
5
9
|
end
|
6
10
|
|
7
11
|
def define_variable_scope(name, &block)
|
8
12
|
scope = Variables::Scope.new(name, &block)
|
9
13
|
Variables.scope_registery.register(scope)
|
10
14
|
end
|
15
|
+
|
16
|
+
def run_code(code)
|
17
|
+
eval(code)
|
18
|
+
end
|
11
19
|
end
|
12
20
|
end
|
13
21
|
|
@@ -1,21 +1,30 @@
|
|
1
1
|
module RainforestRubyRuntime
|
2
2
|
class Runner
|
3
|
-
attr_reader :config_options
|
3
|
+
attr_reader :config_options, :logger
|
4
|
+
|
5
|
+
FAILURE_EXCEPTIONS = [
|
6
|
+
RSpec::Expectations::ExpectationNotMetError,
|
7
|
+
Capybara::ElementNotFound,
|
8
|
+
].freeze
|
4
9
|
|
5
10
|
def initialize(options = {})
|
6
11
|
@config_options = options.dup.freeze
|
7
12
|
@step_variables = options[:step_variables]
|
13
|
+
@callback = NilDelegator.new(options.fetch(:callback) { Empty.new })
|
14
|
+
@logger = options.fetch(:logger) { Logger.new(StringIO.new) }
|
8
15
|
end
|
9
16
|
|
10
17
|
def run(code)
|
11
|
-
|
18
|
+
logger.debug "Running code:\n#{code}\nDriver: #{driver}"
|
12
19
|
Capybara.default_driver = :"#{driver}"
|
13
|
-
Capybara.
|
20
|
+
Capybara.default_max_wait_time = wait_time
|
14
21
|
|
15
22
|
apply_config!
|
16
23
|
setup_scope_registery!
|
17
24
|
|
18
|
-
|
25
|
+
dsl = RainforestRubyRuntime::DSL.new(callback: @callback)
|
26
|
+
|
27
|
+
test = dsl.run_code(code)
|
19
28
|
if Test === test
|
20
29
|
test.run
|
21
30
|
else
|
@@ -33,7 +42,7 @@ module RainforestRubyRuntime
|
|
33
42
|
stdout, stderr = capture_output2 do
|
34
43
|
run(code)
|
35
44
|
end
|
36
|
-
rescue
|
45
|
+
rescue *FAILURE_EXCEPTIONS => e
|
37
46
|
payload = exception_to_payload e, status: 'failed'
|
38
47
|
rescue StandardError => e
|
39
48
|
payload = exception_to_payload e, status: 'error'
|
@@ -43,17 +52,38 @@ module RainforestRubyRuntime
|
|
43
52
|
|
44
53
|
payload ||= { status: 'passed' }
|
45
54
|
|
46
|
-
|
55
|
+
sid = fake_session_id || session_id
|
56
|
+
|
57
|
+
payload = payload.merge({
|
47
58
|
stdout: stdout,
|
48
59
|
stderr: stderr,
|
49
|
-
session_id:
|
60
|
+
session_id: sid,
|
61
|
+
driver: driver,
|
50
62
|
})
|
63
|
+
|
64
|
+
|
65
|
+
logger.debug("Payload")
|
66
|
+
logger.debug(payload.inspect)
|
67
|
+
|
68
|
+
payload
|
51
69
|
end
|
52
70
|
|
53
71
|
def driver
|
54
72
|
ENV.fetch("CAPYBARA_DRIVER") { "selenium" }
|
55
73
|
end
|
56
74
|
|
75
|
+
def current_browser
|
76
|
+
current_driver.browser
|
77
|
+
end
|
78
|
+
|
79
|
+
def session_id
|
80
|
+
current_browser.session_id if current_driver.browser.respond_to?(:session_id)
|
81
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
82
|
+
logger.error "Can't retrieve session id"
|
83
|
+
logger.error "#{e.class} #{e.message}\n#{e.backtrace.join("\n")}"
|
84
|
+
nil
|
85
|
+
end
|
86
|
+
|
57
87
|
private
|
58
88
|
def exception_to_payload(e, payload = {})
|
59
89
|
payload.merge({
|
@@ -67,6 +97,8 @@ module RainforestRubyRuntime
|
|
67
97
|
config = {
|
68
98
|
"selenium" => Drivers::Selenium,
|
69
99
|
"sauce" => Drivers::Sauce,
|
100
|
+
"testingbot" => Drivers::TestingBot,
|
101
|
+
"browser_stack" => Drivers::BrowserStack,
|
70
102
|
}.fetch(driver)
|
71
103
|
|
72
104
|
config.new(config_options).call
|
@@ -78,17 +110,24 @@ module RainforestRubyRuntime
|
|
78
110
|
|
79
111
|
def terminate_session!
|
80
112
|
# Terminate the Sauce session if needed
|
81
|
-
|
113
|
+
if current_driver.respond_to?(:finish!)
|
114
|
+
current_driver.finish!
|
115
|
+
elsif current_driver.respond_to?(:quit)
|
116
|
+
current_driver.quit
|
117
|
+
else
|
118
|
+
logger.warn "Cannot terminate session. Driver #{driver}" and return
|
119
|
+
end
|
120
|
+
logger.debug "Session successfuly terminated"
|
121
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
122
|
+
# Ignore
|
123
|
+
logger.warn "Exception while terminating session. Driver #{driver}. Class: #{e.class}"
|
124
|
+
logger.warn "#{e.message}\n#{e.backtrace.join("\n")}"
|
82
125
|
end
|
83
126
|
|
84
127
|
def wait_time
|
85
128
|
ENV.fetch("CAPYBARA_WAIT_TIME", 20).to_i
|
86
129
|
end
|
87
130
|
|
88
|
-
def session_id
|
89
|
-
current_driver.browser.session_id if current_driver.browser.respond_to?(:session_id)
|
90
|
-
end
|
91
|
-
|
92
131
|
def capture_output2
|
93
132
|
previous_stdout, $stdout = $stdout, StringIO.new
|
94
133
|
previous_stderr, $stderr = $stderr, StringIO.new
|
@@ -101,6 +140,7 @@ module RainforestRubyRuntime
|
|
101
140
|
end
|
102
141
|
|
103
142
|
def setup_scope_registery!
|
143
|
+
# TODO this should not be set globally, but passed in the DSL
|
104
144
|
if @step_variables.nil?
|
105
145
|
Variables.scope_registery = Variables::Registery.new
|
106
146
|
else
|
@@ -2,15 +2,16 @@ module RainforestRubyRuntime
|
|
2
2
|
class Test
|
3
3
|
attr_reader :id, :title, :steps
|
4
4
|
|
5
|
-
def initialize(id: , title: , &block)
|
5
|
+
def initialize(id: , title: , callback: , &block)
|
6
6
|
@id = id
|
7
7
|
@title = title
|
8
8
|
@steps = []
|
9
9
|
@block = block
|
10
|
+
@callback = callback
|
10
11
|
end
|
11
12
|
|
12
|
-
def step(
|
13
|
-
step = Step.new(
|
13
|
+
def step(options, &block)
|
14
|
+
step = Step.new(options.merge(callback: @callback), &block)
|
14
15
|
@steps << step
|
15
16
|
step.run
|
16
17
|
step
|
@@ -19,7 +20,9 @@ module RainforestRubyRuntime
|
|
19
20
|
def run
|
20
21
|
extend RSpec::Matchers
|
21
22
|
extend Capybara::DSL
|
23
|
+
@callback.before_test(self)
|
22
24
|
instance_eval &@block
|
25
|
+
@callback.after_test(self)
|
23
26
|
end
|
24
27
|
|
25
28
|
def method_missing(name, *args, &block)
|
@@ -34,15 +37,18 @@ module RainforestRubyRuntime
|
|
34
37
|
class Step
|
35
38
|
attr_reader :id, :action, :response
|
36
39
|
|
37
|
-
def initialize(id: , action: , response: , &block)
|
40
|
+
def initialize(id: , action: , response: , callback: , &block)
|
38
41
|
@id = id
|
39
42
|
@action = action
|
40
43
|
@response = response
|
41
44
|
@block = block
|
45
|
+
@callback = callback
|
42
46
|
end
|
43
47
|
|
44
48
|
def run
|
49
|
+
@callback.before_step(self)
|
45
50
|
@block.call
|
51
|
+
@callback.after_step(self)
|
46
52
|
end
|
47
53
|
end
|
48
54
|
end
|
@@ -6,11 +6,11 @@ require 'rainforest_ruby_runtime/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "rainforest_ruby_runtime"
|
8
8
|
spec.version = RainforestRubyRuntime::VERSION
|
9
|
-
spec.authors = ["Simon Mathieu"]
|
10
|
-
spec.email = ["simon@rainforestqa.com"]
|
11
|
-
spec.summary = %q{}
|
12
|
-
spec.description = %q{}
|
13
|
-
spec.homepage = ""
|
9
|
+
spec.authors = ["Simon Mathieu", "Russell Smith"]
|
10
|
+
spec.email = ["simon@rainforestqa.com", "russ@rainforestqa.com"]
|
11
|
+
spec.summary = %q{Rainforest Ruby Runtime}
|
12
|
+
spec.description = %q{Rainforest Ruby Runtime}
|
13
|
+
spec.homepage = "https://www.rainforestqa.com/"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -18,10 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_dependency "sauce", "~> 3.
|
24
|
-
spec.add_dependency "sauce-connect", "~> 3.
|
23
|
+
spec.add_dependency "sauce", "~> 3.7"
|
24
|
+
spec.add_dependency "sauce-connect", "~> 3.6"
|
25
25
|
spec.add_dependency "rspec-expectations", "~> 3.0"
|
26
|
-
spec.add_dependency
|
26
|
+
spec.add_dependency "capybara", "~> 2.7.1"
|
27
|
+
spec.add_dependency "selenium-client", "~> 1.2.0"
|
28
|
+
spec.add_dependency "selenium-webdriver", "~> 3.3"
|
29
|
+
spec.add_dependency "net-http-persistent", "~> 3.0"
|
30
|
+
spec.add_dependency "testingbot", "~> 0.1.7"
|
27
31
|
end
|
data/test/runner_test.rb
CHANGED
@@ -4,6 +4,14 @@ module RainforestRubyRuntime
|
|
4
4
|
describe Runner do
|
5
5
|
subject { Runner.new }
|
6
6
|
let(:code) { read_sample "empty" }
|
7
|
+
|
8
|
+
describe "#session_id" do
|
9
|
+
it "returns a session id" do
|
10
|
+
subject.stub(:current_driver, OpenStruct.new(browser: OpenStruct.new(session_id: 'session'))) do
|
11
|
+
subject.session_id.must_equal 'session'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
7
15
|
|
8
16
|
describe "#run" do
|
9
17
|
describe "with a limited browser set" do
|
@@ -41,8 +49,8 @@ module RainforestRubyRuntime
|
|
41
49
|
it "makes the variable accessible in the test" do
|
42
50
|
subject.run(code)
|
43
51
|
$step_variable_1_was.wont_be_nil
|
44
|
-
$step_variable_2_was.must_match
|
45
|
-
$step_variable_3_was.must_equal
|
52
|
+
$step_variable_2_was.must_match(/time is: .*/)
|
53
|
+
$step_variable_3_was.must_equal("1")
|
46
54
|
end
|
47
55
|
end
|
48
56
|
end
|
@@ -58,6 +66,13 @@ module RainforestRubyRuntime
|
|
58
66
|
end
|
59
67
|
end
|
60
68
|
|
69
|
+
describe "select capybara error" do
|
70
|
+
let(:code) { format_step "raise Capybara::ElementNotFound" }
|
71
|
+
it "catches failled rspec assertions" do
|
72
|
+
subject[:status].must_equal "failed"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
61
76
|
describe "a passing spec" do
|
62
77
|
let(:code) { format_step "expect(1).to eq(1)" }
|
63
78
|
it "returns a 'passed'" do
|
@@ -128,6 +143,64 @@ module RainforestRubyRuntime
|
|
128
143
|
end
|
129
144
|
end
|
130
145
|
|
146
|
+
describe "callbacks" do
|
147
|
+
let(:callback) do
|
148
|
+
Class.new do
|
149
|
+
attr_reader :before_steps, :before_tests, :after_steps, :after_tests
|
150
|
+
|
151
|
+
def initialize
|
152
|
+
@before_steps = []
|
153
|
+
@after_steps = []
|
154
|
+
@after_tests = []
|
155
|
+
@before_tests = []
|
156
|
+
end
|
157
|
+
|
158
|
+
def before_step(step)
|
159
|
+
@before_steps << step
|
160
|
+
end
|
161
|
+
|
162
|
+
def after_step(step)
|
163
|
+
@after_steps << step
|
164
|
+
end
|
165
|
+
|
166
|
+
def after_test(test)
|
167
|
+
@after_tests << test
|
168
|
+
end
|
169
|
+
|
170
|
+
def before_test(test)
|
171
|
+
@before_tests << test
|
172
|
+
end
|
173
|
+
end.new
|
174
|
+
end
|
175
|
+
|
176
|
+
let(:code) { read_sample "two_steps" }
|
177
|
+
subject { Runner.new callback: callback }
|
178
|
+
|
179
|
+
it "calls the right method on the callback object" do
|
180
|
+
subject.run(code)
|
181
|
+
callback.before_tests.size.must_equal 1
|
182
|
+
callback.after_tests.size.must_equal 1
|
183
|
+
callback.before_steps.size.must_equal 2
|
184
|
+
callback.after_steps.size.must_equal 2
|
185
|
+
|
186
|
+
callback.before_steps.map(&:id).must_equal [1, 2]
|
187
|
+
callback.after_steps.map(&:id).must_equal [1, 2]
|
188
|
+
|
189
|
+
callback.before_steps.map(&:action).must_equal ["action 1", "action 2"]
|
190
|
+
end
|
191
|
+
|
192
|
+
describe "a partially define callback object" do
|
193
|
+
let(:callback) do
|
194
|
+
Class.new do
|
195
|
+
end.new
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should not rise a method missing exception" do
|
199
|
+
subject.run(code)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
131
204
|
def read_sample(name)
|
132
205
|
File.read(File.expand_path("../sample_tests/#{name}.rb", __dir__))
|
133
206
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rainforest_ruby_runtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Mathieu
|
8
|
+
- Russell Smith
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2017-04-24 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -16,14 +17,14 @@ dependencies:
|
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
+
version: '1.14'
|
20
21
|
type: :development
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
27
|
+
version: '1.14'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: rake
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,28 +45,28 @@ dependencies:
|
|
44
45
|
requirements:
|
45
46
|
- - "~>"
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
48
|
+
version: '3.7'
|
48
49
|
type: :runtime
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
53
|
- - "~>"
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
55
|
+
version: '3.7'
|
55
56
|
- !ruby/object:Gem::Dependency
|
56
57
|
name: sauce-connect
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
60
|
- - "~>"
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
62
|
+
version: '3.6'
|
62
63
|
type: :runtime
|
63
64
|
prerelease: false
|
64
65
|
version_requirements: !ruby/object:Gem::Requirement
|
65
66
|
requirements:
|
66
67
|
- - "~>"
|
67
68
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
69
|
+
version: '3.6'
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
71
|
name: rspec-expectations
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,24 +87,82 @@ dependencies:
|
|
86
87
|
requirements:
|
87
88
|
- - "~>"
|
88
89
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
+
version: 2.7.1
|
90
91
|
type: :runtime
|
91
92
|
prerelease: false
|
92
93
|
version_requirements: !ruby/object:Gem::Requirement
|
93
94
|
requirements:
|
94
95
|
- - "~>"
|
95
96
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
|
97
|
+
version: 2.7.1
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: selenium-client
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.2.0
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 1.2.0
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: selenium-webdriver
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '3.3'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '3.3'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: net-http-persistent
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '3.0'
|
133
|
+
type: :runtime
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '3.0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: testingbot
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 0.1.7
|
147
|
+
type: :runtime
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 0.1.7
|
154
|
+
description: Rainforest Ruby Runtime
|
98
155
|
email:
|
99
156
|
- simon@rainforestqa.com
|
157
|
+
- russ@rainforestqa.com
|
100
158
|
executables:
|
101
159
|
- rainforest_test
|
102
160
|
extensions: []
|
103
161
|
extra_rdoc_files: []
|
104
162
|
files:
|
105
163
|
- ".gitignore"
|
106
|
-
- ".
|
164
|
+
- ".ruby-gemset"
|
165
|
+
- ".ruby-version"
|
107
166
|
- ".travis.yml"
|
108
167
|
- Gemfile
|
109
168
|
- LICENSE.txt
|
@@ -111,10 +170,14 @@ files:
|
|
111
170
|
- Rakefile
|
112
171
|
- bin/rainforest_test
|
113
172
|
- lib/rainforest_ruby_runtime.rb
|
173
|
+
- lib/rainforest_ruby_runtime/drivers/browser_stack.rb
|
114
174
|
- lib/rainforest_ruby_runtime/drivers/sauce.rb
|
115
175
|
- lib/rainforest_ruby_runtime/drivers/selenium.rb
|
176
|
+
- lib/rainforest_ruby_runtime/drivers/testing_bot.rb
|
116
177
|
- lib/rainforest_ruby_runtime/dsl.rb
|
178
|
+
- lib/rainforest_ruby_runtime/empty.rb
|
117
179
|
- lib/rainforest_ruby_runtime/exceptions.rb
|
180
|
+
- lib/rainforest_ruby_runtime/nil_delegator.rb
|
118
181
|
- lib/rainforest_ruby_runtime/runner.rb
|
119
182
|
- lib/rainforest_ruby_runtime/test.rb
|
120
183
|
- lib/rainforest_ruby_runtime/variables/registery.rb
|
@@ -130,9 +193,10 @@ files:
|
|
130
193
|
- sample_tests/real.rb
|
131
194
|
- sample_tests/simple.rb
|
132
195
|
- sample_tests/step_variables.rb
|
196
|
+
- sample_tests/two_steps.rb
|
133
197
|
- test/runner_test.rb
|
134
198
|
- test/test_helper.rb
|
135
|
-
homepage:
|
199
|
+
homepage: https://www.rainforestqa.com/
|
136
200
|
licenses:
|
137
201
|
- MIT
|
138
202
|
metadata: {}
|
@@ -152,10 +216,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
216
|
version: '0'
|
153
217
|
requirements: []
|
154
218
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.5.2
|
156
220
|
signing_key:
|
157
221
|
specification_version: 4
|
158
|
-
summary:
|
222
|
+
summary: Rainforest Ruby Runtime
|
159
223
|
test_files:
|
160
224
|
- test/runner_test.rb
|
161
225
|
- test/test_helper.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use 2.1.2@rainforest_ruby_runtime --create
|