browserstack-automate 0.1.0
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 +7 -0
- data/.gitignore +6 -0
- data/Gemfile +4 -0
- data/README.md +71 -0
- data/Rakefile +10 -0
- data/browserstack.gemspec +29 -0
- data/examples/cucumber/Gemfile +8 -0
- data/examples/cucumber/features/google.feature +9 -0
- data/examples/cucumber/features/step_definitions/google_steps.rb +17 -0
- data/examples/cucumber/features/support/env.rb +14 -0
- data/examples/simple_sample/Gemfile +7 -0
- data/examples/simple_sample/sample.rb +24 -0
- data/lib/browserstack-automate.rb +74 -0
- data/lib/browserstack-automate/keep_alive_patch.rb +18 -0
- data/lib/browserstack-automate/version.rb +3 -0
- data/lib/browserstack-automate/webdriver_patch.rb +42 -0
- data/tests/cucumber/Appraisals +19 -0
- data/tests/cucumber/Gemfile +3 -0
- data/tests/cucumber/features/google.feature +9 -0
- data/tests/cucumber/features/step_definitions/google_steps.rb +17 -0
- data/tests/cucumber/features/support/env.rb +25 -0
- metadata +147 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9f3653ef44d2bc13fe3355f44b67ed710da7f605
|
4
|
+
data.tar.gz: 99de11d249bf913ef82a05cb1c666c2f1fd6b986
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 363e2eb4d83e085e9ce5b807e24c871f50d60863eb3aa43ba37a9174720e0a5d0db3279202bad7b52ea6d0a77fdef662498c9393e277caf75619376f9b59e4c7
|
7
|
+
data.tar.gz: e341d69f8d35b1c6d28c88d3c222017deac00d66325a1a2cc5c0ec5f1637071a3fcac8a5a56dd6e780cf42b18c8baddc33e5bdee8c109b478a5fc04211939a88
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
# BrowserStack-Automate
|
2
|
+
|
3
|
+
Run Cucumber tests on BrowserStack Automate using our Ruby integration.
|
4
|
+
|
5
|
+
> Running your Selenium tests on BrowserStack requires a username and an access key. To create an account go to [BrowserStack Automate](https://www.browserstack.com/automate)
|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+
## Running First Test
|
10
|
+
|
11
|
+
You can use our integration to run your Cucumber tests on BrowserStack. It's a simple two-step process:
|
12
|
+
|
13
|
+
#### Step 1 - Install *browserstack-automate* integration
|
14
|
+
|
15
|
+
```
|
16
|
+
gem install browserstack-automate
|
17
|
+
```
|
18
|
+
|
19
|
+
#### Step 2 - Add it to your `support/env.rb` file
|
20
|
+
|
21
|
+
You just need to add this to your configuration file
|
22
|
+
|
23
|
+
```
|
24
|
+
require 'browserstack-automate'
|
25
|
+
BrowserStack.for "cucumber"
|
26
|
+
```
|
27
|
+
|
28
|
+
That's it! You can now execute your tests on BrowserStack by using the `RUN_ON_BSTACK`, `BROWSERSTACK_USERNAME` and `BROWSERSTACK_ACCESS_KEY` environment variables.
|
29
|
+
|
30
|
+
```bash
|
31
|
+
RUN_ON_BSTACK=true BROWSERSTACK_USERNAME=<your_username> BROWSERSTACK_ACCESS_KEY=<your_access_key> bundle exec cucumber
|
32
|
+
```
|
33
|
+
|
34
|
+
## Running Local Tests
|
35
|
+
|
36
|
+
In order to run tests inside your local development environments, use ```BSTACK_LOCAL=true```.
|
37
|
+
|
38
|
+
```
|
39
|
+
RUN_ON_BSTACK=true BSTACK_LOCAL=true BROWSERSTACK_USERNAME=<username> BROWSERSTACK_ACCESS_KEY=<access_key> bundle exec cucumber
|
40
|
+
```
|
41
|
+
|
42
|
+
This creates an instance of BrowserStack Local Binary for every single build. To know more about how this works, read our documentation on [Local Testing](https://www.browserstack.com/local-testing).
|
43
|
+
|
44
|
+
|
45
|
+
## Running Parallel Tests
|
46
|
+
|
47
|
+
You can run your parallel tests on BrowserStack by adding ```RUN_ON_BSTACK=true``` to your parallel tests.
|
48
|
+
|
49
|
+
```
|
50
|
+
RUN_ON_BSTACK=true BROWSERSTACK_USERNAME=<username> BROWSERSTACK_ACCESS_KEY=<access_key> bundle exec cucumber
|
51
|
+
```
|
52
|
+
|
53
|
+
## Integrating with CI
|
54
|
+
|
55
|
+
Configure these parameters in your Continuous Integration platform to run your tests directly on BrowserStack
|
56
|
+
|
57
|
+
```
|
58
|
+
//Required
|
59
|
+
RUN_ON_BSTACK - Boolean. To run your tests on BrowserStack
|
60
|
+
BROWSERSTACK_USERNAME - your BrowserStack username
|
61
|
+
BROWSERSTACK_ACCESS_KEY - your BrowserStack accesskey
|
62
|
+
|
63
|
+
//Optional
|
64
|
+
BSTACK_LOCAL - Boolean. Whether to start/stop BrowserStackLocal for your tests
|
65
|
+
```
|
66
|
+
|
67
|
+
## Further Reading
|
68
|
+
* [BrowerStack Automate documentation for Cucumber](https://www.browserstack.com/automate/cucumber-integration)
|
69
|
+
* [BrowserStack Automate documentation for Ruby](https://www.browserstack.com/automate/ruby)
|
70
|
+
* [Full range of testing capabilities on BrowserStack](https://www.browserstack.com/automate/capabilities)
|
71
|
+
* [Testing local, development servers with BrowserStack](https://www.browserstack.com/local-testing)
|
data/Rakefile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
task :default => :spec
|
3
|
+
task :spec => [:cucumber]
|
4
|
+
|
5
|
+
task :cucumber do
|
6
|
+
Bundler.with_clean_env do
|
7
|
+
system("bundle install")
|
8
|
+
system("cd tests/cucumber && bundle install && bundle exec appraisal install && BSTACK_BUILD=BrowserStackPatchCucumberTest RUN_ON_BSTACK=true bundle exec appraisal cucumber")
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'browserstack-automate/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "browserstack-automate"
|
8
|
+
spec.version = Browserstack::VERSION
|
9
|
+
spec.authors = [ "BrowserStack Support" ]
|
10
|
+
spec.email = [ "support@browserstack.com" ]
|
11
|
+
|
12
|
+
spec.description = %q{Run Cucumber tests on BrowserStack Automate using our Ruby integration.}
|
13
|
+
spec.summary = %q{Run Cucumber tests on BrowserStack Automate using our Ruby integration.}
|
14
|
+
spec.homepage = "https://www.browserstack.com"
|
15
|
+
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency "selenium-webdriver"
|
23
|
+
spec.add_dependency "browserstack-local", "~> 1.2"
|
24
|
+
spec.add_dependency "curb", '~> 0'
|
25
|
+
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
27
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
28
|
+
spec.add_development_dependency "appraisal", '~> 0'
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Given /^I am on (.+)$/ do |url|
|
2
|
+
@browser.navigate.to "http://www.google.com/ncr"
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I fill in "([^"]*)" found by "([^\"]*)" with "([^\"]*)"$/ do |value, type, keys|
|
6
|
+
@element = @browser.find_element(type, value)
|
7
|
+
@element.send_keys keys
|
8
|
+
end
|
9
|
+
|
10
|
+
When /^I submit$/ do
|
11
|
+
@element.submit
|
12
|
+
sleep 5
|
13
|
+
end
|
14
|
+
|
15
|
+
Then /^I should see title "([^\"]*)"$/ do |title|
|
16
|
+
raise "Fail" if @browser.title != title
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'selenium-webdriver'
|
3
|
+
require 'browserstack-automate'
|
4
|
+
|
5
|
+
BrowserStack.for "ruby"
|
6
|
+
|
7
|
+
@repeat = ENV['REPEAT'] || 5
|
8
|
+
|
9
|
+
# Input capabilities
|
10
|
+
driver = Selenium::WebDriver.for :firefox
|
11
|
+
|
12
|
+
begin
|
13
|
+
driver.navigate.to "http://www.google.com"
|
14
|
+
element = driver.find_element(:name, 'q')
|
15
|
+
element.send_keys "BrowserStack"
|
16
|
+
element.submit
|
17
|
+
start = Time.now.to_i
|
18
|
+
@repeat.times do
|
19
|
+
puts driver.title
|
20
|
+
end
|
21
|
+
driver.quit
|
22
|
+
rescue
|
23
|
+
driver.quit
|
24
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'selenium/webdriver'
|
2
|
+
require 'browserstack/local'
|
3
|
+
|
4
|
+
$cucumber_after = self.method(:After) rescue nil
|
5
|
+
|
6
|
+
if ENV['RUN_ON_BSTACK'].to_s.match(/true/)
|
7
|
+
require_relative './browserstack-automate/webdriver_patch.rb'
|
8
|
+
|
9
|
+
# See: https://github.com/SeleniumHQ/selenium/issues/2950
|
10
|
+
require_relative './browserstack-automate/keep_alive_patch.rb' unless Gem.loaded_specs["selenium-webdriver"].version.to_s.start_with?("3")
|
11
|
+
end
|
12
|
+
|
13
|
+
module BrowserStack
|
14
|
+
@@framework = 'rubyFramework'
|
15
|
+
@@bs_local = nil
|
16
|
+
@@bstack_identifier = "bstack_patches_#{(0...16).map { ('a'..'z').to_a[rand(26)] }.join}"
|
17
|
+
|
18
|
+
def self.for(framework)
|
19
|
+
@@framework = framework
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.get_framework
|
23
|
+
@@framework
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_framework_version
|
27
|
+
if @@framework.match(/cucumber/i)
|
28
|
+
return Cucumber::VERSION
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.get_identifier
|
33
|
+
@@bstack_identifier
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.track_environment(track_hash)
|
37
|
+
if ENV['TRAVIS'] && ENV['TRAVIS'].match(/true/i)
|
38
|
+
track_hash['ci_env'] = 'travis'
|
39
|
+
track_hash['ci_env.travis.build_id'] = ENV['TRAVIS_BUILD_ID']
|
40
|
+
track_hash['ci_env.travis.build_number'] = ENV['process.env.TRAVIS_BUILD_NUMBER']
|
41
|
+
track_hash['ci_env.travis.repo_slug'] = ENV['process.env.TRAVIS_REPO_SLUG']
|
42
|
+
track_hash['ci_env.travis.test_result'] = ENV['process.env.TRAVIS_TEST_RESULT']
|
43
|
+
elsif ENV['BUILD_TAG'] && ENV['BUILD_TAG'].match(/jenkins/i)
|
44
|
+
track_hash['ci_env'] = ENV['jenkins']
|
45
|
+
track_hash['ci_env.jenkins.build_id'] = ENV['process.env.BUILD_ID']
|
46
|
+
track_hash['ci_env.jenkins.build_number'] = ENV['process.env.BUILD_NUMBER']
|
47
|
+
track_hash['ci_env.jenkins.job_name'] = ENV['process.env.JOB_NAME']
|
48
|
+
track_hash['ci_env.jenkins.build_tag'] = ENV['process.env.BUILD_TAG']
|
49
|
+
track_hash['ci_env.jenkins.git_url'] = ENV['process.env.GIT_URL']
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
def self.start_local
|
55
|
+
@@bs_local = BrowserStack::Local.new
|
56
|
+
browserstack_access_key = ENV['BROWSERSTACK_ACCESS_KEY'] || ENV['BROWSERSTACK_ACCESSKEY']
|
57
|
+
bs_local_args = {
|
58
|
+
'key' => browserstack_access_key,
|
59
|
+
'localIdentifier' => @@bstack_identifier
|
60
|
+
}
|
61
|
+
@@bs_local.start(bs_local_args)
|
62
|
+
|
63
|
+
if @@framework.match(/cucumber/i)
|
64
|
+
$cucumber_after.call do
|
65
|
+
@@bs_local.stop() if @@bs_local
|
66
|
+
end
|
67
|
+
else
|
68
|
+
Signal.trap("EXIT") do
|
69
|
+
@@bs_local.stop if @@bs_local
|
70
|
+
Kernel.exit!
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'selenium/webdriver/remote/http/curb'
|
2
|
+
|
3
|
+
module Selenium
|
4
|
+
module WebDriver
|
5
|
+
module Remote
|
6
|
+
class Bridge
|
7
|
+
attr_accessor :http_curb
|
8
|
+
def http
|
9
|
+
unless @http_curb
|
10
|
+
@http_curb = Http::Curb.new
|
11
|
+
@http_curb.server_url = @http.send(:server_url)
|
12
|
+
end
|
13
|
+
@http_curb
|
14
|
+
end
|
15
|
+
end # Bridge
|
16
|
+
end # Remote
|
17
|
+
end # WebDriver
|
18
|
+
end # Selenium
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Selenium
|
2
|
+
module WebDriver
|
3
|
+
class << self
|
4
|
+
alias_method :original_for, :for
|
5
|
+
|
6
|
+
def for(*args)
|
7
|
+
browser = args.shift
|
8
|
+
browser = nil if browser.to_s.downcase == 'remote'
|
9
|
+
opts = args.shift || {}
|
10
|
+
opts[:url] = opts[:url] || 'http://127.0.0.1:4444/wd/hub'
|
11
|
+
opts[:desired_capabilities] = opts[:desired_capabilities] || {}
|
12
|
+
|
13
|
+
opts[:desired_capabilities][:browserName] = ENV['BSTACK_BROWSER'] || browser || opts[:desired_capabilities][:browserName] || opts[:desired_capabilities][:browser]
|
14
|
+
opts[:desired_capabilities][:browser] = opts[:desired_capabilities][:browserName]
|
15
|
+
opts[:desired_capabilities][:browser_version] = ENV['BSTACK_BROWSER_VERSION']
|
16
|
+
opts[:desired_capabilities][:os] = ENV['BSTACK_OS']
|
17
|
+
opts[:desired_capabilities][:os_version] = ENV['BSTACK_OS_VERSION']
|
18
|
+
opts[:desired_capabilities][:device] = ENV['BSTACK_DEVICE']
|
19
|
+
|
20
|
+
if ENV['RUN_ON_BSTACK'] && ENV['RUN_ON_BSTACK'].match(/true/i)
|
21
|
+
browserstack_username = ENV['BROWSERSTACK_USERNAME'] || ENV['BROWSERSTACK_USER']
|
22
|
+
browserstack_access_key = ENV['BROWSERSTACK_ACCESS_KEY'] || ENV['BROWSERSTACK_ACCESSKEY']
|
23
|
+
opts[:url] = "https://#{browserstack_username}:#{browserstack_access_key}@hub.browserstack.com/wd/hub"
|
24
|
+
|
25
|
+
opts[:desired_capabilities]['browserstack.framework'] = BrowserStack::get_framework
|
26
|
+
opts[:desired_capabilities]['browserstack.framework_version'] = BrowserStack::get_framework_version
|
27
|
+
opts[:desired_capabilities]['build'] = ENV['BSTACK_BUILD'] if ENV['BSTACK_BUILD']
|
28
|
+
opts[:desired_capabilities]['project'] = ENV['BSTACK_PROJECT'] if ENV['BSTACK_PROJECT']
|
29
|
+
opts[:desired_capabilities]['name'] = ENV['BSTACK_NAME'] if ENV['BSTACK_NAME']
|
30
|
+
if ENV['BSTACK_LOCAL'] && ENV['BSTACK_LOCAL'].match(/true/i)
|
31
|
+
BrowserStack.start_local
|
32
|
+
opts[:desired_capabilities]['browserstack.local'] = true
|
33
|
+
opts[:desired_capabilities]['browserstack.localIdentifier'] = BrowserStack::get_identifier
|
34
|
+
end
|
35
|
+
BrowserStack::track_environment(opts[:desired_capabilities])
|
36
|
+
end
|
37
|
+
|
38
|
+
original_for(:remote, opts, *args)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
appraise "cucumber-latest" do
|
2
|
+
gem "cucumber"
|
3
|
+
end
|
4
|
+
|
5
|
+
appraise "cucumber-2.4.0" do
|
6
|
+
gem "cucumber", "2.4.0"
|
7
|
+
end
|
8
|
+
|
9
|
+
appraise "cucumber-2.0.1" do
|
10
|
+
gem "cucumber", "2.0.1"
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise "cucumber-1.3.20" do
|
14
|
+
gem "cucumber", "1.3.20"
|
15
|
+
end
|
16
|
+
|
17
|
+
appraise "cucumber-1.2.0" do
|
18
|
+
gem "cucumber", "1.2.0"
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Given /^I am on (.+)$/ do |url|
|
2
|
+
@browser.navigate.to "http://www.google.com/ncr"
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I fill in "([^"]*)" found by "([^\"]*)" with "([^\"]*)"$/ do |value, type, keys|
|
6
|
+
@element = @browser.find_element(type, value)
|
7
|
+
@element.send_keys keys
|
8
|
+
end
|
9
|
+
|
10
|
+
When /^I submit$/ do
|
11
|
+
@element.submit
|
12
|
+
sleep 5
|
13
|
+
end
|
14
|
+
|
15
|
+
Then /^I should see title "([^\"]*)"$/ do |title|
|
16
|
+
raise "Fail" if @browser.title != title
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'selenium/webdriver'
|
2
|
+
require 'net/http'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require 'browserstack-automate'
|
6
|
+
BrowserStack.for "cucumber"
|
7
|
+
|
8
|
+
browser = Selenium::WebDriver.for :firefox
|
9
|
+
|
10
|
+
Before do |scenario|
|
11
|
+
@browser = browser
|
12
|
+
end
|
13
|
+
|
14
|
+
at_exit do
|
15
|
+
sess_id = browser.session_id
|
16
|
+
browser.quit
|
17
|
+
|
18
|
+
url = URI("https://www.browserstack.com/automate/sessions/#{sess_id}.json")
|
19
|
+
Net::HTTP.start(url.host, url.port, :use_ssl => url.scheme == 'https') do |http|
|
20
|
+
request = Net::HTTP::Get.new url.request_uri
|
21
|
+
request.basic_auth ENV['BROWSERSTACK_USERNAME'], ENV['BROWSERSTACK_ACCESS_KEY']
|
22
|
+
response = http.request request
|
23
|
+
puts "Session status was not 'done'" && Kernel.exit!(1) if not JSON.parse(response.body)["automation_session"]["status"].match(/done/)
|
24
|
+
end
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: browserstack-automate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- BrowserStack Support
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-11-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: selenium-webdriver
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: browserstack-local
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: curb
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.12'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.12'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: appraisal
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Run Cucumber tests on BrowserStack Automate using our Ruby integration.
|
98
|
+
email:
|
99
|
+
- support@browserstack.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- Gemfile
|
106
|
+
- README.md
|
107
|
+
- Rakefile
|
108
|
+
- browserstack.gemspec
|
109
|
+
- examples/cucumber/Gemfile
|
110
|
+
- examples/cucumber/features/google.feature
|
111
|
+
- examples/cucumber/features/step_definitions/google_steps.rb
|
112
|
+
- examples/cucumber/features/support/env.rb
|
113
|
+
- examples/simple_sample/Gemfile
|
114
|
+
- examples/simple_sample/sample.rb
|
115
|
+
- lib/browserstack-automate.rb
|
116
|
+
- lib/browserstack-automate/keep_alive_patch.rb
|
117
|
+
- lib/browserstack-automate/version.rb
|
118
|
+
- lib/browserstack-automate/webdriver_patch.rb
|
119
|
+
- tests/cucumber/Appraisals
|
120
|
+
- tests/cucumber/Gemfile
|
121
|
+
- tests/cucumber/features/google.feature
|
122
|
+
- tests/cucumber/features/step_definitions/google_steps.rb
|
123
|
+
- tests/cucumber/features/support/env.rb
|
124
|
+
homepage: https://www.browserstack.com
|
125
|
+
licenses: []
|
126
|
+
metadata: {}
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options: []
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
requirements: []
|
142
|
+
rubyforge_project:
|
143
|
+
rubygems_version: 2.4.8
|
144
|
+
signing_key:
|
145
|
+
specification_version: 4
|
146
|
+
summary: Run Cucumber tests on BrowserStack Automate using our Ruby integration.
|
147
|
+
test_files: []
|