Prohlížeč zdrojového kódu
spec/system/theme_spec.rb
require "rails_helper"
RSpec.describe "Theme switching", type: :system do
def current_theme
page.evaluate_script("document.documentElement.getAttribute('data-theme')")
end
def toggle_button
find("button[aria-label='Přepnout tmavý režim']")
end
it "defaults to light theme when no preference is saved" do
visit root_path
expect(current_theme).to eq("light")
expect(toggle_button.text).to eq("🌙")
end
it "switches to dark when toggled and updates the icon" do
visit root_path
toggle_button.click
expect(current_theme).to eq("dark")
expect(toggle_button.text).to eq("🔅")
end
it "switches back to light on second toggle" do
visit root_path
toggle_button.click
toggle_button.click
expect(current_theme).to eq("light")
expect(toggle_button.text).to eq("🌙")
end
it "persists preference across navigation" do
visit root_path
toggle_button.click
expect(current_theme).to eq("dark")
visit examples_path
expect(current_theme).to eq("dark")
end
it "restores saved dark preference on a fresh page load" do
visit root_path
page.execute_script("localStorage.setItem('theme', 'dark')")
visit root_path
expect(current_theme).to eq("dark")
expect(toggle_button.text).to eq("🔅")
end
end