Testes
Configuração
Verifique sua mudança no seu computador antes de enviar.
Antes de começar
Link para Antes de começar-
Termine a Configuração inicial. Os testes Go servem o app web compilado, então compile o app web primeiro.
-
Instale o navegador de teste uma vez:
Terminal window npx --prefix app/frontend playwright install chromium
Execute as verificações do dia a dia
Link para Execute as verificações do dia a dia-
Compile o código Go e passe o vet:
Terminal window go build ./...go vet ./... -
Execute os testes Go:
Terminal window go test ./... -
Verifique e teste o app web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Execute as regras de camadas e de organização dos arquivos:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Você não deve ver nenhuma falha. O CI executa os mesmos comandos, os de Go em amd64 e arm64, mais uma execução com o detector de race (go test -race ./...).
Execute os testes de ponta a ponta
Link para Execute os testes de ponta a pontaOs testes de ponta a ponta controlam um navegador de verdade contra um programa de verdade. Execute o projeto da área em que você mexeu:
npm --prefix app/frontend run e2e -- --project=moviesA execução inicia seu próprio HolyArrs em uma pasta de configuração nova. O projeto setup cria o dono primeiro, e a maioria dos outros projetos espera por ele. Execute a suíte completa, sem --project, antes de uma versão.
Opções
Link para OpçõesQuais projetos executar
Link para Quais projetos executar| Você mudou | Execute |
|---|---|
| Filmes | movies |
| Séries | shows |
| Pedidos | requests, lists, reports |
| Downloads | sources, downloaders, downloads |
| Login e usuários | accounts, kid |
| Saúde e agendamentos | schedules, controls |
| Layout das páginas | desktop, phone, a11y |
Os nomes dos projetos estão em app/frontend/playwright.config.ts. Um projeto que depende de outro executa o outro primeiro.
Para onde vai um teste novo
Link para Para onde vai um teste novo| Tipo | Onde |
|---|---|
| Go | Ao lado do arquivo que ele testa |
| Unitário web | Ao lado do arquivo dele, como name.test.ts |
| Ponta a ponta | app/tests/<module>/ |
Nunca chame um serviço externo de verdade. Adicione um substituto em app/tests/fakes. Um teste que só passa no seu computador está quebrado.
Se não funcionar
Link para Se não funcionarSintoma. Uma verificação de estrutura falha. Causa. A mensagem diz qual é o arquivo e qual regra você quebrou. Solução. Mova o código, ou passe dados simples a partir do módulo mais alto. Veja Módulos.
Sintoma. Os testes de ponta a ponta não iniciam.
Causa. O navegador de teste não está instalado.
Solução. Execute a linha playwright install acima.
Sintoma. Os testes Go falham por falta de páginas.
Causa. O app web não foi compilado.
Solução. Execute npm --prefix app/frontend run build.
Para especialistas
Link para Para especialistasTags de compilação
Um teste com tag é pulado em um go test ./... simples. Passe -tags <tag> para executar o teste.
| Tag | Contém |
|---|---|
structure |
As regras de camadas, de organização dos arquivos, de lugar do SQL e de comentários em tools/structurecheck |
measure |
Verificações de tempo de download |
lab |
Testes contra apps de verdade em um laboratório de testes. Eles leem HOLYARRS_LAB_* e são pulados quando essas variáveis não estão definidas |
labms, livesubs |
Execuções de laboratório para servidores de mídia e sites de legendas reais |
Execuções longas e de falha
O CI executa estas além dos testes simples. Execute todas antes de uma versão.
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| Variável | Faz |
|---|---|
HOLYARRS_FAULT_OUT |
Arquivo onde as execuções de falha escrevem a tabela delas |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Ativam a medição de tempo da falha até o login e dão nome ao arquivo de saída dela |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Ativam as execuções de memória e dão nome ao arquivo de saída delas |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Rodadas e semente do loop de falhas em app/backend/internal/mediafiles/dbtests (crash_test.go), que é pulado com -short |
Servidores substitutos e variáveis
Os testes de ponta a ponta iniciam servidores substitutos para os Gerenciadores de downloads, as Fontes e o servidor de metadados, então nenhum teste chega a um serviço de verdade. Os testes definem variáveis como HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL e HOLYARRS_QBITTORRENT_URL para apontar o programa para eles. Uma instalação de verdade nunca precisa dessas variáveis.
O contrato da API tem seus próprios testes. O TestOpenAPIGenerated falha quando o openapi.json fica diferente das rotas, e o snapshot da tabela de rotas em tools/structurecheck/testdata falha com qualquer rota adicionada, removida ou movida.
Relacionados
Link para RelacionadosO HolyArrs é gratuito. Se ele poupou seu tempo, dê uma estrela no GitHub, patrocine o projeto ou me pague um café.