Pruebas
Configuración
Comprueba tu cambio en tu equipo antes de enviarlo.
Antes de empezar
Enlace a Antes de empezar-
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-
Compila el código Go y pásale vet:
Terminal window go build ./...go vet ./... -
Ejecuta las pruebas de Go:
Terminal window go test ./... -
Comprueba y prueba la app web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
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 extremoLas pruebas de extremo a extremo manejan un navegador real contra un programa real. Ejecuta el proyecto de la zona que tocaste:
npm --prefix app/frontend run e2e -- --project=moviesLa 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.
Opciones
Enlace a OpcionesQué 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.
Si no funciona
Enlace a Si no funcionaSí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.
Para expertos
Enlace a Para expertosEtiquetas 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.
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| 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.
Relacionado
Enlace a RelacionadoHolyArrs es gratis. Si te ahorró tiempo, dale una estrella en GitHub, patrocínalo o invítame a un café.