Sari la conținut

Testare

Configurare

Verifică-ți schimbarea pe aparatul tău înainte s-o trimiți.

  • Termină Configurare. Testele Go servesc aplicația web construită, așa că construiește-o mai întâi.

  • Instalează o dată browserul de test:

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

Rulează verificările de zi cu zi

Link către Rulează verificările de zi cu zi
  1. Construiește și verifică codul Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Rulează testele Go:

    Terminal window
    go test ./...
  3. Verifică și testează aplicația web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Rulează regulile de straturi și de așezare a fișierelor:

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

Ar trebui să nu vezi nicio eroare. CI rulează aceleași comenzi, cele Go pe amd64 și arm64, plus o rulare cu detectorul de race (go test -race ./...).

Rulează testele end-to-end

Link către Rulează testele end-to-end

Testele end-to-end conduc un browser real pe un program real. Rulează proiectul pentru zona pe care ai atins-o:

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

Rularea își pornește propriul HolyArrs pe un dosar de configurare nou. Proiectul setup creează mai întâi proprietarul, iar majoritatea celorlalte proiecte îl așteaptă. Rulează suita completă, fără --project, înainte de o versiune.

Ai schimbat Rulează
Filme movies
Seriale shows
Cereri requests, lists, reports
Descărcări sources, downloaders, downloads
Conectare și utilizatori accounts, kid
Sănătate și programe schedules, controls
Aspectul paginilor desktop, phone, a11y

Proiectele sunt numite în app/frontend/playwright.config.ts. Un proiect care depinde de altul îl rulează pe acela primul.

Fel Unde
Go Lângă fișierul pe care îl testează
Unitar web Lângă fișierul lui, ca name.test.ts
End-to-end app/tests/<module>/

Nu apela niciodată un serviciu extern real. Adaugă un înlocuitor în app/tests/fakes. Un test care trece doar pe aparatul tău e stricat.

Simptom. O verificare de structură eșuează. Cauză. Mesajul numește fișierul și regula pe care ai încălcat-o. Soluție. Mută codul sau trimite date simple din modulul de sus. Vezi Module.

Simptom. Testele end-to-end nu pornesc. Cauză. Browserul de test nu e instalat. Soluție. Rulează linia playwright install de mai sus.

Simptom. Testele Go eșuează din cauza paginilor lipsă. Cauză. Aplicația web nu e construită. Soluție. Rulează npm --prefix app/frontend run build.

Etichete de build

Un test cu etichetă e sărit într-un go test ./... simplu. Dă -tags <tag> ca să-l rulezi.

Etichetă Conține
structure Regulile de straturi, așezare a fișierelor, loc al SQL-ului și comentarii din tools/structurecheck
measure Verificări de timp pentru descărcări
lab Teste pe aplicații reale într-un laborator de test. Citesc HOLYARRS_LAB_* și sunt sărite când acestea nu sunt setate
labms, livesubs Rulări de laborator pentru servere media și site-uri de subtitrări live
Rulări lungi și pentru defecte

CI le rulează în plus față de testele simple. Rulează-le înainte de o versiune.

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
Variabilă Face
HOLYARRS_FAULT_OUT Fișierul în care scriu rulările pentru defecte tabelul lor
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Pornesc măsurarea timpului de la oprire forțată până la conectare și numesc fișierul de ieșire
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Pornesc rulările de memorie și numesc fișierul de ieșire
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Runde și sămânță pentru bucla de opriri forțate din app/backend/internal/mediafiles/dbtests (crash_test.go), care se sare sub -short
Servere înlocuitoare și variabile

Testele end-to-end pornesc servere înlocuitoare pentru programe de descărcare, Surse și serverul de metadate, așa că niciun test nu ajunge la un serviciu real. Testele setează variabile precum HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL și HOLYARRS_QBITTORRENT_URL ca să îndrepte programul spre ele. O instalare reală nu are nevoie niciodată de ele.

Contractul API are propriile teste. TestOpenAPIGenerated eșuează când openapi.json se abate de la rute, iar instantaneul tabelului de rute din tools/structurecheck/testdata eșuează la orice rută adăugată, scoasă sau mutată.

HolyArrs este gratuit. Dacă ți-a economisit timp, dă-i o stea pe GitHub, sponsorizează-l sau cumpără-mi o cafea.