decidim-dev 0.27.10 → 0.28.0.rc4

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/dummy_resources/create_dummy_resource.rb +0 -1
  3. data/app/events/decidim/dummy_resources/dummy_resource_event.rb +10 -0
  4. data/app/jobs/decidim/dummy_resources/hide_all_created_by_author_job.rb +13 -0
  5. data/app/models/decidim/dummy_resources/application_record.rb +9 -0
  6. data/app/models/decidim/dummy_resources/coauthorable_dummy_resource.rb +10 -0
  7. data/app/models/decidim/dummy_resources/dummy_resource.rb +93 -0
  8. data/app/models/decidim/dummy_resources/nested_dummy_resource.rb +10 -0
  9. data/app/packs/src/decidim/dev/accessibility.js +3 -3
  10. data/app/packs/src/decidim/dev/test/custom_map_factory.js +1 -1
  11. data/app/packs/stylesheets/decidim/dev/_accessibility.scss +24 -24
  12. data/app/packs/stylesheets/decidim/dev/_map.scss +10 -0
  13. data/app/packs/stylesheets/decidim/dev.scss +1 -0
  14. data/app/presenters/decidim/dummy_resources/official_author_presenter.rb +33 -0
  15. data/app/serializers/decidim/dummy_resources/dummy_serializer.rb +21 -0
  16. data/app/views/decidim/dummy_resources/dummy_resources/show.html.erb +22 -12
  17. data/config/locales/ar.yml +0 -1
  18. data/config/locales/bg.yml +0 -9
  19. data/config/locales/de.yml +1 -1
  20. data/config/locales/el.yml +0 -1
  21. data/config/locales/en.yml +1 -1
  22. data/config/locales/es-MX.yml +1 -1
  23. data/config/locales/es-PY.yml +1 -1
  24. data/config/locales/eu.yml +3 -3
  25. data/config/locales/gl.yml +0 -1
  26. data/config/locales/hu.yml +2 -3
  27. data/config/locales/id-ID.yml +0 -1
  28. data/config/locales/it.yml +0 -1
  29. data/config/locales/lv.yml +0 -1
  30. data/config/locales/nl.yml +0 -1
  31. data/config/locales/no.yml +0 -1
  32. data/config/locales/pl.yml +0 -9
  33. data/config/locales/pt-BR.yml +0 -9
  34. data/config/locales/pt.yml +0 -1
  35. data/config/locales/ru.yml +0 -1
  36. data/config/locales/sk.yml +0 -1
  37. data/config/locales/sv.yml +1 -2
  38. data/config/locales/tr-TR.yml +0 -1
  39. data/config/locales/zh-CN.yml +0 -1
  40. data/config/rubocop/disabled.yml +11 -0
  41. data/config/rubocop/faker.yml +480 -0
  42. data/config/rubocop/rails.yml +105 -0
  43. data/config/rubocop/rspec.yml +69 -0
  44. data/config/rubocop/ruby.yml +1207 -0
  45. data/lib/decidim/dev/assets/import_participatory_space_private_users.csv +2 -2
  46. data/lib/decidim/dev/assets/import_participatory_space_private_users_invalid_col_sep.csv +2 -0
  47. data/lib/decidim/dev/assets/import_participatory_space_private_users_nok.csv +2 -2
  48. data/lib/decidim/dev/assets/import_participatory_space_private_users_with_bom.csv +1 -1
  49. data/lib/decidim/dev/assets/iso-8859-15.md +1 -1
  50. data/lib/decidim/dev/assets/participatory_text.md +4 -2
  51. data/lib/decidim/dev/assets/verify_user_groups.csv +22 -22
  52. data/lib/decidim/dev/engine.rb +4 -3
  53. data/lib/decidim/dev/test/factories.rb +3 -5
  54. data/lib/decidim/dev/test/form_to_param_shared_examples.rb +1 -1
  55. data/lib/decidim/dev/test/promoted_participatory_processes_shared_examples.rb +9 -9
  56. data/lib/decidim/dev/test/rspec_support/accessibility_examples.rb +119 -1
  57. data/lib/decidim/dev/test/rspec_support/attachment_helpers.rb +2 -2
  58. data/lib/decidim/dev/test/rspec_support/bullet.rb +32 -0
  59. data/lib/decidim/dev/test/rspec_support/capybara.rb +26 -25
  60. data/lib/decidim/dev/test/rspec_support/cell_matchers.rb +1 -1
  61. data/lib/decidim/dev/test/rspec_support/component.rb +1 -311
  62. data/lib/decidim/dev/test/rspec_support/component_context.rb +10 -10
  63. data/lib/decidim/dev/test/rspec_support/confirmation_helpers.rb +18 -14
  64. data/lib/decidim/dev/test/rspec_support/data_consent.rb +2 -2
  65. data/lib/decidim/dev/test/rspec_support/dynamic_attach.rb +19 -4
  66. data/lib/decidim/dev/test/rspec_support/editor_context.rb +35 -0
  67. data/lib/decidim/dev/test/rspec_support/engine_examples.rb +15 -0
  68. data/lib/decidim/dev/test/rspec_support/filters.rb +11 -0
  69. data/lib/decidim/dev/test/rspec_support/forms_validations.rb +20 -0
  70. data/lib/decidim/dev/test/rspec_support/geocoder.rb +3 -3
  71. data/lib/decidim/dev/test/rspec_support/helpers.rb +187 -34
  72. data/lib/decidim/dev/test/rspec_support/imports_controller_shared_examples.rb +11 -11
  73. data/lib/decidim/dev/test/rspec_support/tom_select.rb +26 -0
  74. data/lib/decidim/dev/test/rspec_support/translation_helpers.rb +8 -8
  75. data/lib/decidim/dev/test/rspec_support/warden.rb +1 -1
  76. data/lib/decidim/dev/test/rspec_support/webmock.rb +1 -1
  77. data/lib/decidim/dev/test/rspec_support/webpacker.rb +4 -22
  78. data/lib/decidim/dev/test/spec_helper.rb +14 -3
  79. data/lib/decidim/dev/test/w3c_rspec_validators_overrides.rb +1 -5
  80. data/lib/decidim/dev/version.rb +1 -1
  81. data/lib/decidim/dev.rb +9 -0
  82. data/lib/decidim/dummy_resources/admin.rb +8 -0
  83. data/lib/decidim/dummy_resources/admin_engine.rb +43 -0
  84. data/lib/decidim/dummy_resources/component.rb +94 -0
  85. data/lib/decidim/dummy_resources/engine.rb +28 -0
  86. data/lib/decidim/dummy_resources.rb +20 -0
  87. data/lib/tasks/lighthouse_report.rake +29 -7
  88. data/rubocop-decidim.yml +13 -0
  89. metadata +117 -93
  90. data/config/locales/he-IL.yml +0 -1
  91. data/decidim-dev.gemspec +0 -58
  92. data/lib/decidim/dev/test/rspec_support/capybara_data_picker.rb +0 -36
  93. data/lib/decidim/dev/test/rspec_support/capybara_scopes_picker.rb +0 -92
  94. data/lib/decidim/dev/test/rspec_support/concurrency.rb +0 -23
  95. data/lib/decidim/dev/test/rspec_support/decidim_sanitization.rb +0 -5
@@ -1,2 +1,2 @@
1
- my_user@example.org,My User Name
2
- my_private_user@example.org,My Private User Name
1
+ john.doe@example.org;John Doe
2
+ jane.doe@example.org;Jane Doe
@@ -0,0 +1,2 @@
1
+ john.doe@example.org,John Doe
2
+ jane.doe@example.org,Jane Doe
@@ -1,2 +1,2 @@
1
- my_user@example.org,My User (Name)
2
- my_private_user@example.org,My Private User Name
1
+ john.doe@example.org;John Doe (Roe)
2
+ jane.doe@example.org;Jane Doe
@@ -1 +1 @@
1
- my_user@example.org,My User Name
1
+ john.doe@example.org;John Doe
@@ -1,4 +1,4 @@
1
1
  This file is saved in ISO-8859-1 encoding and contains the following non ASCII characters:
2
+
2
3
  - ca: can��, cami�, votar�, seg�ent
3
4
  - es: espa�a
4
-
@@ -1,3 +1,5 @@
1
+ <!-- markdown-lint-disable-file single-h1 -->
2
+
1
3
  # The great title for a new law
2
4
 
3
5
  ## A co-creation process to create creative creations
@@ -27,8 +29,8 @@ When an organization finishes a co-creation process, the accountability process
27
29
  blah, blah, blah...
