Skip to content
daveprojectdevPublic

About

qa.davidameth.dev: el resultado de cada corrida de pruebas, publicado por el propio CI

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

128 Commits

Folders and files

Repository files navigation

qa.davidameth.dev

Calidad, en vivo: el resultado de cada corrida de pruebas de mis proyectos, publicado por el propio CI. Nadie edita esta página a mano.

Suite Qué prueba Cuándo corre
portafolio-e2e Playwright contra davidameth.dev: escritorio y teléfono, enlaces, SEO y datos estructurados, llms.txt, paridad ES/EN y axe WCAG 2.1 AA lunes, jueves y sábado, 06:00 (Panamá)
api-torneo pytest, Hypothesis, Schemathesis y oráculo contra api.davidameth.dev (código) en cada push a main
red-dns El dominio desde fuera: DNSSEC, SPF, DMARC, CAA, certificados, http→https, HSTS y redirecciones (checks/red_dns.py) todos los días, 07:00 (Panamá); publica con el GITHUB_TOKEN de este repo
lab-red Containerlab con la red de un banco: configuraciones, rutas, caminos del tráfico, cortes de enlace, ataques y la red de cajeros (código) en cada push a main y los lunes, 06:00 (Panamá)

Cómo funciona

  1. Al empezar, cada suite sube un aviso a data/en-curso/<suite>/<corrida>-<intento>.json y la página la muestra en azul, «en ejecución». Al terminar lo borra, con if: always(): pase, falle o se cancele. Un aviso con más de dos horas se ignora, por si una corrida se cayó sin limpiarlo.
  2. Al terminar, el resultado se guarda como un archivo nuevo, data/corridas/<suite>/<fecha>-<corrida>-<intento>.json. Un archivo por corrida, para que dos suites que terminan a la vez nunca choquen.
    • portafolio-e2e y api-torneo corren en sus propios repositorios: resumen su informe (el JSON de Playwright o el JUnit y la cobertura de pytest) y lo suben aquí con la API de contenidos de GitHub y un token de grano fino que solo puede escribir en este repo (QA_TOKEN).
    • red-dns corre en este mismo repo (checks/red_dns.py) y hace commit con el GITHUB_TOKEN de la corrida.
  3. Cada archivo es un commit, y Vercel vuelve a desplegar: node build.mjs arma dist/ sin dependencias, con una portada por idioma y una página por corrida.

Las corridas anteriores al 2026-10-02 se importaron del historial de GitHub Actions con scripts/importar_historial.py. De las que ya no tenían informe (Playwright lo guarda 14 días) solo queda el resultado, y se dibujan con rayas. Volver a correrlo no duplica nada: solo completa el detalle que falte.

Los datos crudos están también en /estado.json.

El repo del portafolio es privado, así que sus corridas no llevan enlace: se publican las cifras y los títulos de las pruebas.

Formato de una corrida

{
  "suite": "api-torneo",
  "fecha": "2026-10-02T04:38:52Z",
  "resultado": "pasa",
  "pasadas": 90,
  "fallidas": 0,
  "inestables": 0,
  "omitidas": 0,
  "duracion_s": 44,
  "cobertura": 99.4,
  "commit": "dfadcbb",
  "corrida": "https://github.com/daveprojectdev/api-torneo/actions/runs/…",
  "fallos": [],
  "detalle": true,
  "pruebas": [
    {
      "archivo": "tests/test_api.py",
      "titulo": "test_equipos_en_orden_de_siembra",
      "proyecto": null,
      "estado": "pasa",
      "ms": 81,
      "error": null
    }
  ]
}
  • resultado es pasa, falla o no-corrio (el CI terminó en rojo antes de llegar a las pruebas; lleva motivo con el paso que falló).
  • pruebas trae cada prueba con su estado (pasa, falla, inestable u omitida); proyecto es desktop o mobile en las e2e.
  • detalle: false marca una corrida de la que solo queda el resultado; importada: true, una que vino del historial.
  • estado.json publica todo menos pruebas, que haría el archivo enorme: el detalle está en data/corridas/.

Local

node build.mjs

Las fuentes de public/fuentes/ (Schibsted Grotesk, Atkinson Hyperlegible Next e IBM Plex Mono) están bajo la SIL Open Font License 1.1.

About

qa.davidameth.dev: el resultado de cada corrida de pruebas, publicado por el propio CI

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages