From e2ff9503abf269de5ca6eb8910b69ab934a56b4d Mon Sep 17 00:00:00 2001 From: Akira Matsuda Date: Tue, 23 Dec 2025 19:32:26 +0900 Subject: [PATCH 1/3] Quit from automatic save_screenshot on js: true spec failure we can explicitly save_screenshot anytime if we need it. --- spec/rails_helper.rb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 114a20949..b390cb745 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -88,13 +88,6 @@ FactoryBot.reload end - config.after(:each, js: true) do |example| - if example.exception - screenshot_path = Rails.root.join("tmp/screenshots", "#{method_name}-#{Time.zone.now.strftime("%Y_%m_%d-%H_%M_%S")}.png") - Capybara.page.save_screenshot(screenshot_path) - end - end - config.around(:each, caching: true) do |example| Rails.configuration.action_controller.perform_caching = true example.run From fe73ae8e026923380cd460f985b218c95fe5b669 Mon Sep 17 00:00:00 2001 From: Akira Matsuda Date: Tue, 23 Dec 2025 19:38:30 +0900 Subject: [PATCH 2/3] Configure :headless_chrome driver with options for stability --- spec/rails_helper.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index b390cb745..e0b4071c5 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -98,8 +98,18 @@ driven_by :rack_test end + Capybara.register_driver :headless_chrome do |app| + options = Selenium::WebDriver::Chrome::Options.new + options.add_argument('--headless=new') + options.add_argument('--disable-gpu') + options.add_argument('--no-sandbox') + options.add_argument('--disable-dev-shm-usage') + options.add_argument('--window-size=1400,1400') + Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) + end + config.before type: :system, js: true do - driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400] + driven_by :headless_chrome end Capybara.disable_animation = true From b764d9f87327361dfe0e21d2ed1f6c774cf024ec Mon Sep 17 00:00:00 2001 From: Akira Matsuda Date: Tue, 23 Dec 2025 19:39:02 +0900 Subject: [PATCH 3/3] Force a fresh browser session for each test to prevent state bleeding --- spec/rails_helper.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index e0b4071c5..13bb8b0cb 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -112,5 +112,10 @@ driven_by :headless_chrome end + config.after type: :system, js: true do + # Force a fresh browser session for each test to prevent state bleeding + Capybara.send(:session_pool).delete_if { |k, _v| k.include?('headless_chrome') } + end + Capybara.disable_animation = true end