28
30
 
29
31
  1. one
30
- 2. two
31
- 3. three
32
+ 1. two
33
+ 1. three
32
34
 
33
35
  ### Following up accounted results
34
36
 
@@ -1,22 +1,22 @@
1
- Email,,,,,,
2
- my_usergroup@example.org,,,,,,
3
- ,,,,,,
4
- ,,,,,,
5
- ,,,,,,
6
- ,,,,,,
7
- ,,,,,,
8
- ,,,,,,
9
- ,,,,,,
10
- ,,,,,,
11
- ,,,,,,
12
- ,,,,,,
13
- ,,,,,,
14
- ,,,,,,
15
- ,,,,,,
16
- ,,,,,,
17
- ,,,,,,
18
- ,,,,,,
19
- ,,,,,,
20
- ,,,,,,
21
- ,,,,,,
22
- ,,,,,,
1
+ Email;;;;;;
2
+ acme@example.org;;;;;;
3
+ ;;;;;;
4
+ ;;;;;;
5
+ ;;;;;;
6
+ ;;;;;;
7
+ ;;;;;;
8
+ ;;;;;;
9
+ ;;;;;;
10
+ ;;;;;;
11
+ ;;;;;;
12
+ ;;;;;;
13
+ ;;;;;;
14
+ ;;;;;;
15
+ ;;;;;;
16
+ ;;;;;;
17
+ ;;;;;;
18
+ ;;;;;;
19
+ ;;;;;;
20
+ ;;;;;;
21
+ ;;;;;;
22
+ ;;;;;;
@@ -8,9 +8,10 @@ module Decidim
8
8
  engine_name "decidim_dev"
9
9
 
10
10
  initializer "decidim_dev.tools" do
11
- ActiveSupport.on_load :action_controller do
12
- ActionController::Base.include Decidim::Dev::NeedsDevelopmentTools
13
- end
11
+ # Disable if the boost performance mode is enabled
12
+ next if Rails.application.config.try(:boost_performance)
13
+
14
+ ActiveSupport.on_load(:action_controller) { include Decidim::Dev::NeedsDevelopmentTools }
14
15
  end
15
16
 
16
17
  initializer "decidim_dev.webpacker.assets_path" do
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "decidim/components/namer"
4
+
3
5
  FactoryBot.define do
4
6
  factory :dummy_component, parent: :component do
5
- transient do
6
- skip_injection { false }
7
- end
8
-
9
- name { generate_component_name(participatory_space.organization.available_locales, :dummy, skip_injection: skip_injection) }
7
+ name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :surveys).i18n_name }
10
8
  manifest_name { :dummy }
11
9
  end
12
10
  end
@@ -4,7 +4,7 @@ shared_examples "form to param" do |options|
4
4
  method_name = options[:method_name] || :to_param
5
5
 
6
6
  describe "##{method_name}" do
7
- subject { described_class.new(id: id) }
7
+ subject { described_class.new(id:) }
8
8
 
9
9
  context "with actual ID" do
10
10
  let(:id) { double }
@@ -9,14 +9,14 @@ shared_examples "with promoted participatory processes and groups" do
9
9
  it "includes promoted participatory processes and groups placing groups in first place" do
10
10
  create(
11
11
  :participatory_process_group,
12
- organization: organization
12
+ organization:
13
13
  )
14
14
 
15
15
  unpromoted_process = create(
16
16
  :participatory_process,
17
17
  :with_steps,
18
18
  :published,
19
- organization: organization
19
+ organization:
20
20
  )
21
21
  unpromoted_process.active_step.update!(end_date: Time.current.advance(days: 1))
22
22
 
@@ -25,14 +25,14 @@ shared_examples "with promoted participatory processes and groups" do
25
25
  :with_steps,
26
26
  :published,
27
27
  :promoted,
28
- organization: organization
28
+ organization:
29
29
  )
30
30
  promoted_process.active_step.update!(end_date: Time.current.advance(days: 2))
31
31
 
32
32
  promoted_group = create(
33
33
  :participatory_process_group,
34
34
  :promoted,
35
- organization: organization
35
+ organization:
36
36
  )
37
37
 
38
38
  _external_promoted_group = create(
@@ -51,14 +51,14 @@ shared_examples "with promoted participatory processes and groups" do
51
51
  :with_steps,
52
52
  :unpublished,
53
53
  :promoted,
54
- organization: organization
54
+ organization:
55
55
  )
