Use cuprite to drive Chrome (#60)

headless tests started to fail due to elements not being present in time
or not being found period.  CBA to fix so just switch to this other
driver for now.

Reviewed-on: #60
This commit is contained in:
Andrew Tomaka 2025-06-06 00:00:54 -04:00
parent 3eb819ab68
commit 8ed6eabdb2
3 changed files with 14 additions and 14 deletions

View file

@ -61,7 +61,7 @@ end
group :test do group :test do
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
gem "capybara" gem "capybara"
gem "selenium-webdriver" gem "cuprite"
end end
gem "tailwindcss-rails", "~> 3.3.1" gem "tailwindcss-rails", "~> 3.3.1"

View file

@ -125,6 +125,9 @@ GEM
concurrent-ruby (1.3.5) concurrent-ruby (1.3.5)
connection_pool (2.5.0) connection_pool (2.5.0)
crass (1.0.6) crass (1.0.6)
cuprite (0.17)
capybara (~> 3.0)
ferrum (~> 0.17.0)
date (3.4.1) date (3.4.1)
debug (1.10.0) debug (1.10.0)
irb (~> 1.10) irb (~> 1.10)
@ -133,6 +136,12 @@ GEM
erubi (1.13.1) erubi (1.13.1)
et-orbi (1.2.11) et-orbi (1.2.11)
tzinfo tzinfo
ferrum (0.17.1)
addressable (~> 2.5)
base64 (~> 0.2)
concurrent-ruby (~> 1.1)
webrick (~> 1.7)
websocket-driver (~> 0.7)
fugit (1.11.1) fugit (1.11.1)
et-orbi (~> 1, >= 1.2.11) et-orbi (~> 1, >= 1.2.11)
raabro (~> 1.4) raabro (~> 1.4)
@ -226,7 +235,6 @@ GEM
regexp_parser (2.10.0) regexp_parser (2.10.0)
reline (0.6.0) reline (0.6.0)
io-console (~> 0.5) io-console (~> 0.5)
rexml (3.4.0)
rubocop (1.71.2) rubocop (1.71.2)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (>= 3.17.0)
@ -256,14 +264,7 @@ GEM
rubocop-performance rubocop-performance
rubocop-rails rubocop-rails
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
rubyzip (2.4.1)
securerandom (0.4.1) securerandom (0.4.1)
selenium-webdriver (4.28.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
solid_cable (3.0.7) solid_cable (3.0.7)
actioncable (>= 7.2) actioncable (>= 7.2)
activejob (>= 7.2) activejob (>= 7.2)
@ -309,7 +310,7 @@ GEM
activemodel (>= 6.0.0) activemodel (>= 6.0.0)
bindex (>= 0.4.0) bindex (>= 0.4.0)
railties (>= 6.0.0) railties (>= 6.0.0)
websocket (1.2.11) webrick (1.9.1)
websocket-driver (0.7.7) websocket-driver (0.7.7)
base64 base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
@ -329,6 +330,7 @@ DEPENDENCIES
bootsnap bootsnap
brakeman brakeman
capybara capybara
cuprite
debug debug
importmap-rails importmap-rails
jbuilder jbuilder
@ -336,7 +338,6 @@ DEPENDENCIES
puma (>= 5.0) puma (>= 5.0)
rails! rails!
rubocop-rails-omakase rubocop-rails-omakase
selenium-webdriver
solid_cable solid_cable
solid_cache solid_cache
solid_queue solid_queue

View file

@ -1,9 +1,8 @@
require "test_helper" require "test_helper"
require "capybara/cuprite"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, driven_by :cuprite, options: { headless: ENV["VISIBLE_SYSTEM_TESTS"].blank? }
using: ENV["VISIBLE_SYSTEM_TESTS"].present? ? :chrome : :headless_chrome,
screen_size: [ 1400, 1400 ]
def login(email, password = "secret") def login(email, password = "secret")
visit new_session_url visit new_session_url