Hoppa till innehåll

Testning

Konfiguration

Kontrollera din ändring på din dator innan du skickar den.

  • Slutför Konfiguration. Go-testerna serverar den byggda webbappen, så bygg den först.

  • Installera testwebbläsaren en gång:

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

Kör de vanliga kontrollerna

Länk till Kör de vanliga kontrollerna
  1. Bygg och granska Go-koden:

    Terminal window
    go build ./...
    go vet ./...
  2. Kör Go-testerna:

    Terminal window
    go test ./...
  3. Kontrollera och testa webbappen:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Kör reglerna för lager och filstruktur:

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

Du ska inte se något fel. CI kör samma kommandon, Go-kommandona på amd64 och arm64, plus en körning med race-detektorn (go test -race ./...).

Kör end-to-end-testerna

Länk till Kör end-to-end-testerna

End-to-end-tester styr en riktig webbläsare mot ett riktigt program. Kör projektet för området du rörde:

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

Körningen startar sitt eget HolyArrs på en ny konfigurationsmapp. Projektet setup skapar ägaren först, och de flesta andra projekt väntar på det. Kör hela sviten utan --project före en version.

Vilka projekt du ska köra

Länk till Vilka projekt du ska köra
Du ändrade Kör
Filmer movies
Serier shows
Förfrågningar requests, lists, reports
Nedladdningar sources, downloaders, downloads
Inloggning och användare accounts, kid
Hälsa och scheman schedules, controls
Sidlayout desktop, phone, a11y

Projekten är namngivna i app/frontend/playwright.config.ts. Ett projekt som beror på ett annat kör det först.

Vart ett nytt test hör hemma

Länk till Vart ett nytt test hör hemma
Sort Var
Go Bredvid filen det testar
Webb-enhetstest Bredvid sin fil, som name.test.ts
End-to-end app/tests/<module>/

Anropa aldrig en riktig extern tjänst. Lägg till en ersättare under app/tests/fakes. Ett test som bara går igenom på din dator är trasigt.

Symptom. En strukturkontroll misslyckas. Orsak. Meddelandet nämner filen och regeln du bröt. Lösning. Flytta koden, eller skicka ner vanlig data från den högre modulen. Se Moduler.

Symptom. End-to-end-testerna kan inte starta. Orsak. Testwebbläsaren är inte installerad. Lösning. Kör raden med playwright install ovan.

Symptom. Go-testerna misslyckas på att sidor saknas. Orsak. Webbappen är inte byggd. Lösning. Kör npm --prefix app/frontend run build.

Build-taggar

Ett test med en tagg hoppas över i en vanlig go test ./.... Ange -tags <tag> för att köra det.

Tagg Innehåller
structure Reglerna för lager, filstruktur, SQL-placering och kommentarer i tools/structurecheck
measure Tidskontroller för nedladdningar
lab Tester mot riktiga appar i ett testlabb. De läser HOLYARRS_LAB_* och hoppas över när de inte är satta
labms, livesubs Labbkörningar för mediaservrar och riktiga undertextsidor
Långa körningar och felkörningar

CI kör dessa utöver de vanliga testerna. Kör dem före 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 som felkörningarna skriver sin tabell till
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Slår på tidtagningen från krasch till inloggning och namnger dess utdatafil
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Slår på minneskörningarna och namnger deras utdatafil
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Antal rundor och frö för kraschloopen i app/backend/internal/mediafiles/dbtests (crash_test.go), som hoppas över under -short
Ersättarservrar och variabler

End-to-end-testerna startar ersättarservrar för nedladdare, källor och metadataservern, så inget test når en riktig tjänst. Testerna sätter variabler som HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL och HOLYARRS_QBITTORRENT_URL för att peka programmet mot dem. En riktig installation behöver dem aldrig.

API-kontraktet har egna tester. TestOpenAPIGenerated misslyckas när openapi.json glider isär från routerna, och ögonblicksbilden av route-tabellen i tools/structurecheck/testdata misslyckas vid varje tillagd, borttagen eller flyttad route.

HolyArrs är gratis. Om det sparade dig tid kan du ge det en stjärna på GitHub, sponsra det eller bjuda mig på en kaffe.