Skip to content

Add starter compatibility matrix e2e + version.ts floor guard#67

Draft
demtario wants to merge 9 commits into
masterfrom
feature/DEV-2102_starter-compat-matrix
Draft

Add starter compatibility matrix e2e + version.ts floor guard#67
demtario wants to merge 9 commits into
masterfrom
feature/DEV-2102_starter-compat-matrix

Conversation

@demtario

Copy link
Copy Markdown
Contributor

Summary

  • Adds runner/e2e/starter-matrix.spec.ts — opt-in e2e (E2E_STARTER_MATRIX=1) that empirically boots every starter in examples/ at every supported Handsontable major (15-19) against a live instance, per DEV-2102 / ADR-0021 decision 10.
  • Adds runner/scripts/starter-matrix-report.mjs to turn the run's JSON into a markdown compatibility table (pnpm e2e:matrix:report, supports merging chunked runs).
  • Adds DEFAULT_MIN_MAJOR = 15 floor to validateHandsontableVersion in packages/runtime/src/version.ts, mirroring the existing ceiling — previously only GET /api/versions enforced the 15 floor, so a direct session/API call bypassing the version dropdown could still request an untested major.
  • Docs: runner/docs/starter-compat-matrix.md (how to run it, prod concurrency cap, limitations) + pointer in run-and-deploy.md.

Findings (docs/reports/starter-matrix-2026-07-17.md)

  • 10/16 starters fully clean across majors 15-18 (react, react-js, vue, javascript, typescript, example1, next.js, nuxt, remix).
  • 5 React-UI-lib container starters (ant-design, mui, base-web, fluent-ui, next-shadcn.js) break at majors 15-16 only — dev server boots but the grid never mounts. mui's console log points at an npm package-exports resolution error.
  • angular breaks at majors 15-17, passes only at 18 (never reaches "Live" — container never finishes booting).
  • astro fails at every tested major with an identical, version-independent 504 error — reads as an Astro-container infra issue, not a Handsontable compatibility problem.
  • Major 19 has no stable npm release yet — skipped everywhere, not failed.
  • Per-starter/per-major UI restriction is deliberately not done here (out of scope per task) — flagged as follow-up work informed by this report.

Test plan

  • pnpm test (unit, includes new floor-guard cases) — 34/34 pass
  • pnpm typecheck — clean
  • pnpm e2e — deterministic suite unaffected (matrix all-skipped without the flag; pre-existing docs-examples failures confirmed unrelated via baseline comparison)
  • Full pnpm e2e:matrix run against https://demos.handsontable.com (chunked), report generated and reviewed

🤖 Generated with Claude Code

demtario and others added 9 commits July 17, 2026 12:13
…dation

DEV-2100: namespace docs-example buckets
Generate release and next buckets in CI while pinning imported dependencies to concrete npm versions for reproducible snapshots.
…e-ci

feat(docs): automate versioned example imports
…-css-link

fix(runtime): sync CDN CSS version
chore(docs): update versioned docs examples
… guard

Empirically verifies every starter against Handsontable majors 15-19
against a live instance (DEV-2102 / ADR-0021 decision 10), opt-in via
`pnpm e2e:matrix`. Findings (docs/reports/starter-matrix-2026-07-17.md):
5 React-UI-lib container starters and Angular break at older majors,
Astro fails version-independently (infra issue, not compatibility).

Adds a DEFAULT_MIN_MAJOR=15 floor to validateHandsontableVersion,
mirroring the existing ceiling — previously only GET /api/versions
enforced the 15 floor, so a direct session/API call bypassing the
version dropdown could still request an untested major.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant