Ir al contenido

Pruebas

Configuración

Comprueba tu cambio en tu equipo antes de enviarlo.

  • Termina la Configuración. Las pruebas de Go sirven la app web compilada, así que compílala primero.

  • Instala el navegador de pruebas una vez:

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

Ejecuta las comprobaciones de cada día

Enlace a Ejecuta las comprobaciones de cada día
  1. Compila el código Go y pásale vet:

    Terminal window
    go build ./...
    go vet ./...
  2. Ejecuta las pruebas de Go:

    Terminal window
    go test ./...
  3. Comprueba y prueba la app web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Ejecuta las reglas de capas y de distribución de archivos:

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

No deberías ver ningún fallo. CI ejecuta los mismos comandos, los de Go en amd64 y arm64, más una ejecución con el detector de carreras (go test -race ./...).

Ejecuta las pruebas de extremo a extremo

Enlace a Ejecuta las pruebas de extremo a extremo

Las pruebas de extremo a extremo manejan un navegador real contra un programa real. Ejecuta el proyecto de la zona que tocaste:

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

La ejecución inicia su propio HolyArrs con una carpeta de configuración nueva. El proyecto setup crea primero al propietario, y la mayoría de los demás proyectos lo esperan. Ejecuta el conjunto completo sin --project antes de una versión.

Qué proyectos ejecutar

Enlace a Qué proyectos ejecutar
Cambiaste Ejecuta
Películas movies
Series shows
Solicitudes requests, lists, reports
Descargas sources, downloaders, downloads
Inicio de sesión y usuarios accounts, kid
Salud y programaciones schedules, controls
Diseño de las páginas desktop, phone, a11y

Los nombres de los proyectos están en app/frontend/playwright.config.ts. Un proyecto que depende de otro lo ejecuta primero.

Dónde va una prueba nueva

Enlace a Dónde va una prueba nueva
Tipo Dónde
Go Junto al archivo que prueba
Unitaria web Junto a su archivo, como name.test.ts
De extremo a extremo app/tests/<module>/

Nunca llames a un servicio externo real. Añade un sustituto en app/tests/fakes. Una prueba que solo pasa en tu equipo está rota.

Síntoma. Falla una comprobación de estructura. Causa. El mensaje indica el archivo y la regla que rompiste. Solución. Mueve el código, o pasa datos simples desde el módulo superior. Consulta Módulos.

Síntoma. Las pruebas de extremo a extremo no pueden iniciarse. Causa. El navegador de pruebas no está instalado. Solución. Ejecuta la línea de playwright install de arriba.

Síntoma. Las pruebas de Go fallan porque faltan páginas. Causa. La app web no está compilada. Solución. Ejecuta npm --prefix app/frontend run build.

Etiquetas de compilación

Una prueba con etiqueta se omite en un go test ./... normal. Pasa -tags <tag> para ejecutarla.

Etiqueta Contiene
structure Las reglas de capas, distribución de archivos, ubicación del SQL y comentarios de tools/structurecheck
measure Comprobaciones de tiempos de descarga
lab Pruebas contra apps reales en un laboratorio de pruebas. Leen HOLYARRS_LAB_* y se omiten cuando no están definidas
labms, livesubs Ejecuciones de laboratorio para servidores multimedia y sitios de subtítulos reales
Ejecuciones largas y de fallos

CI las ejecuta además de las pruebas normales. Ejecútalas antes de una versión.

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 Qué hace
HOLYARRS_FAULT_OUT Archivo donde las ejecuciones de fallos escriben su tabla
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Activan la medición del tiempo entre la caída y el inicio de sesión e indican su archivo de salida
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Activan las ejecuciones de memoria e indican su archivo de salida
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Rondas y semilla del bucle de caídas en app/backend/internal/mediafiles/dbtests (crash_test.go), que se omite con -short
Servidores sustitutos y variables

Las pruebas de extremo a extremo inician servidores sustitutos para los gestores de descargas, las Fuentes y el servidor de metadatos, así que ninguna prueba llega a un servicio real. Las pruebas definen variables como HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL y HOLYARRS_QBITTORRENT_URL para dirigir el programa hacia ellos. Una instalación real nunca las necesita.

El contrato de la API tiene sus propias pruebas. TestOpenAPIGenerated falla cuando openapi.json se desvía de las rutas, y la instantánea de la tabla de rutas en tools/structurecheck/testdata falla ante cualquier ruta añadida, quitada o movida.

HolyArrs es gratis. Si te ahorró tiempo, dale una estrella en GitHub, patrocínalo o invítame a un café.