Files
Sportstime/SportsTimeUITests/Tests/TripOptionsTests.swift
Trey t dc142bd14b feat: expand XCUITest coverage to 54 QA scenarios with accessibility IDs and fix test failures
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>
2026-02-16 19:44:22 -06:00

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")
}
}