Repository navigation
feat: mobilewright e2e suite, coverage automation, and CI gating - #25
Merged
Merged
Conversation
app.sheets stays empty for the sheet's bare Text presentation on iOS 26 (the sheet does present — the label appears in a second accessibility subtree), so the Sheet-element assertion could never pass. Match the suite's content-based convention instead: wait for the label to appear a second time (add-row button + sheet content). Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
- e2e/: mobilewright suite for iOS — Playwright-style locators over the accessibility tree. tests/helpers.ts resets the app per test (uninstall -> install current build -> simctl launch with UI_TESTING / DEMO_MODE) since mobilewright cannot pass launch arguments. Covers plan/tab smoke plus the Figma log-a-set -> rest -> skip flows, with set counters matched structurally so the weekday-varying demo plan cannot flake the suite. - mise test:coverage: swift test with code coverage + llvm-cov report, optional lcov export via LCOV_OUT. - mise ios:coverage: XCUITest run with -enableCodeCoverage and an xccov report (printed even on test failure); falls back to any iPhone simulator when the iOS 26.2 runtime is absent. - mise ios:e2e: build -> boot sim -> mobilewright agent -> run suite; npm ci self-bootstraps fresh checkouts. - Pinned node = 24 in mise tools: the e2e toolchain needs require(esm) support, which node 22.11 lacks. Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
- coverage job: runs the XCUITest suite with code coverage and uploads the .xcresult bundle on every run (if: always()) for failure debugging. - e2e job: runs the mobilewright suite end to end and uploads its reports; mise handles deps, build, simulator boot, and agent install. - Both pinned to actions/upload-artifact v7.0.1 by SHA. Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
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.
Summary
tests/helpers.tsresets the app per test (uninstall → install current build →simctl launchwithUI_TESTING/DEMO_MODE) since mobilewright cannot pass launch arguments; set counters are matched structurally so the weekday-varying demo plan (Push/Pull/Legs/Upper + rest-day fallback) cannot flake the suite.mise run test:coverage(SwiftPM llvm-cov report, optionalLCOV_OUTlcov export) andmise run ios:coverage(XCUITest with-enableCodeCoverage+ xccov report printed even on failure),mise run ios:e2e(build → boot sim → agent → suite, self-bootstraps npm on fresh checkouts).coverageande2ejobs in build.yml; the.xcresultand e2e reports upload withif: always()for failure debugging (pinnedactions/upload-artifact@043fb46… # v7.0.1).LogViewUITests.testLogPastWorkoutRowOpensSheetassertedapp.sheets, but iOS 26 exposes the sheet's bareTextoutside any Sheet element (it does present;sheets=0while the label appears in a second subtree). Now asserts content like the rest of the suite. This test merged red in feat(ios): sync design system and app screens to code #23 — UI tests never ran in CI.node = 24in mise tools (e2e toolchain needsrequire(esm); 22.11 fails to load its config), simulator runtime fallback to any iPhone for CI images without iOS 26.2.Consequences
Testing
mise run test)mise run ios:coverage)mise run ios:e2e)actionlint .github/workflows/build.ymlclean