browserstack-cucumber 0.1.1 → 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 +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
|