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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2JiNmE0NGJiN2I2OWIwNTRmYjRkNjIzMzYyNWU5MGE5OThlNDhkOA==
4
+ NzBmOTZkZGU2Njk0NWZjMGE4YWQ2NTYzMTJkMGU0ODYyNjZlYmFkMg==
5
5
  data.tar.gz: !binary |-
6
- ZWIxMGFmMTMwMDBjNWIwMWJjMDg4NTdhZWUzNWU5ZjllNjkzZjU4NA==
6
+ ZTdkYmVlYWIwMjNhMjhjZGI0ZDZhMjVmODUwZjI1YzQ4NGMxMWM0ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGU1NzU0NWVhYmM5ZjcwOTUxOTRhMGYxMDZmYzA4NWJkNmU5MmZjNzYxNzY3
10
- OWNiZGE2YjBlZWVkMmQ2OTMzMDBkNDQ4ZDk3MzM5N2ViYjE2ODg5OTgxOGRj
11
- ZDY5MmFhOGI5YmFlODc2YmVlNTJhZjcyNmU3ZTAwZDM4ZGEyOGY=
9
+ MDI4ZGQ4OTYyZGVkYWFjYTNlM2ZiMmJmZWM0MDlkY2M4YjU3NjExNDE3ZWNl
10
+ Y2I2MTdhMWVlN2VkOTAwZWUzZWFlZjlmYWQ5NDBjMTdlODU2OGIzY2EyNjhj
11
+ Y2I1YWQ5MWVlODAyM2IxNzJmYjFhM2ZlNjdhZGJjMTc2ZTgxY2I=
12
12
  data.tar.gz: !binary |-
13
- OGUyYWUzOTJmYzJiNDQwNzhhODk3OTE4MTZkNGE1MDdmZmYyY2I5ZWJiNTkw
14
- ODgzMzdjMzQ3ZDFhZDE3Y2Y5NDkxNDk1YzliMDU3ZmIzMWI3YmJlMzkwMmZl
15
- NTdiZTU0NDAwZmUwZjUzNzJiY2U4N2RiMDJmNDRmNTJjY2U0NDI=
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 'BrowserStack/browserstack.rb'
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
- url = "https://#{selenium_username}:#{selenium_apikey}@api.browserstack.com/3/status"
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
@@ -1,3 +1,3 @@
1
1
  module BrowserStackCucumber
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2'
3
3
  end
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.1.1
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