Files
sure/test/application_system_test_case.rb
Juan José Mata d47aa2fe90 PWA offline error page + login page cleanup (#327)
* Add friendly PWA offline error page

When the PWA fails to connect to the server, users now see a branded
offline page with a friendly "technical difficulties" message, the
app logo, and a reload button. The page automatically attempts to
reload when connectivity is restored.

Changes:
- Created public/offline.html with branded offline experience
- Updated service worker to cache and serve offline page on network failures
- Added service worker registration in application.js
- Service worker now handles navigation requests with offline fallback

* Extract PWA offline logo to separate cached asset

Move the inline SVG logo from offline.html to a separate file at
public/logo-offline.svg. This makes the logo asset easily identifiable
and maintainable, as it may diverge from other logo versions in the future.

Changes:
- Created public/logo-offline.svg with the offline page logo
- Updated service worker to cache logo as part of OFFLINE_ASSETS array
- Updated fetch handler to serve cached offline assets
- Updated offline.html to reference logo file instead of inline SVG

* Update offline message for better readability

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>

* CodeRabbit comments

* Keep 40x and 50x flowing

* Dark mode

* Logo tweaks

* Login/sign up cleanup

---------

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-16 21:12:48 +01:00

42 lines
1.0 KiB
Ruby

require "test_helper"
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
setup do
Capybara.default_max_wait_time = 5
end
driven_by :selenium, using: ENV["CI"].present? ? :headless_chrome : ENV.fetch("E2E_BROWSER", :chrome).to_sym, screen_size: [ 1400, 1400 ]
private
def sign_in(user)
visit new_session_path
within %(form[action='#{sessions_path}']) do
fill_in "Email", with: user.email
fill_in "Password", with: user_password_test
click_on "Log in"
end
# Trigger Capybara's wait mechanism to avoid timing issues with logins
find("h1", text: "Welcome back, #{user.first_name}")
end
def login_as(user)
sign_in(user)
end
def sign_out
find("#user-menu").click
click_button "Logout"
# Trigger Capybara's wait mechanism to avoid timing issues with logout
find("a", text: "Sign in")
end
def within_testid(testid)
within "[data-testid='#{testid}']" do
yield
end
end
end