e2e 0.15.2 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build.json +1 -1
- package/dist/agent/act-validation.d.ts +10 -1
- package/dist/agent/act-validation.js +48 -1
- package/dist/agent/act.d.ts +1 -2
- package/dist/agent/act.js +29 -9
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +4 -6
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +32 -24
- package/dist/agent/actions.js +38 -25
- package/dist/agent/agent-brand.d.ts +0 -1
- package/dist/agent/agent-brand.js +0 -1
- package/dist/agent/ai-sdk.d.ts +7 -1
- package/dist/agent/ai-sdk.js +11 -1
- package/dist/agent/call-options.d.ts +0 -1
- package/dist/agent/call-options.js +0 -1
- package/dist/agent/default-agent.d.ts +0 -1
- package/dist/agent/default-agent.js +0 -1
- package/dist/agent/derived.d.ts +0 -1
- package/dist/agent/derived.js +0 -1
- package/dist/agent/error.d.ts +0 -1
- package/dist/agent/error.js +0 -1
- package/dist/agent/executor.d.ts +0 -1
- package/dist/agent/executor.js +0 -1
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +0 -1
- package/dist/agent/interactive-step.d.ts +0 -1
- package/dist/agent/interactive-step.js +0 -1
- package/dist/agent/invocation.d.ts +0 -1
- package/dist/agent/invocation.js +10 -5
- package/dist/agent/ledger.d.ts +0 -1
- package/dist/agent/ledger.js +0 -1
- package/dist/agent/loop-guards.d.ts +0 -1
- package/dist/agent/loop-guards.js +0 -1
- package/dist/agent/model/adapter.d.ts +0 -1
- package/dist/agent/model/adapter.js +0 -1
- package/dist/agent/model/overflow.d.ts +0 -1
- package/dist/agent/model/overflow.js +0 -1
- package/dist/agent/model/provider-hints.d.ts +0 -1
- package/dist/agent/model/provider-hints.js +0 -1
- package/dist/agent/model/schema.d.ts +0 -1
- package/dist/agent/model/schema.js +0 -1
- package/dist/agent/model/sdk.d.ts +0 -1
- package/dist/agent/model/sdk.js +2 -1
- package/dist/agent/model/stall.d.ts +0 -1
- package/dist/agent/model/stall.js +0 -1
- package/dist/agent/model/tool-choice.d.ts +0 -1
- package/dist/agent/model/tool-choice.js +0 -1
- package/dist/agent/observation-budget.d.ts +0 -1
- package/dist/agent/observation-budget.js +0 -1
- package/dist/agent/observation-feed.d.ts +5 -7
- package/dist/agent/observation-feed.js +5 -8
- package/dist/agent/observation.d.ts +40 -12
- package/dist/agent/observation.js +109 -60
- package/dist/agent/operation-queue.d.ts +0 -1
- package/dist/agent/operation-queue.js +0 -1
- package/dist/agent/phases.d.ts +0 -1
- package/dist/agent/phases.js +0 -1
- package/dist/agent/pixels.d.ts +0 -1
- package/dist/agent/pixels.js +0 -1
- package/dist/agent/point-tap.d.ts +8 -9
- package/dist/agent/point-tap.js +1 -2
- package/dist/agent/primitives.d.ts +6 -1
- package/dist/agent/primitives.js +4 -2
- package/dist/agent/prompts.d.ts +0 -1
- package/dist/agent/prompts.js +0 -1
- package/dist/agent/protocol.d.ts +0 -1
- package/dist/agent/protocol.js +0 -1
- package/dist/agent/public.d.ts +0 -1
- package/dist/agent/public.js +0 -1
- package/dist/agent/reading.d.ts +0 -1
- package/dist/agent/reading.js +0 -1
- package/dist/agent/replay.d.ts +19 -9
- package/dist/agent/replay.js +11 -15
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +2 -4
- package/dist/agent/scroll-target.js +0 -1
- package/dist/agent/secrets.d.ts +0 -1
- package/dist/agent/secrets.js +0 -1
- package/dist/agent/settle-policy.d.ts +0 -1
- package/dist/agent/settle-policy.js +0 -1
- package/dist/agent/step-accounting.d.ts +0 -1
- package/dist/agent/step-accounting.js +0 -1
- package/dist/agent/step-cache.d.ts +41 -15
- package/dist/agent/step-cache.js +147 -63
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +2 -1
- package/dist/agent/tool-output.d.ts +0 -1
- package/dist/agent/tool-output.js +0 -1
- package/dist/agent/tool.d.ts +0 -1
- package/dist/agent/tool.js +0 -1
- package/dist/agent/transcript-compaction.d.ts +0 -1
- package/dist/agent/transcript-compaction.js +0 -1
- package/dist/agent/upload-paths.d.ts +0 -1
- package/dist/agent/upload-paths.js +0 -1
- package/dist/agent/usage.d.ts +0 -1
- package/dist/agent/usage.js +0 -1
- package/dist/cache/anchors.d.ts +72 -24
- package/dist/cache/anchors.js +233 -61
- package/dist/cache/context.d.ts +25 -15
- package/dist/cache/context.js +50 -9
- package/dist/cache/decide.d.ts +2 -3
- package/dist/cache/decide.js +4 -7
- package/dist/cache/identity.d.ts +18 -5
- package/dist/cache/identity.js +9 -5
- package/dist/cache/recorder.d.ts +15 -2
- package/dist/cache/recorder.js +36 -24
- package/dist/cache/rekeyed.d.ts +46 -0
- package/dist/cache/rekeyed.js +89 -0
- package/dist/cache/relocate.d.ts +14 -15
- package/dist/cache/relocate.js +33 -26
- package/dist/cache/route.d.ts +32 -34
- package/dist/cache/route.js +94 -51
- package/dist/cache/store.d.ts +6 -1
- package/dist/cache/store.js +21 -2
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +53 -15
- package/dist/cache/trace.js +70 -29
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/bin.js +0 -1
- package/dist/cli/cache.d.ts +0 -1
- package/dist/cli/cache.js +0 -1
- package/dist/cli/docs-url.d.ts +0 -1
- package/dist/cli/docs-url.js +0 -1
- package/dist/cli/feedback.d.ts +0 -1
- package/dist/cli/feedback.js +0 -1
- package/dist/cli/guide.d.ts +0 -1
- package/dist/cli/guide.js +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +10 -11
- package/dist/cli/init/agent-skill.d.ts +0 -1
- package/dist/cli/init/agent-skill.js +0 -1
- package/dist/cli/init/engines.d.ts +1 -4
- package/dist/cli/init/engines.js +2 -3
- package/dist/cli/init/gateways.d.ts +1 -2
- package/dist/cli/init/gateways.js +11 -2
- package/dist/cli/init/mcp-config.d.ts +0 -1
- package/dist/cli/init/mcp-config.js +0 -1
- package/dist/cli/init/package.d.ts +0 -1
- package/dist/cli/init/package.js +0 -1
- package/dist/cli/init/scaffold.d.ts +0 -1
- package/dist/cli/init/scaffold.js +0 -1
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/init/versions.d.ts +0 -9
- package/dist/cli/init/versions.js +1 -11
- package/dist/cli/init.d.ts +0 -1
- package/dist/cli/init.js +0 -1
- package/dist/cli/mcp.d.ts +9 -2
- package/dist/cli/mcp.js +14 -2
- package/dist/cli/signals.d.ts +0 -1
- package/dist/cli/signals.js +0 -1
- package/dist/cli/skill.d.ts +0 -1
- package/dist/cli/skill.js +0 -1
- package/dist/cli/telemetry.d.ts +0 -1
- package/dist/cli/telemetry.js +1 -2
- package/dist/cli/wordmark.d.ts +0 -1
- package/dist/cli/wordmark.js +0 -1
- package/dist/collect/collect.d.ts +0 -1
- package/dist/collect/collect.js +3 -2
- package/dist/collect/registry.d.ts +6 -3
- package/dist/collect/registry.js +31 -14
- package/dist/collect/select.d.ts +0 -1
- package/dist/collect/select.js +0 -1
- package/dist/config/agent.d.ts +0 -1
- package/dist/config/agent.js +0 -1
- package/dist/config/app.d.ts +0 -1
- package/dist/config/app.js +0 -1
- package/dist/config/command.d.ts +0 -1
- package/dist/config/command.js +0 -1
- package/dist/config/diagnose.d.ts +0 -1
- package/dist/config/diagnose.js +0 -1
- package/dist/config/esm-hooks.d.ts +0 -1
- package/dist/config/esm-hooks.js +0 -1
- package/dist/config/load.d.ts +0 -1
- package/dist/config/load.js +0 -1
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resolve.js +33 -2
- package/dist/config/secrets.d.ts +0 -1
- package/dist/config/secrets.js +0 -1
- package/dist/config/targets.d.ts +0 -1
- package/dist/config/targets.js +0 -1
- package/dist/config/validate.d.ts +0 -1
- package/dist/config/validate.js +0 -1
- package/dist/engine/contract.d.ts +0 -1
- package/dist/engine/contract.js +0 -1
- package/dist/engine/index.d.ts +3 -4
- package/dist/engine/index.js +4 -4
- package/dist/engine/manifest.d.ts +0 -1
- package/dist/engine/manifest.js +0 -1
- package/dist/engine/recording.d.ts +0 -1
- package/dist/engine/recording.js +0 -1
- package/dist/engine/resolve.d.ts +0 -1
- package/dist/engine/resolve.js +0 -1
- package/dist/engine/session.d.ts +0 -1
- package/dist/engine/session.js +0 -1
- package/dist/engine/surface.d.ts +0 -1
- package/dist/engine/surface.js +0 -1
- package/dist/engine/timing.d.ts +0 -1
- package/dist/engine/timing.js +0 -1
- package/dist/expect/async.d.ts +0 -1
- package/dist/expect/async.js +101 -59
- package/dist/expect/attempt.d.ts +0 -1
- package/dist/expect/attempt.js +0 -1
- package/dist/expect/index.d.ts +0 -1
- package/dist/expect/index.js +0 -1
- package/dist/expect/poll-scope.d.ts +52 -0
- package/dist/expect/poll-scope.js +113 -0
- package/dist/expect/poll.d.ts +0 -1
- package/dist/expect/poll.js +31 -5
- package/dist/expect/soft.d.ts +0 -1
- package/dist/expect/soft.js +0 -1
- package/dist/expect/values.d.ts +0 -1
- package/dist/expect/values.js +11 -5
- package/dist/explore/body.d.ts +0 -1
- package/dist/explore/body.js +0 -1
- package/dist/explore/executor.d.ts +0 -1
- package/dist/explore/executor.js +0 -1
- package/dist/explore/index.d.ts +0 -1
- package/dist/explore/index.js +16 -2
- package/dist/explore/plan.d.ts +0 -1
- package/dist/explore/plan.js +0 -1
- package/dist/explore/progress.d.ts +0 -1
- package/dist/explore/progress.js +0 -1
- package/dist/explore/state.d.ts +0 -1
- package/dist/explore/state.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/internal/abandoned.d.ts +11 -0
- package/dist/internal/abandoned.js +23 -0
- package/dist/internal/ai-trace.d.ts +0 -1
- package/dist/internal/ai-trace.js +0 -1
- package/dist/internal/atomic-write.d.ts +0 -1
- package/dist/internal/atomic-write.js +0 -1
- package/dist/internal/brands.d.ts +2 -1
- package/dist/internal/brands.js +2 -1
- package/dist/internal/client-identity.d.ts +9 -0
- package/dist/internal/client-identity.js +14 -0
- package/dist/internal/debug.d.ts +0 -1
- package/dist/internal/debug.js +0 -1
- package/dist/internal/env.d.ts +0 -1
- package/dist/internal/env.js +0 -1
- package/dist/internal/errors.d.ts +0 -1
- package/dist/internal/errors.js +0 -1
- package/dist/internal/geometry.d.ts +0 -1
- package/dist/internal/geometry.js +0 -1
- package/dist/internal/git.d.ts +0 -1
- package/dist/internal/git.js +0 -1
- package/dist/internal/globs.d.ts +0 -1
- package/dist/internal/globs.js +0 -1
- package/dist/internal/ids.d.ts +0 -1
- package/dist/internal/ids.js +0 -1
- package/dist/internal/json-value.d.ts +0 -1
- package/dist/internal/json-value.js +0 -1
- package/dist/internal/keys.d.ts +0 -1
- package/dist/internal/keys.js +0 -1
- package/dist/internal/node-version.d.ts +0 -1
- package/dist/internal/node-version.js +0 -1
- package/dist/internal/objects.d.ts +0 -1
- package/dist/internal/objects.js +0 -1
- package/dist/internal/options.d.ts +0 -1
- package/dist/internal/options.js +0 -1
- package/dist/internal/package-manager.d.ts +0 -1
- package/dist/internal/package-manager.js +0 -1
- package/dist/internal/package-version.d.ts +0 -1
- package/dist/internal/package-version.js +0 -1
- package/dist/internal/paths.d.ts +0 -1
- package/dist/internal/paths.js +0 -1
- package/dist/internal/realm-slot.d.ts +0 -1
- package/dist/internal/realm-slot.js +0 -1
- package/dist/internal/recording-modes.d.ts +0 -1
- package/dist/internal/recording-modes.js +0 -1
- package/dist/internal/redact.d.ts +7 -5
- package/dist/internal/redact.js +116 -24
- package/dist/internal/regexp.d.ts +0 -1
- package/dist/internal/regexp.js +0 -1
- package/dist/internal/roles.d.ts +0 -1
- package/dist/internal/roles.js +0 -1
- package/dist/internal/skip.d.ts +0 -1
- package/dist/internal/skip.js +0 -1
- package/dist/internal/source.d.ts +0 -1
- package/dist/internal/source.js +0 -1
- package/dist/internal/standard-schema.d.ts +0 -1
- package/dist/internal/standard-schema.js +0 -1
- package/dist/internal/suggest.d.ts +0 -1
- package/dist/internal/suggest.js +0 -1
- package/dist/internal/text.d.ts +8 -1
- package/dist/internal/text.js +13 -2
- package/dist/internal/time.d.ts +6 -1
- package/dist/internal/time.js +25 -14
- package/dist/internal/urls.d.ts +9 -6
- package/dist/internal/urls.js +19 -11
- package/dist/internal/vcs.d.ts +0 -1
- package/dist/internal/vcs.js +0 -1
- package/dist/internal/zip.d.ts +0 -1
- package/dist/internal/zip.js +0 -1
- package/dist/locator/engine.d.ts +12 -3
- package/dist/locator/engine.js +8 -4
- package/dist/locator/expression.d.ts +0 -1
- package/dist/locator/expression.js +0 -1
- package/dist/locator/screen.d.ts +0 -1
- package/dist/locator/screen.js +28 -5
- package/dist/mcp/catalog.d.ts +7 -3
- package/dist/mcp/catalog.js +8 -9
- package/dist/mcp/config.d.ts +0 -1
- package/dist/mcp/config.js +0 -1
- package/dist/mcp/recording.d.ts +0 -1
- package/dist/mcp/recording.js +0 -1
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.js +8 -5
- package/dist/mcp/session.d.ts +4 -2
- package/dist/mcp/session.js +44 -22
- package/dist/mcp/sessions.d.ts +2 -1
- package/dist/mcp/sessions.js +5 -2
- package/dist/mcp/tools.d.ts +7 -6
- package/dist/mcp/tools.js +36 -11
- package/dist/mcp/usage.d.ts +61 -0
- package/dist/mcp/usage.js +73 -0
- package/dist/oauth/callback-server.d.ts +0 -1
- package/dist/oauth/callback-server.js +0 -1
- package/dist/oauth/chatgpt.d.ts +0 -1
- package/dist/oauth/chatgpt.js +3 -24
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +1 -1
- package/dist/oauth/copilot.d.ts +5 -5
- package/dist/oauth/copilot.js +80 -8
- package/dist/oauth/device-code.d.ts +0 -1
- package/dist/oauth/device-code.js +0 -1
- package/dist/oauth/errors.d.ts +0 -1
- package/dist/oauth/errors.js +0 -1
- package/dist/oauth/fetch.d.ts +0 -1
- package/dist/oauth/fetch.js +0 -1
- package/dist/oauth/grok.d.ts +0 -1
- package/dist/oauth/grok.js +2 -2
- package/dist/oauth/jwt.d.ts +0 -1
- package/dist/oauth/jwt.js +0 -1
- package/dist/oauth/login.d.ts +0 -1
- package/dist/oauth/login.js +0 -1
- package/dist/oauth/models.d.ts +0 -1
- package/dist/oauth/models.js +2 -2
- package/dist/oauth/opencode-console.d.ts +10 -0
- package/dist/oauth/opencode-console.js +133 -0
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +12 -1
- package/dist/oauth/providers/github-copilot.js +80 -19
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/opencode-console.d.ts +31 -0
- package/dist/oauth/providers/opencode-console.js +148 -0
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +2 -7
- package/dist/oauth/providers.js +3 -8
- package/dist/oauth/responses.d.ts +9 -0
- package/dist/oauth/responses.js +23 -0
- package/dist/oauth/sse.d.ts +0 -1
- package/dist/oauth/sse.js +0 -1
- package/dist/oauth/store.d.ts +0 -1
- package/dist/oauth/store.js +0 -1
- package/dist/oauth/token-endpoint.d.ts +0 -1
- package/dist/oauth/token-endpoint.js +0 -1
- package/dist/oauth/types.d.ts +0 -1
- package/dist/oauth/types.js +0 -1
- package/dist/params.d.ts +0 -1
- package/dist/params.js +0 -1
- package/dist/report/build.d.ts +26 -1
- package/dist/report/build.js +16 -9
- package/dist/report/builtin.d.ts +0 -1
- package/dist/report/builtin.js +0 -1
- package/dist/report/code-frame.d.ts +0 -1
- package/dist/report/code-frame.js +0 -1
- package/dist/report/debug-steps.d.ts +0 -1
- package/dist/report/debug-steps.js +0 -1
- package/dist/report/explore-text.d.ts +0 -1
- package/dist/report/explore-text.js +0 -1
- package/dist/report/failure-text.d.ts +6 -2
- package/dist/report/failure-text.js +14 -5
- package/dist/report/format.d.ts +10 -6
- package/dist/report/format.js +12 -6
- package/dist/report/json.d.ts +0 -1
- package/dist/report/json.js +0 -1
- package/dist/report/junit.d.ts +0 -1
- package/dist/report/junit.js +11 -13
- package/dist/report/list-explore.d.ts +0 -1
- package/dist/report/list-explore.js +0 -1
- package/dist/report/list-model.d.ts +0 -1
- package/dist/report/list-model.js +0 -1
- package/dist/report/list-steps.d.ts +0 -1
- package/dist/report/list-steps.js +0 -1
- package/dist/report/list.d.ts +1 -1
- package/dist/report/list.js +38 -19
- package/dist/report/live-window.d.ts +0 -1
- package/dist/report/live-window.js +0 -1
- package/dist/report/markdown-text.d.ts +0 -1
- package/dist/report/markdown-text.js +0 -1
- package/dist/report/markdown.d.ts +1 -2
- package/dist/report/markdown.js +37 -15
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +6 -2
- package/dist/report/repeats.js +12 -4
- package/dist/report/running-tree.d.ts +0 -1
- package/dist/report/running-tree.js +0 -1
- package/dist/report/write.d.ts +0 -1
- package/dist/report/write.js +0 -1
- package/dist/run/app-ports.d.ts +0 -1
- package/dist/run/app-ports.js +0 -1
- package/dist/run/artifacts.d.ts +18 -1
- package/dist/run/artifacts.js +68 -2
- package/dist/run/budget.d.ts +0 -1
- package/dist/run/budget.js +0 -1
- package/dist/run/declared-processes.d.ts +0 -1
- package/dist/run/declared-processes.js +0 -1
- package/dist/run/events.d.ts +0 -1
- package/dist/run/events.js +0 -1
- package/dist/run/execute.d.ts +9 -1
- package/dist/run/execute.js +55 -29
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +6 -3
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +4 -3
- package/dist/run/fixture-recording.d.ts +0 -1
- package/dist/run/fixture-recording.js +0 -1
- package/dist/run/fixtures.d.ts +0 -1
- package/dist/run/fixtures.js +6 -9
- package/dist/run/in-process.d.ts +2 -1
- package/dist/run/in-process.js +1 -1
- package/dist/run/last-run.d.ts +42 -9
- package/dist/run/last-run.js +121 -15
- package/dist/run/managed-process.d.ts +0 -1
- package/dist/run/managed-process.js +0 -1
- package/dist/run/output.d.ts +0 -1
- package/dist/run/output.js +0 -1
- package/dist/run/process-pool.d.ts +0 -1
- package/dist/run/process-pool.js +0 -1
- package/dist/run/provision.d.ts +0 -1
- package/dist/run/provision.js +0 -1
- package/dist/run/realm.d.ts +6 -2
- package/dist/run/realm.js +21 -8
- package/dist/run/records.d.ts +16 -1
- package/dist/run/records.js +26 -1
- package/dist/run/retry.d.ts +3 -2
- package/dist/run/retry.js +4 -3
- package/dist/run/runner.d.ts +3 -2
- package/dist/run/runner.js +70 -32
- package/dist/run/scheduler.d.ts +0 -1
- package/dist/run/scheduler.js +0 -1
- package/dist/run/secrecy.d.ts +15 -1
- package/dist/run/secrecy.js +27 -2
- package/dist/run/serial.d.ts +2 -1
- package/dist/run/serial.js +8 -6
- package/dist/run/sessions.d.ts +0 -1
- package/dist/run/sessions.js +0 -1
- package/dist/run/standalone.d.ts +0 -1
- package/dist/run/standalone.js +3 -3
- package/dist/run/steps.d.ts +2 -9
- package/dist/run/steps.js +7 -22
- package/dist/run/trace-redaction.d.ts +0 -1
- package/dist/run/trace-redaction.js +0 -1
- package/dist/run/unit-runner.d.ts +0 -1
- package/dist/run/unit-runner.js +0 -1
- package/dist/run/units.d.ts +0 -1
- package/dist/run/units.js +0 -1
- package/dist/run/worker/entry.d.ts +0 -1
- package/dist/run/worker/entry.js +7 -7
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +2 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +2 -1
- package/dist/run/worker/session.js +1 -1
- package/dist/run/worker-models.d.ts +0 -1
- package/dist/run/worker-models.js +0 -1
- package/dist/secrets.d.ts +0 -1
- package/dist/secrets.js +0 -1
- package/dist/telemetry/checkout.d.ts +0 -1
- package/dist/telemetry/checkout.js +0 -1
- package/dist/telemetry/environment.d.ts +0 -1
- package/dist/telemetry/environment.js +0 -1
- package/dist/telemetry/events.d.ts +26 -10
- package/dist/telemetry/events.js +108 -13
- package/dist/telemetry/failure-kind.d.ts +0 -1
- package/dist/telemetry/failure-kind.js +0 -1
- package/dist/telemetry/posthog.d.ts +0 -1
- package/dist/telemetry/posthog.js +0 -1
- package/dist/telemetry/project.d.ts +0 -1
- package/dist/telemetry/project.js +0 -1
- package/dist/telemetry/store.d.ts +0 -1
- package/dist/telemetry/store.js +0 -1
- package/dist/telemetry/telemetry.d.ts +19 -8
- package/dist/telemetry/telemetry.js +26 -9
- package/dist/telemetry/token.d.ts +0 -1
- package/dist/telemetry/token.js +0 -1
- package/dist/types.d.ts +34 -26
- package/dist/types.js +0 -1
- package/docs/agents.mdx +6 -3
- package/docs/assertions.mdx +94 -0
- package/docs/authentication.mdx +3 -1
- package/docs/browser.mdx +42 -6
- package/docs/cache.mdx +64 -18
- package/docs/ci.mdx +11 -7
- package/docs/debugging.mdx +6 -3
- package/docs/executors.mdx +5 -3
- package/docs/github.mdx +12 -4
- package/docs/{writing-tests.mdx → goals.mdx} +21 -101
- package/docs/index.mdx +4 -4
- package/docs/integrations/kernel.mdx +1 -1
- package/docs/locators.mdx +64 -0
- package/docs/migrate/cypress.mdx +2 -2
- package/docs/migrate/maestro.mdx +2 -2
- package/docs/migrate/playwright.mdx +22 -16
- package/docs/migrate/selenium.mdx +2 -2
- package/docs/mobile.mdx +61 -4
- package/docs/models.mdx +53 -7
- package/docs/physical-devices.mdx +76 -0
- package/docs/quickstart.mdx +4 -3
- package/docs/reference/app.mdx +1 -1
- package/docs/reference/cli.mdx +30 -11
- package/docs/reference/config.mdx +25 -7
- package/docs/reference/engine.mdx +4 -3
- package/docs/reference/environment.mdx +8 -1
- package/docs/reference/errors.mdx +5 -5
- package/docs/reference/expect.mdx +79 -24
- package/docs/reference/mcp.mdx +3 -0
- package/docs/reference/mobile.mdx +23 -13
- package/docs/reference/reporters.mdx +8 -2
- package/docs/reference/screen.mdx +30 -7
- package/docs/reference/test.mdx +11 -4
- package/docs/reference/web.mdx +131 -23
- package/docs/security.mdx +45 -19
- package/docs/subscriptions.mdx +97 -9
- package/docs/telemetry.mdx +48 -6
- package/package.json +18 -4
- package/schema/report-v1.schema.json +14 -1
- package/skills/e2e/SKILL.md +2 -2
- package/skills/e2e/references/agent.md +22 -11
- package/skills/e2e/references/debugging.md +4 -4
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/running.md +13 -8
- package/skills/e2e/references/setup.md +42 -15
- package/skills/e2e/references/writing-tests.md +43 -15
- package/dist/agent/act-validation.d.ts.map +0 -1
- package/dist/agent/act-validation.js.map +0 -1
- package/dist/agent/act.d.ts.map +0 -1
- package/dist/agent/act.js.map +0 -1
- package/dist/agent/action-dispatcher.d.ts.map +0 -1
- package/dist/agent/action-dispatcher.js.map +0 -1
- package/dist/agent/action-names.d.ts.map +0 -1
- package/dist/agent/action-names.js.map +0 -1
- package/dist/agent/actions.d.ts.map +0 -1
- package/dist/agent/actions.js.map +0 -1
- package/dist/agent/agent-brand.d.ts.map +0 -1
- package/dist/agent/agent-brand.js.map +0 -1
- package/dist/agent/ai-sdk.d.ts.map +0 -1
- package/dist/agent/ai-sdk.js.map +0 -1
- package/dist/agent/call-options.d.ts.map +0 -1
- package/dist/agent/call-options.js.map +0 -1
- package/dist/agent/default-agent.d.ts.map +0 -1
- package/dist/agent/default-agent.js.map +0 -1
- package/dist/agent/derived.d.ts.map +0 -1
- package/dist/agent/derived.js.map +0 -1
- package/dist/agent/error.d.ts.map +0 -1
- package/dist/agent/error.js.map +0 -1
- package/dist/agent/executor.d.ts.map +0 -1
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/interactive-step.d.ts.map +0 -1
- package/dist/agent/interactive-step.js.map +0 -1
- package/dist/agent/invocation.d.ts.map +0 -1
- package/dist/agent/invocation.js.map +0 -1
- package/dist/agent/ledger.d.ts.map +0 -1
- package/dist/agent/ledger.js.map +0 -1
- package/dist/agent/loop-guards.d.ts.map +0 -1
- package/dist/agent/loop-guards.js.map +0 -1
- package/dist/agent/model/adapter.d.ts.map +0 -1
- package/dist/agent/model/adapter.js.map +0 -1
- package/dist/agent/model/overflow.d.ts.map +0 -1
- package/dist/agent/model/overflow.js.map +0 -1
- package/dist/agent/model/provider-hints.d.ts.map +0 -1
- package/dist/agent/model/provider-hints.js.map +0 -1
- package/dist/agent/model/schema.d.ts.map +0 -1
- package/dist/agent/model/schema.js.map +0 -1
- package/dist/agent/model/sdk.d.ts.map +0 -1
- package/dist/agent/model/sdk.js.map +0 -1
- package/dist/agent/model/stall.d.ts.map +0 -1
- package/dist/agent/model/stall.js.map +0 -1
- package/dist/agent/model/tool-choice.d.ts.map +0 -1
- package/dist/agent/model/tool-choice.js.map +0 -1
- package/dist/agent/observation-budget.d.ts.map +0 -1
- package/dist/agent/observation-budget.js.map +0 -1
- package/dist/agent/observation-feed.d.ts.map +0 -1
- package/dist/agent/observation-feed.js.map +0 -1
- package/dist/agent/observation.d.ts.map +0 -1
- package/dist/agent/observation.js.map +0 -1
- package/dist/agent/operation-queue.d.ts.map +0 -1
- package/dist/agent/operation-queue.js.map +0 -1
- package/dist/agent/phases.d.ts.map +0 -1
- package/dist/agent/phases.js.map +0 -1
- package/dist/agent/pixels.d.ts.map +0 -1
- package/dist/agent/pixels.js.map +0 -1
- package/dist/agent/point-tap.d.ts.map +0 -1
- package/dist/agent/point-tap.js.map +0 -1
- package/dist/agent/primitives.d.ts.map +0 -1
- package/dist/agent/primitives.js.map +0 -1
- package/dist/agent/prompts.d.ts.map +0 -1
- package/dist/agent/prompts.js.map +0 -1
- package/dist/agent/protocol.d.ts.map +0 -1
- package/dist/agent/protocol.js.map +0 -1
- package/dist/agent/public.d.ts.map +0 -1
- package/dist/agent/public.js.map +0 -1
- package/dist/agent/reading.d.ts.map +0 -1
- package/dist/agent/reading.js.map +0 -1
- package/dist/agent/replay.d.ts.map +0 -1
- package/dist/agent/replay.js.map +0 -1
- package/dist/agent/screen-update.d.ts.map +0 -1
- package/dist/agent/screen-update.js.map +0 -1
- package/dist/agent/scroll-target.d.ts.map +0 -1
- package/dist/agent/scroll-target.js.map +0 -1
- package/dist/agent/secrets.d.ts.map +0 -1
- package/dist/agent/secrets.js.map +0 -1
- package/dist/agent/settle-policy.d.ts.map +0 -1
- package/dist/agent/settle-policy.js.map +0 -1
- package/dist/agent/step-accounting.d.ts.map +0 -1
- package/dist/agent/step-accounting.js.map +0 -1
- package/dist/agent/step-cache.d.ts.map +0 -1
- package/dist/agent/step-cache.js.map +0 -1
- package/dist/agent/tool-loop.d.ts.map +0 -1
- package/dist/agent/tool-loop.js.map +0 -1
- package/dist/agent/tool-output.d.ts.map +0 -1
- package/dist/agent/tool-output.js.map +0 -1
- package/dist/agent/tool.d.ts.map +0 -1
- package/dist/agent/tool.js.map +0 -1
- package/dist/agent/transcript-compaction.d.ts.map +0 -1
- package/dist/agent/transcript-compaction.js.map +0 -1
- package/dist/agent/upload-paths.d.ts.map +0 -1
- package/dist/agent/upload-paths.js.map +0 -1
- package/dist/agent/usage.d.ts.map +0 -1
- package/dist/agent/usage.js.map +0 -1
- package/dist/cache/anchors.d.ts.map +0 -1
- package/dist/cache/anchors.js.map +0 -1
- package/dist/cache/context.d.ts.map +0 -1
- package/dist/cache/context.js.map +0 -1
- package/dist/cache/decide.d.ts.map +0 -1
- package/dist/cache/decide.js.map +0 -1
- package/dist/cache/identity.d.ts.map +0 -1
- package/dist/cache/identity.js.map +0 -1
- package/dist/cache/recorder.d.ts.map +0 -1
- package/dist/cache/recorder.js.map +0 -1
- package/dist/cache/relocate.d.ts.map +0 -1
- package/dist/cache/relocate.js.map +0 -1
- package/dist/cache/route.d.ts.map +0 -1
- package/dist/cache/route.js.map +0 -1
- package/dist/cache/store.d.ts.map +0 -1
- package/dist/cache/store.js.map +0 -1
- package/dist/cache/template.d.ts.map +0 -1
- package/dist/cache/template.js.map +0 -1
- package/dist/cache/trace.d.ts.map +0 -1
- package/dist/cache/trace.js.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/cache.d.ts.map +0 -1
- package/dist/cli/cache.js.map +0 -1
- package/dist/cli/docs-url.d.ts.map +0 -1
- package/dist/cli/docs-url.js.map +0 -1
- package/dist/cli/feedback.d.ts.map +0 -1
- package/dist/cli/feedback.js.map +0 -1
- package/dist/cli/guide.d.ts.map +0 -1
- package/dist/cli/guide.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/init/agent-skill.d.ts.map +0 -1
- package/dist/cli/init/agent-skill.js.map +0 -1
- package/dist/cli/init/engines.d.ts.map +0 -1
- package/dist/cli/init/engines.js.map +0 -1
- package/dist/cli/init/gateways.d.ts.map +0 -1
- package/dist/cli/init/gateways.js.map +0 -1
- package/dist/cli/init/mcp-config.d.ts.map +0 -1
- package/dist/cli/init/mcp-config.js.map +0 -1
- package/dist/cli/init/package.d.ts.map +0 -1
- package/dist/cli/init/package.js.map +0 -1
- package/dist/cli/init/scaffold.d.ts.map +0 -1
- package/dist/cli/init/scaffold.js.map +0 -1
- package/dist/cli/init/versions.d.ts.map +0 -1
- package/dist/cli/init/versions.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js.map +0 -1
- package/dist/cli/signals.d.ts.map +0 -1
- package/dist/cli/signals.js.map +0 -1
- package/dist/cli/skill.d.ts.map +0 -1
- package/dist/cli/skill.js.map +0 -1
- package/dist/cli/telemetry.d.ts.map +0 -1
- package/dist/cli/telemetry.js.map +0 -1
- package/dist/cli/wordmark.d.ts.map +0 -1
- package/dist/cli/wordmark.js.map +0 -1
- package/dist/collect/collect.d.ts.map +0 -1
- package/dist/collect/collect.js.map +0 -1
- package/dist/collect/registry.d.ts.map +0 -1
- package/dist/collect/registry.js.map +0 -1
- package/dist/collect/select.d.ts.map +0 -1
- package/dist/collect/select.js.map +0 -1
- package/dist/config/agent.d.ts.map +0 -1
- package/dist/config/agent.js.map +0 -1
- package/dist/config/app.d.ts.map +0 -1
- package/dist/config/app.js.map +0 -1
- package/dist/config/command.d.ts.map +0 -1
- package/dist/config/command.js.map +0 -1
- package/dist/config/diagnose.d.ts.map +0 -1
- package/dist/config/diagnose.js.map +0 -1
- package/dist/config/esm-hooks.d.ts.map +0 -1
- package/dist/config/esm-hooks.js.map +0 -1
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js.map +0 -1
- package/dist/config/resolve.d.ts.map +0 -1
- package/dist/config/resolve.js.map +0 -1
- package/dist/config/secrets.d.ts.map +0 -1
- package/dist/config/secrets.js.map +0 -1
- package/dist/config/targets.d.ts.map +0 -1
- package/dist/config/targets.js.map +0 -1
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js.map +0 -1
- package/dist/engine/contract.d.ts.map +0 -1
- package/dist/engine/contract.js.map +0 -1
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/manifest.d.ts.map +0 -1
- package/dist/engine/manifest.js.map +0 -1
- package/dist/engine/recording.d.ts.map +0 -1
- package/dist/engine/recording.js.map +0 -1
- package/dist/engine/resolve.d.ts.map +0 -1
- package/dist/engine/resolve.js.map +0 -1
- package/dist/engine/session.d.ts.map +0 -1
- package/dist/engine/session.js.map +0 -1
- package/dist/engine/surface.d.ts.map +0 -1
- package/dist/engine/surface.js.map +0 -1
- package/dist/engine/timing.d.ts.map +0 -1
- package/dist/engine/timing.js.map +0 -1
- package/dist/expect/async.d.ts.map +0 -1
- package/dist/expect/async.js.map +0 -1
- package/dist/expect/attempt.d.ts.map +0 -1
- package/dist/expect/attempt.js.map +0 -1
- package/dist/expect/index.d.ts.map +0 -1
- package/dist/expect/index.js.map +0 -1
- package/dist/expect/poll.d.ts.map +0 -1
- package/dist/expect/poll.js.map +0 -1
- package/dist/expect/soft.d.ts.map +0 -1
- package/dist/expect/soft.js.map +0 -1
- package/dist/expect/values.d.ts.map +0 -1
- package/dist/expect/values.js.map +0 -1
- package/dist/explore/body.d.ts.map +0 -1
- package/dist/explore/body.js.map +0 -1
- package/dist/explore/executor.d.ts.map +0 -1
- package/dist/explore/executor.js.map +0 -1
- package/dist/explore/index.d.ts.map +0 -1
- package/dist/explore/index.js.map +0 -1
- package/dist/explore/plan.d.ts.map +0 -1
- package/dist/explore/plan.js.map +0 -1
- package/dist/explore/progress.d.ts.map +0 -1
- package/dist/explore/progress.js.map +0 -1
- package/dist/explore/state.d.ts.map +0 -1
- package/dist/explore/state.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/ai-trace.d.ts.map +0 -1
- package/dist/internal/ai-trace.js.map +0 -1
- package/dist/internal/atomic-write.d.ts.map +0 -1
- package/dist/internal/atomic-write.js.map +0 -1
- package/dist/internal/brands.d.ts.map +0 -1
- package/dist/internal/brands.js.map +0 -1
- package/dist/internal/debug.d.ts.map +0 -1
- package/dist/internal/debug.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/errors.d.ts.map +0 -1
- package/dist/internal/errors.js.map +0 -1
- package/dist/internal/geometry.d.ts.map +0 -1
- package/dist/internal/geometry.js.map +0 -1
- package/dist/internal/git.d.ts.map +0 -1
- package/dist/internal/git.js.map +0 -1
- package/dist/internal/globs.d.ts.map +0 -1
- package/dist/internal/globs.js.map +0 -1
- package/dist/internal/ids.d.ts.map +0 -1
- package/dist/internal/ids.js.map +0 -1
- package/dist/internal/json-value.d.ts.map +0 -1
- package/dist/internal/json-value.js.map +0 -1
- package/dist/internal/keys.d.ts.map +0 -1
- package/dist/internal/keys.js.map +0 -1
- package/dist/internal/node-version.d.ts.map +0 -1
- package/dist/internal/node-version.js.map +0 -1
- package/dist/internal/objects.d.ts.map +0 -1
- package/dist/internal/objects.js.map +0 -1
- package/dist/internal/options.d.ts.map +0 -1
- package/dist/internal/options.js.map +0 -1
- package/dist/internal/package-manager.d.ts.map +0 -1
- package/dist/internal/package-manager.js.map +0 -1
- package/dist/internal/package-version.d.ts.map +0 -1
- package/dist/internal/package-version.js.map +0 -1
- package/dist/internal/paths.d.ts.map +0 -1
- package/dist/internal/paths.js.map +0 -1
- package/dist/internal/realm-slot.d.ts.map +0 -1
- package/dist/internal/realm-slot.js.map +0 -1
- package/dist/internal/recording-modes.d.ts.map +0 -1
- package/dist/internal/recording-modes.js.map +0 -1
- package/dist/internal/redact.d.ts.map +0 -1
- package/dist/internal/redact.js.map +0 -1
- package/dist/internal/regexp.d.ts.map +0 -1
- package/dist/internal/regexp.js.map +0 -1
- package/dist/internal/roles.d.ts.map +0 -1
- package/dist/internal/roles.js.map +0 -1
- package/dist/internal/skip.d.ts.map +0 -1
- package/dist/internal/skip.js.map +0 -1
- package/dist/internal/source.d.ts.map +0 -1
- package/dist/internal/source.js.map +0 -1
- package/dist/internal/standard-schema.d.ts.map +0 -1
- package/dist/internal/standard-schema.js.map +0 -1
- package/dist/internal/suggest.d.ts.map +0 -1
- package/dist/internal/suggest.js.map +0 -1
- package/dist/internal/text.d.ts.map +0 -1
- package/dist/internal/text.js.map +0 -1
- package/dist/internal/time.d.ts.map +0 -1
- package/dist/internal/time.js.map +0 -1
- package/dist/internal/urls.d.ts.map +0 -1
- package/dist/internal/urls.js.map +0 -1
- package/dist/internal/vcs.d.ts.map +0 -1
- package/dist/internal/vcs.js.map +0 -1
- package/dist/internal/zip.d.ts.map +0 -1
- package/dist/internal/zip.js.map +0 -1
- package/dist/locator/engine.d.ts.map +0 -1
- package/dist/locator/engine.js.map +0 -1
- package/dist/locator/expression.d.ts.map +0 -1
- package/dist/locator/expression.js.map +0 -1
- package/dist/locator/screen.d.ts.map +0 -1
- package/dist/locator/screen.js.map +0 -1
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/recording.d.ts.map +0 -1
- package/dist/mcp/recording.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/sessions.d.ts.map +0 -1
- package/dist/mcp/sessions.js.map +0 -1
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js.map +0 -1
- package/dist/oauth/callback-server.d.ts.map +0 -1
- package/dist/oauth/callback-server.js.map +0 -1
- package/dist/oauth/chatgpt.d.ts.map +0 -1
- package/dist/oauth/chatgpt.js.map +0 -1
- package/dist/oauth/cli.d.ts.map +0 -1
- package/dist/oauth/cli.js.map +0 -1
- package/dist/oauth/copilot.d.ts.map +0 -1
- package/dist/oauth/copilot.js.map +0 -1
- package/dist/oauth/device-code.d.ts.map +0 -1
- package/dist/oauth/device-code.js.map +0 -1
- package/dist/oauth/errors.d.ts.map +0 -1
- package/dist/oauth/errors.js.map +0 -1
- package/dist/oauth/fetch.d.ts.map +0 -1
- package/dist/oauth/fetch.js.map +0 -1
- package/dist/oauth/grok.d.ts.map +0 -1
- package/dist/oauth/grok.js.map +0 -1
- package/dist/oauth/jwt.d.ts.map +0 -1
- package/dist/oauth/jwt.js.map +0 -1
- package/dist/oauth/login.d.ts.map +0 -1
- package/dist/oauth/login.js.map +0 -1
- package/dist/oauth/models.d.ts.map +0 -1
- package/dist/oauth/models.js.map +0 -1
- package/dist/oauth/pkce.d.ts.map +0 -1
- package/dist/oauth/pkce.js.map +0 -1
- package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
- package/dist/oauth/providers/github-copilot.js.map +0 -1
- package/dist/oauth/providers/openai.d.ts.map +0 -1
- package/dist/oauth/providers/openai.js.map +0 -1
- package/dist/oauth/providers/xai.d.ts.map +0 -1
- package/dist/oauth/providers/xai.js.map +0 -1
- package/dist/oauth/providers.d.ts.map +0 -1
- package/dist/oauth/providers.js.map +0 -1
- package/dist/oauth/sse.d.ts.map +0 -1
- package/dist/oauth/sse.js.map +0 -1
- package/dist/oauth/store.d.ts.map +0 -1
- package/dist/oauth/store.js.map +0 -1
- package/dist/oauth/token-endpoint.d.ts.map +0 -1
- package/dist/oauth/token-endpoint.js.map +0 -1
- package/dist/oauth/types.d.ts.map +0 -1
- package/dist/oauth/types.js.map +0 -1
- package/dist/params.d.ts.map +0 -1
- package/dist/params.js.map +0 -1
- package/dist/report/build.d.ts.map +0 -1
- package/dist/report/build.js.map +0 -1
- package/dist/report/builtin.d.ts.map +0 -1
- package/dist/report/builtin.js.map +0 -1
- package/dist/report/code-frame.d.ts.map +0 -1
- package/dist/report/code-frame.js.map +0 -1
- package/dist/report/debug-steps.d.ts.map +0 -1
- package/dist/report/debug-steps.js.map +0 -1
- package/dist/report/explore-text.d.ts.map +0 -1
- package/dist/report/explore-text.js.map +0 -1
- package/dist/report/failure-text.d.ts.map +0 -1
- package/dist/report/failure-text.js.map +0 -1
- package/dist/report/format.d.ts.map +0 -1
- package/dist/report/format.js.map +0 -1
- package/dist/report/json.d.ts.map +0 -1
- package/dist/report/json.js.map +0 -1
- package/dist/report/junit.d.ts.map +0 -1
- package/dist/report/junit.js.map +0 -1
- package/dist/report/list-explore.d.ts.map +0 -1
- package/dist/report/list-explore.js.map +0 -1
- package/dist/report/list-model.d.ts.map +0 -1
- package/dist/report/list-model.js.map +0 -1
- package/dist/report/list-steps.d.ts.map +0 -1
- package/dist/report/list-steps.js.map +0 -1
- package/dist/report/list.d.ts.map +0 -1
- package/dist/report/list.js.map +0 -1
- package/dist/report/live-window.d.ts.map +0 -1
- package/dist/report/live-window.js.map +0 -1
- package/dist/report/markdown-text.d.ts.map +0 -1
- package/dist/report/markdown-text.js.map +0 -1
- package/dist/report/markdown.d.ts.map +0 -1
- package/dist/report/markdown.js.map +0 -1
- package/dist/report/outcome.d.ts.map +0 -1
- package/dist/report/outcome.js.map +0 -1
- package/dist/report/repeats.d.ts.map +0 -1
- package/dist/report/repeats.js.map +0 -1
- package/dist/report/running-tree.d.ts.map +0 -1
- package/dist/report/running-tree.js.map +0 -1
- package/dist/report/write.d.ts.map +0 -1
- package/dist/report/write.js.map +0 -1
- package/dist/run/app-ports.d.ts.map +0 -1
- package/dist/run/app-ports.js.map +0 -1
- package/dist/run/artifacts.d.ts.map +0 -1
- package/dist/run/artifacts.js.map +0 -1
- package/dist/run/budget.d.ts.map +0 -1
- package/dist/run/budget.js.map +0 -1
- package/dist/run/declared-processes.d.ts.map +0 -1
- package/dist/run/declared-processes.js.map +0 -1
- package/dist/run/events.d.ts.map +0 -1
- package/dist/run/events.js.map +0 -1
- package/dist/run/execute.d.ts.map +0 -1
- package/dist/run/execute.js.map +0 -1
- package/dist/run/extended-fixtures.d.ts.map +0 -1
- package/dist/run/extended-fixtures.js.map +0 -1
- package/dist/run/failure-evidence.d.ts.map +0 -1
- package/dist/run/failure-evidence.js.map +0 -1
- package/dist/run/fixture-recording.d.ts.map +0 -1
- package/dist/run/fixture-recording.js.map +0 -1
- package/dist/run/fixtures.d.ts.map +0 -1
- package/dist/run/fixtures.js.map +0 -1
- package/dist/run/in-process.d.ts.map +0 -1
- package/dist/run/in-process.js.map +0 -1
- package/dist/run/last-run.d.ts.map +0 -1
- package/dist/run/last-run.js.map +0 -1
- package/dist/run/managed-process.d.ts.map +0 -1
- package/dist/run/managed-process.js.map +0 -1
- package/dist/run/output.d.ts.map +0 -1
- package/dist/run/output.js.map +0 -1
- package/dist/run/process-pool.d.ts.map +0 -1
- package/dist/run/process-pool.js.map +0 -1
- package/dist/run/provision.d.ts.map +0 -1
- package/dist/run/provision.js.map +0 -1
- package/dist/run/realm.d.ts.map +0 -1
- package/dist/run/realm.js.map +0 -1
- package/dist/run/records.d.ts.map +0 -1
- package/dist/run/records.js.map +0 -1
- package/dist/run/retry.d.ts.map +0 -1
- package/dist/run/retry.js.map +0 -1
- package/dist/run/runner.d.ts.map +0 -1
- package/dist/run/runner.js.map +0 -1
- package/dist/run/scheduler.d.ts.map +0 -1
- package/dist/run/scheduler.js.map +0 -1
- package/dist/run/secrecy.d.ts.map +0 -1
- package/dist/run/secrecy.js.map +0 -1
- package/dist/run/serial.d.ts.map +0 -1
- package/dist/run/serial.js.map +0 -1
- package/dist/run/sessions.d.ts.map +0 -1
- package/dist/run/sessions.js.map +0 -1
- package/dist/run/standalone.d.ts.map +0 -1
- package/dist/run/standalone.js.map +0 -1
- package/dist/run/steps.d.ts.map +0 -1
- package/dist/run/steps.js.map +0 -1
- package/dist/run/trace-redaction.d.ts.map +0 -1
- package/dist/run/trace-redaction.js.map +0 -1
- package/dist/run/unit-runner.d.ts.map +0 -1
- package/dist/run/unit-runner.js.map +0 -1
- package/dist/run/units.d.ts.map +0 -1
- package/dist/run/units.js.map +0 -1
- package/dist/run/worker/entry.d.ts.map +0 -1
- package/dist/run/worker/entry.js.map +0 -1
- package/dist/run/worker/handle.d.ts.map +0 -1
- package/dist/run/worker/handle.js.map +0 -1
- package/dist/run/worker/protocol.d.ts.map +0 -1
- package/dist/run/worker/protocol.js.map +0 -1
- package/dist/run/worker/session.d.ts.map +0 -1
- package/dist/run/worker/session.js.map +0 -1
- package/dist/run/worker-models.d.ts.map +0 -1
- package/dist/run/worker-models.js.map +0 -1
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/telemetry/checkout.d.ts.map +0 -1
- package/dist/telemetry/checkout.js.map +0 -1
- package/dist/telemetry/environment.d.ts.map +0 -1
- package/dist/telemetry/environment.js.map +0 -1
- package/dist/telemetry/events.d.ts.map +0 -1
- package/dist/telemetry/events.js.map +0 -1
- package/dist/telemetry/failure-kind.d.ts.map +0 -1
- package/dist/telemetry/failure-kind.js.map +0 -1
- package/dist/telemetry/posthog.d.ts.map +0 -1
- package/dist/telemetry/posthog.js.map +0 -1
- package/dist/telemetry/project.d.ts.map +0 -1
- package/dist/telemetry/project.js.map +0 -1
- package/dist/telemetry/store.d.ts.map +0 -1
- package/dist/telemetry/store.js.map +0 -1
- package/dist/telemetry/telemetry.d.ts.map +0 -1
- package/dist/telemetry/telemetry.js.map +0 -1
- package/dist/telemetry/token.d.ts.map +0 -1
- package/dist/telemetry/token.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/report/build.d.ts
CHANGED
|
@@ -264,15 +264,36 @@ export interface ReportUsage {
|
|
|
264
264
|
maxActionStepsInStep: number;
|
|
265
265
|
estimatedCostUsd?: number;
|
|
266
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* The run's counts by result. `passed`, `failed` (timed out included),
|
|
269
|
+
* `interrupted`, `flaky`, and `skipped` count selected results only and add
|
|
270
|
+
* up to `selected`; `discovered` minus `selected` is what the selection left
|
|
271
|
+
* out.
|
|
272
|
+
*/
|
|
267
273
|
export interface ReportSummary {
|
|
268
274
|
discovered: number;
|
|
269
275
|
selected: number;
|
|
270
276
|
executed: number;
|
|
271
277
|
passed: number;
|
|
272
278
|
failed: number;
|
|
279
|
+
/** Stopped by the run (a signal, `--max-failures`, a run-level error) before reaching a verdict; never counted as failed. */
|
|
280
|
+
interrupted: number;
|
|
273
281
|
flaky: number;
|
|
274
282
|
skipped: number;
|
|
275
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* What earlier runs left unresolved that a `--last-failed` rerun did not run
|
|
286
|
+
* again, because another filter left it out: the results as those runs
|
|
287
|
+
* reported them, the serial groups their members' attempts live on, and the
|
|
288
|
+
* suite hook failures whose scope still holds a carried test. The next
|
|
289
|
+
* `--last-failed` selects these tests too, so a test that never ran again
|
|
290
|
+
* stays owed until it does.
|
|
291
|
+
*/
|
|
292
|
+
export interface ReportCarried {
|
|
293
|
+
results: readonly ReportResult[];
|
|
294
|
+
serialGroups: readonly ReportSerialGroup[];
|
|
295
|
+
errors: readonly ReportError[];
|
|
296
|
+
}
|
|
276
297
|
export interface Report1Document {
|
|
277
298
|
schemaVersion: 'report-1';
|
|
278
299
|
run: {
|
|
@@ -309,6 +330,11 @@ export interface Report1Document {
|
|
|
309
330
|
summary: ReportSummary;
|
|
310
331
|
limits: ReportLimits;
|
|
311
332
|
usage: ReportUsage;
|
|
333
|
+
/**
|
|
334
|
+
* Present on a `--last-failed` rerun that left out a test an earlier run
|
|
335
|
+
* did not pass. Not part of this run's status, exit code, or summary.
|
|
336
|
+
*/
|
|
337
|
+
carried?: ReportCarried | undefined;
|
|
312
338
|
/** Present on an `e2e explore` run only. */
|
|
313
339
|
explore?: ReportExplore | undefined;
|
|
314
340
|
};
|
|
@@ -316,4 +342,3 @@ export interface Report1Document {
|
|
|
316
342
|
/** Builds the complete report-1 document. */
|
|
317
343
|
export declare function buildReport(options: BuildReportOptions): Report1Document;
|
|
318
344
|
export {};
|
|
319
|
-
//# sourceMappingURL=build.d.ts.map
|
package/dist/report/build.js
CHANGED
|
@@ -8,6 +8,7 @@ import { resultId, timestamp } from '../internal/ids.js';
|
|
|
8
8
|
import { obj } from '../internal/objects.js';
|
|
9
9
|
import { packageVersion } from '../internal/package-version.js';
|
|
10
10
|
import { projectRelativePath } from '../internal/source.js';
|
|
11
|
+
import { someSkippedAfterFailure } from '../run/records.js';
|
|
11
12
|
/**
|
|
12
13
|
* What a target's engine declaration says about it: the one description the
|
|
13
14
|
* runner grades against and the report records. A target without an engine is
|
|
@@ -155,20 +156,22 @@ function serializeTarget(config, target, provenance) {
|
|
|
155
156
|
...(provenance ?? describeTarget(target)),
|
|
156
157
|
};
|
|
157
158
|
}
|
|
158
|
-
/** Computes report-1 summary counts from results. */
|
|
159
|
+
/** Computes report-1 summary counts from results; the status counts are over the selected ones. */
|
|
159
160
|
function computeSummary(results) {
|
|
160
161
|
let selected = 0;
|
|
161
162
|
let executed = 0;
|
|
162
163
|
let passed = 0;
|
|
163
164
|
let failed = 0;
|
|
165
|
+
let interrupted = 0;
|
|
164
166
|
let flaky = 0;
|
|
165
167
|
let skipped = 0;
|
|
166
168
|
for (const result of results) {
|
|
167
|
-
if (result.selected)
|
|
168
|
-
selected += 1;
|
|
169
169
|
if (result.attempts.length > 0 || (result.serialGroupId !== undefined && result.status !== 'skipped')) {
|
|
170
170
|
executed += 1;
|
|
171
171
|
}
|
|
172
|
+
if (!result.selected)
|
|
173
|
+
continue;
|
|
174
|
+
selected += 1;
|
|
172
175
|
switch (result.status) {
|
|
173
176
|
case 'passed':
|
|
174
177
|
passed += 1;
|
|
@@ -178,15 +181,17 @@ function computeSummary(results) {
|
|
|
178
181
|
break;
|
|
179
182
|
case 'failed':
|
|
180
183
|
case 'timed-out':
|
|
181
|
-
case 'interrupted':
|
|
182
184
|
failed += 1;
|
|
183
185
|
break;
|
|
186
|
+
case 'interrupted':
|
|
187
|
+
interrupted += 1;
|
|
188
|
+
break;
|
|
184
189
|
case 'skipped':
|
|
185
190
|
skipped += 1;
|
|
186
191
|
break;
|
|
187
192
|
}
|
|
188
193
|
}
|
|
189
|
-
return { discovered: results.length, selected, executed, passed, failed, flaky, skipped };
|
|
194
|
+
return { discovered: results.length, selected, executed, passed, failed, interrupted, flaky, skipped };
|
|
190
195
|
}
|
|
191
196
|
/**
|
|
192
197
|
* A run is `blocked` — not failed — when it did not pass and *every*
|
|
@@ -195,14 +200,17 @@ function computeSummary(results) {
|
|
|
195
200
|
* nothing contradicts that. One genuine failure keeps the run failed, and so
|
|
196
201
|
* does any run-level error (a launch that never came up, a cleanup or report
|
|
197
202
|
* write that failed): it is its own fact about the run, not a blocked step,
|
|
198
|
-
* and it must stay visible to a host reading the status.
|
|
203
|
+
* and it must stay visible to a host reading the status. So does a skip after
|
|
204
|
+
* a failure under `failOnSkippedFailure`. Derivation requires
|
|
199
205
|
* positive evidence, never absence of it.
|
|
200
206
|
*/
|
|
201
|
-
function deriveRunStatus(status, results, serialGroups, runErrors) {
|
|
207
|
+
function deriveRunStatus(status, results, serialGroups, runErrors, failOnSkippedFailure) {
|
|
202
208
|
if (status !== 'failed' && status !== 'error')
|
|
203
209
|
return status;
|
|
204
210
|
if (runErrors.length > 0)
|
|
205
211
|
return status;
|
|
212
|
+
if (failOnSkippedFailure && someSkippedAfterFailure(results, serialGroups))
|
|
213
|
+
return status;
|
|
206
214
|
// Serial members carry no attempts of their own; their failing error lives
|
|
207
215
|
// on the group's last attempt (or its failing member).
|
|
208
216
|
const groupCode = new Map();
|
|
@@ -320,7 +328,7 @@ export function buildReport(options) {
|
|
|
320
328
|
name: 'e2e',
|
|
321
329
|
version: packageVersion(import.meta.url, '../../package.json', '0.0.0'),
|
|
322
330
|
},
|
|
323
|
-
status: deriveRunStatus(options.status, options.results, options.serialGroups, options.runErrors),
|
|
331
|
+
status: deriveRunStatus(options.status, options.results, options.serialGroups, options.runErrors, config?.failOnSkippedFailure === true),
|
|
324
332
|
exitCode: options.exitCode,
|
|
325
333
|
startedAt: options.startedAt,
|
|
326
334
|
finishedAt: timestamp(),
|
|
@@ -368,4 +376,3 @@ function compareSerialGroups(a, b, targetIndex) {
|
|
|
368
376
|
return a.declarationIndex - b.declarationIndex;
|
|
369
377
|
return (targetIndex.get(a.targetId) ?? 0) - (targetIndex.get(b.targetId) ?? 0);
|
|
370
378
|
}
|
|
371
|
-
//# sourceMappingURL=build.js.map
|
package/dist/report/builtin.d.ts
CHANGED
|
@@ -11,4 +11,3 @@ export declare const BUILTIN_REPORTERS: readonly ["list", "json", "junit", "mark
|
|
|
11
11
|
export declare const BUILTIN_REPORTER_LIST: string;
|
|
12
12
|
export declare const STATELESS_REPORTERS: Record<Exclude<BuiltinReporter, 'list'>, Reporter>;
|
|
13
13
|
export declare function isBuiltinReporter(value: string): value is BuiltinReporter;
|
|
14
|
-
//# sourceMappingURL=builtin.d.ts.map
|
package/dist/report/builtin.js
CHANGED
|
@@ -11,4 +11,3 @@ import type { ResultRecord, SerialGroupRecord } from '../run/records.ts';
|
|
|
11
11
|
* the empty string when the run performed no agent steps.
|
|
12
12
|
*/
|
|
13
13
|
export declare function agentStepTable(results: readonly ResultRecord[], serialGroups: readonly SerialGroupRecord[]): string;
|
|
14
|
-
//# sourceMappingURL=debug-steps.d.ts.map
|
|
@@ -34,7 +34,12 @@ export declare function detailLines(error: ReportError | undefined): string[];
|
|
|
34
34
|
* called with, which reads as code.
|
|
35
35
|
*/
|
|
36
36
|
export declare function stepLabel(step: ReportStep, max?: number): string;
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The attempt whose story a block tells: a flaky test's last failure; for a
|
|
39
|
+
* failed or timed-out test, the last attempt that reached that verdict, so a
|
|
40
|
+
* retry the run interrupted (or a serial member that retry never reached)
|
|
41
|
+
* tells nothing; otherwise the final one.
|
|
42
|
+
*/
|
|
38
43
|
export declare function toldAttempt(result: ReportResult, final: Outcome): AttemptView;
|
|
39
44
|
/** A step that did not pass. */
|
|
40
45
|
export type FailedStep = ReportStep & {
|
|
@@ -68,4 +73,3 @@ export declare function evidenceOf(told: AttemptView): ReportArtifact[];
|
|
|
68
73
|
/** Renders one failed or flaky result as its own markdown page. */
|
|
69
74
|
export declare function renderFailurePage(report: Report1Document, result: ReportResult, final: Outcome, options?: FailurePageOptions): string;
|
|
70
75
|
export {};
|
|
71
|
-
//# sourceMappingURL=failure-text.d.ts.map
|
|
@@ -69,9 +69,19 @@ function screenUrl(url) {
|
|
|
69
69
|
return url;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* The attempt whose story a block tells: a flaky test's last failure; for a
|
|
74
|
+
* failed or timed-out test, the last attempt that reached that verdict, so a
|
|
75
|
+
* retry the run interrupted (or a serial member that retry never reached)
|
|
76
|
+
* tells nothing; otherwise the final one.
|
|
77
|
+
*/
|
|
73
78
|
export function toldAttempt(result, final) {
|
|
74
|
-
|
|
79
|
+
if (result.status === 'flaky')
|
|
80
|
+
return final.lastFailed ?? final.final;
|
|
81
|
+
if (result.status === 'failed' || result.status === 'timed-out') {
|
|
82
|
+
return final.attempts.findLast((attempt) => attempt.status === 'failed' || attempt.status === 'timed-out') ?? final.final;
|
|
83
|
+
}
|
|
84
|
+
return final.final;
|
|
75
85
|
}
|
|
76
86
|
/** The step a failure happened at: the first that did not pass, with its position. */
|
|
77
87
|
export function failedStepOf(steps) {
|
|
@@ -87,9 +97,9 @@ export function failedStepOf(steps) {
|
|
|
87
97
|
*/
|
|
88
98
|
export function attemptsLine(result, final) {
|
|
89
99
|
// An attempt that recorded nothing for this test (a serial group that never
|
|
90
|
-
// reached the member) says nothing about how the test fails.
|
|
100
|
+
// reached the member), or one the run interrupted, says nothing about how the test fails.
|
|
91
101
|
const failed = final.attempts
|
|
92
|
-
.filter((attempt) => attempt.status !== 'passed' && attempt.status !== 'skipped' && (attempt.error !== undefined || attempt.steps.length > 0))
|
|
102
|
+
.filter((attempt) => attempt.status !== 'passed' && attempt.status !== 'skipped' && attempt.status !== 'interrupted' && (attempt.error !== undefined || attempt.steps.length > 0))
|
|
93
103
|
.map((attempt) => ({
|
|
94
104
|
code: cell(attempt.error?.code ?? attempt.status, 128),
|
|
95
105
|
step: failedStepOf(attempt.steps)?.index,
|
|
@@ -297,4 +307,3 @@ export function renderFailurePage(report, result, final, options = {}) {
|
|
|
297
307
|
lines.push(`<sub>e2e ${cell(run.runner.version, MAX_ID_CHARS)} · run ${code(run.id, MAX_ID_CHARS)} · the whole run is in \`report.json\`</sub>`);
|
|
298
308
|
return `${lines.join('\n')}\n`;
|
|
299
309
|
}
|
|
300
|
-
//# sourceMappingURL=failure-text.js.map
|
package/dist/report/format.d.ts
CHANGED
|
@@ -58,20 +58,25 @@ export declare function rule(text: string, align: 'center' | 'right'): {
|
|
|
58
58
|
export interface Counters {
|
|
59
59
|
passed: number;
|
|
60
60
|
failed: number;
|
|
61
|
+
interrupted: number;
|
|
61
62
|
flaky: number;
|
|
62
63
|
skipped: number;
|
|
63
64
|
total: number;
|
|
64
65
|
}
|
|
65
66
|
export declare function emptyCounters(): Counters;
|
|
66
|
-
/**
|
|
67
|
-
|
|
67
|
+
/**
|
|
68
|
+
* The counter a result status lands in. A timeout is a failure; an
|
|
69
|
+
* interrupted test was stopped by the run, not by its own verdict, so it
|
|
70
|
+
* counts on its own.
|
|
71
|
+
*/
|
|
72
|
+
export declare function statusBucket(status: ResultStatus): 'passed' | 'failed' | 'interrupted' | 'flaky' | 'skipped';
|
|
68
73
|
/** Counts results by bucket; `total` is the number of items. */
|
|
69
74
|
export declare function tally(items: readonly {
|
|
70
75
|
readonly status: ResultStatus;
|
|
71
76
|
}[]): Counters;
|
|
72
|
-
/** A file's outcome from its tests: failed if any did, skipped if all
|
|
73
|
-
export declare function fileOutcome(counters: Counters): 'passed' | 'failed' | 'skipped';
|
|
74
|
-
/** `2 failed | 10 passed | 1 flaky (
|
|
77
|
+
/** A file's outcome from its tests: failed if any did, else interrupted if any was, skipped if all were, else passed. */
|
|
78
|
+
export declare function fileOutcome(counters: Counters): 'passed' | 'failed' | 'interrupted' | 'skipped';
|
|
79
|
+
/** `2 failed | 1 interrupted | 10 passed | 1 flaky (14)` in vitest's colors and order. */
|
|
75
80
|
export declare function stateString(pc: Colors, counters: Counters): string;
|
|
76
81
|
export interface AiUsage {
|
|
77
82
|
calls: number;
|
|
@@ -156,4 +161,3 @@ export declare function fitColumns(text: string, columns: number): string;
|
|
|
156
161
|
* `repeat`, which the renderers may still be handed.
|
|
157
162
|
*/
|
|
158
163
|
export declare function repeatSuffix(repeat: number | undefined): string;
|
|
159
|
-
//# sourceMappingURL=format.d.ts.map
|
package/dist/report/format.js
CHANGED
|
@@ -96,11 +96,15 @@ export function rule(text, align) {
|
|
|
96
96
|
return { before: LONG_DASH.repeat(before), after: LONG_DASH.repeat(after) };
|
|
97
97
|
}
|
|
98
98
|
export function emptyCounters() {
|
|
99
|
-
return { passed: 0, failed: 0, flaky: 0, skipped: 0, total: 0 };
|
|
99
|
+
return { passed: 0, failed: 0, interrupted: 0, flaky: 0, skipped: 0, total: 0 };
|
|
100
100
|
}
|
|
101
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* The counter a result status lands in. A timeout is a failure; an
|
|
103
|
+
* interrupted test was stopped by the run, not by its own verdict, so it
|
|
104
|
+
* counts on its own.
|
|
105
|
+
*/
|
|
102
106
|
export function statusBucket(status) {
|
|
103
|
-
return status === '
|
|
107
|
+
return status === 'timed-out' ? 'failed' : status;
|
|
104
108
|
}
|
|
105
109
|
/** Counts results by bucket; `total` is the number of items. */
|
|
106
110
|
export function tally(items) {
|
|
@@ -111,18 +115,21 @@ export function tally(items) {
|
|
|
111
115
|
}
|
|
112
116
|
return counters;
|
|
113
117
|
}
|
|
114
|
-
/** A file's outcome from its tests: failed if any did, skipped if all
|
|
118
|
+
/** A file's outcome from its tests: failed if any did, else interrupted if any was, skipped if all were, else passed. */
|
|
115
119
|
export function fileOutcome(counters) {
|
|
116
120
|
if (counters.failed > 0)
|
|
117
121
|
return 'failed';
|
|
122
|
+
if (counters.interrupted > 0)
|
|
123
|
+
return 'interrupted';
|
|
118
124
|
if (counters.total > 0 && counters.skipped === counters.total)
|
|
119
125
|
return 'skipped';
|
|
120
126
|
return 'passed';
|
|
121
127
|
}
|
|
122
|
-
/** `2 failed | 10 passed | 1 flaky (
|
|
128
|
+
/** `2 failed | 1 interrupted | 10 passed | 1 flaky (14)` in vitest's colors and order. */
|
|
123
129
|
export function stateString(pc, counters) {
|
|
124
130
|
const parts = [
|
|
125
131
|
counters.failed > 0 ? pc.bold(pc.red(`${counters.failed} failed`)) : undefined,
|
|
132
|
+
counters.interrupted > 0 ? pc.bold(pc.yellow(`${counters.interrupted} interrupted`)) : undefined,
|
|
126
133
|
pc.bold(pc.green(`${counters.passed} passed`)),
|
|
127
134
|
counters.flaky > 0 ? pc.yellow(`${counters.flaky} flaky`) : undefined,
|
|
128
135
|
counters.skipped > 0 ? pc.gray(`${counters.skipped} skipped`) : undefined,
|
|
@@ -423,4 +430,3 @@ export function fitColumns(text, columns) {
|
|
|
423
430
|
export function repeatSuffix(repeat) {
|
|
424
431
|
return repeat === undefined || repeat === 0 ? '' : ` (repeat #${repeat})`;
|
|
425
432
|
}
|
|
426
|
-
//# sourceMappingURL=format.js.map
|
package/dist/report/json.d.ts
CHANGED
package/dist/report/json.js
CHANGED
package/dist/report/junit.d.ts
CHANGED
package/dist/report/junit.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** JUnit XML reporter: the report-1 document as `.e2e/junit.xml`. */
|
|
2
2
|
import { sanitizeText } from '../internal/errors.js';
|
|
3
3
|
import { repeatSuffix } from './format.js';
|
|
4
|
+
import { toldAttempt } from './failure-text.js';
|
|
4
5
|
import { outcome } from './outcome.js';
|
|
5
6
|
import { fileReporter } from './write.js';
|
|
6
7
|
/**
|
|
@@ -60,11 +61,9 @@ function addCounts(total, part) {
|
|
|
60
61
|
total.skipped += part.skipped;
|
|
61
62
|
total.timeMs += part.timeMs;
|
|
62
63
|
}
|
|
63
|
-
/** `<failure>` for a product verdict, `<error>` for anything that prevented one. */
|
|
64
|
-
function verdictElement(error
|
|
65
|
-
|
|
66
|
-
return error.category === 'test' ? 'failure' : 'error';
|
|
67
|
-
return status === 'interrupted' ? 'error' : 'failure';
|
|
64
|
+
/** `<failure>` for a product verdict, `<error>` for anything else that prevented one. */
|
|
65
|
+
function verdictElement(error) {
|
|
66
|
+
return error === undefined || error.category === 'test' ? 'failure' : 'error';
|
|
68
67
|
}
|
|
69
68
|
function errorBody(error) {
|
|
70
69
|
const phase = error.phase === undefined ? '' : ` (${error.phase})`;
|
|
@@ -93,18 +92,18 @@ function renderResult(result, groups) {
|
|
|
93
92
|
};
|
|
94
93
|
}
|
|
95
94
|
case 'skipped':
|
|
95
|
+
case 'interrupted': {
|
|
96
|
+
// JUnit has no interrupted outcome; a test the run stopped reached no verdict, so it reads as skipped with why.
|
|
97
|
+
const message = result.status === 'skipped' ? (result.skip?.reason ?? 'skipped') : `interrupted: ${final.final.error?.message ?? 'the run was stopped'}`;
|
|
96
98
|
return {
|
|
97
|
-
lines: [
|
|
98
|
-
`${open}>`,
|
|
99
|
-
` <skipped ${attributes({ message: result.skip?.reason ?? 'skipped' })}/>`,
|
|
100
|
-
'</testcase>',
|
|
101
|
-
],
|
|
99
|
+
lines: [`${open}>`, ` <skipped ${attributes({ message })}/>`, '</testcase>'],
|
|
102
100
|
outcome: 'skipped',
|
|
103
101
|
durationMs: final.durationMs,
|
|
104
102
|
};
|
|
103
|
+
}
|
|
105
104
|
default: {
|
|
106
|
-
const
|
|
107
|
-
const
|
|
105
|
+
const error = toldAttempt(result, final).error;
|
|
106
|
+
const element = verdictElement(error);
|
|
108
107
|
const message = error?.message ?? result.status;
|
|
109
108
|
const type = error?.code ?? result.status;
|
|
110
109
|
const body = error === undefined ? result.status : errorBody(error);
|
|
@@ -190,4 +189,3 @@ export function renderJunitReport(report) {
|
|
|
190
189
|
* beside `report.json`, for CI test summaries.
|
|
191
190
|
*/
|
|
192
191
|
export const junitReporter = fileReporter('junit', 'JUnit', 'junit.xml', (run) => renderJunitReport(run.report));
|
|
193
|
-
//# sourceMappingURL=junit.js.map
|
package/dist/report/list.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export declare class ListReporter implements Reporter {
|
|
|
49
49
|
/** Whether a live window paints; without one, finished steps stream permanently. */
|
|
50
50
|
private readonly live;
|
|
51
51
|
private readonly failures;
|
|
52
|
+
private readonly skippedFailures;
|
|
52
53
|
/** Every finished test's run, for the `Repeats` summary of a `--repeat-each` run. */
|
|
53
54
|
private readonly runs;
|
|
54
55
|
/**
|
|
@@ -257,4 +258,3 @@ export declare class ListReporter implements Reporter {
|
|
|
257
258
|
rows(rows: ReporterSummary): void;
|
|
258
259
|
private runFinished;
|
|
259
260
|
}
|
|
260
|
-
//# sourceMappingURL=list.d.ts.map
|
package/dist/report/list.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import picocolors from 'picocolors';
|
|
10
10
|
import { packageVersion } from '../internal/package-version.js';
|
|
11
|
+
import { failureBeforeSkip } from '../run/records.js';
|
|
11
12
|
import { codeFrame, userFrame } from './code-frame.js';
|
|
12
13
|
import { addCacheTally, addModelTally, addUsage, aiSegment, bounded, cacheText, durationText, fitColumns, emptyCacheTally, emptyCounters, emptyUsage, F_CHECK, F_CROSS, F_POINTER, fileOutcome, formatClock, formatTime, modelsText, padTitle, rule, stateString, statusBucket, stepsCacheTally, repeatSuffix, stepsModelTally, stepsUsage, sumUsage, tally, terminalColumns, usageText, } from './format.js';
|
|
13
14
|
import { ExploreView } from './list-explore.js';
|
|
@@ -43,14 +44,16 @@ function pairKey(testId, agent, target, repeat) {
|
|
|
43
44
|
/** Details of an ordinary result: summed over its attempts, the error from the last. */
|
|
44
45
|
function attemptDetails(attempts) {
|
|
45
46
|
const steps = attempts.map((attempt) => attempt.steps);
|
|
47
|
+
// A retry the run interrupted tells nothing; the failure before it is the verdict.
|
|
48
|
+
const told = attempts.findLast((attempt) => attempt.status !== 'interrupted') ?? attempts.at(-1);
|
|
46
49
|
return {
|
|
47
50
|
durationMs: attempts.reduce((total, attempt) => total + attempt.durationMs, 0),
|
|
48
51
|
usage: stepsUsage(steps),
|
|
49
52
|
models: stepsModelTally(steps),
|
|
50
53
|
cache: stepsCacheTally(steps),
|
|
51
|
-
error:
|
|
54
|
+
error: told?.error,
|
|
52
55
|
videos: videoPaths(attempts),
|
|
53
|
-
...failureOf(
|
|
56
|
+
...failureOf(told),
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
/** The failure evidence of one attempt, and the path of the screen text it points at. */
|
|
@@ -85,7 +88,7 @@ function serialMemberDetails(group, testId) {
|
|
|
85
88
|
attempt,
|
|
86
89
|
member: attempt.members.find((member) => member.testId === testId),
|
|
87
90
|
}));
|
|
88
|
-
const last = runs
|
|
91
|
+
const last = runs.findLast((run) => run.attempt.status !== 'interrupted') ?? runs.at(-1);
|
|
89
92
|
const own = last?.member;
|
|
90
93
|
const neverRan = own === undefined || own.status === 'skipped';
|
|
91
94
|
const steps = runs.map((run) => run.member?.steps ?? []);
|
|
@@ -135,6 +138,7 @@ export class ListReporter {
|
|
|
135
138
|
/** Whether a live window paints; without one, finished steps stream permanently. */
|
|
136
139
|
live;
|
|
137
140
|
failures = [];
|
|
141
|
+
skippedFailures = [];
|
|
138
142
|
/** Every finished test's run, for the `Repeats` summary of a `--repeat-each` run. */
|
|
139
143
|
runs = [];
|
|
140
144
|
/**
|
|
@@ -550,15 +554,17 @@ export class ListReporter {
|
|
|
550
554
|
const steps = this.pairs.get(key)?.steps ?? [];
|
|
551
555
|
this.pairs.delete(key);
|
|
552
556
|
const group = this.group(result.test.file, result.target.name);
|
|
557
|
+
// Read before `detailsOf` releases the result's serial group.
|
|
558
|
+
const skippedAfter = failureBeforeSkip(result, (id) => this.pendingSerial.get(id)?.group);
|
|
553
559
|
const { durationMs, usage, models, cache, error, videos, failure, screenPath } = this.detailsOf(result);
|
|
554
560
|
addUsage(this.runUsage, usage);
|
|
555
561
|
addModelTally(this.runModels, models);
|
|
556
562
|
addCacheTally(this.runCache, cache);
|
|
557
563
|
const title = this.titledAs(result.test.titlePath.join(' > '), result.agent, result.repeat);
|
|
558
564
|
if (this.explore !== undefined) {
|
|
559
|
-
// The exploration's verdict is its findings; any other error is a failure of its own.
|
|
565
|
+
// The exploration's verdict is its findings; any other error is a failure of its own, unless the run stopped it.
|
|
560
566
|
this.explore.result(result.attempts.flatMap((attempt) => attempt.artifacts));
|
|
561
|
-
if (error !== undefined && !this.explore.isVerdict(error)) {
|
|
567
|
+
if (error !== undefined && result.status !== 'interrupted' && !this.explore.isVerdict(error)) {
|
|
562
568
|
this.failures.push({ group, title, status: result.status, error, videos, failure, screenPath });
|
|
563
569
|
}
|
|
564
570
|
this.window.redraw();
|
|
@@ -584,6 +590,9 @@ export class ListReporter {
|
|
|
584
590
|
if (statusBucket(result.status) === 'failed') {
|
|
585
591
|
this.failures.push({ group, title, status: result.status, error, videos, failure, screenPath });
|
|
586
592
|
}
|
|
593
|
+
if (skippedAfter !== undefined) {
|
|
594
|
+
this.skippedFailures.push({ group, title, status: result.status, error: skippedAfter.error, videos, ...failureOf(skippedAfter) });
|
|
595
|
+
}
|
|
587
596
|
if (group.planned !== undefined && group.lines.length >= group.planned)
|
|
588
597
|
this.printGroup(group);
|
|
589
598
|
this.window.redraw();
|
|
@@ -623,12 +632,15 @@ export class ListReporter {
|
|
|
623
632
|
const outcome = fileOutcome(counts);
|
|
624
633
|
const symbol = outcome === 'failed'
|
|
625
634
|
? pc.red(F_POINTER)
|
|
626
|
-
: outcome === '
|
|
627
|
-
? pc.
|
|
628
|
-
:
|
|
635
|
+
: outcome === 'interrupted'
|
|
636
|
+
? pc.yellow(F_POINTER)
|
|
637
|
+
: outcome === 'skipped'
|
|
638
|
+
? pc.dim(pc.gray(F_DOWN))
|
|
639
|
+
: pc.green(F_CHECK);
|
|
629
640
|
const state = [
|
|
630
641
|
pc.dim(`${counts.total} test${counts.total === 1 ? '' : 's'}`),
|
|
631
642
|
counts.failed > 0 ? pc.red(`${counts.failed} failed`) : undefined,
|
|
643
|
+
counts.interrupted > 0 ? pc.yellow(`${counts.interrupted} interrupted`) : undefined,
|
|
632
644
|
counts.flaky > 0 ? pc.yellow(`${counts.flaky} flaky`) : undefined,
|
|
633
645
|
counts.skipped > 0 ? pc.yellow(`${counts.skipped} skipped`) : undefined,
|
|
634
646
|
]
|
|
@@ -647,6 +659,7 @@ export class ListReporter {
|
|
|
647
659
|
parts.push(pc.dim(ai));
|
|
648
660
|
this.print(parts.join(' '));
|
|
649
661
|
const verbose = counts.failed > 0 ||
|
|
662
|
+
counts.interrupted > 0 ||
|
|
650
663
|
counts.flaky > 0 ||
|
|
651
664
|
this.groups.size === 1 ||
|
|
652
665
|
(this.live && group.lines.some((line) => line.steps.length > 0));
|
|
@@ -678,6 +691,8 @@ export class ListReporter {
|
|
|
678
691
|
: pc.dim(pc.gray(` [${line.skipReason}]`));
|
|
679
692
|
return [` ${pc.dim(pc.gray(F_DOWN))} ${line.title}${reason}`];
|
|
680
693
|
}
|
|
694
|
+
case 'interrupted':
|
|
695
|
+
return [` ${pc.yellow(F_CROSS)} ${line.title} ${pc.yellow('(interrupted)')} ${duration}${ai}`];
|
|
681
696
|
default: {
|
|
682
697
|
const status = line.status === 'failed' ? '' : pc.red(` (${line.status})`);
|
|
683
698
|
const rows = [` ${pc.red(`${F_CROSS} ${line.title}`)}${status} ${duration}${ai}`];
|
|
@@ -716,6 +731,9 @@ export class ListReporter {
|
|
|
716
731
|
rows.push(padTitle(pc, 'Cache') + cache);
|
|
717
732
|
if (final)
|
|
718
733
|
rows.push(...this.repeatRows());
|
|
734
|
+
if (this.skippedFailures.length > 0) {
|
|
735
|
+
rows.push(padTitle(pc, 'Warnings') + pc.yellow(`${this.skippedFailures.length} skipped after failure`));
|
|
736
|
+
}
|
|
719
737
|
if (this.errors.length > 0) {
|
|
720
738
|
const count = this.errors.length;
|
|
721
739
|
rows.push(padTitle(pc, 'Errors') + pc.bold(pc.red(`${count} error${count === 1 ? '' : 's'}`)));
|
|
@@ -736,11 +754,12 @@ export class ListReporter {
|
|
|
736
754
|
const groups = repeatGroups(this.runs, (entry) => entry);
|
|
737
755
|
if (groups.length === 0)
|
|
738
756
|
return [];
|
|
739
|
-
|
|
757
|
+
// A test is listed when it missed a run: a flake first, then one the run cut short.
|
|
758
|
+
const missed = groups.filter((group) => group.passed < group.runs.length).toSorted((a, b) => Number(b.unstable) - Number(a.unstable));
|
|
740
759
|
const summary = repeatSummary(groups);
|
|
741
760
|
return [
|
|
742
|
-
padTitle(pc, 'Repeats') + (
|
|
743
|
-
...
|
|
761
|
+
padTitle(pc, 'Repeats') + (missed.some((group) => group.unstable) ? pc.yellow(summary) : pc.green(summary)),
|
|
762
|
+
...missed.map((group) => `${padTitle(pc, '')}${group.unstable ? pc.yellow(F_CROSS) : pc.dim(pc.gray(F_DOWN))} ${group.label} ${pc.dim(repeatLine(group))}`),
|
|
744
763
|
];
|
|
745
764
|
}
|
|
746
765
|
/** A zero counter's label: the plain text, or the interrupt when that is why nothing is counted. */
|
|
@@ -808,15 +827,15 @@ export class ListReporter {
|
|
|
808
827
|
this.print(line);
|
|
809
828
|
}
|
|
810
829
|
/** vitest's `Failed Tests` section: a banner, then each failure with its code frame. */
|
|
811
|
-
printFailures() {
|
|
830
|
+
printFailures(heading, failures) {
|
|
812
831
|
const { pc } = this;
|
|
813
|
-
if (
|
|
832
|
+
if (failures.length === 0)
|
|
814
833
|
return;
|
|
815
834
|
this.print('');
|
|
816
|
-
this.print(this.errorBanner(
|
|
835
|
+
this.print(this.errorBanner(`${heading} ${failures.length}`));
|
|
817
836
|
this.print('');
|
|
818
|
-
|
|
819
|
-
this.print(`${pc.bold(pc.bgRed(' FAIL '))} ${this.badge(group.target)} ${bounded(group.file)}${this.separator}${title}`);
|
|
837
|
+
failures.forEach(({ group, title, status, error, videos, failure, screenPath }, index) => {
|
|
838
|
+
this.print(`${pc.bold(pc.bgRed(status === 'skipped' ? ' SKIP ' : ' FAIL '))} ${this.badge(group.target)} ${bounded(group.file)}${this.separator}${title}`);
|
|
820
839
|
if (error === undefined) {
|
|
821
840
|
this.print(pc.red(`${pc.bold(status)}: no error was recorded`));
|
|
822
841
|
}
|
|
@@ -829,7 +848,7 @@ export class ListReporter {
|
|
|
829
848
|
}
|
|
830
849
|
this.printEvidence(failure, screenPath);
|
|
831
850
|
this.printVideos(videos);
|
|
832
|
-
const marker = `[${index + 1}/${
|
|
851
|
+
const marker = `[${index + 1}/${failures.length}]`;
|
|
833
852
|
const { before, after } = rule(marker, 'right');
|
|
834
853
|
this.print('');
|
|
835
854
|
this.print(pc.red(pc.dim(`${before}${marker}${after}`)));
|
|
@@ -925,7 +944,8 @@ export class ListReporter {
|
|
|
925
944
|
this.printGroup(group);
|
|
926
945
|
}
|
|
927
946
|
this.printExplore();
|
|
928
|
-
this.printFailures();
|
|
947
|
+
this.printFailures('Failed Tests', this.failures);
|
|
948
|
+
this.printFailures('Skipped After Failure', this.skippedFailures);
|
|
929
949
|
this.printErrors();
|
|
930
950
|
this.print('');
|
|
931
951
|
for (const row of this.summaryRows(true))
|
|
@@ -959,4 +979,3 @@ function setupWording(step) {
|
|
|
959
979
|
return { verb: 'starting', subject: bounded(step.label), done: 'ready' };
|
|
960
980
|
}
|
|
961
981
|
}
|
|
962
|
-
//# sourceMappingURL=list.js.map
|