Tool category test rules
| Pattern | Approach | Cleanup |
|---|---|---|
toolSearch / loadTool / unloadTool | Test first; load one deferred tool, test, unload before next | none |
ask*Question | One sandbox question | PASS-UI; continue without blocking |
getWeather, searchTheWeb, extractWebPage | Known-safe query/URL | none |
artifacts | One inline markdown smoke; optional markdown-file at temp path | trash temp file |
create* / update* / trash* (bot, prompt, todo) | CRUD on prefixed entity; nested update variants per multi-test-cases | trash before next tool |
trashConvo / restoreConvo | Oldest non-trashed DB convo (not current); trash → restore per multi-test-cases | restore before next tool |
search* / find* / read* | Sandbox prefix in query or read created id | none |
forge-filesystem__* | Under tempDir only; trash → list → untrash cycle (see multi-test-cases) | trash / untrash |
forge-discovery__* | Read-only, small limits | none |
forge-typesense__* | Short query, limit 3 | none |
playwright__* | One session on safe URLs; skip browser_screenshot, browser_pdf_save | browser_close |
composio__* | One list/get per connected app | skip if not connected |
spawnAgent | Worker group only: sync spawn minimal bot, message Reply OK | none |
checkAgentJob / abortAgent | Worker group only; jobs that worker started | none |
switchAgent | Orchestrator only, last, after report; hand off to continuation bot | none |
List/search tools must return { count, …array… } with matching lengths.