Developer · FREE

Izolacja testu flaky

Test, który pada czasem, dostaje kwarantannę: reprodukcja N powtórzeń, hipoteza (czas, kolejność, sieć, zegar), izolacja od suitu, dopiero fix. Nie 'odpal jeszcze raz, przeszło'.

reviewed:

Jak zainstalować

  1. Uzupełnij pola poniżej (albo zostaw nazwy zmiennych i dopisz w czacie). Wartości z Skill creatora na liście podstawiają się same.
  2. Kopiuj, potem wklej w Claude.ai (instrukcje projektu) albo ChatGPT (Custom Instructions).
  3. Albo pobierz SKILL.md i połóż w folderze skilli Claude Code.
SKILL
Nazwa testu: [TEST]. Log CI (2-3 padnięcia): [LOG]. Komenda runnera: [KOMENDA].

Sąsiad `raport-repro`: tam ticket objawu produktu. Tu ticket niestabilnego TESTU. Jeśli [LOG] puste - poproś o 2-3 padnięcia z CI (nie "wydaje się") i stop.
Jeśli z [LOG] wynika, że pada ZA KAŻDYM razem - to nie flaky; odeślij do debug-logi / tdd i stop.

Zwracasz:

## 1. Reprodukcja lokalna
Komenda N powtórzeń, dopasowana do runnera, np.:

- pytest: `pytest [TEST] --count=20` (plugin pytest-repeat) albo pętla
- vitest: `--repeat 20`; jest: powtórz komendę N razy (brak `--repeat` w core)
- go: `go test -count=20`
- playwright: `--repeat-each=20`

N >= 20 albo tyle, ile trzeba, by paść choć raz. Wklej: ile runów, ile FAIL, ile PASS. Zero "wydaje się flaky".

## 2. Trzy hipotezy, każda z testem
Nie mniej niż 3, z tej listy (dopasuj do logu):

1. zegar / timezone / `Date.now` / sleep
2. kolejność w pliku / zależność od innego testu (odpal solo vs cały plik)
3. I/O: sieć, FS, port, baza bez seeda
4. współdzielony stan: singleton, global, cache, worker

Każda hipoteza: jak obalić (jedna komenda albo jedna zmiana w teście, np. fake timers, `--seed`, odpalenie solo). Wynik: obalona / potwierdzona / nierozstrzygnięta.

## 3. Decyzja (jedna)
A. FIX: przyczyna znana, nowa asercja albo izolacja stanu, test wraca do suitu. Pokaż asercję, która paliłaby stary flaky.
B. KWARANTANNA: wypadasz z suitu na czas, ALE: właściciel (osoba albo zespół), data przeglądu, link ticketu. Skip/`xit`/`quarantine` BEZ ticketu = zakaz.

Zakazy: "odpal jeszcze raz"; wyłączenie na stałe; `sleep 100` jako fix; oznaczenie całego pliku skip bo jeden test. Dywiz "-".

Zanim wkleisz

Skill vs zły prompt

Zły prompt

Ten test czasem pada, wyłącz go albo odpal jeszcze raz, u mnie działa.

Skill

Nazwa testu: [TEST]. Log CI (2-3 padnięcia): [LOG]. Komenda runnera: [KOMENDA].

Sąsiad `raport-repro`: tam ticket objawu produktu. Tu ticket niestabilnego TESTU. Jeśli [LOG] puste - poproś o 2-3 padnięcia z CI (nie "wydaje się") i stop.
Jeśli z [LOG] wynika, że pada ZA KAŻDYM razem - to nie flaky; odeślij do debug-logi / tdd i stop.

Zwracasz:

## 1. Reprodukcja lokalna

Użyj z tym narzędziem

Lekcja: claude-start-06-claude-dla-programisty

Pytania

Jak użyć skilla "Izolacja testu flaky" w Claude?

Uzupełnij pola w nawiasach (albo weź je z profilu Skill creator na /skille), kliknij Kopiuj i wklej treść do instrukcji projektu w Claude.ai. W Claude Code kliknij Pobierz SKILL.md i połóż plik w folderze skilli. Skill działa też w ChatGPT (Custom Instructions). Nie chowa się za paywallem: kopia jest darmowa.

Kiedy tego skilla NIE używać?

Nie gdy test pada zawsze (to zwykły bug, nie flaky). Nie do wyłączania testu na stałe bez ticketu. Nie gdy nie masz logu z CI.