govuk_test 1.0.2 → 2.1.2

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