rainforest_ruby_runtime 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 4340afeebc12c607980d704c88783c3b2276b404
4
- data.tar.gz: bbb7b788017d82bee9487fa1ad51cb0fd8e3f52d
3
+ metadata.gz: d12bd4da6f90002d9083b6b02f4a35fce42df209
4
+ data.tar.gz: caabdbef344fb27cf6e0cede1b9209ce66db6579
5
5
  SHA512:
6
- metadata.gz: 5a4a3eb68e24e6fe9a6e24a27c0120de0479851bc60f3caea7283ac4c27a65950dd83759f34d932fe65fb52e0f39701a03be860864bd2971a3d6df7f73d34ccf
7
- data.tar.gz: f9d60bcef218c27099050803cad4b161eb30b9655b09b4db8abda6a6e6d1216439f15931a1df1918c0906945eba3c943787b05d8f418811ae57564200dfbfecb
6
+ metadata.gz: 90c4ddf50e7eba5665186c1eed38dcc1b950792e9e701a339deb78fa5824910c6567d5e3466372e2c1e5ce56f49d18e2a63f6228d6c5c567d23495e563ee4422
7
+ data.tar.gz: 2d2fe0da4b72fe4ecde81800131b3cabb4270c3a9f126c067c1178625987655a7d3c84f1e97a9d343d96c5472d1995c6a206207890957c41b66952a692386ec0
data/.gitignore CHANGED
@@ -1,9 +1,9 @@
1
1
  *.gem
2
2
  *.rbc
3
+ Gemfile.lock
3
4
  .bundle
4
5
  .config
5
6
  .yardoc
6
- Gemfile.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
@@ -0,0 +1 @@
1
+ rainforest_ruby_runtime
@@ -0,0 +1 @@
1
+ 2.3.3
@@ -7,6 +7,6 @@ notifications:
7
7
  on_failure: always
8
8
 
9
9
  rvm:
10
- - 2.1.1
11
-
10
+ - 2.3.3
11
+
12
12
  script: bundle exec rake test
data/Gemfile CHANGED
@@ -1,8 +1,10 @@
1
1
  source 'https://rubygems.org'
2
+ ruby '2.3.3'
2
3
 
3
4
  # Specify your gem's dependencies in rainforest_ruby_runtime.gemspec
4
5
  gemspec
5
6
 
6
7
  gem 'pry'
7
8
  gem 'awesome_print'
8
- gem 'm'
9
+ gem 'm', '~> 1.5.0'
10
+ gem 'minitest', '~> 5.10.0'
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/rainforestapp/rainforest_ruby_runtime.svg)](https://travis-ci.org/rainforestapp/rainforest_ruby_runtime)
4
4
 
5
- TODO: Write a gem description
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
- TODO: Write usage instructions here
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 'rspec/expectations'
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
- module DSL
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
 
@@ -0,0 +1,7 @@
1
+ module RainforestRubyRuntime
2
+ class Empty
3
+ def method_missing(*)
4
+ nil
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ module RainforestRubyRuntime
2
+ class NilDelegator
3
+ def initialize(object)
4
+ @object = object
5
+ end
6
+
7
+ def method_missing(meth, *args, &block)
8
+ if @object.respond_to?(meth)
9
+ @object.public_send(meth, *args, &block)
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -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
- extend RainforestRubyRuntime::DSL
18
+ logger.debug "Running code:\n#{code}\nDriver: #{driver}"
12
19
  Capybara.default_driver = :"#{driver}"
13
- Capybara.default_wait_time = wait_time
20
+ Capybara.default_max_wait_time = wait_time
14
21
 
15
22
  apply_config!
16
23
  setup_scope_registery!
17
24
 
18
- test = eval(code)
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 RSpec::Expectations::ExpectationNotMetError => e
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
- payload.merge({
55
+ sid = fake_session_id || session_id
56
+
57
+ payload = payload.merge({
47
58
  stdout: stdout,
48
59
  stderr: stderr,
49
- session_id: fake_session_id || 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
- current_driver.finish! if current_driver.respond_to?(:finish!)
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(**args, &block)
13
- step = Step.new(**args, &block)
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
@@ -1,3 +1,3 @@
1
1
  module RainforestRubyRuntime
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  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.6"
21
+ spec.add_development_dependency "bundler", "~> 1.14"
22
22
  spec.add_development_dependency "rake"
23
- spec.add_dependency "sauce", "~> 3.4"
24
- spec.add_dependency "sauce-connect", "~> 3.4"
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 'capybara', "~> 2.4"
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
@@ -0,0 +1,8 @@
1
+ test(id: 1, title: "My Test") do
2
+ step id: 1, action: 'action 1', response: 'response 1' do
3
+ end
4
+
5
+ step id: 2, action: 'action 2', response: 'response 2' do
6
+ end
7
+ end
8
+
@@ -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 /time is: .*/
45
- $step_variable_3_was.must_equal "1"
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.1
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: 2014-07-18 00:00:00.000000000 Z
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.6'
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.6'
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.4'
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.4'
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.4'
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.4'
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: '2.4'
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: '2.4'
97
- description: ''
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
- - ".rvmrc"
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.2.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