Parallel-worktree Playwright runs silently serve another worktree's source

Abierto
#560 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
git, javascript, playwright, typescript

Línea de trabajo

Comienza inspeccionando playwright.config.js y build/e2e-serve.mjs; después, revisa el fallo de los worktrees paralelos descrito para tests/e2e/tile-open-workbench.spec.js. Verifica que los worktrees concurrentes no puedan reutilizar silenciosamente el servidor de otro checkout y que un desajuste falle claramente antes de que se ejecuten las specs. Considera documentar el problema relacionado de cobertura de Vitest en docs/DEVELOPMENT.md si sigue estando dentro del alcance.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug inbox

What

Parallel Playwright runs in different git worktrees of this repo silently serve each other's files, producing failures that have nothing to do with the branch under test.

playwright.config.js sets reuseExistingServer: !process.env.CI and the webServer binds a fixed default port. Every worktree uses the same config, so the second worktree to start a run finds the port already bound, skips launching its own build/e2e-serve.mjs, and attaches to the first worktree's server — which raw-serves that worktree's /src and tests/e2e. The specs then run against another branch's source with no warning.

How it showed up

During a multi-worktree /ship run (PRs #554–#558), three separate workers reported e2e failures in tests/e2e/tile-open-workbench.spec.js — one reported 4 failures, another 2, on branches that touch nothing related. One worker "confirmed" them as pre-existing by git stash-ing its own changes, which of course changed nothing, because its own files were never being served. CI was green on main and on all five branches the whole time.

Cost: a wrong conclusion that main had failing e2e specs, plus wasted diagnosis on all three workers.

Suggested fix

Make the harness worktree-safe rather than relying on discipline:

  • derive the webServer port per checkout (hash the repo root path, or read an env var the npm script sets) so concurrent worktrees cannot collide; and/or
  • set reuseExistingServer: false so a run always owns its own server; and/or
  • have build/e2e-serve.mjs refuse to be reused by a different checkout — e.g. serve a /__root probe returning its own absolute repo path, and let the config assert it matches before any spec runs. The assertion is the valuable part: it converts a silent wrong-source run into an immediate, legible failure.

A related smaller footgun in the same class: two vitest runs in one worktree clobber each other's coverage/.tmp and report phantom test failures with an unrelated ENOENT … coverage-*.json rejection. Worth at least a note in docs/DEVELOPMENT.md.

Why deferred

Test-infrastructure defect found while shipping unrelated bug/low issues; not in scope for any of them.

Lenguaje dominante
TypeScript
Estrellas
8
Forks
2
Merge medio
1 h 34 min
PR fusionados (30 d)
6

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Altinity/altinity-sql-browser

Todos los issues de Altinity/altinity-sql-browser

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.