todos-contra-el-fuego-web/e2e
vjrj b0ca838788
All checks were successful
build-image / test (push) Successful in 2m10s
build-image / build (push) Successful in 10m57s
test(e2e): afinar el diagnóstico del mapa gris — no es DefMapLayers
/zones y /fires usan el mismo componente con las mismas props y en staging uno
pinta 18 teselas y el otro cero, con el mapa inicializado y con vista en ambos.
Hay que mirar cómo FiresMap monta los hijos del MapContainer, no el componente
de capas. Y el detalle de fuego pide `satellite`, una capa de Google que ni
existe hasta que se resuelve la clave.

Además el script de QA deja de usar selectores por id: TestUtils.testId()
devuelve el id SOLO en desarrollo, así que en staging y producción no existen —
cualquier prueba de navegador escrita con ids pasa en local y falla en staging.
2026-08-02 14:50:39 +02:00
..
support test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
tests test(e2e): afinar el diagnóstico del mapa gris — no es DefMapLayers 2026-08-02 14:50:39 +02:00
.gitignore fix(maps): el mapa de /fires se quedaba en gris cuando hay clave de Google 2026-08-01 23:17:50 +02:00
package-lock.json test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
package.json test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
playwright.config.js test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
README.md test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
seed.js test(e2e): browser suite for the flows the server tests cannot see 2026-08-01 18:44:09 +02:00
staging-qa.mjs test(e2e): afinar el diagnóstico del mapa gris — no es DefMapLayers 2026-08-02 14:50:39 +02:00

Suite e2e (Playwright)

Cubre en navegador los flujos que la suite de servidor no puede ver: registro y acceso, alta y baja de una zona desde el mapa, que la unión de zonas se pinte en /subscriptions y en /zones, comentario en el detalle de un fuego, y cambio de idioma.

El motivo de que exista: el 2026-07-30 suscribirse a una zona congeló staging (la unión bloqueaba el event loop y DDP dejaba de responder). Ningún test de servidor habría visto eso — el navegador sí.

⚠️ Contra qué se puede correr

Solo contra un stack desechable: docker-compose.e2e.yml o un servidor de desarrollo local. La siembra (e2e/seed.js) borra colecciones, y los tests crean usuarios y zonas. playwright.config.js se niega a arrancar si E2E_BASE_URL apunta a testfuegos.comunes.org o a los dominios de producción.

Uso

Stack efímero completo (lo mismo que hace el CI):

docker compose -f docker-compose.e2e.yml up -d --build
npm --prefix e2e ci
npx --prefix e2e playwright install --with-deps chromium
E2E_BASE_URL=http://localhost:3300 npm --prefix e2e test
docker compose -f docker-compose.e2e.yml down -v

Contra un servidor de desarrollo (ciclo rápido mientras se escriben tests):

docker run -d --name tcef-e2e-mongo -p 27021:27017 --tmpfs /data/db mongo:7 --replSet rs0 --bind_ip_all
docker exec tcef-e2e-mongo mongosh --quiet --eval 'rs.initiate({_id:"rs0",members:[{_id:0,host:"localhost:27017"}]})'
docker cp e2e/seed.js tcef-e2e-mongo:/tmp/seed.js && docker exec tcef-e2e-mongo mongosh --quiet fuegos /tmp/seed.js

export PATH="$HOME/.meteor:$PATH"
MONGO_URL='mongodb://localhost:27021/fuegos?replicaSet=rs0&directConnection=true' \
MONGO_OPLOG_URL='mongodb://localhost:27021/local?replicaSet=rs0&directConnection=true' \
ROOT_URL=http://localhost:3100 meteor --settings settings-ci.json --port 3100

npm --prefix e2e test          # E2E_BASE_URL por defecto: http://localhost:3100

Ver el informe del último fallo: npm --prefix e2e run report.

Dependencias externas

El navegador carga las teselas de CartoDB y el script de Google Maps (el autocompletado de lugares). El runner necesita salida a internet; sin ella los mapas no llegan a pintarse y los tests de zona fallan. La clave de Google puede ir vacía: Gkeys ya no se queda esperándola.

Lo que la suite documenta como roto

i18n.spec.js deja un test.fixme para un bug real: el idioma elegido en el perfil no sobrevive a una recarga (se guarda en la cuenta y se aplica al iniciar sesión, pero al recargar vuelve al idioma del navegador). Está ahí para que aparezca en cada ejecución en vez de perderse en una nota.