- server.js: catch browser-launch failures inside the injected
fetchAndExtractPriceViaBrowser wrapper so they route through
checkProduct's normal error classification (recordCheckFailure)
instead of escaping as a thrown error that bypasses the DB write.
- server.js: add an in-flight guard around runCheck so overlapping
callers (cron + check-now) share one run instead of each launching
its own Chromium.
- Dockerfile: copy only package.json/package-lock.json/node_modules
before installing Chromium so the expensive install layer is keyed
to dependency changes, not every commit; copy the rest of the app
afterward.
- Dockerfile: clean up apt package lists after the Playwright install
step, matching the build stage's existing cleanup.
- README.md: note that exercising the fallback locally (not just
running the test suite) needs `npx playwright install chromium`.
- README.md: correct the fallback description — domcontentloaded
navigation reads the page before most client-side JS finishes, so
the fallback mainly helps with HTTP-client blocking, not JS-rendered
prices; reworded to drop the inaccurate claim.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gwc3aCiyQxmCWQke8RvEz
Zonder ENV DB_PATH schreef een vergeten env var stilletjes naar de
container-filesystem, waardoor alle data bij de volgende redeploy weg
was. VOLUME /data documenteert het verwachte mountpoint.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gwc3aCiyQxmCWQke8RvEz