From 602bb71e2b3681b5e341b98e646e29b20bcd5ed7 Mon Sep 17 00:00:00 2001 From: nialljames Date: Thu, 11 Dec 2025 07:31:51 +0000 Subject: [PATCH 1/8] enable safari and brave through selenium --- lib/dvla/browser/drivers/meta_drivers.rb | 38 +++++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/dvla/browser/drivers/meta_drivers.rb b/lib/dvla/browser/drivers/meta_drivers.rb index 2fec8d4..6390523 100644 --- a/lib/dvla/browser/drivers/meta_drivers.rb +++ b/lib/dvla/browser/drivers/meta_drivers.rb @@ -1,12 +1,12 @@ module DVLA module Browser module Drivers - DRIVER_REGEX = /^(?:(?headless)_)?(?(selenium_(?chrome|firefox|edge)|cuprite|apparition))$/ + DRIVER_REGEX = /^(?:(?headless)_)?(?(selenium_(?chrome|firefox|edge|safari|brave)|cuprite|apparition))$/ OTHER_ACCEPTED_PARAMS = %i[timeout browser_options save_path remote].freeze OTHER_DRIVERS = %i[cuprite apparition].freeze SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences].freeze - SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge].freeze + SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge selenium_safari selenium_brave].freeze # Creates methods in the Drivers module that matches the DRIVER_REGEX # These methods will register a Driver for use by Capybara in a test pack @@ -30,27 +30,43 @@ def self.method_missing(method, *args, **kwargs, &) end ::Capybara.register_driver method do |app| - options = Object.const_get("Selenium::WebDriver::#{browser.to_s.capitalize}::Options").new(web_socket_url: true) - options.add_argument('--disable-dev-shm-usage') - - if headless - options.add_argument('--headless') - options.add_argument('--no-sandbox') + if browser == :safari + options = Selenium::WebDriver::Safari::Options.new + elsif browser == :brave + options = Selenium::WebDriver::Chrome::Options.new(web_socket_url: true) + options.binary = '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser' + options.add_argument('--disable-dev-shm-usage') + if headless + options.add_argument('--headless') + options.add_argument('--no-sandbox') + end + else + options = Object.const_get("Selenium::WebDriver::#{browser.to_s.capitalize}::Options").new(web_socket_url: true) + options.add_argument('--disable-dev-shm-usage') + + if headless + options.add_argument('--headless') + options.add_argument('--no-sandbox') + end end browser = :remote if kwargs[:remote] kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument| argument.prepend('--') unless argument.start_with?('--') - options.add_argument(argument) + options.add_argument(argument) unless browser == :safari end kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference| key, value = preference.first - options.add_preference(key, value) + options.add_preference(key, value) unless browser == :safari end - driver_browser = kwargs[:remote] ? :remote : browser + driver_browser = if kwargs[:remote] + :remote + else + browser == :brave ? :chrome : browser + end driver_options = { browser: driver_browser, options: } driver_options[:url] = kwargs[:remote] if kwargs[:remote] From d9821b8b00b94304d0077dad47346ef419939535 Mon Sep 17 00:00:00 2001 From: nialljames Date: Fri, 12 Dec 2025 09:27:55 +0000 Subject: [PATCH 2/8] add binary argument for selenium --- CHANGELOG.md | 4 +++ lib/dvla/browser/drivers/meta_drivers.rb | 39 ++++++++---------------- lib/dvla/browser/drivers/version.rb | 2 +- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9e07de..b80b376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog All notable changes to this project will be documented in this file. +# [3.1.1] - 2025-12-12 + +- Add selenium_safari config +- Add optional binary string for Selenium # [3.1.0] - 2025-12-10 diff --git a/lib/dvla/browser/drivers/meta_drivers.rb b/lib/dvla/browser/drivers/meta_drivers.rb index 6390523..153f904 100644 --- a/lib/dvla/browser/drivers/meta_drivers.rb +++ b/lib/dvla/browser/drivers/meta_drivers.rb @@ -1,12 +1,12 @@ module DVLA module Browser module Drivers - DRIVER_REGEX = /^(?:(?headless)_)?(?(selenium_(?chrome|firefox|edge|safari|brave)|cuprite|apparition))$/ + DRIVER_REGEX = /^(?:(?headless)_)?(?(selenium_(?chrome|firefox|edge|safari)|cuprite|apparition))$/ OTHER_ACCEPTED_PARAMS = %i[timeout browser_options save_path remote].freeze OTHER_DRIVERS = %i[cuprite apparition].freeze - SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences].freeze - SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge selenium_safari selenium_brave].freeze + SELENIUM_ACCEPTED_PARAMS = %i[remote additional_arguments additional_preferences binary].freeze + SELENIUM_DRIVERS = %i[selenium_chrome selenium_firefox selenium_edge selenium_safari].freeze # Creates methods in the Drivers module that matches the DRIVER_REGEX # These methods will register a Driver for use by Capybara in a test pack @@ -32,41 +32,28 @@ def self.method_missing(method, *args, **kwargs, &) ::Capybara.register_driver method do |app| if browser == :safari options = Selenium::WebDriver::Safari::Options.new - elsif browser == :brave - options = Selenium::WebDriver::Chrome::Options.new(web_socket_url: true) - options.binary = '/Applications/Brave Browser.app/Contents/MacOS/Brave Browser' - options.add_argument('--disable-dev-shm-usage') - if headless - options.add_argument('--headless') - options.add_argument('--no-sandbox') - end else options = Object.const_get("Selenium::WebDriver::#{browser.to_s.capitalize}::Options").new(web_socket_url: true) + options.binary = kwargs[:binary] if kwargs[:binary] options.add_argument('--disable-dev-shm-usage') if headless options.add_argument('--headless') options.add_argument('--no-sandbox') end - end - - browser = :remote if kwargs[:remote] - kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument| - argument.prepend('--') unless argument.start_with?('--') - options.add_argument(argument) unless browser == :safari - end + kwargs[:additional_arguments] && kwargs[:additional_arguments].each do |argument| + argument.prepend('--') unless argument.start_with?('--') + options.add_argument(argument) + end - kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference| - key, value = preference.first - options.add_preference(key, value) unless browser == :safari + kwargs[:additional_preferences] && kwargs[:additional_preferences].each do |preference| + key, value = preference.first + options.add_preference(key, value) + end end - driver_browser = if kwargs[:remote] - :remote - else - browser == :brave ? :chrome : browser - end + driver_browser = kwargs[:remote] ? :remote : browser driver_options = { browser: driver_browser, options: } driver_options[:url] = kwargs[:remote] if kwargs[:remote] diff --git a/lib/dvla/browser/drivers/version.rb b/lib/dvla/browser/drivers/version.rb index 50eeb7c..d00e8f5 100644 --- a/lib/dvla/browser/drivers/version.rb +++ b/lib/dvla/browser/drivers/version.rb @@ -3,7 +3,7 @@ module DVLA module Browser module Drivers - VERSION = '3.1.0' + VERSION = '3.1.1' end end end From 938a1c2cd0307c6ca5161614d649eb260f6369e7 Mon Sep 17 00:00:00 2001 From: nialljames Date: Fri, 12 Dec 2025 10:58:05 +0000 Subject: [PATCH 3/8] remove headless from edge and safari --- README.md | 6 +++-- lib/dvla/browser/drivers/meta_drivers.rb | 5 ++++ spec/dvla/browser/drivers_spec.rb | 32 ++++++++++++++++-------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 11e4fcd..26da471 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,10 @@ Once installed, you are able to use any pre-configured browser driver from the l |---------------------------|----------------------------------------------------| | selenium_chrome | `DVLA::Browser::Drivers.selenium_chrome` | | headless_selenium_chrome | `DVLA::Browser::Drivers.headless_selenium_chrome` | -| selenium_edge | `DVLA::Browser::Drivers.selenium_edge` | -| headless_selenium_edge | `DVLA::Browser::Drivers.headless_selenium_edge` | | selenium_firefox | `DVLA::Browser::Drivers.selenium_firefox` | | headless_selenium_firefox | `DVLA::Browser::Drivers.headless_selenium_firefox` | +| selenium_edge | `DVLA::Browser::Drivers.selenium_edge` | +| selenium_safari | `DVLA::Browser::Drivers.selenium_safari` | ### Non-selenium drivers @@ -43,6 +43,8 @@ Once installed, you are able to use any pre-configured browser driver from the l | apparition | `DVLA::Browser::Drivers.apparition` | | headless_apparition | `DVLA::Browser::Drivers.headless_apparition` | +**Note:** Safari and Edge do not support headless mode. + --- ### Default configuration diff --git a/lib/dvla/browser/drivers/meta_drivers.rb b/lib/dvla/browser/drivers/meta_drivers.rb index 153f904..3dd01aa 100644 --- a/lib/dvla/browser/drivers/meta_drivers.rb +++ b/lib/dvla/browser/drivers/meta_drivers.rb @@ -24,6 +24,11 @@ def self.method_missing(method, *args, **kwargs, &) case driver when *SELENIUM_DRIVERS browser = matches[:browser].to_sym + + if headless && %i[safari edge].include?(browser) + LOG.warn { "#{browser.capitalize} does not support headless mode".red.bold } + headless = false + end kwargs.each do |key, _value| LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" } unless SELENIUM_ACCEPTED_PARAMS.include?(key) diff --git a/spec/dvla/browser/drivers_spec.rb b/spec/dvla/browser/drivers_spec.rb index 602c9c9..9f3d37a 100644 --- a/spec/dvla/browser/drivers_spec.rb +++ b/spec/dvla/browser/drivers_spec.rb @@ -3,32 +3,37 @@ expect(DVLA::Browser::Drivers::VERSION).not_to be nil end - it 'can create a chrome driver' do + it 'can create a Chrome driver' do DVLA::Browser::Drivers.selenium_chrome expect(Capybara.current_driver).to eq(:selenium_chrome) end - it 'can create a firefox driver' do + it 'can create a Firefox driver' do DVLA::Browser::Drivers.selenium_firefox expect(Capybara.current_driver).to eq(:selenium_firefox) end - it 'can create an edge driver' do + it 'can create an Edge driver' do DVLA::Browser::Drivers.selenium_edge expect(Capybara.current_driver).to eq(:selenium_edge) end - it 'can create a cuprite driver' do + it 'can create a Safari driver' do + DVLA::Browser::Drivers.selenium_safari + expect(Capybara.current_driver).to eq(:selenium_safari) + end + + it 'can create a Cuprite driver' do DVLA::Browser::Drivers.cuprite expect(Capybara.current_driver).to eq(:cuprite) end - it 'can create an apparition driver' do + it 'can create an Apparition driver' do DVLA::Browser::Drivers.apparition expect(Capybara.current_driver).to eq(:apparition) end - it 'can create a headless chrome driver with standard options' do + it 'can create a headless Chrome driver with standard options' do DVLA::Browser::Drivers.headless_selenium_chrome expect(Capybara.current_driver).to eq(:headless_selenium_chrome) @@ -39,22 +44,27 @@ expect(args).to include('--no-sandbox') end - it 'can create a headless firefox driver' do + it 'can create a headless Firefox driver' do DVLA::Browser::Drivers.headless_selenium_firefox expect(Capybara.current_driver).to eq(:headless_selenium_firefox) end - it 'can create a headless edge driver' do - DVLA::Browser::Drivers.headless_selenium_edge + it 'warns the user creating an Edge driver with headless configuration' do + expect { DVLA::Browser::Drivers.headless_selenium_edge }.to output(/Edge does not support headless mode/).to_stdout_from_any_process expect(Capybara.current_driver).to eq(:headless_selenium_edge) end - it 'can create a headless apparition driver' do + it 'warns the user creating a Safari driver with headless configuration' do + expect { DVLA::Browser::Drivers.headless_selenium_safari }.to output(/Safari does not support headless mode/).to_stdout_from_any_process + expect(Capybara.current_driver).to eq(:headless_selenium_safari) + end + + it 'can create a headless Apparition driver' do DVLA::Browser::Drivers.headless_apparition expect(Capybara.current_driver).to eq(:headless_apparition) end - it 'can create a headless cuprite driver with standard options' do + it 'can create a headless Cuprite driver with standard options' do DVLA::Browser::Drivers.headless_cuprite expect(Capybara.current_driver).to eq(:headless_cuprite) From 73da678510895f30a3e67fa523ee7d0fd505bec7 Mon Sep 17 00:00:00 2001 From: nialljames Date: Fri, 12 Dec 2025 12:02:54 +0000 Subject: [PATCH 4/8] remove headless from edge and safari --- lib/dvla/browser/drivers/meta_drivers.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/dvla/browser/drivers/meta_drivers.rb b/lib/dvla/browser/drivers/meta_drivers.rb index 3dd01aa..8b61847 100644 --- a/lib/dvla/browser/drivers/meta_drivers.rb +++ b/lib/dvla/browser/drivers/meta_drivers.rb @@ -1,7 +1,7 @@ module DVLA module Browser module Drivers - DRIVER_REGEX = /^(?:(?headless)_)?(?(selenium_(?chrome|firefox|edge|safari)|cuprite|apparition))$/ + DRIVER_REGEX = /^(?:(?headless)_(?selenium_(?chrome|firefox)|cuprite|apparition)|(?selenium_(?chrome|firefox|edge|safari)|cuprite|apparition))$/ OTHER_ACCEPTED_PARAMS = %i[timeout browser_options save_path remote].freeze OTHER_DRIVERS = %i[cuprite apparition].freeze @@ -24,11 +24,6 @@ def self.method_missing(method, *args, **kwargs, &) case driver when *SELENIUM_DRIVERS browser = matches[:browser].to_sym - - if headless && %i[safari edge].include?(browser) - LOG.warn { "#{browser.capitalize} does not support headless mode".red.bold } - headless = false - end kwargs.each do |key, _value| LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" } unless SELENIUM_ACCEPTED_PARAMS.include?(key) From a32c6e056410d131d48b0649a2bc4c6d5b92ba46 Mon Sep 17 00:00:00 2001 From: nialljames Date: Mon, 15 Dec 2025 07:38:32 +0000 Subject: [PATCH 5/8] change regex to exclude headless edge & safari --- lib/dvla/browser/drivers/meta_drivers.rb | 7 ++++--- spec/dvla/browser/drivers_bidi_spec.rb | 2 +- spec/dvla/browser/drivers_spec.rb | 19 ++++++++++++------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/dvla/browser/drivers/meta_drivers.rb b/lib/dvla/browser/drivers/meta_drivers.rb index 8b61847..50f26d2 100644 --- a/lib/dvla/browser/drivers/meta_drivers.rb +++ b/lib/dvla/browser/drivers/meta_drivers.rb @@ -1,7 +1,7 @@ module DVLA module Browser module Drivers - DRIVER_REGEX = /^(?:(?headless)_(?selenium_(?chrome|firefox)|cuprite|apparition)|(?selenium_(?chrome|firefox|edge|safari)|cuprite|apparition))$/ + DRIVER_REGEX = /^(?:(?headless_)(?selenium_(?chrome|firefox)|cuprite|apparition)|(?selenium_(?chrome|firefox|edge|safari)|cuprite|apparition))$/ OTHER_ACCEPTED_PARAMS = %i[timeout browser_options save_path remote].freeze OTHER_DRIVERS = %i[cuprite apparition].freeze @@ -19,11 +19,12 @@ module Drivers def self.method_missing(method, *args, **kwargs, &) if (matches = method.match(DRIVER_REGEX)) headless = matches[:headless].is_a? String - driver = matches[:driver].to_sym + driver = matches[:driver]&.to_sym || matches[:driver_no_headless]&.to_sym + browser_match = matches[:browser] || matches[:browser_no_headless] case driver when *SELENIUM_DRIVERS - browser = matches[:browser].to_sym + browser = browser_match.to_sym kwargs.each do |key, _value| LOG.warn { "Key: '#{key}' will be ignored | Use one from: '#{SELENIUM_ACCEPTED_PARAMS}'" } unless SELENIUM_ACCEPTED_PARAMS.include?(key) diff --git a/spec/dvla/browser/drivers_bidi_spec.rb b/spec/dvla/browser/drivers_bidi_spec.rb index b4b5af4..3344eb5 100644 --- a/spec/dvla/browser/drivers_bidi_spec.rb +++ b/spec/dvla/browser/drivers_bidi_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true RSpec.describe 'DVLA::Browser::Drivers BiDi Support' do - %i[headless_selenium_chrome headless_selenium_firefox headless_selenium_edge].each do |driver| + %i[headless_selenium_chrome headless_selenium_firefox selenium_edge].each do |driver| describe "BiDi functionality with #{driver}", :bidi_integration do before do DVLA::Browser::Drivers.send(driver) diff --git a/spec/dvla/browser/drivers_spec.rb b/spec/dvla/browser/drivers_spec.rb index 9f3d37a..d9ab309 100644 --- a/spec/dvla/browser/drivers_spec.rb +++ b/spec/dvla/browser/drivers_spec.rb @@ -1,4 +1,8 @@ RSpec.describe DVLA::Browser::Drivers do + after do + Capybara.reset_sessions! + end + it 'has a version number' do expect(DVLA::Browser::Drivers::VERSION).not_to be nil end @@ -49,14 +53,12 @@ expect(Capybara.current_driver).to eq(:headless_selenium_firefox) end - it 'warns the user creating an Edge driver with headless configuration' do - expect { DVLA::Browser::Drivers.headless_selenium_edge }.to output(/Edge does not support headless mode/).to_stdout_from_any_process - expect(Capybara.current_driver).to eq(:headless_selenium_edge) + it 'does not create an Edge driver with headless configuration' do + expect { DVLA::Browser::Drivers.headless_selenium_edge }.to raise_error NoMethodError end - it 'warns the user creating a Safari driver with headless configuration' do - expect { DVLA::Browser::Drivers.headless_selenium_safari }.to output(/Safari does not support headless mode/).to_stdout_from_any_process - expect(Capybara.current_driver).to eq(:headless_selenium_safari) + it 'does not create a Safari driver with headless configuration' do + expect { DVLA::Browser::Drivers.headless_selenium_safari }.to raise_error NoMethodError end it 'can create a headless Apparition driver' do @@ -98,13 +100,16 @@ expect(DVLA::Browser::Drivers.respond_to?(:selenium_chrome)).to be true expect(DVLA::Browser::Drivers.respond_to?(:selenium_edge)).to be true expect(DVLA::Browser::Drivers.respond_to?(:selenium_firefox)).to be true + expect(DVLA::Browser::Drivers.respond_to?(:selenium_safari)).to be true expect(DVLA::Browser::Drivers.respond_to?(:cuprite)).to be true expect(DVLA::Browser::Drivers.respond_to?(:apparition)).to be true expect(DVLA::Browser::Drivers.respond_to?(:headless_selenium_chrome)).to be true - expect(DVLA::Browser::Drivers.respond_to?(:headless_selenium_edge)).to be true expect(DVLA::Browser::Drivers.respond_to?(:headless_selenium_firefox)).to be true expect(DVLA::Browser::Drivers.respond_to?(:headless_cuprite)).to be true expect(DVLA::Browser::Drivers.respond_to?(:headless_apparition)).to be true + + expect(DVLA::Browser::Drivers.respond_to?(:headless_selenium_edge)).to be false + expect(DVLA::Browser::Drivers.respond_to?(:headless_selenium_safari)).to be false end end From a10a75a72d42602adb8a92dbf486bcd65c2b4d8c Mon Sep 17 00:00:00 2001 From: nialljames Date: Thu, 18 Dec 2025 11:31:07 +0000 Subject: [PATCH 6/8] fix browser config polluting other tests --- spec/dvla/browser/drivers_bidi_spec.rb | 1 + spec/dvla/browser/drivers_spec.rb | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spec/dvla/browser/drivers_bidi_spec.rb b/spec/dvla/browser/drivers_bidi_spec.rb index 3344eb5..05f1e7d 100644 --- a/spec/dvla/browser/drivers_bidi_spec.rb +++ b/spec/dvla/browser/drivers_bidi_spec.rb @@ -10,6 +10,7 @@ after do Capybara.reset_sessions! + Capybara.instance_variable_set(:@session_pool, nil) end it 'provides BiDi instance by default' do diff --git a/spec/dvla/browser/drivers_spec.rb b/spec/dvla/browser/drivers_spec.rb index d9ab309..bdc78bc 100644 --- a/spec/dvla/browser/drivers_spec.rb +++ b/spec/dvla/browser/drivers_spec.rb @@ -1,6 +1,7 @@ RSpec.describe DVLA::Browser::Drivers do after do Capybara.reset_sessions! + Capybara.instance_variable_set(:@session_pool, nil) end it 'has a version number' do @@ -77,17 +78,23 @@ expect(options.dig(:browser_options, :'disable-smooth-scrolling')).to eq(true) end - it 'allows additional args to be passed' do + it 'allows Chrome to accept remote argument' do DVLA::Browser::Drivers.selenium_chrome(remote: 'hello_world') expect(Capybara.current_session.driver.options[:url]).to eq('hello_world') expect(Capybara.current_session.driver.options[:browser]).to eq(:remote) + end + it 'allows Firefox to accept additional arguments' do DVLA::Browser::Drivers.selenium_firefox(additional_arguments: %w[headless]) expect(Capybara.current_session.driver.options[:options].options[:args]).to include('--headless') + end + it 'allows Edge to accept additional preferences' do DVLA::Browser::Drivers.selenium_edge(additional_preferences: [{ key: 'value' }]) expect(Capybara.current_session.driver.options[:options].prefs).to include({ key: 'value' }) + end + it 'allows Cuprite to accept timeout and browser options' do DVLA::Browser::Drivers.cuprite(timeout: 5, browser_options: { something: 'blah' }) expect(Capybara.current_session.driver.options.dig(:browser_options, :something)).to eq('blah') end From 7497a5ba36b1778a2745e2674a8f9444d16f0dc6 Mon Sep 17 00:00:00 2001 From: nialljames Date: Thu, 18 Dec 2025 13:13:15 +0000 Subject: [PATCH 7/8] don't run edge tests in CI --- .github/workflows/gem-test.yml | 2 +- spec/dvla/browser/drivers_bidi_spec.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gem-test.yml b/.github/workflows/gem-test.yml index e5f6a85..227d8fe 100644 --- a/.github/workflows/gem-test.yml +++ b/.github/workflows/gem-test.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ["3.1", "3.2", "3.3"] + ruby-version: ["3.1", "3.2", "3.3", "3.4"] steps: - uses: actions/checkout@v2 diff --git a/spec/dvla/browser/drivers_bidi_spec.rb b/spec/dvla/browser/drivers_bidi_spec.rb index 05f1e7d..b2ba7b4 100644 --- a/spec/dvla/browser/drivers_bidi_spec.rb +++ b/spec/dvla/browser/drivers_bidi_spec.rb @@ -3,6 +3,7 @@ RSpec.describe 'DVLA::Browser::Drivers BiDi Support' do %i[headless_selenium_chrome headless_selenium_firefox selenium_edge].each do |driver| describe "BiDi functionality with #{driver}", :bidi_integration do + skip 'Edge WebDriver not available in CI' if driver == :selenium_edge && ENV['CI'] before do DVLA::Browser::Drivers.send(driver) Capybara.current_driver = driver From f803ad6bbc76190563e8e8a9a7fce7b7f8383889 Mon Sep 17 00:00:00 2001 From: nialljames Date: Thu, 18 Dec 2025 13:53:58 +0000 Subject: [PATCH 8/8] skip tests from before hook --- spec/dvla/browser/drivers_bidi_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/dvla/browser/drivers_bidi_spec.rb b/spec/dvla/browser/drivers_bidi_spec.rb index b2ba7b4..affac6a 100644 --- a/spec/dvla/browser/drivers_bidi_spec.rb +++ b/spec/dvla/browser/drivers_bidi_spec.rb @@ -3,8 +3,8 @@ RSpec.describe 'DVLA::Browser::Drivers BiDi Support' do %i[headless_selenium_chrome headless_selenium_firefox selenium_edge].each do |driver| describe "BiDi functionality with #{driver}", :bidi_integration do - skip 'Edge WebDriver not available in CI' if driver == :selenium_edge && ENV['CI'] before do + skip 'Edge WebDriver not available in CI' if driver == :selenium_edge && ENV['CI'] DVLA::Browser::Drivers.send(driver) Capybara.current_driver = driver end