← ClaudeAtlas

project-mutation-and-coveragelisted

Use when running mutation testing or code coverage, reading a mutation score or a coverage percentage, fetching a weekly report from GitHub Actions, choosing between just mutation, just mutation-diff, just phpunit-coverage and just e2e-coverage, or writing a test that asserts on elapsed wall-clock time.
ubermuda/loupe · ★ 2 · AI & Automation · score 65
Install: claude install-skill ubermuda/loupe
# Mutation testing and coverage Two weekly GitHub Actions produce these reports. Neither is a required check and neither gates a merge. Both write their results to an artifact, so the run page shows no score. ## The recipes, and where each writes Four recipes exist and the names do not make the difference obvious. | Recipe | Measures | Writes | |---|---|---| | `just mutation` | mutation, all of `src` | `var/infection/` | | `just mutation-diff [BASE]` | mutation, the `src/` files you changed | `var/infection/` | | `just phpunit-coverage` | coverage, the PHPUnit suites | `var/phpunit-coverage/` | | `just e2e-coverage` | coverage, the Playwright suite | `var/coverage/` | `just e2e-coverage` deletes `var/coverage` at the start of every run. Keep any report you want out of that directory. `just open-coverage` opens the e2e report and `just open-phpunit-coverage` opens the PHPUnit one. `just mutation-diff` is the one to run while you work. It mutates the `src/` files you added or changed against `origin/main`, including uncommitted and untracked ones, and takes minutes. ## Never run two of these at once in one worktree They share one test database. `TEST_SCHEMA_READY` stops each mutant process rebuilding the schema, so a second run that does rebuild it pulls the schema out from under the first. The symptom is `duplicate key value violates unique constraint "pg_type_typname_nsp_index"` in `tests/bootstrap.php`. To stop a run, read `docker exec loupe-php-fpm-1 ps aux | grep