Each test class now gets a unique session ID (UUID) passed to the app
via UI_TEST_SESSION_ID environment variable. The app uses this to:
- Route GroupUserDefaults to a session-specific UserDefaults suite,
preventing tests from clobbering each other's AppStorage state
- Create an in-memory SwiftData container instead of the shared
on-disk App Group store, eliminating SQLite contention
Refactored 8 test classes that bypassed BaseUITestCase.setUp() with
custom launch args — they now use overridable `localeArguments` and
`extraLaunchArguments` properties, keeping session ID injection
centralized. Added `relaunchApp(resetState:bypassSubscription:)` to
BaseUITestCase for tests that need mid-test relaunch with different
subscription state.
Includes a ParallelUITests.xctestplan with class-level parallelism
enabled and random execution ordering.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- TC-148: Year View heatmap grid renders with data (added accessibility ID)
- TC-143: App navigable with Reduce Motion enabled
- TC-144: App navigable with High Contrast mode enabled
- Marked 89 blocked tests RED in QA spreadsheet
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>