Testning
Opsætning
Tjek din ændring på din egen computer, før du sender den.
Før du begynder
Link til Før du begynder-
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-
Byg og vet Go-koden:
Terminal window go build ./...go vet ./... -
Kør Go-testene:
Terminal window go test ./... -
Tjek og test web-appen:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
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-testeneEnd-to-end-tests styrer en rigtig browser mod et rigtigt program. Kør projektet for det område, du har rørt:
npm --prefix app/frontend run e2e -- --project=moviesKø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.
Valg
Link til ValgHvilke 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 virkerSymptom. 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.
For erfarne
Link til For erfarneBuild-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.
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrsHOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrsHOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrsgo 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.
Se også
Link til Se ogsåHolyArrs er gratis. Hvis det sparede dig tid, kan du give det en stjerne på GitHub, sponsorere det eller give mig en kop kaffe.