56
56
 
57
57
  create(
58
58
  :participatory_process,
59
59
  :with_steps,
60
60
  :unpublished,
61
- organization: organization
61
+ organization:
62
62
  )
63
63
 
64
64
  last =
@@ -67,7 +67,7 @@ shared_examples "with promoted participatory processes and groups" do
67
67
  :with_steps,
68
68
  :published,
69
69
  :promoted,
70
- organization: organization
70
+ organization:
71
71
  )
72
72
 
73
73
  last.active_step.update!(end_date: nil)
@@ -78,7 +78,7 @@ shared_examples "with promoted participatory processes and groups" do
78
78
  :with_steps,
79
79
  :published,
80
80
  :promoted,
81
- organization: organization,
81
+ organization:,
82
82
  end_date: Time.current.advance(days: 10)
83
83
  )
84
84
 
@@ -90,7 +90,7 @@ shared_examples "with promoted participatory processes and groups" do
90
90
  :with_steps,
91
91
  :published,
92
92
  :promoted,
93
- organization: organization,
93
+ organization:,
94
94
  end_date: Time.current.advance(days: 8)
95
95
  )
96
96
 
@@ -1,5 +1,123 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ module AxeMatchers
4
+ def self.axe_version
5
+ @axe_version ||= begin
6
+ package = JSON.load_file(Rails.root.join("node_modules/axe-core/package.json"))
7
+ package["version"]
8
+ end
9
+ end
10
+
11
+ def self.axe_mainline_version
12
+ @axe_mainline_version ||= axe_version.split(".")[0..1].join(".")
13
+ end
14
+
15
+ class ResultFormatter
16
+ def initialize(result)
17
+ @result = result
18
+ @violations = result["violations"]
19
+ end
20
+
21
+ def format
22
+ <<~MESSAGE
23
+
24
+ Found #{violations.count} accessibility #{violations.count == 1 ? "violation" : "violations"}:
25
+
26
+ #{violation_messages.join("\n")}
27
+ MESSAGE
28
+ end
29
+
30
+ def violation_messages
31
+ violations.each_with_index.map do |violation, index|
32
+ nodes = violation["nodes"]
33
+ [
34
+ "#{index + 1}) #{violation["id"]}: #{violation["help"]} (#{violation["impact"]})",
35
+ indent_lines(violation["helpUrl"], 1),
36
+ indent_lines("The following #{nodes.length} #{nodes.length == 1 ? "node" : "nodes"} violate this rule:", 1),
37
+ "",
38
+ indent_lines(node_messages_for(nodes), 2),
39
+ ""
40
+ ]
41
+ end.flatten
42
+ end
43
+
44
+ private
45
+
46
+ attr_reader :result, :violations
47
+
48
+ def indent_lines(lines, indent_level = 1)
49
+ indent = " " * indent_level
50
+ Array(lines).flatten.map { |line| line.length.positive? ? "#{indent}#{line}" : "" }.join("\n")
51
+ end
52
+
53
+ def node_messages_for(nodes)
54
+ nodes.map do |node|
55
+ [
56
+ "Selector: #{Array(node["target"]).join(", ")}",
57
+ ("HTML: #{node["html"].gsub(/^\s*|\n*/, "")}" unless node["html"].nil?),
58
+ fix(node["all"], "Fix all of the following:"),
59
+ fix(node["none"], "Fix all of the following:"),
60
+ fix(node["any"], "Fix any of the following:")
61
+ ].compact.presence.tap { |messages| messages&.push("") }
62
+ end.compact
63
+ end
64
+
65
+ def fix(checks, message)
66
+ valid_checks = checks.compact
67
+ [
68
+ (message unless valid_checks.empty?),
69
+ *valid_checks.map { |check| "- #{check["message"]}" }
70
+ ].compact
71
+ end
72
+ end
73
+
74
+ class BeAxeClean
75
+ def matches?(page)
76
+ @results = execute_axe(page)
77
+ results["violations"].count.zero?
78
+ end
79
+
80
+ def failure_message
81
+ ResultFormatter.new(results).format
82
+ end
83
+
84
+ def failure_message_when_negated
85
+ "Expected to find accessibility violations. None were detected."
86
+ end
87
+
88
+ private
89
+
90
+ attr_reader :results
91
+
92
+ def execute_axe(page)
93
+ load_axe(page)
94
+
95
+ script = <<-JS
96
+ var callback = arguments[arguments.length - 1];
97
+ var context = document;
98
+ var options = {};
99
+ axe.run(context, options).then(res => JSON.parse(JSON.stringify(res))).then(callback);
100
+ JS
101
+ page = page.driver if page.respond_to?("driver")
102
+ page = page.browser if page.respond_to?("browser") && !page.browser.is_a?(::Symbol)
103
+ page.execute_async_script(script)
104
+ end
105
+
106
+ def load_axe(page)
107
+ jslib = Rails.root.join("node_modules/axe-core/axe.min.js")
108
+ page.execute_script jslib.read
109
+ end
110
+ end
111
+
112
+ def be_axe_clean
113
+ BeAxeClean.new
114
+ end
115
+ end
116
+
117
+ RSpec.configure do |config|
118
+ config.include AxeMatchers
119
+ end
120
+
3
121
  shared_examples_for "accessible page" do
