Stabilize build and propagate iOS coverage to codecov#91
Merged
chrisgleissner merged 8 commits intomainfrom Mar 4, 2026
Merged
Stabilize build and propagate iOS coverage to codecov#91chrisgleissner merged 8 commits intomainfrom
chrisgleissner merged 8 commits intomainfrom
Conversation
Replace brittle tapOn: text "Play" (no retry, ambiguous match) with a retry block that uses id "tab-play" as primary selector, text as fallback, and coordinate 25%,95% as final fallback. An internal extendedWaitUntil inside the retry confirms navigation succeeded before each iteration completes. Root cause: commit fc6fac5 changed coordinate-based tab taps to text-based taps without retry. On the CI emulator (2 cores / 3 GB), text matching is ambiguous (PlaybackControlsCard also has aria-label "Play") and a single tap with no fallback causes smoke-launch to fail with "Assertion is false: Playlist is visible". smoke-hvsc was unaffected because it uses a coordinate tap directly. Unit tests: 2214 passed. Branch coverage: 90.15% (threshold 90%).
Contributor
There was a problem hiding this comment.
Pull request overview
Improves CI stability and coverage reporting by hardening Android Maestro navigation, adding targeted unit tests to protect edge-case behavior, and introducing SwiftPM-native logic tests + Codecov upload for iOS coverage.
Changes:
- Stabilize Maestro “Play tab” navigation with retry + fallback selectors to address CI flakiness.
- Expand TypeScript unit coverage for startup milestones, FTP config, disk grouping, and songlength discovery.
- Add a SwiftPM native-tests module + tests and export/upload Swift coverage to Codecov.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/unit/startup/startupMilestones.test.ts | Adds cases ensuring diagnostics-related labels are skipped while empty labels are still recorded. |
| tests/unit/sid/songlengthsDiscovery.test.ts | Adds isSonglengthsFileName tests and more path edge cases for search-path generation/collection. |
| tests/unit/ftpConfig.test.ts | Adds tests for invalid inputs and runtime FTP port override behavior. |
| tests/unit/disks/diskGrouping.test.ts | Adds edge-case tests for grouping behavior (empty input, single file, short prefixes, no suffix). |
| ios/native-tests/Tests/NativeValidationTests/PathSanitizationTests.swift | Adds XCTest coverage for relative-path sanitization and plugin error descriptions. |
| ios/native-tests/Tests/NativeValidationTests/FtpPathResolutionTests.swift | Adds XCTest coverage for FTP path resolution and parent-path logic. |
| ios/native-tests/Sources/NativeValidation/PathSanitization.swift | Extracts/mirrors path sanitization + error types for pure Swift unit testing. |
| ios/native-tests/Sources/NativeValidation/FtpPathResolution.swift | Extracts/mirrors FTP path resolution helpers for pure Swift unit testing. |
| PLANS.md | Documents hypotheses/experiments and records CI remediation + coverage work. |
| CI_REPORT.md | Adds a focused CI fix report for the Android Maestro smoke-launch issue. |
| .maestro/subflows/common-navigation.yaml | Replaces brittle text-only “Play” tap with retry and fallback selectors + verification wait. |
| .github/workflows/ios.yaml | Enables SwiftPM coverage, exports lcov, and uploads Swift coverage to Codecov. |
…ilesystemMediaIndex - i18n: cover navigator=undefined and navigator.language=null branches - c64Liveness: add tests for raster detection on nth attempt, default options, clamped rasterAttempts, and non-Error thrown in catch - useDiskLibrary: cover runtime-file addDisks/removeDisk paths, updateDiskName empty fallback, buildDiskEntryFromDrive null inputs, and toDisplayName fallback decodeUtf8Base64 Buffer and catch paths Branch coverage: 90.67% -> 91.05% (2251 tests)
- Implemented `formatFuzzTimestamp`, `videoMarkdownLink`, and `sortIssueGroups` functions in `fuzzReportUtils.mjs` for formatting timestamps, creating markdown links, and sorting issue groups. - Added unit tests for the new utility functions in `fuzzReportUtils.test.ts`. - Created `fuzzBackendIgnore.test.ts` to test backend failure handling logic.
3608c12 to
440970f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #91 +/- ##
============================================
+ Coverage 90.01% 90.18% +0.16%
============================================
Files 280 272 -8
Lines 30798 30218 -580
Branches 6398 6341 -57
============================================
- Hits 27722 27251 -471
+ Misses 2909 2837 -72
+ Partials 167 130 -37
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.