Skip to main content

snapshots-update

Write each snapshot of this project again, then run the integration suite until it passes. Use when the user asks to update the snapshots, when a test of `tests/Visual/` fails, or when `composer test:integration` fails after a change of the number of the tests.

Quellinformationen

Repository
pestphp/pest
Letzte Quellaktivität
24. August 2026 um 09:51
Erkannte Sprache von SKILL.md
Englisch
Sterne
11.732
Forks
544

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
snapshots-update
description
Write each snapshot of this project again, then run the integration suite until it passes. Use when the user asks to update the snapshots, when a test of `tests/Visual/` fails, or when `composer test:integration` fails after a change of the number of the tests.
disable-model-invocation
true
# Snapshots Write each snapshot of this project again, then run `composer test:integration` until it passes. `tests/Pest.php` puts each test of `tests/Visual/` in the group `integration`, and each of those tests asserts the output of a full run of the suite. Thus a change of the number of the tests, of the number of the assertions, or of one line of the output of `bin/pest` breaks the integration suite, and this skill repairs it. Obey the order of the sections. Section 3 writes the number of the tests of a clean run, and section 4 writes that number into `tests/.snapshots/success.txt`. The reverse order writes the failure of the test `parallel` into that snapshot, and the integration suite then fails on the test `visual snapshot of test suite on success`. ## 1. Read the working tree Run `git status --short`. Name each file that carries a change, then continue with that change in place, because the user starts this skill in the middle of a change. Write no commit and no tag during this work. Leave each change in the working tree. ## 2. Turn off the coverage driver Put `XDEBUG_MODE=off` in front of each command of this skill. `.github/workflows/tests.yml` gives `coverage: none` to each job, thus a run of this project on GitHub collects no coverage, and `tests/.snapshots/success.txt` holds the line `it adds coverage if --coverage exist → Coverage is not available`. A run with a coverage driver writes one test more as passed, and the snapshot then fails on GitHub. Run `php -m | grep -iE "xdebug|pcov"` and read the name of each coverage driver of this computer. `XDEBUG_MODE=off` turns off `xdebug`. Add `-d pcov.enabled=0` to `php` for `pcov`, and run the command of the composer script `update:snapshots` directly for that flag. ## 3. Write the summary of the parallel run Run this command with a timeout of 900 seconds: ``` XDEBUG_MODE=off COLLISION_PRINTER=DefaultPrinter COLLISION_IGNORE_DURATION=true PAO_DISABLE=1 php bin/pest --parallel --processes=3 --exclude-group=integration ``` Read the line that starts with `Tests:`. Take the text after `Tests:` up to and with `(<number> assertions)`, such as `2 deprecated, 4 warnings, 5 incomplete, 3 notices, 40 todos, 27 skipped, 1578 passed (3426 assertions)`. That text is the summary. Run `grep -n "assertions)';" tests/Visual/Parallel.php`. The command gives one line, and that line holds the value of `$expected` of the test `parallel`. Write the summary in that line when the two texts differ, and change no other line of the file. ## 4. Write each snapshot again Run `XDEBUG_MODE=off composer update:snapshots` with a timeout of 1800 seconds. The command runs `REBUILD_SNAPSHOTS=true php bin/pest --update-snapshots --exclude-group=tia`, and it writes `tests/.snapshots/success.txt` and each file under `tests/.pest/snapshots/`. The command starts a full suite inside a test of `tests/Visual/`, thus the command needs some minutes. The command exits with the code 2 after a correct run. Read the output and accept these three results: - a `FAILED` test of `tests/Visual/`, because the test reads the old snapshot and writes the new snapshot in the same run. - a `FAILED` test of `tests/Features/Flaky.php`, because `--update-snapshots` writes each snapshot and a flaky test stops the retry when a snapshot changes. - a `RISKY` test that performs no assertion, because a test that only writes a snapshot asserts nothing. Run `XDEBUG_MODE=off composer test:unit` for a `FAILED` test outside `tests/Visual/` and outside `tests/Features/Flaky.php`. That command writes no snapshot, thus it separates a regression of the code from an effect of `--update-snapshots`. Stop when the test fails again, give the report of section 6, and write no snapshot again. Run `grep -c "Coverage is not available" tests/.snapshots/success.txt`. The count is 1. Return to section 2 for the count 0, because a coverage driver of this computer stays on. ## 5. Run the integration suite Run `XDEBUG_MODE=off composer test:integration` with a timeout of 3600 seconds. Read each test that failed, then take one action. | Test that failed | Action | | --- | --- | | the test `parallel` of `tests/Visual/Parallel.php` | Return to section 3, because the numbers of the suite moved after the last measure. | | a different test of `tests/Visual/` | Return to section 3, because `tests/.snapshots/success.txt` holds the numbers of section 3. | | a test outside `tests/Visual/` | Stop. Give the report of section 6, and write no snapshot again. | Return to section 3 two times at the most. Give the report of section 6 after the last run, and name each test that failed in that run. ## 6. Report Give four items: - each file that this work changed, from `git status --short`. - the summary that `tests/Visual/Parallel.php` holds now, and the summary that the file held before this work. - the result of the last run of `composer test:integration`, and the name of each test that failed in that run. - each section that you repeated, and the reason.
Auf GitHub ansehen