govuk_ab_testing 2.4.1 → 2.4.3

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
- SHA1:
3
- metadata.gz: '09346724d0fd9301ab185c6b7fab44652aafb5d8'
4
- data.tar.gz: d5abd3933fec2bf06c63b37f24aa4f0cb5426af7
2
+ SHA256:
3
+ metadata.gz: 6a292ccc01842df0545f9ddfeec92414895271e6127c1cd9905ea30a152f3f58
4
+ data.tar.gz: 75d28b74e22e0efa9137e7e033daebafd697012fd9f2f17a876fc40c4ef3e66c
5
5
  SHA512:
6
- metadata.gz: 583ec0309596a8c24fb09e0df57f28850bfac7e6a6fffa77ce629cb37f1fa0af0a99384580d90c8889ac69b5c46c54c61a4e937926dab8947592673656ec4f13
7
- data.tar.gz: 0ebf9d9b58ac077a245c657d696b314dda92e5d618cc48dfea28881a16fb316d7f23833d0092f232eb526e72038d49b6baf62b355dee7f5f453301afd992b8a4
6
+ metadata.gz: 0d88b6a20a1c3ffae1bc55abb2deba0cfeec443a12c8d0adad615475de3b889c3ec502bb8bdef5d49fff548cef4bc7bf56eaf826d11322d7a4a554dd8b92c9c2
7
+ data.tar.gz: e7d98c27fa20cde80ea0ddfbe28be2f9274a6a668257b2cc266387e0db12b1a374b1dbecff1826cceb1bfd9e8aa38386a243c7437bae3eb1d4b31a32b9112525
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: /
5
+ schedule:
6
+ interval: daily
7
+ - package-ecosystem: "github-actions"
8
+ directory: /
9
+ schedule:
10
+ interval: daily
@@ -0,0 +1,36 @@
1
+ on: [push, pull_request]
2
+
3
+ jobs:
4
+ # This matrix job runs the test suite against multiple Ruby versions
5
+ test_matrix:
6
+ strategy:
7
+ fail-fast: false
8
+ matrix:
9
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
10
+ ruby: ['3.0', 3.1, 3.2]
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.ruby }}
17
+ bundler-cache: true
18
+ - run: bundle exec rake
19
+
20
+ # Branch protection rules cannot directly depend on status checks from matrix jobs.
21
+ # So instead we define `test` as a dummy job which only runs after the preceding `test_matrix` checks have passed.
22
+ # Solution inspired by: https://github.community/t/status-check-for-a-matrix-jobs/127354/3
23
+ test:
24
+ needs: test_matrix
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - run: echo "All matrix tests have passed 🚀"
28
+
29
+ publish:
30
+ needs: test
31
+ if: ${{ github.ref == 'refs/heads/main' }}
32
+ permissions:
33
+ contents: write
34
+ uses: alphagov/govuk-infrastructure/.github/workflows/publish-rubygem.yml@main
35
+ secrets:
36
+ GEM_HOST_API_KEY: ${{ secrets.ALPHAGOV_RUBYGEMS_API_KEY }}
data/.rubocop.yml CHANGED
@@ -1,2 +1,7 @@
1
- AllCops:
2
- TargetRubyVersion: 2.3
1
+ inherit_gem:
2
+ rubocop-govuk:
3
+ - config/default.yml
4
+
5
+ inherit_mode:
6
+ merge:
7
+ - Exclude
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.1
1
+ 3.0.5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 2.4.3
2
+
3
+ * Updated gem dependencies and development ruby version to 3.0.5
4
+ * Fixed new rubocop violations
5
+
6
+ ## 2.4.2
7
+
8
+ * Updated gem dependencies and development ruby version to 2.6.6
9
+ * Fixed new rubocop violations
10
+
1
11
  ## 2.4.1
2
12
 
3
13
  * Add extra validation to ActiveSupport assertions to help debug test failures.
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in govuk_ab_testing.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  Gem to help with A/B testing on the GOV.UK platform.
4
4
 
5
- ## Technical documentation
6
-
7
- ### Installation
5
+ ## Installation
8
6
 
