Documentation
Technical reference for operators, developers, and anyone validating Website Audit Tool change-history behavior against this fixture.
Fixture purpose
Provide a controlled, multi-page origin with known differences between v1-baseline, v2-changed, and v3-restored so Site Changes counters and detail tables can be verified manually and in integration tests.
Public URLs
- Fixture origin: https://demo.samuelhajnik.com/
- Crawler application: https://crawler.samuelhajnik.com/
- Source repository: https://github.com/samuelhajnik/distributed-web-crawler
Version names
v1-baseline— reference snapshot (12 HTML pages)v2-changed— deliberate differences (14 HTML pages)v3-restored— exact v1 HTML copy for reversal testing
| Comparison | Added pages | Removed pages |
|---|---|---|
| v1-baseline → v2-changed |
3 (/pricing.html, /blog/article-three.html,
/docs/getting-started.html)
|
1 (/products.html) |
| v2-changed → v3-restored | 1 (/products.html) |
3 (/pricing.html, /blog/article-three.html,
/docs/getting-started.html)
|
v1 → v2 intentional changes
-
Added:
/pricing.html,/blog/article-three.html,/docs/getting-started.html - Removed:
/products.html - Title change on
/about.html -
Meta description change on
/services.html; meta description removed on/contact.html - Canonical on
/services.htmlpoints to/about.html -
Duplicate title between
/pricing.htmland/services.html -
Duplicate description between
/blog/article-three.htmland/blog/article-one.html noindexon/legal/privacy.html-
Broken link from
/blog/index.htmlto/missing-article.html - Server-level 301 from
/legacy.htmlto/about.html
Version-switch workflow
-
Ensure the fixture service is running (
docker-compose.fixture.yml). -
Run
switch-version.sh v1-baseline(or v2/v3) on the host — no Node.js required on production. -
Verify with
curl https://demo.samuelhajnik.com/fixture-version.jsonor the local equivalent. - Crawl from Website Audit Tool using the public origin as seed URL.
Infrastructure notes
-
Docker Compose service —
change-history-fixturelistens on127.0.0.1:8080. -
Bind-mounted
live/— version switches update files on the host immediately. -
Caddy reverse proxy — terminates HTTPS for
demo.samuelhajnik.com. -
No-cache behavior — all fixture responses include
Cache-Control: no-store. -
Favicon — shared
/favicon.svgcopied into every version at build time. -
Redirects and 404 —
/legacy.htmlreturns 301 in the fixture server; missing URLs return deterministic 404.
Repository paths
Comparisons are stored in PostgreSQL and surfaced in the public Site Changes UI after publication. See architecture for the end-to-end flow.