4
122
  it "passes accessibility tests" do
5
123
  expect(page).to be_axe_clean
@@ -7,7 +125,7 @@ shared_examples_for "accessible page" do
7
125
 
8
126
  it "passes HTML validation" do
9
127
  # Capybara is stripping the doctype out of the HTML which is required for
10
- # the validation. If it doesn't exist, add it there.
128
+ # the validation. If it does not exist, add it there.
11
129
  html = page.source
12
130
  html = "<!DOCTYPE html>\n#{html}" unless html.strip.match?(/^<!DOCTYPE/i)
13
131
 
@@ -18,8 +18,8 @@ module AttachmentHelpers
18
18
 
19
19
  blob = ActiveStorage::Blob.create_and_upload!(
20
20
  io: File.open(file),
21
- filename: filename,
22
- content_type: content_type
21
+ filename:,
22
+ content_type:
23
23
  )
24
24
  return blob if options[:return_blob]
25
25
 
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bullet"
4
+
5
+ RSpec.configure do |config|
6
+ Decidim::ApplicationJob.include(Bullet::ActiveJob) if defined?(Bullet::ActiveJob)
7
+
8
+ Rails.application.config.after_initialize do
9
+ Bullet.enable = Decidim::Env.new("DECIDIM_BULLET_ENABLED", "true").present?
10
+ Bullet.rails_logger = true
11
+ Bullet.raise = true
12
+ Bullet.stacktrace_includes = %w(decidim-)
13
+
14
+ # Detect N+1 queries
15
+ Bullet.n_plus_one_query_enable = Decidim::Env.new("DECIDIM_BULLET_N_PLUS_ONE", "false").present?
16
+ # Detect eager-loaded associations which are not used
17
+ Bullet.unused_eager_loading_enable = Decidim::Env.new("DECIDIM_BULLET_UNUSED_EAGER", "false").present?
18
+ # Detect unnecessary COUNT queries which could be avoided with a counter_cache
19
+ Bullet.counter_cache_enable = Decidim::Env.new("DECIDIM_BULLET_COUNTER_CACHE", "true").present?
20
+ end
21
+
22
+ if Bullet.enable?
23
+ config.before(:each) do
24
+ Bullet.start_request
25
+ end
26
+
27
+ config.after(:each) do
28
+ Bullet.perform_out_of_channel_notifications if Bullet.notification?
29
+ Bullet.end_request
30
+ end
31
+ end
32
+ end
@@ -6,7 +6,7 @@ module Decidim
6
6
  # Helpers meant to be used only during capybara test runs.
7
7
  module CapybaraTestHelpers
8
8
  def switch_to_host(host = "lvh.me")
9
- raise "Can't switch to a custom host unless it really exists. Use `whatever.lvh.me` as a workaround." unless /lvh\.me$/.match?(host)
9
+ raise "Cannot switch to a custom host unless it really exists. Use `whatever.lvh.me` as a workaround." unless /lvh\.me$/.match?(host)
10
10
 
11
11
  app_host = (host ? "#{protocol}://#{host}" : nil)
12
12
  Capybara.app_host = app_host
@@ -28,12 +28,22 @@ module Decidim
28
28
  end
29
29
  end
30
30
 
