agentleFS
GoogleKnown publishergoogle/capsem/skills/dev-testing-frontend/SKILL.md

dev-testing-frontend

Skill179 starsChanged 12 days agoApache-2.0View on GitHub

Testing the Capsem frontend. Use when writing frontend tests, running type checks, or doing visual verification with Chrome DevTools MCP.

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 2 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All three run as part of just test.

    line 20
  2. Very specific:

    Use the schema-generation owner included in just test.

    line 44
  3. Very specific:

    Start just dev ui (if not already running)

    line 52
  4. Distinctive:

    If the change affects multiple views or layout, screenshot all views (Terminal, Sessions, Network, Settings)

    line 57
  5. Distinctive:

    Check console again after navigation for new errors

    line 58
  6. Very specific:

    All settings from config/settings/ui-metadata.generated.json are present.

    line 63
  7. Very specific:

    When modifying config/settings/ui-metadata.generated.json or regenerating mock-settings.generated.ts:

    line 73
  8. Very specific:

    Use the schema-generation owner included in just test

    line 74
  9. Very specific:

    Check that setting counts match (grep mockSettings.find in generated file)

    line 78
  10. Very specific:

    Read references/svelte5.md for Svelte 5 patterns and the @sveltejs/mcp CLI for doc lookups.

    line 87

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Frontend Testing

Stack

Astro 7 + Svelte 5 (runes only) + Tailwind v4 + Capsem-owned semantic CSS + LayerChart v2.

Running tests

pnpm --dir web/app run check              # astro check + svelte-check
pnpm --dir web/app exec vitest run --coverage
pnpm --dir web/app run build              # Production bundle

All three run as part of just test. The production build is important -- Tailwind v4's Vite plugin can miss client:only components in the SSR module graph, so @source directives in global.css must explicitly include .svelte and .ts files.

Test files

Tests live in web/app/src/lib/__tests__/. Use vitest with standard patterns:

import { describe, it, expect } from 'vitest';

Browser and test data

Browser and Tauri sessions both use the real gateway through the SDK in api.ts. The absence of window.__TAURI_INTERNALS__ does not enable mock responses. Start the real service and gateway for browser acceptance, or explicitly supply a hermetic test transport in unit tests.

just dev ui starts the frontend; its API requests use the gateway. Stopped fixture sessions can exercise UI states without booting a VM, but cannot establish working guest execution or credential connection flows.

Generated test data: mock-settings.generated.ts is produced by build_system/scripts/build/generate_schema.py from the canonical settings metadata. It supports explicit test fixtures, not an automatic browser mode. Use the schema-generation owner included in just test; never hand-edit it.

Visual verification with Chrome DevTools MCP

Every UI change requires visual verification via Chrome DevTools MCP. No exceptions. Type checks and unit tests pass on broken UIs all the time. The only way to know the UI actually works is to look at it.

Workflow for every UI change

  1. Start just dev ui (if not already running)
  2. navigate_page to http://localhost:5173
  3. list_console_messages types=["error","warn"] -- expect zero
  4. Navigate to the view(s) affected by your change
  5. take_screenshot each affected view -- visually confirm it renders correctly
  6. If the change affects multiple views or layout, screenshot all views (Terminal, Sessions, Network, Settings)
  7. Check console again after navigation for new errors

Settings view

Click through every section (AI Providers, Repositories, Security, VM, Appearance). Verify:

  • All settings from config/settings/ui-metadata.generated.json are present; derive the expected settings from that metadata instead of copying a count
  • Provider toggle enables/disables child settings visually
  • API key reveal button works (password <-> text)
  • VM Resources section shows all resource settings including min_content_sessions
  • Theme toggle switches live
  • Lint warnings display inline

After changing TOML configs or generated mock data

When modifying config/settings/ui-metadata.generated.json or regenerating mock-settings.generated.ts:

  1. Use the schema-generation owner included in just test
  2. Start just dev ui
  3. Navigate to Settings view
  4. Screenshot and verify new/changed settings appear correctly
  5. Check that setting counts match (grep mockSettings.find in generated file)

Color rules (firm)

  • Blue (info) = positive (allowed, running, ok). No green in UI chrome.
  • Purple (secondary) = negative (denied, stopped, error). No red in UI chrome.
  • Terminal emulation colors (xterm green) are fine -- that's xterm, not UI.

Svelte 5 reference

Read references/svelte5.md for Svelte 5 patterns and the @sveltejs/mcp CLI for doc lookups.

Gotchas

  • vm-state-changed payload is { state, trigger } (object), not a plain string
  • Dynamic Svelte components: use <svelte:component this={item.icon} />, not <item.icon />
  • Tailwind v4 + client:only: needs @source directives to scan Svelte files
  • The semantic theme is checked in at src/styles/capsem-theme.css; tests must reject any Preline package, node_modules/preline scan, upstream CSS import, JS plugin, data-hs-* attribute, or HSStaticMethods use.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.