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 +4 -4
- data/.browserstack.yml +11 -0
- data/.config.example.yml +4 -1
- data/.rubocop.yml +4 -4
- data/.travis.yml +19 -11
- data/CHANGELOG.md +8 -0
- data/README.md +30 -0
- data/bin/console +2 -0
- data/lib/features/support/after_hook.rb +6 -2
- data/lib/features/support/env.rb +21 -2
- data/lib/quke.rb +1 -0
- data/lib/quke/browserstack_configuration.rb +13 -5
- data/lib/quke/browserstack_status_reporter.rb +73 -0
- data/lib/quke/configuration.rb +12 -0
- data/lib/quke/cuke_runner.rb +3 -3
- data/lib/quke/version.rb +1 -1
- data/quke.gemspec +2 -2
- metadata +20 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1912f6775017bdec69bd6e8b15f15b95829a6593910a0c27f0330fdb0f66774
|
4
|
+
data.tar.gz: 88777a66fabbd0fa786b47dd45d56a6c7a24d797f6289dd2803abc9ae058f6a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 836c1c82284d6960b2dab3ecfecfe4c6053ad2361576ff891146ace43dd2188d168a5573ca4abeb11891a574a001617a775a97fc619f46f9e7c5dfd70d7a0b57
|
7
|
+
data.tar.gz: 8c906791e4c8d0b54115de9684606dd9363eb4bf7cc92708ef7445aa0e5f9ab3dc097774f5803dd60ef7f02540c033f9af0cd606760798380b611a1b5b598332
|
data/.browserstack.yml
ADDED
data/.config.example.yml
CHANGED
@@ -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
|
data/.rubocop.yml
CHANGED
@@ -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.
|
50
|
-
# the nature of some statements
|
51
|
-
#
|
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
|
-
#
|
59
|
+
# Quke available to anywhere when the code is executed
|
60
60
|
Style/GlobalVars:
|
61
61
|
Enabled: false
|
data/.travis.yml
CHANGED
@@ -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
|
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
|
-
|
28
|
-
|
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
|
data/CHANGELOG.md
CHANGED
@@ -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.
|
data/bin/console
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'quke/configuration'
|
2
2
|
|
3
3
|
After('~@nonweb') do |scenario|
|
4
|
-
|
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
|
-
|
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
|
data/lib/features/support/env.rb
CHANGED
@@ -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.
|
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
|
data/lib/quke.rb
CHANGED
@@ -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
|
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
|
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
|
data/lib/quke/configuration.rb
CHANGED
@@ -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
|
data/lib/quke/cuke_runner.rb
CHANGED
@@ -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
|
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
|
-
#
|
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.
|
data/lib/quke/version.rb
CHANGED
data/quke.gemspec
CHANGED
@@ -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.
|
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.
|
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-
|
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.
|
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: '
|
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
|