cmux-testing
cmux testing rules for Swift Testing, test target compilation, test wiring, and package/refactor validation. Use when adding or changing tests, touching package/refactor code, or deciding whether reload.sh is enough validation.
By manaflow-ai · 3,884 installs
npx skills add manaflow-ai/cmux --skill cmux-testing
Source repository · Upstream listing
cmux Testing
Choose the first check
Run repository commands only from a [trusted checkout](../../docs/contributor verification.md trust boundary);
even verify local.py help and list load repository code.
Task Command
Choose checks and parse changed Swift python3 scripts/verify local.py
Run the full CI static recipe python3 scripts/verify local.py all
Parse current Swift edits python3 scripts/verify local.py only swift syntax swift changed
Check new Swift test file wiring python3 scripts/verify local.py only test wiring
See what a UI test did, one frame per action scripts/ui test ClassName or scripts/ui test <run URL ([guide](references/ui test frames.md))
Render view code to PNGs in seconds, light and dark, without building the app scripts/ui lab/ui lab.py <harness [ watch] ([guide](references/ui lab.md))
Dogfood the app from CI: drive it with a JSON tour and get screenshots and accessibility trees scripts/run e2e.sh scenario dogfood/scenarios/<tour .json ref <sha frames ([guide](references/dogfood scenarios.md))
Read the screenshots and GIF CI posted of an app PR's build before merging it the PR's dogfood comment ([guide](references/dogfood scenarios.md pr media))
Decide whether a red web test is the PR's fault or a flake python3 scripts/ci/web test verdict.py pr <N ([guide](references/web test flakes.md); coverage runs the PR's code)
Add a base ref after swift changed to include committed changes. Use list
to find other checks and help for options. Parsing checks syntax; it doesn't
typecheck or run tests.
Read the [command guide](../../docs/verification receipts.md) for piped paths or
JSON receipts. Use the [validation guide](references/local vs ci validation.md)
to choose package, native, web or runtime checks. Docs and portable tooling use
their scoped checks.
Reproduce and repair
Keep a focused command that fails on the reported symptom, then rerun it after
the repair. Setup failures and zero executed tests don't demonstrate the bug.
Exercise one behavior at a time so a failure identifies what needs fixing.
Keep two commits: first the failing behavioral regression, then the fix. Run
the same focused command on both and record the commit SHAs, the expected
failure and the passing result. A setup failure or zero executed tests is not
regression proof. When the proof is available locally, push both commits
together after the fix passes; a separate hosted CI run on the deliberately
broken intermediate commit is unnecessary. If the failure only reproduces in CI,
use that lane and keep its receipts. Required CI and review still apply to the
final pushed head.
Test wiring
New cmuxTests/ .swift files need both PBXFileReference and Sources build phase
membership in cmux.xcodeproj/project.pbxproj . Add through Xcode or follow a wired
sibling, then run the wiring check above: an unwired file can otherwise produce
a misleading zero test pass.
After creating, renaming, or deleting a direct cmuxTests/ .swift file, run ./scripts/sync test wiring . It deterministically reconciles the PBXFileReference , PBXBuildFile , cmuxTests group child, and cmuxTests Sources membership; check performs the same validation without writing. Foreign target membership is rejected with an explicit diagnostic. New Sources/ / .swift app files are wired with ./scripts/wire app sources.py ( check lists unwired ones); UI tests with target cmuxUITests dir cmuxUITests ; run it after any merge that took main's project.pbxproj , which drops a branch's app source entries. The workflow guard tests CI job still runs ./scripts/lint pbxproj test wiring.sh as a defensive Sources phase guard.
Test quality
Exercise observable behavior through unit, integration, CLI or end to end paths.
Do not assert source snippets, signatures, AST shape or metadata keys solely
to mirror implementation. For metadata behavior, inspect the produced artifact
or execute the code that consumes it.
Add a small runtime harness when needed; skip a fake regression test if there
is no meaningful behavioral oracle and explain the limit. See
[regression and quality](references/regression and quality.md) for the judgment call.
Swift tests
Swift unit/integration targets use Swift Testing ( import Testing , @Test ,
@Suite , expect , require ). Portable Python/shell guards retain their existing
frameworks. UI tests remain XCTest/XCUITest; do not migrate XCUIApplication tests.
New Swift package test targets start on Swift Testing. Prefer parameterized tests
for repeated cases and tags for selection. Use .serialized for suites that
require ordering, not locks or sleeps. Migrate an existing XCTest file only when
an edit already crosses it; see [the migration mapping](references/swift testing migration.md).
Native test evidence
An app build does not compile test targets. Package/refactor and public API changes
need the relevant test target compiled, then the selected tests actually executed.
Follow [build for testing and execution guidance](references/local vs ci validation.md);
report skipped/unsupported checks explicitly.
For remote tmux sizing changes, use the [E2E recipe](references/remote tmux sizing e2e.md).
PR CI labels
Normal PR CI already runs the suites a diff edits or touches. full ci and
unit ci are not review or merge requirements; see
[PR CI coverage](references/pr ci coverage.md) before adding either.