test: web component tests, opt-in e2e, and OpenAPI drift guard#4
Conversation
Quality & DX batch: - web: tests for App (auth gate, launch, pull), SessionList (open/extend/ copy/terminate/countdown), and SessionViewer (stream, password, reload); CopyLinkButton now clears its reset timer on unmount - api: opt-in real-engine e2e (e2e.docker.test.ts, gated on AIRLOCK_E2E=1 so CI skips it) covering ping → create → list → extend → stop - api: openapi-sync.test.ts guards docs/openapi.yaml against drift in the browser catalog, TTL bounds, and route table - docs: development.md describes the e2e and drift guard
|
Warning Review limit reached
More reviews will be available in 14 minutes and 3 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (8)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Final follow-up PR — the Quality & DX batch (#13–#15). Completes all four improvement batches.
Web component/integration tests (#13)
App— auth gate (dashboard vs login on 401), launch flow, and the pull-images action, with a mocked client (realAirlockApiErrorpreserved forinstanceof).SessionList— open/extend/terminate handlers, in-progress button states, live countdown, and copy-to-clipboard.SessionViewer— stream embed, per-session password surfacing, back/reload behavior.CopyLinkButtonnow clears its reset timer on unmount.Opt-in real-container e2e (#14)
apps/api/src/__tests__/e2e.docker.test.tsdrives a real Docker engine through ping → create → list → extend → stop. Gated onAIRLOCK_E2E=1, so normal CI skips it (verified: 2 skipped). Documented indevelopment.md(the first run pulls a large Kasm image; pointAIRLOCK_IMAGE_CHROMIUMat a pre-pulled tag to skip).OpenAPI drift guard (#15)
openapi-sync.test.tsassertsdocs/openapi.yamlstays in sync with the code's browser catalog (BROWSER_KINDS), TTL bounds (TTL_MIN/MAX_SECONDS), and route table — so the spec can't silently drift. (A lighter, dependency-free guard than full zod→OpenAPI generation; noted as the pragmatic choice.)Verification
make checkgreen: format, lint, typecheck, 112 tests (84 api + 2 skipped e2e, 28 web), build.actwarnings; e2e skipped in CI.With this, all four batches from the improvement review (Security & isolation, Reliability/ops, Features & UX, Quality & DX) are delivered.
Need help on this PR? Tag
/codesmithwith what you need. Autofix is disabled.