govuk_test 1.0.1 → 2.1.1

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: 51b0ff248df39f6bcb9557abf95075dd7de849d0215c57d4179a3d508e0f4a9b
4
- data.tar.gz: 1874b8a7e07c528b6128ebcadb4e26804c38dfc87d037a55365382caa22a007a
3
+ metadata.gz: 8b2021278636e2efb1609e70f99d3cbf54b06570bd8f263ea0d4b1e599f4853f
4
+ data.tar.gz: 1f60fbe2f71e11b7931dfab55606cfec8b06ae68493b799ad43d7aae2d17cb2d
5
5
  SHA512:
6
- metadata.gz: 84cc8a26cba185de8d712f38d71a6a705cb88fbc7fef9616d4b593001b5c8345f44659f9f24aa9bd0fc255cb49ac46d64cf955145ed3ebb8c54e4fca5904e51c
7
- data.tar.gz: 2e8917e16d7ec2f82af56fa92cfc2f3e5b78f928d0b34a15bf454a18fe024242cc26fe7880bc9f5a0b5a099726905c154cbf89380b489c3d6cedc90ae6fe16e7
6
+ metadata.gz: 72697137ba7e4d6c0f7fc07c99505a504f59e675c20972493d75d721585cb04bca1f0702ffeb4dc17827263f27c07b788d3aacea0ffaccaecada4d87d2addc07
7
+ data.tar.gz: 9b2f6cd6e9a8b7ef0488ab8e34ad0c63784e6e1b85e5fdf8038663eca749f6baecbda540655571deb0235a4b008392d3eded383967dffe8d2e7d4a8b182e5e90
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 2.6.6
data/CHANGELOG.md CHANGED
@@ -7,6 +7,38 @@
7
7
  useful summary for people upgrading their application, not a replication
8
8
  of the commit log.
9
9
 
10
+ ## 2.1.1
11
+
12
+ * Add `pact` as a dependency
13
+
14
+ ## 2.1.0
15
+
16
+ * Add pact test branch verify rake task
17
+ * Add Railtie to load rake tasks
18
+
19
+ ## 2.0.0
20
+
21
+ * BREAKING: `.configure` no longer accepts options. If you need to modify the
22
+ headless_chrome selenium driver you can re-register the driver with
23
+ `Capybara.register_driver`.
24
+ * `GovukTest.headless_chrome_selenium_options` added to allow accessing the
25
+ headless Chrome selenium options for other contexts (such as configuring
26
+ Jasmine).
27
+ * `GOVUK_TEST_CHROME_NO_SANDBOX` can be set to default Chrome to be running
28
+ with the `--no-sandbox` argument.
29
+
30
+ ## 1.0.3
31
+
32
+ * Add Brakeman as a dependency.
33
+
34
+ ## 1.0.2
35
+
36
+ * Allow new versions of 'webdrivers' above 4
37
+
38
+ ## 1.0.1
39
+
40
+ * Ensure version of 'webdrivers' is at least 4
41
+
10
42
  ## 1.0.0
11
43
 
12
44
  * BREAKING: `.configure` accepts a `chrome_options` argument of an instance of
