Files
fusion/docs/skipped-test-inventory.md
Fusion f240683fc8 feat(FN-3720): split executor.test.ts into eight focused suites and add she
The merge splits the large monolithic `executor.test.ts` into seven focused test suites covering core logic, pause behavior, prompt handling, recovery, review verdicts, step sessions, and worktree operations, and adds shell context hook plumbing across the dashboard, desktop, and mobile packages to

Fusion-Task-Id: FN-3720
2026-05-07 23:21:05 -07:00

93 lines
5.9 KiB
Markdown

# Skipped Test Inventory
_Last audited: 2026-05-05_
This document tracks intentional skip usage in test suites so stale follow-up backlog items can be retired quickly.
## Current Inventory
Audit commands:
```bash
rg -n "\b(it|test|describe)\.skip\b|\bskipIf\b|createLoopbackIntegrationTest\(" packages plugins scripts --glob "**/*.{test,spec}.{ts,tsx,mjs}"
rg -n "\?\s*it\s*:\s*it\.skip|detectLoopbackBinding|const itPosix" packages plugins scripts --glob "**/*.{test,spec}.{ts,tsx,mjs}"
```
Current results:
1. **Environment-gated integration aliases (loopback gated)**
- Canonical helper: `packages/dashboard/src/__tests__/loopback-integration-test.ts`
- Helper consumers:
- `packages/dashboard/src/server-static-assets.test.ts`
- `packages/dashboard/src/__tests__/websocket.test.ts`
- `packages/dashboard/src/__tests__/server-webhook.test.ts`
- Pattern: suites call `createLoopbackIntegrationTest(scope)` and register integration cases through the returned test function.
- Rationale: these suites require real loopback binding support (`127.0.0.1`) and are intentionally environment-gated.
- Auditability: when loopback binding is unavailable, skipped test names include a standardized reason and the suite scope label (`...; scope: <suite scope>`), making coverage gaps explicit in CI/test output.
2. **CLI slow-lane agent export gate**
- `packages/cli/src/commands/__tests__/agent-export.test.ts`
- Pattern: `describe.skipIf(!SHOULD_RUN_SLOW_CLI)("agent-export", ...)`
- Gate: `FUSION_TEST_SLOW_CLI=1` or `FUSION_TEST_SLOW_CLI=true`
- Rationale: these tests perform real workspace and `AgentStore` round-trips and are kept out of the default CLI unit lane.
- Replacement owner: the explicit slow lane (`pnpm --filter @runfusion/fusion test:slow-cli`) is responsible for running them when slow CLI coverage is requested.
3. **CLI pi extension integration gate**
- `packages/cli/src/__tests__/extension-integration.test.ts`
- Pattern: `describe.skipIf(!SHOULD_RUN_EXTENSION_INTEGRATION)("built fn pi extension integration", ...)`
- Gate: `FUSION_TEST_EXTENSION_INTEGRATION=1` or `FUSION_TEST_EXTENSION_INTEGRATION=true`
- Rationale: this built-extension suite requires compiled CLI artifacts, so it is run through the explicit local release lane instead of every unit run.
- Replacement owner: `pnpm --filter @runfusion/fusion test:extension-integration`.
4. **CLI legacy pi extension gate**
- `packages/cli/src/__tests__/extension.test.ts`
- Pattern: `describe.skipIf(!SHOULD_RUN_LEGACY_EXTENSION_INTEGRATION)("fn pi extension (legacy exhaustive suite)", ...)`
- Gate: `FUSION_TEST_LEGACY_EXTENSION_INTEGRATION=1` or `FUSION_TEST_LEGACY_EXTENSION_INTEGRATION=true`
- Rationale: this exhaustive suite is intentionally excluded from default and release lanes while it remains useful only for historical debugging.
- Replacement owner: `packages/cli/src/__tests__/extension-integration.test.ts` owns maintained built-extension coverage.
5. **CLI native binary build gate**
- `packages/cli/src/__tests__/build-exe-cross.test.ts`
- Pattern: four `describe.skipIf(!SHOULD_RUN_BUILD_EXE)(...)` suites for single-target, Windows-target, all-target, and default-target binary builds.
- Gate: `FUSION_TEST_BUILD_EXE=1`, `FUSION_TEST_BUILD_EXE=true`, or `CI=true`
- Rationale: cross-compiling native binaries is intentionally expensive and belongs in the binary/pre-release lane, not every local unit run.
- Replacement owner: `packages/cli/src/__tests__/build-exe.test.ts` and bundle-output tests cover the default fast package contract; `build-exe-cross.test.ts` owns full cross-target coverage when the gate is enabled.
6. **POSIX-only shell syntax cases**
- `packages/engine/src/__tests__/run-verification-command.test.ts`
- `packages/engine/src/__tests__/verification-utils.test.ts`
- Pattern: `const itPosix = onPosix ? it : it.skip`
- Gate: skipped only on `process.platform === "win32"`
- Rationale: a subset of tests uses POSIX shell syntax (`printf`, pipes, and shell quoting). The implementation still uses Node's portable `shell: true`; these specific fixtures are not portable to `cmd.exe`.
- Replacement owner: platform-neutral cases in the same suite continue to run on Windows.
7. **Build-output checks are deterministic (no skip gate)**
- `packages/cli/src/__tests__/bundle-output.test.ts`
- `packages/dashboard/app/__tests__/build-output.test.ts`
- Pattern: each suite builds required artifacts in `beforeAll` and then runs chunking/bundle assertions unconditionally.
- Rationale: clean worktrees and CI environments should execute real output-contract assertions instead of silently skipping when `dist/` is absent.
8. **Skip gate string assertions are not skip markers**
- `packages/cli/src/__tests__/ci-workflow.test.ts`
- Pattern: assertions check that CI workflow text contains `describe.skipIf(...)` gate strings.
- Rationale: this file does not skip tests itself; it verifies the workflow keeps the intentionally gated suites wired.
## Older Follow-up Reconciliation
Previously tracked actionable skip follow-ups are now resolved and should not be treated as open backlog:
- **FN-2085**: wildcard proxy POST body forwarding coverage is active.
- **FN-2076 / FN-2106 / FN-2109**: NewAgentDialog and MissionInterviewModal rollback favorite-toggle regressions are active interaction tests.
- The former single-file executor step-session alias skip is no longer present; ownership now lives in the split executor suites (`executor-*.test.ts`).
Searches for those IDs in repository test code and docs now return no active TODO/skip markers tied to unresolved work.
## Policy
When adding a new skip marker, include one of the following:
- a clear environment/build gate explanation, or
- a direct reference to the active test that owns equivalent coverage.
Avoid opening follow-up tasks for intentional gate/alias skips unless behavior coverage is actually missing.