Lumaktaw sa nilalaman

Testing

Setup

Suriin ang pagbabago mo sa sarili mong computer bago mo ito ipadala.

  • Tapusin ang Setup. Nagseserbisyo ang mga Go test ng naka-build na web app, kaya i-build muna ito.

  • I-install nang isang beses ang test browser:

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

Patakbuhin ang mga pang-araw-araw na check

Link papunta sa Patakbuhin ang mga pang-araw-araw na check
  1. I-build at i-vet ang Go code:

    Terminal window
    go build ./...
    go vet ./...
  2. Patakbuhin ang mga Go test:

    Terminal window
    go test ./...
  3. Suriin at i-test ang web app:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Patakbuhin ang mga patakaran sa layer at layout ng file:

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

Dapat wala kang makitang pagkabigo. Pareho ang mga command na pinapatakbo ng CI, ang mga Go ay sa amd64 at arm64, dagdag ang isang takbo na may race detector (go test -race ./...).

Patakbuhin ang mga end-to-end test

Link papunta sa Patakbuhin ang mga end-to-end test

Ang mga end-to-end test ay nagpapatakbo ng totoong browser laban sa totoong program. Patakbuhin ang project para sa bahaging ginalaw mo:

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

Sinisimulan ng takbo ang sarili nitong HolyArrs sa bagong config folder. Ang setup project ang unang gumagawa ng May-ari, at karamihan ng ibang project ay naghihintay rito. Patakbuhin ang buong suite nang walang --project bago ang isang release.

Aling mga project ang patatakbuhin

Link papunta sa Aling mga project ang patatakbuhin
Binago mo Patakbuhin
Movies movies
Shows shows
Requests requests, lists, reports
Downloads sources, downloaders, downloads
Sign-in at mga user accounts, kid
Kalusugan at mga iskedyul schedules, controls
Layout ng page desktop, phone, a11y

Ang mga project ay pinangalanan sa app/frontend/playwright.config.ts. Ang project na umaasa sa iba ay pinapatakbo muna ang isa.

Uri Saan
Go Katabi ng file na sinusubok nito
Web unit Katabi ng file nito, bilang name.test.ts
End-to-end app/tests/<module>/

Huwag kailanman tumawag sa totoong serbisyo sa labas. Magdagdag ng pamalit sa ilalim ng app/tests/fakes. Sirang test ang pumapasa lang sa computer mo.

Sintomas. Bumagsak ang isang structure check. Dahilan. Pinangangalanan ng mensahe ang file at ang patakarang nasira mo. Solusyon. Ilipat ang code, o magpasa ng simpleng data mula sa mas mataas na module. Tingnan ang Modules.

Sintomas. Hindi makapagsimula ang mga end-to-end test. Dahilan. Hindi naka-install ang test browser. Solusyon. Patakbuhin ang linya ng playwright install sa itaas.

Sintomas. Bumabagsak ang mga Go test dahil kulang ang mga page. Dahilan. Hindi naka-build ang web app. Solusyon. Patakbuhin ang npm --prefix app/frontend run build.

Mga build tag

Ang test na may tag ay nilalaktawan sa simpleng go test ./.... Magpasa ng -tags <tag> para patakbuhin ito.

Tag Laman
structure Mga patakaran sa layer, layout ng file, lugar ng SQL at comment sa tools/structurecheck
measure Mga check ng oras ng download
lab Mga test laban sa totoong app sa isang test lab. Binabasa nila ang HOLYARRS_LAB_* at nilalaktawan kapag hindi ito naka-set
labms, livesubs Mga takbo sa lab para sa media server at live na site ng subtitle
Mahahaba at fault na takbo

Pinapatakbo ito ng CI bukod sa mga simpleng test. Patakbuhin ang mga ito bago ang isang release.

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
Variable Ginagawa
HOLYARRS_FAULT_OUT File na pinagsusulatan ng mga fault run ng table nila
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT I-on ang pagsukat ng oras mula crash hanggang sign-in at pangalanan ang output file nito
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT I-on ang mga memory run at pangalanan ang output file nila
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Bilang ng round at seed para sa crash loop sa app/backend/internal/mediafiles/dbtests (crash_test.go), na nilalaktawan sa ilalim ng -short
Mga pamalit na server at variable

Ang mga end-to-end test ay nagsisimula ng mga pamalit na server para sa mga downloader, Pinagkukunan at metadata server, kaya walang test na umaabot sa totoong serbisyo. Itinatakda ng mga test ang mga variable tulad ng HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL at HOLYARRS_QBITTORRENT_URL para ituro ang program sa mga iyon. Hindi kailanman kailangan ng totoong install ang mga ito.

May sarili ring mga test ang API contract. Bumabagsak ang TestOpenAPIGenerated kapag lumihis ang openapi.json sa mga route, at bumabagsak ang snapshot ng route table sa tools/structurecheck/testdata sa anumang idinagdag, inalis o inilipat na route.

Libre ang HolyArrs. Kung nakatipid ito ng oras mo, bigyan ito ng star sa GitHub, i-sponsor ito o ibili ako ng kape.