Přeskočit na obsah

Testování

Nastavení

Zkontroluj svou změnu na svém počítači, než ji pošleš.

  • Dokonči přípravu. Testy v Go servírují sestavenou webovou aplikaci, takže ji nejdřív sestav.

  • Jednou nainstaluj testovací prohlížeč:

    Terminal window
    npx --prefix app/frontend playwright install chromium

Spusť běžné kontroly

Odkaz na Spusť běžné kontroly
  1. Sestav a zkontroluj kód v Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Spusť testy v Go:

    Terminal window
    go test ./...
  3. Zkontroluj a otestuj webovou aplikaci:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Spusť pravidla pro vrstvy a rozložení souborů:

    Terminal window
    go test -tags structure ./app/backend/tools/structurecheck

Neměl bys vidět žádné selhání. CI pouští stejné příkazy, ty v Go na amd64 a arm64, plus jeden běh s detektorem race (go test -race ./...).

Spusť end-to-end testy

Odkaz na Spusť end-to-end testy

End-to-end testy ovládají skutečný prohlížeč proti skutečnému programu. Spusť projekt pro oblast, které ses dotkl:

Terminal window
npm --prefix app/frontend run e2e -- --project=movies

Běh si spustí vlastní HolyArrs na čerstvé konfigurační složce. Projekt setup nejdřív vytvoří vlastníka a většina ostatních projektů na něj čeká. Před vydáním spusť celou sadu bez --project.

Které projekty spustit

Odkaz na Které projekty spustit
Změnil jsi Spusť
Filmy movies
Seriály shows
Žádosti requests, lists, reports
Stahování sources, downloaders, downloads
Přihlášení a uživatele accounts, kid
Zdraví a plány schedules, controls
Rozložení stránky desktop, phone, a11y

Projekty se jmenují v app/frontend/playwright.config.ts. Projekt, který závisí na jiném, ho spustí první.

Kam patří nový test

Odkaz na Kam patří nový test
Druh Kam
Go Vedle souboru, který testuje
Webový unit test Vedle svého souboru, jako name.test.ts
End-to-end app/tests/<module>/

Nikdy nevolej skutečnou vnější službu. Přidej náhradu do app/tests/fakes. Test, který projde jen na tvém počítači, je rozbitý.

Když to nefunguje

Odkaz na Když to nefunguje

Příznak. Selže kontrola struktury. Příčina. Zpráva jmenuje soubor a pravidlo, které jsi porušil. Řešení. Přesuň kód, nebo obyčejná data předej z vyššího modulu. Viz moduly.

Příznak. End-to-end testy se nespustí. Příčina. Testovací prohlížeč není nainstalovaný. Řešení. Spusť řádek playwright install výše.

Příznak. Testy v Go selžou kvůli chybějícím stránkám. Příčina. Webová aplikace není sestavená. Řešení. Spusť npm --prefix app/frontend run build.

Build tagy

Test s tagem se v obyčejném go test ./... přeskočí. Spustíš ho přes -tags <tag>.

Tag Obsahuje
structure Pravidla pro vrstvy, rozložení souborů, umístění SQL a komentáře v tools/structurecheck
measure Kontroly časování stahování
lab Testy proti skutečným aplikacím v testovací laboratoři. Čtou HOLYARRS_LAB_* a přeskočí se, když nejsou nastavené
labms, livesubs Běhy v laboratoři pro mediální servery a živé weby s titulky
Dlouhé běhy a běhy poruch

CI je pouští navíc k obyčejným testům. Před vydáním je spusť také.

Terminal window
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrs
HOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrs
HOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrs
go test -count=1 -run '^TestDownloaderConformance$' ./app/backend/internal/downloads
Proměnná Dělá
HOLYARRS_FAULT_OUT Soubor, do kterého běhy poruch zapíšou svou tabulku
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Zapnou měření času od pádu po přihlášení a pojmenují jeho výstupní soubor
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Zapnou paměťové běhy a pojmenují jejich výstupní soubor
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Počet kol a seed pro smyčku pádů v app/backend/internal/mediafiles/dbtests (crash_test.go), která se při -short přeskočí
Náhradní servery a proměnné

End-to-end testy spouštějí náhradní servery pro stahovače, zdroje a metadata server, takže žádný test nesáhne na skutečnou službu. Testy nastavují proměnné jako HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL a HOLYARRS_QBITTORRENT_URL, aby na ně program nasměrovaly. Skutečná instalace je nikdy nepotřebuje.

Kontrakt API má vlastní testy. TestOpenAPIGenerated selže, když se openapi.json rozejde s trasami, a snímek tabulky tras v tools/structurecheck/testdata selže při každé přidané, odebrané nebo přesunuté trase.

HolyArrs je zdarma. Pokud ti ušetřil čas, dej mu hvězdičku na GitHubu, podpoř ho sponzorstvím nebo kup mi kávu.