quke 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25034d29ab8437b5aacb33aaa97f41c34dc15068752eadfc09a85768e0dc2e60
4
- data.tar.gz: 5cd03338c46d2bcae6797688d812ef2416442bf6326241a6fde6597b7a4c7a62
3
+ metadata.gz: b1912f6775017bdec69bd6e8b15f15b95829a6593910a0c27f0330fdb0f66774
4
+ data.tar.gz: 88777a66fabbd0fa786b47dd45d56a6c7a24d797f6289dd2803abc9ae058f6a2
5
5
  SHA512:
6
- metadata.gz: c78cb8fe4e373e89806fd0b8d12329e1954a22861ccc59d02c01ad3646da7782c145445c62c076f862bdc324309b18e5ae2be49f0cc1338bc7231639242c37a9
7
- data.tar.gz: 032b80527d91463412de0c97a6ae4b70ec050ee2dc6b71d2a1a6be2f316cc690f4f0b5fdb74e41e02fdb85c2a394f8bd388b61038ddd6635a3fa30abc807b013
6
+ metadata.gz: 836c1c82284d6960b2dab3ecfecfe4c6053ad2361576ff891146ace43dd2188d168a5573ca4abeb11891a574a001617a775a97fc619f46f9e7c5dfd70d7a0b57
7
+ data.tar.gz: 8c906791e4c8d0b54115de9684606dd9363eb4bf7cc92708ef7445aa0e5f9ab3dc097774f5803dd60ef7f02540c033f9af0cd606760798380b611a1b5b598332
@@ -0,0 +1,11 @@
1
+ driver: browserstack
2
+
3
+ browserstack:
4
+ username: alancruikshanks3
5
+ auth_key: PCTFnDxjvJpjypoyF1iu
6
+ local_key: PCTFnDxjvJpjypoyF1iu
7
+
8
+ capabilities:
9
+ build: 'Version 1'
10
+ project: 'Adding browserstack support'
11
+ name: 'Testing google search'
@@ -105,7 +105,10 @@ browserstack:
105
105
 
106
106
  # If you want to use local testing you must provide a key. You can find this
107
107
  # in Browserstack once logged in under settings. Its typically the same value
108
- # as the auth_key above
108
+ # as the auth_key above.
109
+ # If you don't want to put this credential in the config file (because you
110
+ # want to commit it to source control), Quke will also check for the existance
111
+ # of the environment variable BROWSERSTACK_LOCAL_KEY
109
112
  local_key: 123456789ABCDE
110
113
 
111
114
  # Anything set under capabilities will be passed directly by Quke to
@@ -46,9 +46,9 @@ Metrics/MethodLength:
46
46
  Max: 15
47
47
  Exclude:
48
48
 
49
- # It is our opinion that in the specs 80 characters is too restrictive. Do to
50
- # the nature of some statements that it can be both difficult, and make more
51
- # simple statements complex if we are forced to split them over multiple lines.
49
+ # It is our opinion that in the specs 80 characters is too restrictive. Due to
50
+ # the nature of some statements it can be both difficult, and make more simple
51
+ # statements complex if we are forced to split them over multiple lines.
52
52
  # Therefore we have upped this limit to 120 chars in the specs only.
53
53
  Metrics/LineLength:
54
54
  Max: 120
