- 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
Guard the finally block's re-await of browserPromise so a rejected
launch (e.g. Playwright can't start Chromium) doesn't rethrow out of
finally and override the try block's already-successful return value.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gwc3aCiyQxmCWQke8RvEz
Finding 3: fetch_error, not_found, mail_error and de onverwachte-fout
branch loggen nu naam/url plus reden naar stderr; runCheck logt na elke
run een regel met de tellingen per status, zodat een cron-run zichtbaar
is in de container-logs. De recordCheckSuccess/recordCheckFailure-condities
en alle return-waarden zijn ongewijzigd.
Finding 4: server.js controleert bij het opstarten dat BASIC_AUTH_USER,
BASIC_AUTH_PASS, SMTP_FROM en NOTIFY_EMAIL gezet zijn en stopt anders met
exit code 1 in plaats van later opake 500's te geven.
Finding 7: dotenv toegevoegd en als eerste regel in server.js geladen,
zodat het gedocumenteerde `cp .env.example .env && npm start` echt werkt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gwc3aCiyQxmCWQke8RvEz