browserstack-cucumber 0.1.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +8 -1
- data/lib/browserstack/browserstack.rb +29 -3
- data/lib/browserstack/jenkins_formatter.rb +33 -0
- data/lib/browserstack/version.rb +1 -1
- data/lib/browserstack.rb +10 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzBmOTZkZGU2Njk0NWZjMGE4YWQ2NTYzMTJkMGU0ODYyNjZlYmFkMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTdkYmVlYWIwMjNhMjhjZGI0ZDZhMjVmODUwZjI1YzQ4NGMxMWM0ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MDI4ZGQ4OTYyZGVkYWFjYTNlM2ZiMmJmZWM0MDlkY2M4YjU3NjExNDE3ZWNl
|
10
|
+
Y2I2MTdhMWVlN2VkOTAwZWUzZWFlZjlmYWQ5NDBjMTdlODU2OGIzY2EyNjhj
|
11
|
+
Y2I1YWQ5MWVlODAyM2IxNzJmYjFhM2ZlNjdhZGJjMTc2ZTgxY2I=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
N2YzOGY2MTIyMjc0ZmZiN2UyMjg5MjY5MDE4OGFiZDM3MDNlYjVmMWQ3Y2Ey
|
14
|
+
ODMwZTgzNTM1YWY3OWI1YWQ5NmQ1ZjIwOTI1OGQzMDVmNWVlNWU5NzM2YjU0
|
15
|
+
NzU2MzQyNDNmOTVhMWZhNjUwYmNlNmViYzg2ODkzMGE3NTY4MGQ=
|
data/README.md
CHANGED
@@ -26,7 +26,7 @@ See features/support/env.rb on how to add BrowserStack support to your cucumber
|
|
26
26
|
```ruby
|
27
27
|
require'rspec/expectations'
|
28
28
|
require'page-object'
|
29
|
-
require
|
29
|
+
require'browserstack'
|
30
30
|
require'selenium/webdriver'
|
31
31
|
|
32
32
|
World(PageObject::PageFactory)
|
@@ -59,6 +59,13 @@ To run cucumber tests suite:
|
|
59
59
|
|
60
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
61
|
|
62
|
+
##Using BrowserStackCucumber Jenkins Formatter
|
63
|
+
|
64
|
+
This gem includes BrowserStackCucumber::JenkinsFormatter. It registers it with shorter name 'browserstack_jenkins' in Cucumber cli.
|
65
|
+
Using this formatter allows to include URL to BrowserStack session url with every failed scenario error output.
|
66
|
+
|
67
|
+
$ cucumber ... -f browserstack_jenkins --out <report dir>
|
68
|
+
|
62
69
|
## Testing the Gem:
|
63
70
|
|
64
71
|
set the following env variables
|
@@ -12,6 +12,8 @@ module BrowserStackCucumber
|
|
12
12
|
@test_substring = 'sign in'
|
13
13
|
@browser = nil
|
14
14
|
|
15
|
+
@last_session_id = nil
|
16
|
+
|
15
17
|
def test_url=(url)
|
16
18
|
@test_url = url
|
17
19
|
end
|
@@ -135,14 +137,21 @@ module BrowserStackCucumber
|
|
135
137
|
#puts my_capabilities['name']
|
136
138
|
#puts @browser.session_id
|
137
139
|
ENV['browser_session_id'] = @browser.session_id
|
140
|
+
@last_session_id = @browser.session_id
|
141
|
+
ENV['browser_session_url'] = session_url()
|
138
142
|
@browser
|
139
143
|
end
|
140
144
|
|
145
|
+
def self.session_url
|
146
|
+
@session_url = get_session_info(@browser.session_id)
|
147
|
+
@session_url['automation_session']['browser_url']
|
148
|
+
rescue =>e
|
149
|
+
return "failed to obtain session url #{e}"
|
150
|
+
end
|
151
|
+
|
141
152
|
def self.wait_till_session_is_available
|
142
153
|
::BrowserStackCucumber::WaitUntil::wait_until(500) do
|
143
|
-
|
144
|
-
r = RestClient.get(url)
|
145
|
-
parsed_r = JSON.parse(r.body)
|
154
|
+
parsed_r = get_session_limits()
|
146
155
|
puts "no free BrowserStack session available now#{parsed_r}" if (parsed_r['sessions_limit']==parsed_r['running_sessions'])
|
147
156
|
parsed_r['sessions_limit']-parsed_r['running_sessions']>0
|
148
157
|
end
|
@@ -151,6 +160,23 @@ module BrowserStackCucumber
|
|
151
160
|
raise
|
152
161
|
end
|
153
162
|
|
163
|
+
def self.get_session_limits
|
164
|
+
url = "https://#{selenium_username}:#{selenium_apikey}@api.browserstack.com/3/status"
|
165
|
+
r = RestClient.get(url)
|
166
|
+
parsed_r = JSON.parse(r.body)
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.call_api(url_part)
|
170
|
+
url = "https://#{selenium_username}:#{selenium_apikey}@www.browserstack.com/automate/#{url_part}"
|
171
|
+
r = RestClient.get(url)
|
172
|
+
parsed_r = JSON.parse(r.body)
|
173
|
+
end
|
174
|
+
|
175
|
+
def self.get_session_info(session_id)
|
176
|
+
call_api("sessions/#{session_id}.json")
|
177
|
+
end
|
178
|
+
|
179
|
+
|
154
180
|
def self.browser
|
155
181
|
@browser
|
156
182
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "cucumber/formatter/junit"
|
2
|
+
|
3
|
+
module BrowserStackCucumber
|
4
|
+
class JenkinsFormatter < Cucumber::Formatter::Junit
|
5
|
+
def initialize(step_mother, io, options)
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
def after_steps(steps)
|
10
|
+
@output += job_url unless @in_examples
|
11
|
+
super
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def after_table_cell(table_row)
|
16
|
+
@output += job_url unless @header_row
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def basename(feature_file)
|
22
|
+
filename = super
|
23
|
+
"#{filename}_#{Time.now.strftime("%Y-%m-%d-%H%M%S")}_#{Random.rand(9999).to_s}"
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def job_url
|
28
|
+
job_id = ENV['browser_session_url']
|
29
|
+
"Session url #{job_id} <br>\n"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/lib/browserstack/version.rb
CHANGED
data/lib/browserstack.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
require 'browserstack/version'
|
2
2
|
require 'browserstack/browserstack'
|
3
3
|
|
4
|
+
require 'browserstack/jenkins_formatter'
|
5
|
+
|
6
|
+
# Extend Cucumber's builtin formats, so that this
|
7
|
+
# formatter can be used with --format browserstack_jenkins
|
8
|
+
require 'cucumber/cli/main'
|
9
|
+
|
10
|
+
Cucumber::Cli::Options::BUILTIN_FORMATS["browserstack_jenkins"] = [
|
11
|
+
"BrowserStackCucumber::JenkinsFormatter",
|
12
|
+
"BrowserStack Jenkins JUnit report formatter"
|
13
|
+
]
|
4
14
|
|
5
15
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browserstack-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Vladimirov
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- features/testing_yahoo.feature
|
129
129
|
- lib/browserstack.rb
|
130
130
|
- lib/browserstack/browserstack.rb
|
131
|
+
- lib/browserstack/jenkins_formatter.rb
|
131
132
|
- lib/browserstack/version.rb
|
132
133
|
- lib/browserstack/wait_until.rb
|
133
134
|
- lib/browserstack/with_rescue.rb
|