Testing Seed web app (collection/query UI)
SkillDev toolsHow to run end-to-end UI tests against the Seed web app for collection and query block features.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Testing Seed web app (collection/query UI) skill
What this skill tells your AI
The instructions your AI receives, as published by seed-hypermedia/seed in .agents/skills/testing-seed-web/SKILL.md and read by ahel’s review.
When to use
Use this skill when verifying the Seed web app's collection pages, query blocks, or shared QueryBlockContent component
end-to-end.
Devin Secrets Needed
None for the fixture-account read-only path. Authenticated editing requires an account whose signing keys are available
in the test environment; this machine's Chrome does not support Web Crypto Ed25519, so publish/draft-flow UI cannot be
exercised in the browser.
One-time per session
- Build the daemon if
plz-out/bin/backend/seed-daemon-*is missing:./pleasew build //backend/cmd/seed-daemon(or equivalent for your platform).
- Build the web app if
frontend/apps/web/buildis missing or stale:cd frontend/apps/web && pnpm --filter @shm/web build- The build embeds
VITE_COMMIT_HASH; confirm it matches the commit under test.
- Start the integration test environment:
bun tests/integration/seed-collection-ui.tsseeds a fixture account with/collection,/collection/alpha,/collection/beta, and/query-demo.- It spawns
seed-daemon, builds the web app, and serves it onhttp://localhost:3399. - Data dirs are created under
/tmp/seed-integration-*.
Fixture manipulation
- The fixture account DID is
z6MkhMSRCyK9KkAzTmzTKSfuNMaEuYZUJacWmbqiHYkCQgSW. - Use
bun tests/integration/update-style.ts(or a temporary copy) withcreateDocumentUpdatefromfrontend/apps/cli/src/test/account-helpers.tsto mutate a document's query blockstyle(Table/List/Card) without needing browser auth. - For a collection document,
query.includesshould be[{space:"", path:"", mode:"Children"}]to matchcreateDefaultCollectionQueryBlocksemantics.
Useful UI selectors
- Collection header:
[aria-label="Search documents"], buttonsFilter,Sort,Attributes. - View toggle:
buttontextTable,List,Cards(note: noGraph). - Query settings:
button[aria-label="Query settings"]. - Filter popover:
buttontextAdd filter,input[aria-label="Filter value"]. - Sort popover:
buttonAsc/Desc. - Attributes popover: switches with column labels.
Known limitations and workarounds
- Browser auth / publish flow: The bundled Chrome on this machine lacks Web Crypto
Ed25519. Don't try to log in or publish from the web app. Test draft/publish flows in the desktop app or another environment. - Radix
Selectin popovers: Programmatic.click()on[aria-selected]options is unreliable. PreferSelectFieldvalue/onValuechanges or keyboard navigation. - Controlled
InputinFilterPopover: Settinginput.valueand dispatchinginput/changeevents works for the search input but may not triggeronChangeTextinside the filter popover. If filter UI manipulation is critical, use native keyboard typing or set query props server-side and reload. - Coordinate scaling: The desktop is 1600×1069 but the
computertool uses a 1024×768 coordinate space. Coordinates are mapped automatically; prefer querying elements from the DOM and dispatching trusted events over fragile pixel clicks.
Verification checklist for collection/query PRs
- Collection header: Table/List/Cards toggle (no Graph), Filter/Sort/Attributes, search, settings menu.
- Table/List/Card views render the expected documents.
- Search and sort update results.
- Filter model (
filterQueryTableItems) handles date/number comparisons. - Query block inside a document renders the same views without the collection header.
- Query-block Card view whole-card link navigates; collection Card view must pass
navigateCardstoQueryBlockContentto be clickable.
Signals
- GitHub stars
- 56
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
testing-seed-web-app-collection-query-ui- Source
- github.com/seed-hypermedia/seed