govuk_test 1.0.0 → 2.1.0

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: 8276e6e82a7ad5a58b4ce9d56708764ddbae8d2da8fbd5ffc884ce38fa7d01dd
4
- data.tar.gz: f2b427a36610b2fd4893214cbcafa9f110e80029c87d60e1a5e4270ffa180f3f
3
+ metadata.gz: 7ded68d62fdb899e1ecc47a033c38c414c5ee2871c939c7387aeba566ccfca61
4
+ data.tar.gz: 659eda878476cd8b4e8bac4bd36988fa598f2712eee90e3ef3a8fab9466f685a
5
5
  SHA512:
6
- metadata.gz: c587caff573491202172b1a267a272fe5469d7fdbe3d3b787716ca99815a7e177a4cb0d8d9d3a8c6f51fb063a3fff6a8649453f2c4c7d05b2353164f338c4bfd
7
- data.tar.gz: 30c61e499af46fc0823f379e58cdbe5ebd39c9b4ea799dfd18e4d3419de5b6ee505cb7fe755d9908c8019bdc25a82cc09229ea6bc5369e855d74903d429a5f5b
6
+ metadata.gz: 29264cb3a71621d27ec1133521723c5aa74c24aac128079b8f39e0f71bd699a50ce06c9acdb5dcdf96a54457fa59d71ec0c751451cc3d6928c38a2da6288b280
7
+ data.tar.gz: b5bce1dc80ceffc74588f9fc96d7c68064a388a326028db082c6d6dde027d324da849ce729fdbe6365046ac3fb997f557157b65434d7fdd802bd64b890cf1c87
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 2.6.6
data/CHANGELOG.md CHANGED
@@ -7,6 +7,34 @@
7
7
  useful summary for people upgrading their application, not a replication
8
8
  of the commit log.
9
9
 
10
+ ## 2.1.0
11
+
12
+ * Add pact test branch verify rake task
13
+ * Add Railtie to load rake tasks
14
+
15
+ ## 2.0.0
16
+
17
+ * BREAKING: `.configure` no longer accepts options. If you need to modify the
18
+ headless_chrome selenium driver you can re-register the driver with
19
+ `Capybara.register_driver`.
20
+ * `GovukTest.headless_chrome_selenium_options` added to allow accessing the
21
+ headless Chrome selenium options for other contexts (such as configuring
22
+ Jasmine).
23
+ * `GOVUK_TEST_CHROME_NO_SANDBOX` can be set to default Chrome to be running
24
+ with the `--no-sandbox` argument.
25
+
26
+ ## 1.0.3
27
+
28
+ * Add Brakeman as a dependency.
29
+
30
+ ## 1.0.2
31
+
32
+ * Allow new versions of 'webdrivers' above 4
33
+
34
+ ## 1.0.1
35
+
36
+ * Ensure version of 'webdrivers' is at least 4
37
+
10
38
  ## 1.0.0
11
39
 
12
40
  * 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
@@ -23,11 +23,13 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "capybara"
26
- spec.add_dependency "webdrivers"
26
+ spec.add_dependency "webdrivers", ">= 4"
27
27
  spec.add_dependency "puma"
28
28
  spec.add_dependency "selenium-webdriver", ">= 3.142"
29
+ spec.add_dependency "brakeman", "~> 4.6"
29
30
 
30
- spec.add_development_dependency "bundler", "~> 1.16"
31
- spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "bundler"
32
+ spec.add_development_dependency "climate_control"
33
+ spec.add_development_dependency "rake"
32
34
  spec.add_development_dependency "rspec"
33
35
  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.0"
2
+ VERSION = "2.1.0"
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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.1.0
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-06-21 00:00:00.000000000 Z
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: puma
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -67,33 +67,61 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.142'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: brakeman
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.16'
76
- type: :development
75
+ version: '4.6'
76
+ type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.16'
82
+ version: '4.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: climate_control
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: rake
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - "~>"
115
+ - - ">="
88
116
  - !ruby/object:Gem::Version
89
- version: '10.0'
117
+ version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - "~>"
122
+ - - ">="
95
123
  - !ruby/object:Gem::Version
96
- version: '10.0'
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rspec
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -128,7 +156,9 @@ files:
128
156
  - bin/setup
129
157
  - govuk_test.gemspec
130
158
  - lib/govuk_test.rb
159
+ - lib/govuk_test/railtie.rb
131
160
  - lib/govuk_test/version.rb
161
+ - lib/tasks/pact.rake
132
162
  homepage: https://github.com/alphagov/govuk_test
133
163
  licenses:
134
164
  - MIT
@@ -148,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
178
  - !ruby/object:Gem::Version
149
179
  version: '0'
150
180
  requirements: []
151
- rubygems_version: 3.0.3
181
+ rubygems_version: 3.1.4
152
182
  signing_key:
153
183
  specification_version: 4
154
184
  summary: Test setup for GOV.UK