Skip to content

Stabilize build and propagate iOS coverage to codecov#91

Merged
chrisgleissner merged 8 commits intomainfrom
fix/stabilize-build
Mar 4, 2026
Merged

Stabilize build and propagate iOS coverage to codecov#91
chrisgleissner merged 8 commits intomainfrom
fix/stabilize-build

Conversation

@chrisgleissner
Copy link
Owner

No description provided.

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%).
Copilot AI review requested due to automatic review settings March 4, 2026 08:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@codecov
Copy link

codecov bot commented Mar 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.18%. Comparing base (d6d8e16) to head (4306f80).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@             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     
Flag Coverage Δ
android ?
web 90.18% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/lib/hvsc/hvscService.ts 92.95% <100.00%> (ø)
src/lib/hvsc/hvscSongLengthService.ts 90.82% <100.00%> (ø)
src/pages/playFiles/hooks/useHvscLibrary.ts 76.22% <100.00%> (ø)

... and 13 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@chrisgleissner chrisgleissner merged commit a49983b into main Mar 4, 2026
35 checks passed
@chrisgleissner chrisgleissner deleted the fix/stabilize-build branch March 4, 2026 10:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants