govuk_test 1.0.2 → 2.1.2

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: 3f8eba7b1ec95fab62087227289584f0ddd640dfc79d9bf27751f260cb973e84
4
- data.tar.gz: e3920b930381b5a12c30cdc674c08071cf93d37e44d091ba7306a5218f144719
3
+ metadata.gz: f378d699ec748a453ddd32bb832380ade5ea79443f1b7c924e87a7b222d1df59
4
+ data.tar.gz: b2a57cd8d08cfd92b7b04d898c1cafbbabddce770658f6fdf45387d80fb311fa
5
5
  SHA512:
6
- metadata.gz: 8d76f7dea4a549bad5aaf35e26786332b6a8d6c8198f9013ae06138b3e39e76c025261c3799654efc5ab20f936e52aef3ad60fd5399822f258ee0a9fedd4d51d
7
- data.tar.gz: e4bf850a4b50c3939de503ec02280ea90b3610897f522e6043e526853e2749bbc78fa9a052872f57eebb54e2250bff3311cc2f3640921bc1cecbbbfc99f66be9
6
+ metadata.gz: 65d78123feab40eaecfc759d6e1902984bb786c1cfa6cfa3a3c248c1f9063557f4c8dd8046faa183f974ad1619959ad0d64055d3c3ebad3dfd76e46eae747d85
7
+ data.tar.gz: 1a9b61be599ddc06ff86ad9197591c13bdb25af331da073b424a0f225dc40875d5e5bdea62de5e05214706eeddb37bb06841c3582390e2c65bdcad0114596d30
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.2
11
+
12
+ * Mark `climate_control` as a dependency (rather than dev dependency)
13
+
14
+ ## 2.1.1
15
+
16
+ * Add `pact` as a dependency
17
+
18
+ ## 2.1.0
19
+
20
+ * Add pact test branch verify rake task
21
+ * Add Railtie to load rake tasks
22
+
23
+ ## 2.0.0
24
+
25
+ * BREAKING: `.configure` no longer accepts options. If you need to modify the
26
+ headless_chrome selenium driver you can re-register the driver with
27
+ `Capybara.register_driver`.
28
+ * `GovukTest.headless_chrome_selenium_options` added to allow accessing the
29
+ headless Chrome selenium options for other contexts (such as configuring
30
+ Jasmine).
31
+ * `GOVUK_TEST_CHROME_NO_SANDBOX` can be set to default Chrome to be running
32
+ with the `--no-sandbox` argument.
33
+
34
+ ## 1.0.3
35
+
36
+ * Add Brakeman as a dependency.
37
+
10
38
  ## 1.0.2
11
39
 
12
40
  * Allow new versions of 'webdrivers' above 4
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 "climate_control"
28
+ spec.add_dependency "pact"
27
29
  spec.add_dependency "puma"
28
30
  spec.add_dependency "selenium-webdriver", ">= 3.142"
31
+ spec.add_dependency "webdrivers", ">= 4"
29
32
 
30
- spec.add_development_dependency "bundler", "~> 1.16"
31
- spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "bundler"
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.2"
2
+ VERSION = "2.1.2"
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.2
4
+ version: 2.1.2
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-09 00:00:00.000000000 Z
11
+ date: 2021-04-07 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,33 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
- name: webdrivers
42
+ name: climate_control
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'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pact
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: puma
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,34 +94,48 @@ dependencies:
66
94
  - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '3.142'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webdrivers
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '4'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '4'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: bundler
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
- - - "~>"
115
+ - - ">="
74
116
  - !ruby/object:Gem::Version
75
- version: '1.16'
117
+ version: '0'
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
- - - "~>"
122
+ - - ">="
81
123
  - !ruby/object:Gem::Version
82
- version: '1.16'
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