How the extension system is tested, layer by layer, and the verification log for branch feat/extensions. The layers
follow design.md §9; "planned" means the layer is specified but the test does not exist on the
branch yet.
Test layers
Layer | Where | What it proves | Status |
|---|---|---|---|
Client unit |
| Manifest and install-record schemas, | exists |
SDK unit |
| Handshake with retries and timeout, request/response multiplexing, error mapping to | exists |
UI bridge-server unit |
| Source check, param validation → | exists |
CLI fixture |
| Against a real daemon: | exists |
Web server fixture |
|
| planned <!-- TODO: add to extension.test.ts or a web fixture test --> |
Browser (Playwright) |
| Against the fixture daemon + built web app in headless Chromium: publishes hello-signer as an extension document under the fixture site and installs it (pinned) at | exists |
Manual QA on mainnet | desktop + web against the examples published under the starlight space | Install / pin / update / remove flows in Site settings, the dev banner and | planned |
Running what exists
# client schemas + protocol helpers
cd frontend/packages/client && npx vitest --run src/extensions.test.ts
# SDK
pnpm --filter @seed-hypermedia/extension-sdk test
# CLI fixture (starts a daemon; slow)
cd frontend/apps/cli && bun test src/test/extension.test.ts
# browser test (builds the web app, starts a daemon + web server, drives headless Chromium; ~1 min after the build)
cd tests && pnpm test:install-browsers # once, installs Chromium
cd tests && SKIP_BUILD=false pnpm vitest --run extensions.browser.integration.test.ts
cd tests && SKIP_BUILD=true pnpm vitest --run extensions.browser.integration.test.ts # reuse the last web buildTypecheck everything the branch touches with pnpm typecheck from the repo root; the examples build withpnpm --filter @seed-extensions/hello-signer build (and site-dashboard, kanban).
Manual QA script
Publish the three examples from extensions/examples with seed-cli extension publish under the starlight key.
In desktop Site settings → Extensions, install hello-signer at hello (pinned). Open /hello; confirm the context
panel shows platform: desktop, your account, and dev: false.
Press every hello-signer button: Sign this text and Post comment must open the confirmation dialog; Deny must
log user_rejected; Approve with "Allow … for the rest of this session" must skip the dialog on the next call.
Storage counter persists across a reload; Navigate to site home leaves the page; setRoute updates the URL and
the context's subPath.
Repeat step 2–3 on the web app for the same site, signed in through the vault; confirm platform: web and that the
comment appears on the home document.
Run pnpm dev in extensions/examples/hello-signer, open /hello?extdev=http://localhost:5181 on web (and set the
override in desktop Settings → Advanced); the dev banner shows, dev: true, an edit to main.ts hot-reloads. Clear
with the banner / ?extdev=off.
Install site-dashboard at dashboard and kanban at board. Kanban: create the board (first save creates the
document), move a card, save, reload from the network, confirm the document at /board has the kanban metadata viaseed-cli document get.
Republish hello-signer with a bumped version; the Extensions tab shows Update to latest; update; the context
shows the new extensionVersion. Remove the install; /hello renders the (empty) document page again.
Toggle the app theme; the extension follows (data-theme on its <html>).
Verification log
Date | What | Result | Notes |
|---|---|---|---|
2026-08-31 |
| pass |
|
2026-08-31 |
| pass | part of the " |
TODO |
| — | file exists; run and record the result |
TODO | Web server | — | not yet written |
2026-08-31 |
| pass |
|
2026-08-31 | Manual QA, desktop dev app ( | pass | Address-bar navigation to |
2026-08-31 | Multi-agent review workflow (6 lenses: security, host correctness, web, desktop, CLI/SDK/examples, docs; 26 agents) → 18 confirmed findings + 8 doc inaccuracies, all fixed: loopback-only | pass | see |
2026-08-31 | Package suites on the branch: | pass | typecheck clean for client, shared, ui, extension-sdk, web, desktop, cli |
2026-08-31 | Manual QA, web dev server (:3000) against mainnet starlight, headless Chromium | pass | Examples published under |
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime