govuk_test 1.0.1 → 2.1.1

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