Pāriet uz saturu

Testēšana

Iestatīšana

Pārbaudi savu izmaiņu savā datorā, pirms to nosūti.

  • Pabeidz Iestatīšana. Go testi apkalpo uzbūvēto tīmekļa lietotni, tāpēc vispirms to uzbūvē.

  • Vienreiz uzstādi testu pārlūku:

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

Palaid ikdienas pārbaudes

Saite uz Palaid ikdienas pārbaudes
  1. Uzbūvē un pārbaudi Go kodu:

    Terminal window
    go build ./...
    go vet ./...
  2. Palaid Go testus:

    Terminal window
    go test ./...
  3. Pārbaudi un testē tīmekļa lietotni:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Palaid slāņu un failu izkārtojuma noteikumus:

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

Tev nevajadzētu redzēt nevienu kļūmi. CI palaiž tās pašas komandas, Go komandas uz amd64 un arm64, kā arī vienu palaišanu ar sacīkšu detektoru (go test -race ./...).

Palaid end-to-end testus

Saite uz Palaid end-to-end testus

End-to-end testi vada īstu pārlūku pret īstu programmu. Palaid projektu jomai, ko skāri:

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

Palaišana sāk savu HolyArrs ar svaigu konfigurācijas mapi. Projekts setup vispirms izveido īpašnieku, un lielākā daļa citu projektu to gaida. Pirms versijas palaid pilnu komplektu bez --project.

Kurus projektus palaist

Saite uz Kurus projektus palaist
Tu mainīji Palaid
Filmas movies
Seriālus shows
Pieprasījumus requests, lists, reports
Lejupielādes sources, downloaders, downloads
Pieteikšanos un lietotājus accounts, kid
Veselību un grafikus schedules, controls
Lapas izkārtojumu desktop, phone, a11y

Projekti ir nosaukti app/frontend/playwright.config.ts. Projekts, kas atkarīgs no cita, to palaiž vispirms.

Kur nonāk jauns tests

Saite uz Kur nonāk jauns tests
Veids Kur
Go Blakus failam, ko tas testē
Tīmekļa vienību tests Blakus tā failam, kā name.test.ts
End-to-end app/tests/<module>/

Nekad neizsauc īstu ārēju servisu. Pievieno aizstājēju zem app/tests/fakes. Tests, kas iziet tikai tavā datorā, ir bojāts.

Simptoms. Struktūras pārbaude neizdodas. Cēlonis. Ziņojumā ir minēts fails un noteikums, ko pārkāpi. Risinājums. Pārvieto kodu vai nodod vienkāršus datus no augstākā moduļa. Skaties Moduļi.

Simptoms. End-to-end testi nevar startēt. Cēlonis. Testu pārlūks nav uzstādīts. Risinājums. Izpildi iepriekš minēto playwright install rindu.

Simptoms. Go testi neizdodas, jo trūkst lapu. Cēlonis. Tīmekļa lietotne nav uzbūvēta. Risinājums. Izpildi npm --prefix app/frontend run build.

Būvēšanas birkas

Tests ar birku tiek izlaists parastā go test ./.... Nodod -tags <tag>, lai to palaistu.

Birka Satur
structure Slāņu, failu izkārtojuma, SQL novietojuma un komentāru noteikumi mapē tools/structurecheck
measure Lejupielādes laika pārbaudes
lab Testi pret īstām lietotnēm testa laboratorijā. Tie nolasa HOLYARRS_LAB_* un tiek izlaisti, ja tie nav iestatīti
labms, livesubs Laboratorijas palaišanas multivides serveriem un dzīvajām subtitru vietnēm
Garās un kļūmju palaišanas

CI palaiž tās papildus parastajiem testiem. Palaid tās pirms versijas.

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
Mainīgais Dara
HOLYARRS_FAULT_OUT Fails, kurā kļūmju palaišanas raksta savu tabulu
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Ieslēdz laika mērījumu no avārijas līdz pieteikšanās lapai un nosauc tā izvades failu
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Ieslēdz atmiņas palaišanas un nosauc to izvades failu
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Kārtu skaits un sēkla avāriju cilpai mapē app/backend/internal/mediafiles/dbtests (crash_test.go), kas tiek izlaista ar -short
Aizstājējserveri un mainīgie

End-to-end testi startē aizstājējserverus lejupielādētājiem, avotiem un metadatu serverim, tāpēc neviens tests nesasniedz īstu servisu. Testi iestata mainīgos, piemēram, HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL un HOLYARRS_QBITTORRENT_URL, lai novirzītu programmu uz tiem. Īstai instalācijai tie nekad nav vajadzīgi.

API līgumam ir savi testi. TestOpenAPIGenerated neizdodas, kad openapi.json atšķiras no maršrutiem, un maršrutu tabulas momentuzņēmums mapē tools/structurecheck/testdata neizdodas jebkuram pievienotam, noņemtam vai pārvietotam maršrutam.

HolyArrs ir bezmaksas. Ja tas ietaupīja tavu laiku, atzīmē to ar zvaigznīti GitHub, atbalsti to vai uzcienā mani ar kafiju.