chore: script/bootstrap fails when node cannot find a module the tests load (closes #263)
check / check (push) Successful in 8m27s
e2e / e2e-chrome (push) Successful in 9m2s
e2e / e2e-firefox (push) Successful in 4m31s

yarn install exits 0 without touching node_modules whenever
node_modules/.yarn-integrity matches yarn.lock, so a package deleted from
node_modules stayed deleted while bootstrap printed "bootstrap complete".
After the install, bootstrap now asks node to resolve jest,
playwright-core and ethers, and on the first it cannot find it names the
module and the fix: rm -rf node_modules && make bootstrap.

Model: opus-5-5
This commit is contained in:
2026-10-06 22:05:26 +00:00
parent cd730241bb
commit 50a332f5a0
3 changed files with 36 additions and 1 deletions
+25
View File
@@ -127,6 +127,30 @@ install_js_deps() {
fi
}
# resolvable <module>: true when node, run from the repo root, finds it
resolvable() {
if missing node && [ -s "$HOME/.nvm/nvm.sh" ]; then
nvm_sh "nvm use $NODE_VERSION >/dev/null && cd \"$ROOT\" && \
node -e \"require.resolve('$1')\"" 2>/dev/null
else
node -e "require.resolve('$1')" 2>/dev/null
fi
}
# yarn install exits 0 without touching node_modules once
# node_modules/.yarn-integrity matches yarn.lock, so a package deleted from
# node_modules stays deleted. Fail unless node finds the modules the tests
# load: jest for make test, playwright-core and ethers for tests/e2e/.
check_js_deps() {
for module in jest playwright-core ethers; do
if ! resolvable "$module"; then
echo "bootstrap: node cannot find $module after yarn install" >&2
echo " fix: rm -rf node_modules && make bootstrap" >&2
exit 1
fi
done
}
main() {
cd "$ROOT"
@@ -136,6 +160,7 @@ main() {
ensure_node
ensure_yarn
install_js_deps
check_js_deps
echo "bootstrap complete"
}