Gå til indhold

Testning

Opsætning

Tjek din ændring på din egen computer, før du sender den.

  • Gennemfør Opsætning. Go-testene serverer den byggede web-app, så byg den først.

  • Installer testbrowseren én gang:

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

Kør de daglige tjek

Link til Kør de daglige tjek
  1. Byg og vet Go-koden:

    Terminal window
    go build ./...
    go vet ./...
  2. Kør Go-testene:

    Terminal window
    go test ./...
  3. Tjek og test web-appen:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Kør reglerne for lag og filplacering:

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

Du bør ikke se nogen fejl. CI kører de samme kommandoer, Go-kommandoerne på amd64 og arm64, plus én kørsel med race-detektoren (go test -race ./...).

Kør end-to-end-testene

Link til Kør end-to-end-testene

End-to-end-tests styrer en rigtig browser mod et rigtigt program. Kør projektet for det område, du har rørt:

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

Kørslen starter sit eget HolyArrs på en ny konfigurationsmappe. Projektet setup laver først ejeren, og de fleste andre projekter venter på det. Kør hele pakken uden --project før en version.

Hvilke projekter du skal køre

Link til Hvilke projekter du skal køre
Du ændrede Kør
Film movies
Serier shows
Ønsker requests, lists, reports
Downloads sources, downloaders, downloads
Login og brugere accounts, kid
Tilstand og tidsplaner schedules, controls
Sidelayout desktop, phone, a11y

Projekterne er navngivet i app/frontend/playwright.config.ts. Et projekt, der afhænger af et andet, kører det først.

Hvor en ny test hører hjemme

Link til Hvor en ny test hører hjemme
Slags Hvor
Go Ved siden af filen, den tester
Web-enhedstest Ved siden af sin fil, som name.test.ts
End-to-end app/tests/<module>/

Kald aldrig en rigtig ekstern tjeneste. Tilføj en stand-in under app/tests/fakes. En test, der kun består på din computer, er i stykker.

Hvis det ikke virker

Link til Hvis det ikke virker

Symptom. Et strukturtjek fejler. Årsag. Beskeden nævner filen og den regel, du brød. Løsning. Flyt koden, eller send almindelige data ind fra det højere modul. Se Moduler.

Symptom. End-to-end-tests kan ikke starte. Årsag. Testbrowseren er ikke installeret. Løsning. Kør linjen med playwright install ovenfor.

Symptom. Go-testene fejler på manglende sider. Årsag. Web-appen er ikke bygget. Løsning. Kør npm --prefix app/frontend run build.

Build-tags

En test med et tag springes over i en almindelig go test ./.... Angiv -tags <tag> for at køre den.

Tag Indeholder
structure Reglerne for lag, filplacering, placering af SQL og kommentarer i tools/structurecheck
measure Tjek af downloadtid
lab Tests mod rigtige apps i et testlab. De læser HOLYARRS_LAB_* og springes over, når de ikke er sat
labms, livesubs Lab-kørsler for medieservere og levende undertekstsider
Lange kørsler og fejlkørsler

CI kører disse oven på de almindelige tests. Kør dem før en version.

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
Variabel Gør
HOLYARRS_FAULT_OUT Filen, fejlkørslerne skriver deres tabel til
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Slå tidsmålingen fra nedbrud til login til og navngiv dens outputfil
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Slå hukommelseskørslerne til og navngiv deres outputfil
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Runder og seed til nedbrudsløkken i app/backend/internal/mediafiles/dbtests (crash_test.go), som springes over under -short
Stand-in-servere og variabler

End-to-end-tests starter stand-in-servere til downloadere, kilder og metadataserveren, så ingen test når en rigtig tjeneste. Testene sætter variabler som HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL og HOLYARRS_QBITTORRENT_URL for at pege programmet på dem. En rigtig installation har aldrig brug for dem.

API-kontrakten har sine egne tests. TestOpenAPIGenerated fejler, når openapi.json glider fra ruterne, og snapshottet af rutetabellen i tools/structurecheck/testdata fejler ved enhver tilføjet, fjernet eller flyttet rute.

HolyArrs er gratis. Hvis det sparede dig tid, kan du give det en stjerne på GitHub, sponsorere det eller give mig en kop kaffe.