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
         |