mirror of
https://github.com/yattee/yattee.git
synced 2026-02-19 09:19:46 +00:00
- Skip onboarding in tests by setting UserDefaults before launch - Update all addSource.* identifiers to addRemoteServer.* for new flow - Switch from identifier-based to text-based element lookups (iOS 26 AXe limitation) - Add Yattee Server credential support in instance setup - Update baseline screenshots for Home tab and settings
117 lines
2.8 KiB
Ruby
117 lines
2.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative '../spec_helper'
|
|
|
|
RSpec.describe 'Settings', :smoke do
|
|
before(:all) do
|
|
# Boot simulator
|
|
@udid = UITest::Simulator.boot(UITest::Config.device)
|
|
|
|
# Build app (unless skipped)
|
|
UITest::App.build(
|
|
device: UITest::Config.device,
|
|
skip: UITest::Config.skip_build?
|
|
)
|
|
|
|
# Install and launch
|
|
UITest::App.install(udid: @udid)
|
|
UITest::App.launch(udid: @udid)
|
|
|
|
# Wait for app to stabilize
|
|
sleep UITest::Config.app_launch_wait
|
|
|
|
# Initialize AXe
|
|
@axe = UITest::Axe.new(@udid)
|
|
end
|
|
|
|
after(:all) do
|
|
# Terminate app
|
|
UITest::App.terminate(udid: @udid, silent: true) if @udid
|
|
|
|
# Shutdown simulator unless --keep-simulator
|
|
UITest::Simulator.shutdown(@udid) if @udid && !UITest::Config.keep_simulator?
|
|
end
|
|
|
|
describe 'opening Settings from Home' do
|
|
before(:all) do
|
|
# Ensure we're on Home tab first
|
|
expect(@axe).to have_text('Home')
|
|
|
|
# Tap Settings button using accessibility identifier
|
|
@axe.tap_id('home.settingsButton')
|
|
sleep 1
|
|
end
|
|
|
|
after(:all) do
|
|
# Close Settings to return to Home
|
|
begin
|
|
@axe.tap_id('settings.doneButton')
|
|
rescue StandardError
|
|
nil
|
|
end
|
|
sleep 0.5
|
|
end
|
|
|
|
it 'opens the Settings view' do
|
|
expect(@axe).to have_element('settings.view')
|
|
end
|
|
|
|
it 'displays the Settings title' do
|
|
expect(@axe).to have_text('Settings')
|
|
end
|
|
|
|
it 'displays the Close button' do
|
|
expect(@axe).to have_element('settings.doneButton')
|
|
end
|
|
|
|
it 'displays the Sources section' do
|
|
expect(@axe).to have_text('Sources')
|
|
end
|
|
|
|
it 'displays the Playback section' do
|
|
expect(@axe).to have_text('Playback')
|
|
end
|
|
|
|
it 'displays the Appearance section' do
|
|
expect(@axe).to have_text('Appearance')
|
|
end
|
|
|
|
it 'matches the baseline screenshot', :visual do
|
|
screenshot = @axe.screenshot('settings-main')
|
|
expect(screenshot).to match_baseline
|
|
end
|
|
end
|
|
|
|
describe 'closing Settings' do
|
|
it 'closes Settings when tapping Close' do
|
|
# Ensure we're on Home first
|
|
sleep 0.5
|
|
unless @axe.text_visible?('Home') || @axe.element_exists?('home.settingsButton')
|
|
# Try to dismiss any open sheets
|
|
begin
|
|
@axe.tap_id('settings.doneButton')
|
|
sleep 0.5
|
|
rescue StandardError
|
|
nil
|
|
end
|
|
end
|
|
|
|
# Open Settings fresh
|
|
@axe.tap_id('home.settingsButton')
|
|
sleep 1
|
|
|
|
# Verify we're in Settings
|
|
expect(@axe).to have_element('settings.view')
|
|
expect(@axe).to have_element('settings.doneButton')
|
|
|
|
# Tap Close
|
|
@axe.tap_id('settings.doneButton')
|
|
sleep 1.5
|
|
|
|
# Verify we're back on Home
|
|
expect(@axe).to have_text('Home')
|
|
expect(@axe).not_to have_element('settings.view')
|
|
end
|
|
end
|
|
end
|