Total rebrand across KMM project: - Kotlin package: com.example.casera -> com.tt.honeyDue (dirs + declarations) - Gradle: rootProject.name, namespace, applicationId - Android: manifest, strings.xml (all languages), widget resources - iOS: pbxproj bundle IDs, Info.plist, entitlements, xcconfig - iOS directories: Casera/ -> HoneyDue/, CaseraTests/ -> HoneyDueTests/, etc. - Swift source: all class/struct/enum renames - Deep links: casera:// -> honeydue://, .casera -> .honeydue - App icons replaced with honeyDue honeycomb icon - Domains: casera.treytartt.com -> honeyDue.treytartt.com - Bundle IDs: com.tt.casera -> com.tt.honeyDue - Database table names preserved Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
1011 B
Markdown
25 lines
1011 B
Markdown
# XCUITest Authoring
|
|
|
|
## Required Architecture
|
|
- Put shared test infrastructure in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/HoneyDueUITests/Framework`.
|
|
- Put feature suites in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/HoneyDueUITests/Tests`.
|
|
- Every test suite inherits `BaseUITestCase`.
|
|
- Reusable multi-step setup belongs in `TestFlows`.
|
|
- UI interactions should go through screen objects in `ScreenObjects.swift`.
|
|
|
|
## Runtime Contract
|
|
- Launch args are standardized in `BaseUITestCase`:
|
|
- `--ui-testing`
|
|
- `--disable-animations`
|
|
- `--reset-state`
|
|
- App-side behavior for UI test mode is implemented in `/Users/treyt/Desktop/code/HoneyDueKMM/iosApp/iosApp/Helpers/UITestRuntime.swift`.
|
|
|
|
## Naming
|
|
- Test method naming format: `test<CaseID>_<BehaviorDescription>()`.
|
|
- Case IDs should stay stable once committed.
|
|
|
|
## Waiting and Flake Rules
|
|
- Use helper waits from `BaseUITestCase` extensions.
|
|
- Do not add blind `sleep()`.
|
|
- Prefer stable accessibility identifiers over visible text selectors.
|