Add 22 new UI tests across 8 test files covering Home, Schedule, Progress, Settings, TabNavigation, TripSaving, and TripOptions. Add accessibility identifiers to 11 view files for test element discovery. Fix sport chip assertion logic (all sports start selected, tap deselects), scroll container issues on iOS 26 nested ScrollViews, toggle interaction, and delete trip flow. Update QA coverage map from 32 to 54 automated test cases. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
75 lines
1.9 KiB
Swift
75 lines
1.9 KiB
Swift
//
|
|
// TripOptionsTests.swift
|
|
// SportsTimeUITests
|
|
//
|
|
// Tests the Trip Options results screen: sorting, selection.
|
|
// QA Sheet: F-052, F-053, F-054, F-055
|
|
//
|
|
|
|
import XCTest
|
|
|
|
final class TripOptionsTests: BaseUITestCase {
|
|
|
|
// MARK: - Helpers
|
|
|
|
/// Plans a trip and returns the options screen ready for sorting tests.
|
|
@MainActor
|
|
private func planTripAndGetOptions() -> TripOptionsScreen {
|
|
let (_, options) = TestFlows.planDateRangeTrip(app: app)
|
|
options.assertHasResults()
|
|
return options
|
|
}
|
|
|
|
// MARK: - Sort Options (F-052, F-053, F-054, F-055)
|
|
|
|
/// F-052: Sort by Recommended reorders trip options.
|
|
@MainActor
|
|
func testF052_SortByRecommended() {
|
|
let options = planTripAndGetOptions()
|
|
|
|
// Sort option IDs are rawValue.lowercased() with spaces removed
|
|
options.sort(by: "recommended")
|
|
|
|
// Results should still exist after sorting
|
|
options.assertHasResults()
|
|
|
|
captureScreenshot(named: "F052-SortByRecommended")
|
|
}
|
|
|
|
/// F-053: Sort by Most Games reorders trip options.
|
|
@MainActor
|
|
func testF053_SortByMostGames() {
|
|
let options = planTripAndGetOptions()
|
|
|
|
options.sort(by: "mostgames")
|
|
|
|
options.assertHasResults()
|
|
|
|
captureScreenshot(named: "F053-SortByMostGames")
|
|
}
|
|
|
|
/// F-054: Sort by Least Miles reorders trip options.
|
|
@MainActor
|
|
func testF054_SortByLeastMiles() {
|
|
let options = planTripAndGetOptions()
|
|
|
|
options.sort(by: "leastmiles")
|
|
|
|
options.assertHasResults()
|
|
|
|
captureScreenshot(named: "F054-SortByLeastMiles")
|
|
}
|
|
|
|
/// F-055: Sort by Best Efficiency reorders trip options.
|
|
@MainActor
|
|
func testF055_SortByBestEfficiency() {
|
|
let options = planTripAndGetOptions()
|
|
|
|
options.sort(by: "bestefficiency")
|
|
|
|
options.assertHasResults()
|
|
|
|
captureScreenshot(named: "F055-SortByBestEfficiency")
|
|
}
|
|
}
|