31
+ 1.step do
32
+ port = rand(5000..6999)
33
+ begin
34
+ Socket.tcp("127.0.0.1", port, connect_timeout: 5).close
35
+ rescue Errno::ECONNREFUSED
36
+ # When connection is refused, the port is available for use.
37
+ Capybara.server_port = port
38
+ break
39
+ end
40
+ end
41
+
31
42
  Capybara.register_driver :headless_chrome do |app|
32
- options = ::Selenium::WebDriver::Chrome::Options.new
43
+ options = Selenium::WebDriver::Chrome::Options.new
44
+ options.args << "--explicitly-allowed-ports=#{Capybara.server_port}"
33
45
  options.args << "--headless"
34
46
  options.args << "--no-sandbox"
35
- # Do not limit browser resources
36
- options.args << "--disable-dev-shm-usage"
37
47
  options.args << if ENV["BIG_SCREEN_SIZE"].present?
38
48
  "--window-size=1920,3000"
39
49
  else
@@ -43,27 +53,20 @@ Capybara.register_driver :headless_chrome do |app|
43
53
  Capybara::Selenium::Driver.new(
44
54
  app,
45
55
  browser: :chrome,
46
- capabilities: [options]
56
+ options:
47
57
  )
48
58
  end
49
59
 
50
- 1.step do
51
- port = rand(5000..6999)
52
- begin
53
- Socket.tcp("127.0.0.1", port, connect_timeout: 5).close
54
- warn "Port #{port} is already in use, trying another one."
55
- rescue Errno::ECONNREFUSED
56
- # When connection is refused, the port is available for use.
57
- Capybara.server_port = port
58
- break
59
- end
60
- end
61
-
60
+ # In order to work with PWA apps, Chrome cannot be run in headless mode, and requires
62
61
  # setting up special prefs and flags
63
62
  Capybara.register_driver :pwa_chrome do |app|
64
- options = ::Selenium::WebDriver::Chrome::Options.new
63
+ options = Selenium::WebDriver::Chrome::Options.new
64
+ options.args << "--explicitly-allowed-ports=#{Capybara.server_port}"
65
+ # If we have a headless browser things like the offline navigation feature stop working,
66
+ # so we need to have have a headful/recapitated (aka not headless) browser for these specs
67
+ # options.args << "--headless"
65
68
  options.args << "--no-sandbox"
66
- # Don't limit browser resources
69
+ # Do not limit browser resources
67
70
  options.args << "--disable-dev-shm-usage"
68
71
  # Add pwa.lvh.me host as a secure origin
69
72
  options.args << "--unsafely-treat-insecure-origin-as-secure=http://pwa.lvh.me:#{Capybara.server_port}"
@@ -82,22 +85,20 @@ Capybara.register_driver :pwa_chrome do |app|
82
85
  Capybara::Selenium::Driver.new(
83
86
  app,
84
87
  browser: :chrome,
85
- capabilities: [options]
88
+ options:
86
89
  )
87
90
  end
88
91
 
89
92
  Capybara.register_driver :iphone do |app|
90
- options = ::Selenium::WebDriver::Chrome::Options.new
93
+ options = Selenium::WebDriver::Chrome::Options.new
91
94
  options.args << "--headless"
92
95
  options.args << "--no-sandbox"
93
- # Do not limit browser resources
94
- options.args << "--disable-dev-shm-usage"
95
96
  options.add_emulation(device_name: "iPhone 6")
96
97
 
97
98
  Capybara::Selenium::Driver.new(
98
99
  app,
99
100
  browser: :chrome,
100
- capabilities: [options]
101
+ options:
101
102
  )
102
103
  end
103
104
 
@@ -129,7 +130,7 @@ RSpec.configure do |config|
129
130
  domain = ".#{domain}" unless domain == "localhost"
130
131
  page.driver.browser.execute_cdp(
131
132
  "Network.setCookie",
132
- domain: domain,
133
+ domain:,
133
134
  name: Decidim.consent_cookie_name,
134
135
  value: { essential: true }.to_json,
135
136
  path: "/",
@@ -4,7 +4,7 @@ module Decidim
4
4
  module CellMatchers
5
5
  RSpec::Matchers.define :render_nothing do |_expected_value|
6
6
  match do |actual_value|
7
- expect(actual_value).to have_no_selector("html")
7
+ expect(actual_value).not_to have_selector("html")
8
8
  end
9
9
 
10
10
  diffable