You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both are pre-existing and were not modified by #192.
Why it matters
Every agent worktree under .tmp/worktrees/ is a real working tree without its
own node_modules, so both specs fail there with spawn … ENOENT before the
server ever starts. That is the standard pipeline layout: Software Engineer and
Tester both run the full e2e suite from a worktree. During #192 the engineer had
to hand-create node_modules -> /home/alexey/git/dataops/node_modules inside the
worktree just to run npm run test:e2e:backend, and the Tester had to keep that
symlink to reproduce. An untracked manual symlink is not a reproducible harness.
.gitignore line 1 is node_modules/ with a trailing slash, which matches
directories only, so the symlink shows up as ?? node_modules in git status and is one careless git add -A away from being committed.
Whether every spec that spawns a server should use one shared helper rather
than three hand-rolled spawn call sites (docs-outage.spec.js also has its
own startServer).
Whether npx tsx is the right resolution strategy, or a resolved require.resolve('tsx/cli')-style lookup that still works when the package
lives in a parent directory.
Whether .gitignore should ignore node_modules without the trailing slash
so a symlinked workaround cannot be staged accidentally, or whether the
workaround should simply stop being necessary.
Whether CI is affected at all (it clones a normal repo with a real node_modules, so this is a local/worktree reproducibility problem, not a
CI-red problem).
Verification hints
Reproduce by running npx playwright test e2e/frontend-module-characterization.spec.js
from backend/ inside a fresh git worktree with no node_modules symlink.
Raw intake from PM acceptance of #192.
Two e2e specs spawn the test server through an absolute path into the repo-root
node_modules, which does not exist inside agit worktreecheckout:backend/e2e/frontend-module-characterization.spec.js:141spawn(path.join(ROOT, "node_modules", ".bin", "tsx"), ["scripts/test-server.ts"], …)backend/e2e/planning-surfaces-design.spec.js:97spawn(path.resolve(__dirname, "..", "..", "node_modules", ".bin", "tsx"), …)Both are pre-existing and were not modified by #192.
Why it matters
Every agent worktree under
.tmp/worktrees/is a real working tree without itsown
node_modules, so both specs fail there withspawn … ENOENTbefore theserver ever starts. That is the standard pipeline layout: Software Engineer and
Tester both run the full e2e suite from a worktree. During #192 the engineer had
to hand-create
node_modules -> /home/alexey/git/dataops/node_modulesinside theworktree just to run
npm run test:e2e:backend, and the Tester had to keep thatsymlink to reproduce. An untracked manual symlink is not a reproducible harness.
Two secondary consequences seen in #192:
.gitignoreline 1 isnode_modules/with a trailing slash, which matchesdirectories only, so the symlink shows up as
?? node_modulesingit statusand is one carelessgit add -Aaway from being committed.backend/e2e/docs-outage.spec.js(added by Show a docs outage as an outage on the operations surfaces, not as an empty corpus #192) already usesspawn('npx', ['tsx', 'scripts/test-server.ts'], { cwd: BACKEND_ROOT }),which needs no symlink, so a working pattern already exists in the same
directory.
Things to settle during grooming
than three hand-rolled spawn call sites (
docs-outage.spec.jsalso has itsown
startServer).npx tsxis the right resolution strategy, or a resolvedrequire.resolve('tsx/cli')-style lookup that still works when the packagelives in a parent directory.
.gitignoreshould ignorenode_moduleswithout the trailing slashso a symlinked workaround cannot be staged accidentally, or whether the
workaround should simply stop being necessary.
node_modules, so this is a local/worktree reproducibility problem, not aCI-red problem).
Verification hints
Reproduce by running
npx playwright test e2e/frontend-module-characterization.spec.jsfrom
backend/inside a freshgit worktreewith nonode_modulessymlink.