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 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