AGENTS.md@packages/client/src/__tests__ · git:20261021.ae7647a · 2026-10-21 · sha256 af17008d830d7271

AGENTS.md@packages/client/src/__tests__ git:20261021.ae7647aA

Immutable. This exact content never changes and is served at /api/v1/blob/af17008d830d7271.

# DOX — packages/client/src/__tests__

Client-level suites. Only suites with a recorded contract have a row; the rest are discoverable by name.

| File | Purpose |
|------|---------|
| `plugin-registry-consumers.test.tsx` | #E91 populated + co-tenancy halves. Real `DemoSettings` renders once in `SettingsSectionByPluginSlot("demo")`, 0 in other plugin boundaries and in inert per-tab `SettingsSectionSlot` (general, servers); flows half lives in `flows-plugin/src/__tests__/registry-consumers.test.tsx` (boundary gate). `claim.tab` inert since plugin-settings-pages. Claims built like `App.tsx`; no App shell. See change: decouple-plugins-from-core (8.114). |
| `plugin-registry-runtime.test.tsx` | Shell consumers over an empty registry render nothing (no error); a runtime plugin loaded after mount appears in already-mounted consumers. See change: decouple-plugins-from-core (8.114). |
| `plugin-settings-consistency.test.tsx` | Parametrized cross-plugin settings-kit contract over 15 settings components, imported by relative path from sibling `packages/*` (client alias map already covers runtime/shared). Mounts each real component in `PluginContextProvider` + `CurrentPluginLayer` + `SettingsDraftProvider` with per-plugin `fetch` fixtures; id/displayName read from each package manifest. #E6: 0 `input[type=checkbox]` (mcp-client dialogs exempt), `aria-checked` only on `switch`/`radio`, every control has accessible name, every `aria-describedby` id resolves, `minSwitches` per plugin. #E7: no text node equals displayName/id (apple-tools, flows-anthropic-bridge, grammar, quota, system-one, mcp-client). #E8: master switches "Relay connections"/"Answer Discord messages"/"Check grammar in the composer"/"Check quotas" on testids `browser-enabled-toggle`/`chat-gateway-enabled`/`grammar-enabled`/`quota-enable`; no switch named Enabled/Enable/On. i18n (#E31) lives in per-plugin i18n tests + `scripts/i18n-parity.mjs`. See change: retro-ux-plugin-settings-wave-2. |