Skip to main content

add-test

Add a new integration test to PilotSwarm test suite. Tests verify end-to-end flows through PilotSwarmClient, duroxide orchestration, and the Copilot SDK.

Quellinformationen

Repository
microsoft/PilotSwarm
Letzte Quellaktivität
18. September 2026 um 23:38
Erkannte Sprache von SKILL.md
Englisch
Sterne
8
Forks
4

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
add-test
description
Add a new integration test to PilotSwarm test suite. Tests verify end-to-end flows through PilotSwarmClient, duroxide orchestration, and the Copilot SDK.
For machine setup and provider coverage, read `docs/developer/contributing/local-ci-and-tests.md` and `.github/CI.md`. No flag means full PostgreSQL; `--all-providers` adds HDB-specific coverage; `--with horizondb` runs the complete suite on HDB. Default file concurrency is 8. New SDK test files join additive HDB coverage unless explicitly reviewed in `scripts/provider-test-coverage.json`. CI requires real HDB and rejects skips. # Add a New Test Integration tests live in `packages/sdk/test/local/` as individual `.test.js` files (or in subdirectories like `sub-agents/`). They require a running PostgreSQL database and a GitHub token (in `.env`). Tests use **vitest** with `describe`/`it`. ## Steps 1. **Create a new test file** in `packages/sdk/test/local/` following this pattern: ```javascript import { describe, it, beforeAll } from "vitest"; import { createTestEnv, preflightChecks } from "../helpers/local-env.js"; import { withClient } from "../helpers/local-workers.js"; import { assert, assertNotNull } from "../helpers/assertions.js"; const TIMEOUT = 120_000; async function testMyFeature(env) { await withClient(env, async (client) => { const session = await client.createSession(); console.log(" Sending: prompt text"); const response = await session.sendAndWait("prompt text", TIMEOUT); console.log(` Response: "${response}"`); assertNotNull(response, "Should get a response"); }); } describe.concurrent("My Feature", () => { beforeAll(async () => { await preflightChecks(); }); it("My Test Case", { timeout: TIMEOUT }, async () => { const env = createTestEnv("my-feature"); try { await testMyFeature(env); } finally { await env.cleanup(); } }); }); ``` 2. **Add to the vitest config** — the file will be auto-discovered if it matches `test/local/**/*.test.js`. Ensure the vitest config includes the path. 3. **Run the test**: ```bash cd packages/sdk npx vitest run test/local/my-feature.test.js # run just this file npx vitest run test/local/my-feature.test.js -t "My Test" # filter by test name ./scripts/run-tests.sh --suite=my-feature # via the runner script ``` ## Patterns - **`withClient(env, fn)`** — spins up a co-located worker + client pair, auto-forwards `setSessionConfig`. Use for most tests. - **Manual worker/client** — for testing specific worker features (e.g., `registerTools`), create them manually outside `withClient`. - **Tool tests** — set a `let toolCalled = false` flag, assert it's `true` after the prompt. - **Event tests** — use `session.on()` or `session.getMessages()`, add a `setTimeout` delay for polling. - **Timer tests** — use `waitThreshold: 0` in client opts to force durable timers even for short waits. - **CMS validation** — use `createCatalog(env)` and `validateSessionAfterTurn(env, sessionId)` from `test/helpers/cms-helpers.js`. ## Conventions - **No custom system prompts** — use `client.createSession()` without overriding `systemMessage`. The default agent prompt should be sufficient. If it isn't, fix the product, not the test. - **No retries** — never add `retry` to test configs. Fix the root cause. - Use `describe.concurrent()` for file-level parallelism within the vitest runner. - Use `TIMEOUT` constant (120s default) for `sendAndWait`. - Use assertion helpers from `test/helpers/assertions.js`. - Use `describe`/`it` from `vitest`. - Log key values with `console.log(" ...")` for debuggability. - Each test creates its own `env` via `createTestEnv()` for schema isolation. - If a change adds or modifies a TUI keybinding, update the startup keybinding hint/splash and the help dialog/modal at the same time, and add or update validation coverage for the affected user flow when practical. ## Key files - `packages/sdk/test/local/` — all test files - `packages/sdk/test/helpers/` — shared helpers (assertions, fixtures, local-env, local-workers, cms-helpers) - `packages/sdk/vitest.config.js` — vitest configuration - `scripts/run-tests.sh` — shell runner for all suites
Auf GitHub ansehen