browserstack-cucumber 0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +2 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +22 -0
- data/README.md +76 -0
- data/Rakefile +1 -0
- data/browserstack-cucumber.gemspec +30 -0
- data/features/step_definitions/yahoo_test_steps.rb +12 -0
- data/features/support/env.rb +29 -0
- data/features/support/pages/yahoo_main_page.rb +11 -0
- data/features/support/pages/yahoo_results_page.rb +23 -0
- data/features/testing_yahoo.feature +9 -0
- data/lib/browserstack/browserstack.rb +226 -0
- data/lib/browserstack/version.rb +3 -0
- data/lib/browserstack/wait_until.rb +9 -0
- data/lib/browserstack/with_rescue.rb +34 -0
- data/lib/browserstack.rb +4 -0
- metadata +164 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjQwMzNjMzg0ZWYwYTkyZTQ0MGJlODVhMGU1MTE3NjY4MjBiOTljMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDRmMTllMDE2YTRmNjU2MzczYzczZWJhNzA0MDkxMzA2OTkzMGQ0OA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDZlM2Y2Zjg0MGVlNmI5NmFkYjI3Njg2ZDllZjdmNmNjMGViYjgwOTlkMjAz
|
10
|
+
ZmQ2NDIzYmVkMGNjOGM3Njg4NTA4YWY0NTViYzM3YzY5YmU4MTNjNWM1MWEz
|
11
|
+
ZTg2OTc5Y2FiOGIxMWVjNzI4YjFkMzE0N2EwNmU2Yjc1Y2I2N2U=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
M2VlZTZkZjk3ZWViYmNkZThmZjJlY2U5YTc1MzJiYmUzZjJjYzg4Y2U4NTQ0
|
14
|
+
ZTkyNmEwNjg3NTcxYzI3NDMwYzFlYzE1MTVkNTRjMDBjYTZmMGYzMTUxNmEy
|
15
|
+
ZjI2YTRlM2E1NzM1Yjk2NDE0YTY3N2IyMDg0MjJhMTI2NzE5YTA=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Long Tail Ad Solutions
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# BrowserStackCucumber
|
2
|
+
|
3
|
+
A Ruby helper for running tests in BrowserStack Automate browser testing cloud service.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'browserstack-cucumber'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install browserstack-cucumber
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
browserstack-cucumber designed to get configuration from environment variables set by Jenkins.
|
22
|
+
|
23
|
+
###Code changes:
|
24
|
+
See features/support/env.rb on how to add BrowserStack support to your cucumber tests:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
require'rspec/expectations'
|
28
|
+
require'page-object'
|
29
|
+
require 'BrowserStack/browserstack.rb'
|
30
|
+
require'selenium/webdriver'
|
31
|
+
|
32
|
+
World(PageObject::PageFactory)
|
33
|
+
|
34
|
+
#Installing Cucumber hooks
|
35
|
+
Before('@selenium') do
|
36
|
+
@browser = ::BrowserStackCucumber.before_hook_impl
|
37
|
+
end
|
38
|
+
|
39
|
+
Around('@selenium') do |scenario, block|
|
40
|
+
::BrowserStackCucumber.around_hook_impl(scenario, block)
|
41
|
+
end
|
42
|
+
|
43
|
+
at_exit do
|
44
|
+
::BrowserStackCucumber.at_exit_impl()
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
|
49
|
+
###Running tests:
|
50
|
+
|
51
|
+
You'll need to set the following environment variables (the following values are used http://saucelabs.com/rest/v1/info/browsers/webdriver)
|
52
|
+
* SELENIUM_PLATFORM (os)
|
53
|
+
* SELENIUM_BROWSER (api_name)
|
54
|
+
* SELENIUM_VERSION (short_version)
|
55
|
+
* BROWSER_STACK_USER_NAME
|
56
|
+
* BROWSER_STACK_API_KEY
|
57
|
+
|
58
|
+
To run cucumber tests suite:
|
59
|
+
|
60
|
+
$ cucumber SELENIUM_PLATFORM="Windows 2008" SELENIUM_BROWSER="firefox" SELENIUM_VERSION="24" BROWSER_STACK_API_KEY="<your browserstack api key>" BROWSER_STACK_USER_NAME="<browserstack username>"
|
61
|
+
|
62
|
+
## Testing the Gem:
|
63
|
+
|
64
|
+
set the following env variables
|
65
|
+
run tests with
|
66
|
+
|
67
|
+
$ bundle exec cucumber SELENIUM_PLATFORM="Windows 2008" SELENIUM_BROWSER="firefox" SELENIUM_VERSION="24" BROWSER_STACK_API_KEY="<your browserstack api key>" BROWSER_STACK_USER_NAME="<browserstack username>"
|
68
|
+
|
69
|
+
|
70
|
+
## Contributing
|
71
|
+
|
72
|
+
1. Fork it
|
73
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
74
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
75
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
76
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'browserstack/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'browserstack-cucumber'
|
8
|
+
spec.version = BrowserStackCucumber::VERSION
|
9
|
+
spec.authors = ['Vladimir Vladimirov']
|
10
|
+
#noinspection RubyLiteralArrayInspection
|
11
|
+
spec.email = ['vladimir@jwplayer.com']
|
12
|
+
spec.description = %q{A Ruby helper for running tests in BrowserStack}
|
13
|
+
spec.summary = %q{A Ruby helper for running tests in BrowserStack Automate browser testing cloud service}
|
14
|
+
spec.homepage = 'https://github.com/JWPlayer/browserstack-cucumber'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
#noinspection RubyLiteralArrayInspection
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
24
|
+
spec.add_development_dependency 'rake'
|
25
|
+
spec.add_development_dependency 'rspec'
|
26
|
+
spec.add_development_dependency 'cucumber'
|
27
|
+
spec.add_development_dependency 'page-object'
|
28
|
+
spec.add_dependency 'rest-client'
|
29
|
+
spec.add_dependency 'json'
|
30
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Given(/^I am on the yahoo page$/) do
|
2
|
+
visit(YahooMainPage)
|
3
|
+
end
|
4
|
+
|
5
|
+
When(/^I do search for phrase "([^"]*)"$/) do |search_phrase|
|
6
|
+
on(YahooMainPage).search_query = search_phrase
|
7
|
+
on(YahooMainPage).do_search
|
8
|
+
end
|
9
|
+
|
10
|
+
Then(/^I should see more then "([^"]*)" result$/) do |arg|
|
11
|
+
on(YahooResultsPage).search_results.count.should > arg.to_i
|
12
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__),'..','..','lib'))
|
2
|
+
|
3
|
+
require'rspec/expectations'
|
4
|
+
require'page-object'
|
5
|
+
require 'BrowserStack/browserstack.rb'
|
6
|
+
require'selenium/webdriver'
|
7
|
+
|
8
|
+
World(PageObject::PageFactory)
|
9
|
+
|
10
|
+
#Installing Cucumber hooks
|
11
|
+
begin
|
12
|
+
if ENV['SELENIUM_PLATFORM'] and !$0.include? 'app_checker.rb'
|
13
|
+
Before('@selenium') do
|
14
|
+
@browser = ::BrowserStackCucumber.before_hook_impl
|
15
|
+
end
|
16
|
+
|
17
|
+
Around('@selenium') do |scenario, block|
|
18
|
+
::BrowserStackCucumber.around_hook_impl(scenario, block)
|
19
|
+
end
|
20
|
+
|
21
|
+
at_exit do
|
22
|
+
::BrowserStackCucumber.at_exit_impl()
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
rescue NoMethodError=>e
|
27
|
+
puts e
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class YahooResultsPage
|
2
|
+
include PageObject
|
3
|
+
|
4
|
+
expected_title 'why yahoo changed the logo - Yahoo Search Results'
|
5
|
+
|
6
|
+
def search_results
|
7
|
+
@browser.find_elements(css: 'li > div > div > h3 > a')
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize_page
|
11
|
+
#has_expected_title_wait? if self.respond_to?("has_expected_title_wait?")
|
12
|
+
|
13
|
+
has_expected_title? if self.respond_to?('has_expected_title?')
|
14
|
+
|
15
|
+
#has_expected_element? if self.respond_to?("has_expected_element?")
|
16
|
+
|
17
|
+
#has_expected_element_visible? if self.respond_to?("has_expected_element_visible?")
|
18
|
+
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,226 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'json'
|
4
|
+
require 'BrowserStack/wait_until'
|
5
|
+
|
6
|
+
module BrowserStackCucumber
|
7
|
+
|
8
|
+
class Config
|
9
|
+
attr_reader :browser
|
10
|
+
|
11
|
+
@test_url = 'https://account.jwplayer.com/sign-in'
|
12
|
+
@test_substring = 'sign in'
|
13
|
+
@browser = nil
|
14
|
+
|
15
|
+
def test_url=(url)
|
16
|
+
@test_url = url
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.name_from_scenario(scenario)
|
20
|
+
# Special behavior to handle Scenario Outlines
|
21
|
+
if scenario.instance_of? ::Cucumber::Ast::OutlineTable::ExampleRow
|
22
|
+
table = scenario.instance_variable_get(:@table)
|
23
|
+
outline = table.instance_variable_get(:@scenario_outline)
|
24
|
+
return "#{outline.feature.file} - #{outline.title} - #{table.headers} -> #{scenario.name}"
|
25
|
+
end
|
26
|
+
scenario, feature = _scenario_and_feature_name(scenario)
|
27
|
+
return "#{feature} - #{scenario}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def self._scenario_and_feature_name(scenario)
|
31
|
+
scenario_name = scenario.name.split("\n").first
|
32
|
+
feature_name = scenario.feature.short_name
|
33
|
+
return scenario_name, feature_name
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.selenium_username
|
37
|
+
ENV['BROWSER_STACK_USER_NAME']
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.selenium_apikey
|
41
|
+
ENV['BROWSER_STACK_API_KEY']
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.selenium_os
|
45
|
+
#TODO: Windows 8 doesn't match BS
|
46
|
+
#'Windows XP' => Windows
|
47
|
+
ENV['SELENIUM_PLATFORM'].split(' ')[0]
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.selenium_os_version
|
51
|
+
#'Windows XP' => XP
|
52
|
+
r = ENV['SELENIUM_PLATFORM'].split(' ')[1]
|
53
|
+
return 'XP' if (r=='2003')
|
54
|
+
return '7' if (r=='2008')
|
55
|
+
return '8' if (r=='2012')
|
56
|
+
r
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.selenium_browser
|
60
|
+
#firefox
|
61
|
+
ENV['SELENIUM_BROWSER']
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.selenium_browser_version
|
65
|
+
#21
|
66
|
+
ENV['SELENIUM_VERSION']
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
def self.capabilities
|
71
|
+
|
72
|
+
capabilities = ::Selenium::WebDriver::Remote::Capabilities.new
|
73
|
+
capabilities[:name] = 'Testing Selenium 2 with Ruby on BrowserStack'
|
74
|
+
capabilities['os'] = selenium_os
|
75
|
+
capabilities['os_version'] = selenium_os_version
|
76
|
+
capabilities['browser'] = selenium_browser
|
77
|
+
capabilities['browser_version'] = selenium_browser_version
|
78
|
+
capabilities['browserstack.user'] = selenium_username
|
79
|
+
capabilities['browserstack.key'] = selenium_apikey
|
80
|
+
capabilities['browserstack.debug'] = 'true'
|
81
|
+
capabilities['acceptSslCerts'] = 'true'
|
82
|
+
capabilities['Idle timeout'] = 30
|
83
|
+
capabilities['build'] = ENV['BUILD_NUMBER']
|
84
|
+
capabilities['project'] = ENV['JOB_NAME']
|
85
|
+
capabilities
|
86
|
+
end
|
87
|
+
def self.url
|
88
|
+
'http://hub.browserstack.com/wd/hub'
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.init_browser(scenario)
|
92
|
+
my_capabilities = capabilities()
|
93
|
+
my_url = url()
|
94
|
+
my_capabilities[:name] = name_from_scenario(scenario)
|
95
|
+
@browser = nil
|
96
|
+
count=0
|
97
|
+
try_count=0
|
98
|
+
|
99
|
+
#check for session limit before starting the test
|
100
|
+
wait_till_session_is_available()
|
101
|
+
|
102
|
+
WaitUntil::wait_until(500) do
|
103
|
+
count+=1
|
104
|
+
puts "try #{count} to init browser" if count>1
|
105
|
+
|
106
|
+
begin
|
107
|
+
try_count+=1
|
108
|
+
@browser = Selenium::WebDriver.for(:remote, :url => my_url, :desired_capabilities => my_capabilities)
|
109
|
+
@browser.get @test_url
|
110
|
+
raise "Network connection issue. Failed to open #{@test_url} and find '#{@test_substring}' substring" if !@browser.page_source.downcase.include? @test_substring
|
111
|
+
@browser
|
112
|
+
rescue =>e
|
113
|
+
if e.message.include? 'sessions are currently being used. Please upgrade to add more parallel sessions'
|
114
|
+
puts "Run out of sessions: '#{e.message}'"
|
115
|
+
else
|
116
|
+
puts "Exception while initializing Selenium session: #{e.class }#{e}"
|
117
|
+
puts e.backtrace
|
118
|
+
@browser.quit if !@browser.nil?
|
119
|
+
raise if try_count>30
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
if @browser.nil?
|
125
|
+
puts 'failed to init browser'
|
126
|
+
raise 'failed to initiate remote browser session after 300 seconds'
|
127
|
+
end
|
128
|
+
|
129
|
+
unless @browser.is_a? ::Selenium::WebDriver::Driver
|
130
|
+
puts 'invalid browser'
|
131
|
+
raise 'invalid browser'
|
132
|
+
end
|
133
|
+
|
134
|
+
@browser.instance_variable_get(:'@bridge').maximizeWindow
|
135
|
+
#puts my_capabilities['name']
|
136
|
+
#puts @browser.session_id
|
137
|
+
ENV['browser_session_id'] = @browser.session_id
|
138
|
+
@browser
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.wait_till_session_is_available
|
142
|
+
::BrowserStackCucumber::WaitUntil::wait_until(500) do
|
143
|
+
url = "https://#{selenium_username}:#{selenium_apikey}@api.browserstack.com/3/status"
|
144
|
+
r = RestClient.get(url)
|
145
|
+
parsed_r = JSON.parse(r.body)
|
146
|
+
puts "no free BrowserStack session available now#{parsed_r}" if (parsed_r['sessions_limit']==parsed_r['running_sessions'])
|
147
|
+
parsed_r['sessions_limit']-parsed_r['running_sessions']>0
|
148
|
+
end
|
149
|
+
rescue RestClient::Unauthorized=>e
|
150
|
+
puts "Error: Failed to access BrowserStack account, please check username and api key: #{e}"
|
151
|
+
raise
|
152
|
+
end
|
153
|
+
|
154
|
+
def self.browser
|
155
|
+
@browser
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.close_browser
|
159
|
+
@browser.quit if !@browser.nil?
|
160
|
+
@browser = nil
|
161
|
+
end
|
162
|
+
|
163
|
+
def self.close_browser_force
|
164
|
+
unless @browser.nil?
|
165
|
+
puts @browser.title
|
166
|
+
STDERR.puts 'Something went wrong and selenium session was not closed. Closing it now.'
|
167
|
+
::BrowserStackCucumber::Config.close_browser
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
module_function
|
176
|
+
def before_hook_impl
|
177
|
+
#::Capybara.default_driver = :browser_stack
|
178
|
+
#::Capybara.current_driver = :browser_stack
|
179
|
+
@browser = BrowserStackCucumber::Config.browser
|
180
|
+
end
|
181
|
+
|
182
|
+
module_function
|
183
|
+
def around_hook_impl(scenario, block)
|
184
|
+
#::Capybara.current_driver = :browser_stack
|
185
|
+
|
186
|
+
#set additional job details here (project, build, name etc)
|
187
|
+
#init selenium session
|
188
|
+
|
189
|
+
#driver = ::Capybara.current_session.driver
|
190
|
+
#noinspection RubyUnusedLocalVariable
|
191
|
+
my_browser = BrowserStackCucumber::Config.init_browser(scenario)
|
192
|
+
|
193
|
+
#set sessions details for BrowserStack here
|
194
|
+
#Job = ...
|
195
|
+
|
196
|
+
# This allow us to execute steps (n) times
|
197
|
+
unless scenario.instance_of? ::Cucumber::Ast::OutlineTable::ExampleRow
|
198
|
+
scenario.steps.each do |step|
|
199
|
+
step.instance_variable_set(:@skip_invoke, false)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
block.call
|
204
|
+
|
205
|
+
# Quit the driver to allow for the generation of a new session_id
|
206
|
+
BrowserStackCucumber::Config.close_browser
|
207
|
+
|
208
|
+
#report job status to BrowserStack
|
209
|
+
#unless job.nil?
|
210
|
+
# job.passed = !scenario.failed?
|
211
|
+
# job.save
|
212
|
+
#end
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
end
|
217
|
+
|
218
|
+
module_function
|
219
|
+
def at_exit_impl
|
220
|
+
::BrowserStackCucumber::Config.close_browser_force
|
221
|
+
#do global shutdown (i.e. tunnel)
|
222
|
+
#check for global errors
|
223
|
+
end
|
224
|
+
|
225
|
+
|
226
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module BrowserStackCucumber
|
2
|
+
module RetryHelper
|
3
|
+
def self.with_rescue(exception, limit=1, &block)
|
4
|
+
|
5
|
+
try=0
|
6
|
+
begin
|
7
|
+
block.call(try)
|
8
|
+
rescue exception
|
9
|
+
try+=1
|
10
|
+
retry if try<=limit
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.with_rescue_many(exceptions, limit=1, &block)
|
15
|
+
|
16
|
+
try=0
|
17
|
+
begin
|
18
|
+
block.call(try)
|
19
|
+
rescue *exceptions
|
20
|
+
try+=1
|
21
|
+
retry if try<=limit
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
=begin
|
29
|
+
usage example
|
30
|
+
RetryHelper::with_rescue(Selenium::WebDriver::Error::StaleElementReferenceError, 5) do
|
31
|
+
page_headline.include?('Your Billing Information')
|
32
|
+
end
|
33
|
+
|
34
|
+
=end
|
data/lib/browserstack.rb
ADDED
metadata
ADDED
@@ -0,0 +1,164 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: browserstack-cucumber
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Vladimir Vladimirov
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
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: cucumber
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: page-object
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rest-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: json
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: A Ruby helper for running tests in BrowserStack
|
112
|
+
email:
|
113
|
+
- vladimir@jwplayer.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- .gitignore
|
119
|
+
- Gemfile
|
120
|
+
- LICENSE.txt
|
121
|
+
- README.md
|
122
|
+
- Rakefile
|
123
|
+
- browserstack-cucumber.gemspec
|
124
|
+
- features/step_definitions/yahoo_test_steps.rb
|
125
|
+
- features/support/env.rb
|
126
|
+
- features/support/pages/yahoo_main_page.rb
|
127
|
+
- features/support/pages/yahoo_results_page.rb
|
128
|
+
- features/testing_yahoo.feature
|
129
|
+
- lib/browserstack.rb
|
130
|
+
- lib/browserstack/browserstack.rb
|
131
|
+
- lib/browserstack/version.rb
|
132
|
+
- lib/browserstack/wait_until.rb
|
133
|
+
- lib/browserstack/with_rescue.rb
|
134
|
+
homepage: https://github.com/JWPlayer/browserstack-cucumber
|
135
|
+
licenses:
|
136
|
+
- MIT
|
137
|
+
metadata: {}
|
138
|
+
post_install_message:
|
139
|
+
rdoc_options: []
|
140
|
+
require_paths:
|
141
|
+
- lib
|
142
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
requirements: []
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 2.1.9
|
155
|
+
signing_key:
|
156
|
+
specification_version: 4
|
157
|
+
summary: A Ruby helper for running tests in BrowserStack Automate browser testing
|
158
|
+
cloud service
|
159
|
+
test_files:
|
160
|
+
- features/step_definitions/yahoo_test_steps.rb
|
161
|
+
- features/support/env.rb
|
162
|
+
- features/support/pages/yahoo_main_page.rb
|
163
|
+
- features/support/pages/yahoo_results_page.rb
|
164
|
+
- features/testing_yahoo.feature
|