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.

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
Expected page deltas between fixture versions
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.html points to /about.html
  • Duplicate title between /pricing.html and /services.html
  • Duplicate description between /blog/article-three.html and /blog/article-one.html
  • noindex on /legal/privacy.html
  • Broken link from /blog/index.html to /missing-article.html
  • Server-level 301 from /legacy.html to /about.html

Version-switch workflow

  1. Ensure the fixture service is running (docker-compose.fixture.yml).
  2. Run switch-version.sh v1-baseline (or v2/v3) on the host — no Node.js required on production.
  3. Verify with curl https://demo.samuelhajnik.com/fixture-version.json or the local equivalent.
  4. Crawl from Website Audit Tool using the public origin as seed URL.

Infrastructure notes

  • Docker Compose servicechange-history-fixture listens on 127.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.svg copied into every version at build time.
  • Redirects and 404/legacy.html returns 301 in the fixture server; missing URLs return deterministic 404.

Comparisons are stored in PostgreSQL and surfaced in the public Site Changes UI after publication. See architecture for the end-to-end flow.