@@ -56,6 +56,6 @@ Metrics/LineLength:
56
56
  - spec/quke/*.rb
57
57
 
58
58
  # Disable this rubocop style because we want to make the arguments passed into
59
- # Freakin available to anywhere when the code is executed
59
+ # Quke available to anywhere when the code is executed
60
60
  Style/GlobalVars:
61
61
  Enabled: false
@@ -2,7 +2,6 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.3.1
5
- before_install: gem install bundler -v 1.12.5
6
5
 
7
6
  # Travis CI clones repositories to a depth of 50 commits, which is only really
8
7
  # useful if you are performing git operations.
@@ -14,6 +13,13 @@ git:
14
13
  # https://docs.travis-ci.com/user/languages/ruby#Caching-Bundler
15
14
  cache: bundler
16
15
 
16
+ # Needed as part of submitting test coverage statistics to CodeClimate as part
17
+ # of the build
18
+ # https://docs.codeclimate.com/v1.0/docs/travis-ci-test-coverage
19
+ env:
20
+ global:
21
+ - CC_TEST_REPORTER_ID=1d329b5215a2aa892214c7705d36de6e99608a8649616c93f93464aa06776f4a
22
+
17
23
  # Using the ability to customise the Travis build to check for 'focus' labels
18
24
  # i.e. labels used when working on a spec but which we don't want appearing in
19
25
  # the final commit to master
@@ -21,17 +27,19 @@ cache: bundler
21
27
  # If grep returns 0 (match found), test 0 -eq 1 will return 1.
22
28
  # If grep returns 1 (no match found), test 1 -eq 1 will return 0.
23
29
  # If grep returns 2 (error), test 2 -eq 1 will return 1.
24
- before_script: >-
25
- echo "Checking for use of 'focus' labels in specs" && grep -r --include="*_spec.rb" "focus: true" spec/; test $? -eq 1
30
+ before_script:
31
+ - echo "Checking for use of 'focus' labels in specs" && grep -r --include="*_spec.rb" "focus: true" spec/; test $? -eq 1
32
+ # Setup to support the CodeClimate test coverage submission
33
+ # As per CodeClimate's documentation, they suggest only running
34
+ # ./cc-test-reporter commands on travis-ci push builds only. Hence we wrap all
35
+ # the codeclimate test coverage related commands in a check that tests if we
36
+ # are in a pull request or not.
37
+ - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter; fi
38
+ - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then chmod +x ./cc-test-reporter; fi
39
+ - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter before-build; fi
26
40
 
27
- # This section was added as per https://docs.travis-ci.com/user/code-climate/
28
- # To protect our codeclimate stats rather than adding the Codeclimate API key for ea-area_lookup
29
- # in the open we used this guide https://docs.travis-ci.com/user/encryption-keys/ to encryt the
30
- # value. Essentially install travis gem, then run `travis encrypt <my_code_climate_api_key>`
31
- addons:
32
- code_climate:
33
- repo_token:
34
- secure: "TULHMA2Zmp0ntRGBVbLAJqSa9XWSm6gOunAEESbEUZYXt9eTuwvCHLOk1kz/EPq+3s60JokYOpGPB5iTGY4HxS/3gAmNR1Eo1smHqXDXqHjDb0X1l+w4mPUtdTRxTzzYJCaGkDptyCRv7p55LstfnZWlseQjlO1Er1TvQzzOb0XpsM+bO1ZiFNYZQcK8lAp2IrEcZNi0AEr96djc8vFymhV8ZocK39FythTwUBsw4eHitdFRTJwHZUUToatzN4R2Tl8rRNvj+xL3SmTqF1QZQovBGluuiewR0sddzU0vfQEB9tg7v+sMOoIK5ANYJ8SmabmsMa5zjnKEpxK0tgyD/vN9VWNH8qTY8yrGVg1wkQUmabV+1XSXNeHHuvHtlGp76OOqvNVCzlqspn0XsiS0TmcFhQlnNnhfQqFXXaMkt3ToPWDZfiXdmm5EMP5tqkNMhu/OtF1r99k7LbmDA0SMm3OK4TqTDLYDiDYJpwGYyWbWh9eCBgSyOzTW0sKvu0cxjznFd7NVx845lcfWLcDYGAyLEXm1WE1uULRjJgzabi4MkTz0DPBRxFP0STfXf96+NGxkSnKI5akQgyO4I+ITLS07pU6G16lcc8LNhqXFWdMVvPXSqzzLNqcV9U6zIyWaaf1whBO7/RPks3hKWw9GMwun49pR6GJ2wLeMnbnVsAQ="
41
+ after_script:
42
+ - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
35
43
 
36
44
  deploy:
37
45
  provider: rubygems
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.5.0](https://github.com/DEFRA/quke/tree/v0.5.0) (2017-12-06)
4
+ [Full Changelog](https://github.com/DEFRA/quke/compare/v0.4.0...v0.5.0)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - Add support for browserstack local testing [\#69](https://github.com/DEFRA/quke/pull/69) ([Cruikshanks](https://github.com/Cruikshanks))
9
+ - Update CHANGELOG for 0.4.0 release [\#68](https://github.com/DEFRA/quke/pull/68) ([Cruikshanks](https://github.com/Cruikshanks))
10
+
3
11
  ## [v0.4.0](https://github.com/DEFRA/quke/tree/v0.4.0) (2017-12-04)
4
12
  [Full Changelog](https://github.com/DEFRA/quke/compare/v0.3.2...v0.4.0)
5
13
 
data/README.md CHANGED
@@ -86,6 +86,32 @@ QUKE_CONFIG='chrome.config.yml' bundle exec quke
86
86
 
87
87
  The use case is to allow you to have different configs setup ready to go, and enable you to switch between them. For example when testing with Chrome and Firefox you set a 1 second delay between steps so you can observe the tests as they run through, but in your default `.config.yml` you want no pauses and use **phantomjs**.
88
88
 
89
+ ### Security
90
+
91
+ If you are testing a site that requires some form of login, or you are using **Browserstack** you'll need to tell Quke about the credentials. Generally we advise not committing your `.config.yml` to source control, but we understand you may well build up a suite of them that you want to store with the project and share with others.
92
+
93
+ If that's the case make use of the following features.
94
+
95
+ #### Browserstack environment variables
96
+
97
+ [.config.example.yml](.config.example.yml) is an example of a config file which contains `username`, `auth_key`, and if local testing `local_key`. You really don't want these becoming known so if you have to commit the config file, remove them and instead set the following environment variables wherever you need to run the tests.
98
+
99
+ - BROWSERSTACK_USERNAME
100
+ - BROWSERSTACK_AUTH_KEY
101
+ - BROWSERSTACK_LOCAL_KEY
102
+
103
+ Quke looks for them when configuring the **Browserstack** driver and only if not found does it then go looking in the config file.
104
+
105
+ #### Ruby's ENV classs
106
+
107
+ You can access any environment variable from within your project using [ENV](https://ruby-doc.org/core-2.4.2/ENV.html).
108
+
109
+ ```ruby
110
+ secret_key = ENV['SUPER_SECRET_KEY']
111
+ ```
112
+
113
+ You can set them by calling `export SUPER_SECRET_KEY="password123"` in your terminal prior to running Quke. In this way for example, the passwords featured in the custom section in [.config.example.yml](.config.example.yml) could be removed, and instead your step could read the value it needs to submit from an environment variable.
114
+
89
115
  ## Usage
90
116
 
91
117
  TODO: Write usage instructions here
@@ -102,6 +128,10 @@ Capybara includes the ability to save the source of the current page at any poin
102
128
 
103
129
  If you are running using Chrome or Firefox after the 5th failure Quke will automatically stop. This is to prevent scores of tabs being opened in the browser when an error is found, which may just be the result of an error in the test code.
104
130
 
131
+ ### Automatically setting Browserstack session status
132
+
133
+ If you are using the Browserstack driver, Quke will automatically update the status of the session recorded in Browserstack for you. If all tests pass, it will be marked as 'passed', else it will be marked as 'failed' (it defaults to 'completed').
134
+
105
135
  ## Development
106
136
 
107
137
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -3,6 +3,8 @@
3
3
  require 'bundler/setup'
4
4
  require 'quke'
5
5
  require 'quke/version'
6
+ require 'quke/browserstack_configuration'
7
+ require 'quke/browserstack_status_reporter'
6
8
  require 'quke/configuration'
7
9
  require 'quke/cuke_runner'
8
10
  require 'quke/driver_registration'
@@ -1,9 +1,13 @@
1
1
  require 'quke/configuration'
2
2
 
3
3
  After('~@nonweb') do |scenario|
4
- if scenario.failed?
4
+ $fail_count ||= 0
5
+
6
+ if Quke::Quke.config.browserstack.using_browserstack?
7
+ $session_id = page.driver.browser.session_id
8
+ end
5
9
 
6
- $fail_count ||= 0
10
+ if scenario.failed?
7
11
  $fail_count = $fail_count + 1
8
12
 
9
13
  # Tell Cucumber to quit after first failing scenario when stop_on_error is
@@ -5,6 +5,7 @@ require 'quke/configuration'
5
5
  require 'quke/driver_configuration'
6
6
  require 'quke/driver_registration'
7
7
  require 'browserstack/local'
8
+ require 'quke/browserstack_status_reporter'
8
9
 
9
10
  unless Quke::Quke.config.app_host.empty?
10
11
  Capybara.app_host = Quke::Quke.config.app_host
@@ -14,6 +15,12 @@ driver_config = Quke::DriverConfiguration.new(Quke::Quke.config)
14
15
  driver_reg = Quke::DriverRegistration.new(driver_config, Quke::Quke.config)
15
16
  driver = driver_reg.register(Quke::Quke.config.driver)
16
17
 
18
+ # We need bs_local to be declared outside of the AfterConfiguration block below
19
+ # so that it's available in the at_exit block.
20
+ # Did try simply calling it @bs_local inside the AfterConfiguration but that
21
+ # just kept causing Quke to crash immediately (shrug!)
22
+ bs_local = nil
23
+
17
24
  Capybara.default_driver = driver
18
25
  Capybara.javascript_driver = driver
19
26
 
@@ -62,9 +69,21 @@ end
62
69
 
63
70
  # This is the very last thing Cucumber calls that we can hook onto. Typically
64
71
  # used for final cleanup, we make use of it to kill our browserstack local
65
- # testing binary
72
+ # testing binary, and update the status of the session in browserstack
66
73
  at_exit do
67
- if Quke::Quke.config.browserstack.test_locally?
74
+ if $fail_count && Quke::Quke.config.browserstack.using_browserstack?
75
+ reporter = Quke::BrowserstackStatusReporter.new(Quke::Quke.config.browserstack)
76
+ begin
77
+ if $fail_count == 0
78
+ puts reporter.passed($session_id)
79
+ else
80
+ puts reporter.failed($session_id)
81
+ end
82
+ rescue StandardError => err
83
+ puts err
84
+ end
85
+ end
86
+ if bs_local && Quke::Quke.config.browserstack.test_locally?
68
87
  # stop the local instance
69
88
  bs_local.stop
70
89
  end
@@ -1,5 +1,6 @@
1
1
  require 'quke/version'
2
2
  require 'quke/browserstack_configuration'
3
+ require 'quke/browserstack_status_reporter'
3
4
  require 'quke/configuration'
4
5
  require 'quke/cuke_runner'
5
6
  require 'quke/driver_registration'
@@ -13,7 +13,10 @@ module Quke #:nodoc:
13
13
 
14
14
  # To use local testing users must provide a key. They will find this in
15
15
  # Browserstack once logged in under settings. Its typically the same value
16
- # as the auth_key above
16
+ # as the auth_key above.
17
+ # If you don't want to put this credential in the config file (because you
18
+ # want to commit it to source control), Quke will also check for the
19
+ # existance of the environment variable BROWSERSTACK_LOCAL_KEY
17
20
  attr_reader :local_key
18
21
 
19
22
  # Capabilities are what configure the test in browserstack, for example
@@ -39,20 +42,25 @@ module Quke #:nodoc:
39
42
 
40
43
  # Initialize's the instance based in the +Quke::Configuration+ instance
41
44
  # passed in.
42
- #
45
+ #--
46
+ # rubocop:disable Metrics/AbcSize
43
47
  # rubocop:disable Metrics/CyclomaticComplexity
48
+ # rubocop:disable Metrics/PerceivedComplexity
49
+ #++
44
50
  def initialize(configuration)
45
51
  @using_browserstack = configuration.data['driver'] == 'browserstack'
46
52
  data = validate_input_data(configuration.data)
47
53
  @username = ENV['BROWSERSTACK_USERNAME'] || data['username'] || ''
48
54
  @auth_key = ENV['BROWSERSTACK_AUTH_KEY'] || data['auth_key'] || ''
49
- @local_key = data['local_key'] || ''
55
+ @local_key = ENV['BROWSERSTACK_LOCAL_KEY'] || data['local_key'] || ''
50
56
  @capabilities = data['capabilities'] || {}
51
57
  determine_local_testing_args(configuration)
52
58
  end
59
+ # rubocop:enable Metrics/AbcSize
53
60
  # rubocop:enable Metrics/CyclomaticComplexity
61
+ # rubocop:enable Metrics/PerceivedComplexity
54
62
 
55
- # Return true if the +browserstack.local: true+ value has been set in the
63
+ # Return true if the +browserstack.local+ value has been set to true in the
56
64
  # +.config.yml+ file and the driver is set to 'browserstack', else false.
57
65
  #
58
66
  # It is used when determing whether to start and stop the binary
@@ -67,7 +75,7 @@ module Quke #:nodoc:
67
75
  # to use in order to correctly determine is the browserstack local testing
68
76
  # binary needs to be stopped and started for the tests.
69
77
  #
70
- # However it also serves as a clean and simple way ton determine if
78
+ # However it also serves as a clean and simple way to determine if
71
79
  # browserstack is the selected dribver.
72
80
  def using_browserstack?
73
81
  @using_browserstack
@@ -0,0 +1,73 @@
1
+ module Quke #:nodoc:
2
+
3
+ # Used to update the status of a session in Browserstack to mark it as passed
4
+ # or failed. It does this by making a PUT request to Browserstack's REST API
5
+ # requesting the status of a specified session is set to 'passed' or 'failed'
6
+ # (only those values are accepted).
7
+ #
8
+ # https://www.browserstack.com/automate/rest-api
9
+ #
10
+ # A session ID is only available when we configure Quke to work with
11
+ # Browserstack, and can only be obtained when in the context of running a
12
+ # scenario. It's unique to the overall session (it doesn't change for each
13
+ # scenario or feature), but we have to set it as a global variable in
14
+ # after_hook.rb in order to access it in the after_exit block in env.rb
15
+ class BrowserstackStatusReporter
16
+
17
+ # Initialize's the instance based in the +Quke::BrowserstackConfiguration+
18
+ # instance passed in.
19
+ #
20
+ # The values its interested in are username and auth_key as it will use
21
+ # these to authenticate with Browserstacks REST API.
22
+ def initialize(config)
23
+ @username = config.username
24
+ @auth_key = config.auth_key
25
+ end
26
+
27
+ # Connects to the Browserstack REST API and makes a PUT request to update
28
+ # the session with the matching +session_id+ to 'passed'.
29
+ #
30
+ # It returns a string which can be used as a message for output confirming
31
+ # the action.
32
+ def passed(session_id)
33
+ check_before_update(session_id, status: 'passed')
34
+ "Browserstack session #{session_id} status set to \e[32mpassed\e[0m 😀"
35
+ end
36
+
37
+ # Connects to the Browserstack REST API and makes a PUT request to update
38
+ # the session with the matching +session_id+ to 'failed'.
39
+ #
40
+ # It returns a string which can be used as a message for output confirming
41
+ # the action.
42
+ def failed(session_id)
43
+ check_before_update(session_id, status: 'failed')
44
+ "Browserstack session #{session_id} status set to \e[31mfailed\e[0m 😢"
45
+ end
46
+
47
+ private
48
+
49
+ def check_before_update(session_id, body)
50
+ raise(ArgumentError, 'Need a session ID to update browserstack status') if session_id.nil?
51
+
52
+ uri = URI("https://www.browserstack.com/automate/sessions/#{session_id}.json")
53
+ set_status(uri, body)
54
+ end
55
+
56
+ def set_status(uri, body)
57
+ request = Net::HTTP::Put.new(uri)
58
+ request.basic_auth @username, @auth_key
59
+ request.content_type = 'application/json'
60
+ request.body = body.to_json
61
+
62
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
63
+ http.request(request)
64
+ end
65
+
66
+ return if response.is_a? Net::HTTPSuccess
67
+
68
+ raise(StandardError, "Failed to update browserstack status: #{uri}")
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -152,6 +152,18 @@ module Quke #:nodoc:
152
152
  proxy['host'] != ''
153
153
  end
154
154
 
155
+ # Return the hash of +custom+ server settings
156
+ #
157
+ # This returns a hash of all the key/values in the custom section of your
158
+ # +.config.yml+ file. You can then access it in your steps/page objects with
159
+ #
160
+ # Quke::Quke.config.custom["default_org_name"] # = "Testy Ltd"
161
+ # Quke::Quke.config.custom["accounts"]["account2"]["username"] # = "john.doe@example.gov.uk"
162
+ # Quke::Quke.config.custom["urls"]["front_office"] # = "http://myservice.service.gov.uk"
163
+ #
164
+ # As long as what you add is valid YAML (check with a tool like
165
+ # http://www.yamllint.com/) Quke will be able to pick it up and make it
166
+ # available in your tests.
155
167
  def custom
156
168
  @data['custom']
157
169
  end
@@ -22,8 +22,8 @@ module Quke #:nodoc:
22
22
  # - +-r 'lib/features'+, tells Cucumber to require our features folder.
23
23
  # This is how we get it to use our +env.rb+ which handles all the
24
24
  # setup on behalf of the user (the point of Quke) to do things like
25
- # use Browserstack, or switch between running against Chrom or firefox
26
- # locally
25
+ # use Browserstack, or switch between running against Chrome or
26
+ # firefox locally
27
27
  # - +-r my_features_folder+, if you specify a different folder for
28
28
  # or wish to test just specific features, you are required by Cucumber
29
29
  # to also require the folder which contains your steps
@@ -35,7 +35,7 @@ module Quke #:nodoc:
35
35
  # will take the next argument from that position, not from where the gem
36
36
  # currently sits. This means to Cucumber 'lib/features' doesn't exist,
37
37
  # which means our env.rb never gets loaded. Instead we first have to
38
- # determing where this file is running from when called, then we simply
38
+ # determine where this file is running from when called, then we simply
39
39
  # replace the last part of that result (which we know will be lib/quke)
40
40
  # with lib/features. We then pass this full path to Cucumber so it can
41
41
  # correctly find the folder holding our predefined env.rb file.
@@ -1,3 +1,3 @@
1
1
  module Quke #:nodoc:
2
- VERSION = '0.5.0'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -95,11 +95,11 @@ Gem::Specification.new do |spec|
95
95
  spec.add_dependency 'browserstack-local'
96
96
 
97
97
  spec.add_development_dependency 'bundler', '~> 1.12'
98
- spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.6'
99
98
  spec.add_development_dependency 'github_changelog_generator', '~> 1.13'
100
99
  spec.add_development_dependency 'rake', '~> 10.5'
101
100
  spec.add_development_dependency 'rdoc', '~> 4.2'
102
101
  spec.add_development_dependency 'rspec', '~> 3.5'
103
- spec.add_development_dependency 'simplecov', '~> 0.12'
102
+ spec.add_development_dependency 'simplecov', '~> 0.13'
103
+ spec.add_development_dependency 'webmock', '~> 3.1'
104
104
  end
105
105
  # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Cruikshanks
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-06 00:00:00.000000000 Z
11
+ date: 2017-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '1.12'
153
- - !ruby/object:Gem::Dependency
154
- name: codeclimate-test-reporter
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '0.6'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '0.6'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: github_changelog_generator
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -226,14 +212,28 @@ dependencies:
226
212
  requirements:
227
213
  - - "~>"
228
214
  - !ruby/object:Gem::Version
229
- version: '0.12'
215
+ version: '0.13'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.13'
223
+ - !ruby/object:Gem::Dependency
224
+ name: webmock
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '3.1'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
- version: '0.12'
236
+ version: '3.1'
237
237
  description: Quke tries to simplify the process of writing and running acceptance
238
238
  tests by setting up Cucumber for you. It handles the config to allow you to run
239
239
  your tests in Firefox and Chrome, or the headless browser PhantomJS. It also has
@@ -246,6 +246,7 @@ executables:
246
246
  extensions: []
247
247
  extra_rdoc_files: []
248
248
  files:
249
+ - ".browserstack.yml"
249
250
  - ".codeclimate.yml"
250
251
  - ".config.example.yml"
251
252
  - ".gitignore"
@@ -266,6 +267,7 @@ files:
266
267
  - lib/features/support/env.rb
267
268
  - lib/quke.rb
268
269
  - lib/quke/browserstack_configuration.rb
270
+ - lib/quke/browserstack_status_reporter.rb
269
271
  - lib/quke/configuration.rb
270
272
  - lib/quke/cuke_runner.rb
271
273
  - lib/quke/driver_configuration.rb