9
7
  Add this line to your application's Gemfile:
10
8
 
@@ -16,35 +14,27 @@ And then execute:
16
14
 
17
15
  $ bundle
18
16
 
19
- ### Usage
17
+ ## Pre-requisites
20
18
 
21
19
  Before starting this, you'll need to:
22
20
 
23
- - [read the documentation](https://docs.publishing.service.gov.uk/manual/ab-testing.html) on how to set up an a/b test. The cookie and header name in [fastly-configure](https://github.com/alphagov/fastly-configure) and [CDN config](https://github.digital.cabinet-office.gov.uk/gds/cdn-configs) must match the test name parameter that you pass to the Gem. The cookie name is case-sensitive.
24
- - configure Google Analytics (guidelines to follow)
21
+ - [Read the documentation](https://docs.publishing.service.gov.uk/manual/ab-testing.html) for an overview on how a/b testing works on GOV.UK.
22
+ - The cookie and header name in [govuk-cdn-config](https://github.com/alphagov/govuk-cdn-config/blob/master/ab_tests/ab_tests.yaml) must match the test name parameter that you pass to the Gem. The cookie name is case-sensitive.
25
23
 
26
- To enable testing in the app, your Rails app needs:
24
+ ## Usage
27
25
 
28
- 1. Some piece of logic to be A/B tested
29
- 2. A HTML meta tag that will be used to measure the results, and which specifies
30
- the dimension to use in Google Analytics
31
- 3. A response HTTP header that tells Fastly you're doing an A/B test
26
+ ### Outline
32
27
 
33
- Start by defining which acceptance testing framework you will use. This gem
34
- supports both Capybara and ActiveSupport. In order to configure it, add this to
35
- your test helper file:
28
+ To enable testing in the app, your Rails app needs:
36
29
 
37
- ```
38
- GovukAbTesting.configure do |config|
39
- config.acceptance_test_framework = :capybara # or :active_support
40
- end
41
- ```
30
+ 1. [Some piece of logic to be A/B tested](#1-example-ab-test-logic)
31
+ 2. [A response HTTP header that tells Fastly you're doing an A/B test](#2-http-response-header-to-fastly)
32
+ 3. [A HTML meta tag that will be used to measure the results, and which specifies
33
+ the dimension to use in Google Analytics](#3-add-html-metatag-tags-to-your-layouts)
42
34
 
43
- If we use capybara, the gem expects `page` to be defined in the scope of the
44
- test cases. If we use ActiveSupport, the gem expects `@request` to be defined in
45
- the scope of the test cases.
35
+ ### 1. Example A/B test logic
46
36
 
47
- Now, let's say you have this controller:
37
+ Let's say you have this controller:
48
38
 
49
39
  ```ruby
50
40
  # app/controllers/party_controller.rb
@@ -73,10 +63,15 @@ end
73
63
 
74
64
  In this example, we are running a multivariate test with 3 options being
75
65
  tested: the existing version (control), and two title changes. The minimum
76
- number of variants in any test should be two.
66
+ number of variants in any test should be two.
67
+
68
+ ### 2. HTTP response header to Fastly
69
+
70
+ The `configure_response` method used in the example in `step 1` sends the response header. The header helps Fastly to understand which variant was returned to the user and cache appropriately.
71
+
72
+ ### 3. Add HTML metatag tags to your layouts
77
73
 
78
- Then, add this to your layouts, so that we have a meta tag that can be picked up
79
- by the extension and analytics.
74
+ This is for the extension and analytics.
80
75
 
81
76
  ```html
82
77
  <!-- application.html.erb -->
@@ -86,11 +81,76 @@ by the extension and analytics.
86
81
  ```
87
82
 
88
83
  The analytics meta tag will include the allowed variants so the extension knows
89
- which variants to suggest the user.
84
+ which variants to suggest to the user.
85
+
86
+ ## Running the test suite for the gem
87
+
88
+ `bundle exec rake`
89
+
90
+ ## Acceptance testing
91
+
92
+ Start by defining which acceptance testing framework you will use. This gem
93
+ supports both Capybara and ActiveSupport. In order to configure it, add this to
94
+ your test helper file:
95
+
96
+ ```
97
+ GovukAbTesting.configure do |config|
98
+ config.acceptance_test_framework = :capybara # or :active_support
99
+ end
100
+ ```
101
+
102
+ If we use capybara, the gem expects `page` to be defined in the scope of the
103
+ test cases. If we use ActiveSupport, the gem expects `@request` to be defined in
104
+ the scope of the test cases.
105
+
106
+ ### Test helpers
107
+
108
+ #### RSpec
109
+
110
+ It is also possible to use `with_variant` and all the individual setup and
111
+ assertions steps in RSpec tests. Here is an example of a Capybara feature file:
112
+
113
+ ```ruby
114
+ # spec/features/ab_testing_spec.rb
115
+ feature "Viewing a page with an A/B test" do
116
+ include GovukAbTesting::RspecHelpers
117
+
118
+ scenario "viewing the B version of the page" do
119
+ with_variant your_ab_test_name: 'B' do
120
+ visit root_path
121
+
122
+ expect(page).to have_breadcrumbs
123
+ expect(page).to have_beta_label
124
+ end
125
+ end
126
+ end
127
+ ```
128
+
129
+ And here is an RSpec controller test:
130
+
131
+ ```ruby
132
+ # spec/controllers/some_controller_spec.rb
133
+ describe SomeController, type :controller do
134
+ include GovukAbTesting::RspecHelpers
135
+
136
+ # RSpec doesn't render views for controller specs by default
137
+ render_views
90
138
 
91
- #### Test helpers
139
+ it "should render the B version of the page" do
140
+ with_variant your_ab_test_name: 'B' do
141
+ get :index
142
+ end
143
+ end
144
+ end
145
+ ```
92
146
 
93
- ##### Minitest
147
+ As with the `minitest` version, you can also pass in the following options to
148
+ `with_variant`:
149
+
150
+ - `assert_meta_tag: false`
151
+ - `dimension: <number>`
152
+
153
+ #### Minitest
94
154
 
95
155
  The most common usage of an A/B test is to serve two different variants of the
96
156
  same page. In this situation, you can test the controller using `with_variant`.
@@ -169,71 +229,22 @@ class PartyControllerTest < ActionController::TestCase
169
229
  end
170
230
  ```
171
231
 
172
- ##### RSpec
232
+ ## API documentation
173
233
 
174
- It is also possible to use `with_variant` and all the individual setup and
175
- assertions steps in RSpec tests. Here is an example of a Capybara feature file:
234
+ See [RubyDoc](http://www.rubydoc.info/gems/govuk_ab_testing) for documentation including all of the assertions for tests.
176
235
 
177
- ```ruby
178
- # spec/features/ab_testing_spec.rb
179
- feature "Viewing a page with an A/B test" do
180
- include GovukAbTesting::RspecHelpers
181
-
182
- scenario "viewing the B version of the page" do
183
- with_variant your_ab_test_name: 'B' do
184
- visit root_path
185
-
186
- expect(page).to have_breadcrumbs
187
- expect(page).to have_beta_label
188
- end
189
- end
190
- end
191
- ```
192
-
193
- And here is an RSpec controller test:
194
-
195
- ```ruby
196
- # spec/controllers/some_controller_spec.rb
197
- describe SomeController, type :controller do
198
- include GovukAbTesting::RspecHelpers
199
-
200
- # RSpec doesn't render views for controller specs by default
201
- render_views
202
-
203
- it "should render the B version of the page" do
204
- with_variant your_ab_test_name: 'B' do
205
- get :index
206
- end
207
- end
208
- end
209
- ```
210
-
211
- As with the `minitest` version, you can also pass in the following options to
212
- `with_variant`:
213
-
214
- - `assert_meta_tag: false`
215
- - `dimension: <number>`
216
-
217
- ### Running the test suite
236
+ To run a Yard server locally to preview documentation, run:
218
237
 
219
- `bundle exec rake`
238
+ $ bundle exec yard server --reload
220
239
 
221
- ### Testing in a browser
240
+ ## Checking your A/B test in a browser
222
241
 
223
242
  If you want to test this behaviour in a browser then you should use the
224
- [GOV.UK Toolkit for Chrome](https://github.com/alphagov/govuk-toolkit-chrome).
243
+ [GOV.UK Toolkit browser extension](https://github.com/alphagov/govuk-browser-extension).
225
244
 
226
245
  This detects when you have a test running on a page and enables you to choose
227
246
  between variants.
228
247
 
229
- ### Documentation
230
-
231
- See [RubyDoc](http://www.rubydoc.info/gems/govuk_ab_testing) for some limited documentation.
232
-
233
- To run a Yard server locally to preview documentation, run:
234
-
235
- $ bundle exec yard server --reload
236
-
237
248
  ## Licence
238
249
 
239
- [MIT License](LICENCE.txt)
250
+ [MIT License](LICENCE)
data/Rakefile CHANGED
@@ -1,13 +1,11 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
- require "gem_publisher"
3
+ require "rubocop/rake_task"
4
4
 
5
+ RuboCop::RakeTask.new
5
6
  RSpec::Core::RakeTask.new(:spec)
6
7
 
7
- task :default => :spec
8
+ desc "Linting for Ruby"
9
+ task lint: :rubocop
8
10
 
9
- desc "Publish gem to RubyGems"
10
- task :publish_gem do |_t|
11
- published_gem = GemPublisher.publish_if_updated("govuk_ab_testing.gemspec", :rubygems)
12
- puts "Published #{published_gem}" if published_gem
13
- end
11
+ task default: %i[lint spec]
@@ -1,7 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'govuk_ab_testing/version'
3
+ require "govuk_ab_testing/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = "govuk_ab_testing"
@@ -9,21 +8,21 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ["GOV.UK Dev"]
10
9
  spec.email = ["govuk-dev@digital.cabinet-office.gov.uk"]
11
10
 
12
- spec.summary = %q{Gem to help with A/B testing on the GOV.UK platform}
13
- spec.description = %q{Gem to help with A/B testing on the GOV.UK platform}
11
+ spec.summary = "Gem to help with A/B testing on the GOV.UK platform"
12
+ spec.description = "Gem to help with A/B testing on the GOV.UK platform"
14
13
  spec.homepage = "https://github.com/alphagov/govuk_ab_testing"
15
14
  spec.license = "MIT"
15
+ spec.required_ruby_version = ">= 3.0"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
20
  spec.bindir = "exe"
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
22
+ spec.require_paths = %w[lib]
23
23
 
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
26
- spec.add_development_dependency "govuk-lint", "~> 1.2.1"
27
- spec.add_development_dependency "yard", "~> 0.8"
28
- spec.add_development_dependency "gem_publisher", "~> 1.5.0"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "rubocop-govuk", "4.10.0"
27
+ spec.add_development_dependency "yard"
29
28
  end
@@ -1,9 +1,6 @@
1
1
  module GovukAbTesting
2
2
  class AbTest
3
- attr_reader :ab_test_name
4
- attr_reader :dimension
5
- attr_reader :allowed_variants
6
- attr_reader :control_variant
3
+ attr_reader :ab_test_name, :dimension, :allowed_variants, :control_variant
7
4
 
8
5
  alias_method :name, :ab_test_name
9
6
 
@@ -13,7 +10,7 @@ module GovukAbTesting
13
10
  # @param allowed_variants [Array] an array of Strings representing the
14
11
  # possible variants
15
12
  # @param control_variant [String] the control variant (typically 'A')
16
- def initialize(ab_test_name, dimension:, allowed_variants: %w(A B), control_variant: 'A')
13
+ def initialize(ab_test_name, dimension:, allowed_variants: %w[A B], control_variant: "A")
17
14
  @ab_test_name = ab_test_name
18
15
  @dimension = dimension
19
16
  @allowed_variants = allowed_variants
@@ -31,7 +31,7 @@ module GovukAbTesting
31
31
  assert_contains_substring(
32
32
  string: vary_header_value,
33
33
  substring: ab_test.response_header,
34
- error_message: <<-ERROR
34
+ error_message: <<-ERROR,
35
35
  The 'Vary' header is not being set for the '#{ab_test.name}' A/B test.
36
36
  You will need to use GovukAbTesting::RequestedVariant#configure_response in your controller:
37
37
 
@@ -46,7 +46,7 @@ module GovukAbTesting
46
46
  assert_does_not_contain_substring(
47
47
  string: vary_header,
48
48
  substring: ab_test_name,
49
- error_message: <<-ERROR
49
+ error_message: <<-ERROR,
50
50
  The 'Vary' header is being set by A/B test '#{ab_test_name}' on a page that should not be modified
51
51
  by the A/B test. Check for incorrect usage of GovukAbTesting::RequestedVariant#configure_response
52
52
  in your controller.
@@ -63,7 +63,7 @@ module GovukAbTesting
63
63
 
64
64
  assert_is_empty(
65
65
  enumerable: ab_test_meta_tags,
66
- error_message: <<-ERROR
66
+ error_message: <<-ERROR,
67
67
  Found the '#{ab_test_name}' A/B testing meta tag on a page that should not be modified by
68
68
  the A/B test.
69
69
 
@@ -81,7 +81,7 @@ module GovukAbTesting
81
81
  assert_has_size(
82
82
  enumerable: ab_test_meta_tags,
83
83
  size: 1,
84
- error_message: <<-ERROR
84
+ error_message: <<-ERROR,
85
85
  Incorrect number of analytics meta tags on the page for A/B test '#{ab_test.name}'.
86
86
  You may need to check usage of GovukAbTesting::RequestedVariant#analytics_meta_tag in your template(s):
87
87
 
@@ -96,7 +96,7 @@ module GovukAbTesting
96
96
  assert_is_equal(
97
97
  expected: expected_metatag_content,
98
98
  actual: meta_tag.content,
99
- error_message: <<-ERROR
99
+ error_message: <<-ERROR,
100
100
  The analytics meta tag content for A/B test '#{ab_test.name}' does not match the expected value.
101
101
  You may need to use GovukAbTesting::RequestedVariant#analytics_meta_tag in your template(s):
102
102
 
@@ -107,7 +107,7 @@ module GovukAbTesting
107
107
 
108
108
  assert_not_blank(
109
109
  string: meta_tag.dimension,
110
- error_message: <<-ERROR
110
+ error_message: <<-ERROR,
111
111
  The meta tag dimension for the '#{ab_test_name}' A/B test is blank.
112
112
  ERROR
113
113
  )
@@ -116,7 +116,7 @@ module GovukAbTesting
116
116
  assert_is_equal(
117
117
  expected: ab_test.dimension.to_s,
118
118
  actual: meta_tag.dimension.to_s,
119
- error_message: <<-ERROR
119
+ error_message: <<-ERROR,
120
120
  The analytics meta tag for the '#{ab_test.name}' A/B test does not match the expected value.
121
121
  ERROR
122
122
  )
@@ -26,7 +26,7 @@ module GovukAbTesting
26
26
  end
27
27
 
28
28
  def vary_header
29
- response.headers['Vary']
29
+ response.headers["Vary"]
30
30
  end
31
31
 
32
32
  def analytics_meta_tags_for_test(ab_test_name)
@@ -35,7 +35,7 @@ module GovukAbTesting
35
35
 
36
36
  def analytics_meta_tags
37
37
  if scope.response.body.empty?
38
- raise "Cannot find response body. If this is an RSpec Rails test, " +
38
+ raise "Cannot find response body. If this is an RSpec Rails test, " \
39
39
  "check that 'render_views' is being called."
40
40
  end
41
41
 
@@ -43,8 +43,8 @@ module GovukAbTesting
43
43
 
44
44
  tags.map do |tag|
45
45
  MetaTag.new(
46
- content: tag.attributes['content'].value,
47
- dimension: tag.attributes['data-analytics-dimension'].value
46
+ content: tag.attributes["content"].value,
47
+ dimension: tag.attributes["data-analytics-dimension"].value,
48
48
  )
49
49
  end
50
50
  end
@@ -7,6 +7,7 @@ module GovukAbTesting
7
7
  unless scope.respond_to?(:page)
8
8
  raise "Page is not defined, are you using capybara?"
9
9
  end
10
+
10
11
  @capybara_page = scope.page
11
12
  @request_headers = {}
12
13
  end
@@ -23,7 +24,7 @@ module GovukAbTesting
23
24
  end
24
25
 
25
26
  def vary_header(*)
26
- capybara_page.response_headers['Vary']
27
+ capybara_page.response_headers["Vary"]
27
28
  end
28
29
 
29
30
  def analytics_meta_tags_for_test(ab_test_name)
@@ -35,8 +36,8 @@ module GovukAbTesting
35
36
 
36
37
  tags.map do |tag|
37
38
  MetaTag.new(
38
- content: tag['content'],
39
- dimension: tag['data-analytics-dimension']
39
+ content: tag["content"],
40
+ dimension: tag["data-analytics-dimension"],
40
41
  )
41
42
  end
42
43
  end
@@ -1,7 +1,7 @@
1
1
  module GovukAbTesting
2
2
  class Configuration
3
- VALID_FRAMEWORKS = %i(capybara active_support).freeze
4
- attr_accessor :config, :acceptance_test_framework
3
+ VALID_FRAMEWORKS = %i[capybara active_support].freeze
4
+ attr_accessor :config
5
5
 
6
6
  def initialize
7
7
  @config = {}
@@ -21,16 +21,14 @@ module GovukAbTesting
21
21
  end
22
22
 
23
23
  def framework_class
24
- @framework_class ||= begin
25
- case config[:acceptance_test_framework]
26
- when :capybara
27
- then GovukAbTesting::AcceptanceTests::Capybara
28
- when :active_support
29
- then GovukAbTesting::AcceptanceTests::ActiveSupport
30
- else
31
- raise "Invalid framework #{acceptance_test_framework}"
32
- end
33
- end
24
+ @framework_class ||= case config[:acceptance_test_framework]
25
+ when :capybara
26
+ GovukAbTesting::AcceptanceTests::Capybara
27
+ when :active_support
28
+ GovukAbTesting::AcceptanceTests::ActiveSupport
29
+ else
30
+ raise "Invalid framework #{acceptance_test_framework}"
31
+ end
34
32
  end
35
33
  end
36
34
  end
@@ -56,17 +56,21 @@ module GovukAbTesting
56
56
  #
57
57
  # @param [ApplicationController::Response] the `response` in the controller
58
58
  def configure_response(response)
59
- response.headers['Vary'] = [response.headers['Vary'], ab_test.response_header].compact.join(', ')
59
+ response.headers["Vary"] = [response.headers["Vary"], ab_test.response_header].compact.join(", ")
60
60
  end
61
61
 
62
62
  # HTML meta tag used to track the results of your experiment
63
63
  #
64
64
  # @return [String]
65
65
  def analytics_meta_tag
66
- '<meta name="govuk:ab-test" ' +
67
- 'content="' + ab_test.meta_tag_name + ':' + variant_name + '" ' +
68
- 'data-analytics-dimension="' + @dimension.to_s + '" ' +
69
- 'data-allowed-variants="' + ab_test.allowed_variants.join(',') + '">'
66
+ tag = <<~HTML
67
+ <meta name="govuk:ab-test"
68
+ content="#{ab_test.meta_tag_name}:#{variant_name}"
69
+ data-analytics-dimension="#{@dimension}"
70
+ data-allowed-variants="#{ab_test.allowed_variants.join(',')}">
71
+ HTML
72
+
73
+ tag.gsub(/\n/, "")
70
74
  end
71
75
  end
72
76
  end
@@ -10,6 +10,7 @@ module GovukAbTesting
10
10
 
11
11
  def assert_does_not_contain_substring(string:, substring:, error_message:)
12
12
  return if string.nil?
13
+
13
14
  expect(string).not_to include(substring), error_message
14
15
  end
15
16
 
@@ -1,3 +1,3 @@
1
1
  module GovukAbTesting
2
- VERSION = "2.4.1".freeze
2
+ VERSION = "2.4.3".freeze
3
3
  end
@@ -1,15 +1,15 @@
1
- require 'govuk_ab_testing/version'
2
- require 'govuk_ab_testing/configuration'
3
- require 'govuk_ab_testing/requested_variant'
4
- require 'govuk_ab_testing/ab_test'
5
- require 'govuk_ab_testing/minitest_assertions'
6
- require 'govuk_ab_testing/rspec_assertions'
7
- require 'govuk_ab_testing/abstract_helpers'
8
- require 'govuk_ab_testing/minitest_helpers'
9
- require 'govuk_ab_testing/rspec_helpers'
10
- require 'govuk_ab_testing/acceptance_tests/meta_tag'
11
- require 'govuk_ab_testing/acceptance_tests/capybara'
12
- require 'govuk_ab_testing/acceptance_tests/active_support'
1
+ require "govuk_ab_testing/version"
2
+ require "govuk_ab_testing/configuration"
3
+ require "govuk_ab_testing/requested_variant"
4
+ require "govuk_ab_testing/ab_test"
5
+ require "govuk_ab_testing/minitest_assertions"
6
+ require "govuk_ab_testing/rspec_assertions"
7
+ require "govuk_ab_testing/abstract_helpers"
8
+ require "govuk_ab_testing/minitest_helpers"
9
+ require "govuk_ab_testing/rspec_helpers"
10
+ require "govuk_ab_testing/acceptance_tests/meta_tag"
11
+ require "govuk_ab_testing/acceptance_tests/capybara"
12
+ require "govuk_ab_testing/acceptance_tests/active_support"
13
13
 
14
14
  module GovukAbTesting
15
15
  ANALYTICS_META_TAG_SELECTOR = "meta[name='govuk:ab-test']".freeze
metadata CHANGED
@@ -1,85 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_ab_testing
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.3
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: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2023-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '10.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '0'
34
34
  type: :development
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: '3.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: govuk-lint
42
+ name: rubocop-govuk
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.1
47
+ version: 4.10.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.1
54
+ version: 4.10.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0.8'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0.8'
69
- - !ruby/object:Gem::Dependency
70
- name: gem_publisher
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 1.5.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 1.5.0
68
+ version: '0'
83
69
  description: Gem to help with A/B testing on the GOV.UK platform
84
70
  email:
85
71
  - govuk-dev@digital.cabinet-office.gov.uk
@@ -87,14 +73,15 @@ executables: []
87
73
  extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
76
+ - ".github/dependabot.yml"
77
+ - ".github/workflows/ci.yml"
90
78
  - ".gitignore"
91
79
  - ".rspec"
92
80
  - ".rubocop.yml"
93
81
  - ".ruby-version"
94
82
  - CHANGELOG.md
95
83
  - Gemfile
96
- - Jenkinsfile
97
- - LICENSE.txt
84
+ - LICENCE
98
85
  - README.md
99
86
  - Rakefile
100
87
  - bin/console
@@ -125,15 +112,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
112
  requirements:
126
113
  - - ">="
127
114
  - !ruby/object:Gem::Version
128
- version: '0'
115
+ version: '3.0'
129
116
  required_rubygems_version: !ruby/object:Gem::Requirement
130
117
  requirements:
131
118
  - - ">="
132
119
  - !ruby/object:Gem::Version
133
120
  version: '0'
134
121
  requirements: []
135
- rubyforge_project:
136
- rubygems_version: 2.6.13
122
+ rubygems_version: 3.4.9
137
123
  signing_key:
138
124
  specification_version: 4
139
125
  summary: Gem to help with A/B testing on the GOV.UK platform
data/Jenkinsfile DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env groovy
2
-
3
- node {
4
- def govuk = load '/var/lib/jenkins/groovy_scripts/govuk_jenkinslib.groovy'
5
- govuk.buildProject()
6
- }
File without changes