data/README.md CHANGED
@@ -5,36 +5,67 @@ Gem to package test dependencies and config for GOV.UK applications. Cousin of [
5
5
  ## Installation
6
6
 
7
7
  ```ruby
8
- gem 'govuk_test'
8
+ gem "govuk_test"
9
9
  ```
10
10
 
11
11
  And then execute:
12
12
 
13
- $ bundle
13
+ ```
14
+ $ bundle
15
+ ```
14
16
 
15
17
  ## Usage
16
18
 
17
- Somewhere in your `spec_helper`, `rails_helper`, or `spec/support/govuk_test.rb` put:
19
+ Somewhere in your `spec_helper.rb`, `rails_helper.rb`, or
20
+ `spec/support/govuk_test.rb` put:
18
21
 
19
- ```rb
22
+ ```ruby
20
23
  GovukTest.configure
21
24
  ```
22
25
 
23
- It's also possible to pass optional arguments `:chrome_options` and/or `:window_size `
24
- to `GovukTest.configure`:
26
+ This will configure [Capybara][] to run any JavaScript enabled tests
27
+ against a [Selenium][] driven instance of
28
+ [headless Google Chrome][headless-chrome].
25
29
 
26
- ```rb
27
- GovukTest.configure(chrome_options: { some_key: "some value" })
30
+ If you need to use this as a root user (such as within some docker containers)
31
+ you will need to set a `GOVUK_TEST_CHROME_NO_SANDBOX` environment variable.
28
32
 
29
- # or
33
+ You can reuse the Selenium options for headless Google Chrome for configuring
34
+ other Selenium driven tests, such as [Jasmine][]:
30
35
 
31
- GovukTest.configure(window_size: "1366,768")
36
+ ```ruby
37
+ class ChromeHeadlessJasmineConfigurer < JasmineSeleniumRunner::ConfigureJasmine
38
+ def selenium_options
39
+ { options: GovukTest.headless_chrome_selenium_options }
40
+ end
41
+ end
42
+ ```
32
43
 
33
- # or
44
+ Should you need to configure the options for your application the recommended
45
+ approach is to re-register the headless Google Chrome driver:
34
46
 
35
- GovukTest.configure(chrome_options: { some_key: "some value" }, window_size: "800,600")
47
+ ```ruby
48
+ GovukTest.configure
49
+
50
+ Capybara.register_driver :headless_chrome do |app|
51
+ chrome_options = GovukTest.headless_chrome_selenium_options
52
+ chrome_options.add_argument("--disable-web-security")
53
+ chrome_options.add_argument("--window-size=1400,1400")
54
+
55
+ Capybara::Selenium::Driver.new(
56
+ app,
57
+ browser: :chrome,
58
+ desired_capabilities: { acceptInsecureCerts: true },
59
+ options: chrome_options,
60
+ )
61
+ end
36
62
  ```
37
63
 
64
+ [Capybara]: https://github.com/teamcapybara/capybara
65
+ [Selenium]: https://selenium.dev
66
+ [headless-chrome]: https://developers.google.com/web/updates/2017/04/headless-chrome
67
+ [Jasmine]: https://github.com/jasmine/jasmine_selenium_runner
68
+
38
69
  ## License
39
70
 
40
71
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/govuk_test.gemspec CHANGED
@@ -22,12 +22,15 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
+ spec.add_dependency "brakeman", "~> 4.6"
25
26
  spec.add_dependency "capybara"
26
- spec.add_dependency "webdrivers", "~> 4"
27
+ spec.add_dependency "pact"
27
28
  spec.add_dependency "puma"
28
29
  spec.add_dependency "selenium-webdriver", ">= 3.142"
30
+ spec.add_dependency "webdrivers", ">= 4"
29
31
 
30
- spec.add_development_dependency "bundler", "~> 1.16"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "bundler"
33
+ spec.add_development_dependency "climate_control"
34
+ spec.add_development_dependency "rake"
32
35
  spec.add_development_dependency "rspec"
33
36
  end
data/lib/govuk_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "govuk_test/railtie" if defined?(Rails)
1
2
  require "govuk_test/version"
2
3
 
3
4
  require "capybara"
@@ -13,15 +14,21 @@ unless ENV["GOVUK_TEST_USE_SYSTEM_CHROMEDRIVER"]
13
14
  end
14
15
 
15
16
  module GovukTest
16
- def self.configure(chrome_options: nil)
17
- chrome_options ||= Selenium::WebDriver::Chrome::Options.new
18
- chrome_options.headless!
19
-
17
+ def self.configure
20
18
  Capybara.register_driver :headless_chrome do |app|
21
- Capybara::Selenium::Driver.new(app, browser: :chrome, options: chrome_options)
19
+ Capybara::Selenium::Driver.new(app,
20
+ browser: :chrome,
21
+ options: headless_chrome_selenium_options)
22
22
  end
23
23
 
24
24
  Capybara.javascript_driver = :headless_chrome
25
25
  Capybara.server = :puma, { Silent: true }
26
26
  end
27
+
28
+ def self.headless_chrome_selenium_options
29
+ Selenium::WebDriver::Chrome::Options.new.tap do |options|
30
+ options.headless!
31
+ options.add_argument("--no-sandbox") if ENV["GOVUK_TEST_CHROME_NO_SANDBOX"]
32
+ end
33
+ end
27
34
  end
@@ -0,0 +1,9 @@
1
+ require "govuk_test"
2
+
3
+ module GovukTest
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ Dir[File.expand_path('../tasks/**/*.rake', File.dirname(__FILE__))].each { |f| load f }
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukTest
2
- VERSION = "1.0.1"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -0,0 +1,19 @@
1
+ require "govuk_test"
2
+
3
+ require "pact/tasks"
4
+ require "pact/tasks/task_helper"
5
+
6
+ namespace :pact do
7
+ desc "Verify the API contract for a specific branch"
8
+ task "verify:branch", [:branch_name] => :environment do |t, args|
9
+ abort "Please provide a branch name. eg rake #{t.name}[my_feature_branch]" unless args[:branch_name]
10
+
11
+ pact_version = args[:branch_name] == "master" ? args[:branch_name] : "branch-#{args[:branch_name]}"
12
+
13
+ ClimateControl.modify(GDS_API_ADAPTERS_PACT_VERSION: pact_version) do
14
+ Pact::TaskHelper.handle_verification_failure do
15
+ Pact::TaskHelper.execute_pact_verify
16
+ end
17
+ end
18
+ end
19
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-08 00:00:00.000000000 Z
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: brakeman
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.6'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: capybara
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -25,19 +39,19 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
- name: webdrivers
42
+ name: pact
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '4'
47
+ version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '4'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: puma
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,34 +80,62 @@ dependencies:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '3.142'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webdrivers
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '4'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: bundler
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
- version: '1.16'
103
+ version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
- version: '1.16'
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: climate_control
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: rake
85
127
  requirement: !ruby/object:Gem::Requirement
86
128
  requirements:
87
- - - "~>"
129
+ - - ">="
88
130
  - !ruby/object:Gem::Version
89
- version: '10.0'
131
+ version: '0'
90
132
  type: :development
91
133
  prerelease: false
92
134
  version_requirements: !ruby/object:Gem::Requirement
93
135
  requirements:
94
- - - "~>"
136
+ - - ">="
95
137
  - !ruby/object:Gem::Version
96
- version: '10.0'
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: rspec
99
141
  requirement: !ruby/object:Gem::Requirement
@@ -128,7 +170,9 @@ files:
128
170
  - bin/setup
129
171
  - govuk_test.gemspec
130
172
  - lib/govuk_test.rb
173
+ - lib/govuk_test/railtie.rb
131
174
  - lib/govuk_test/version.rb
175
+ - lib/tasks/pact.rake
132
176
  homepage: https://github.com/alphagov/govuk_test
133
177
  licenses:
134
178
  - MIT
@@ -148,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
192
  - !ruby/object:Gem::Version
149
193
  version: '0'
150
194
  requirements: []
151
- rubygems_version: 3.0.3
195
+ rubygems_version: 3.1.4
152
196
  signing_key:
153
197
  specification_version: 4
154
198
  summary: Test setup for GOV.UK