e2e 0.15.1 → 0.16.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/README.md +51 -24
- 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 +25 -8
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +0 -1
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +0 -1
- package/dist/agent/actions.js +0 -1
- 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 +16 -4
- package/dist/agent/error.js +25 -7
- 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 +0 -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 +24 -2
- package/dist/agent/model/tool-choice.js +27 -2
- package/dist/agent/observation-budget.d.ts +0 -1
- package/dist/agent/observation-budget.js +0 -1
- package/dist/agent/observation-feed.d.ts +0 -1
- package/dist/agent/observation-feed.js +0 -1
- package/dist/agent/observation.d.ts +0 -1
- package/dist/agent/observation.js +0 -1
- 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 +0 -1
- package/dist/agent/point-tap.js +0 -1
- 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 +0 -1
- package/dist/agent/replay.js +0 -1
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +0 -1
- 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 +14 -4
- package/dist/agent/step-cache.js +13 -4
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +62 -10
- 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 +0 -1
- package/dist/cache/anchors.js +0 -1
- package/dist/cache/context.d.ts +19 -7
- package/dist/cache/context.js +15 -22
- package/dist/cache/decide.d.ts +0 -1
- package/dist/cache/decide.js +0 -1
- package/dist/cache/identity.d.ts +0 -1
- package/dist/cache/identity.js +0 -1
- package/dist/cache/recorder.d.ts +0 -1
- package/dist/cache/recorder.js +0 -1
- package/dist/cache/relocate.d.ts +0 -1
- package/dist/cache/relocate.js +0 -1
- package/dist/cache/route.d.ts +0 -1
- package/dist/cache/route.js +0 -1
- package/dist/cache/store.d.ts +0 -1
- package/dist/cache/store.js +0 -1
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +0 -1
- package/dist/cache/trace.js +0 -1
- 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 +2 -3
- 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 +0 -1
- package/dist/cli/init/engines.js +0 -1
- package/dist/cli/init/gateways.d.ts +0 -1
- package/dist/cli/init/gateways.js +0 -1
- 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 +1 -1
- package/dist/cli/init/scaffold.js +2 -2
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/init/versions.d.ts +0 -1
- package/dist/cli/init/versions.js +0 -1
- 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 +0 -1
- package/dist/config/resolve.js +0 -1
- 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 +1 -2
- 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 +99 -58
- 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.d.ts +0 -1
- package/dist/expect/poll.js +0 -1
- 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 +1 -2
- 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/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 +0 -1
- package/dist/internal/brands.js +0 -1
- 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 +0 -1
- package/dist/internal/redact.js +0 -1
- 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 +0 -1
- package/dist/internal/time.js +0 -1
- package/dist/internal/urls.d.ts +0 -1
- package/dist/internal/urls.js +0 -1
- 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 +0 -1
- package/dist/locator/engine.js +0 -1
- 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 +0 -1
- package/dist/mcp/catalog.d.ts +4 -1
- package/dist/mcp/catalog.js +2 -3
- 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 +43 -21
- 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 +0 -1
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +0 -1
- package/dist/oauth/copilot.d.ts +0 -1
- package/dist/oauth/copilot.js +0 -1
- 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 +0 -1
- 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 +0 -1
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +0 -1
- package/dist/oauth/providers/github-copilot.js +10 -3
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +0 -1
- package/dist/oauth/providers.js +0 -1
- 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 +0 -1
- package/dist/report/build.js +0 -1
- 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 +0 -1
- package/dist/report/failure-text.js +0 -1
- package/dist/report/format.d.ts +0 -1
- package/dist/report/format.js +0 -1
- 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 +0 -1
- 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 +0 -1
- package/dist/report/list.js +0 -1
- 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 +0 -1
- package/dist/report/markdown.js +0 -1
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +0 -1
- package/dist/report/repeats.js +0 -1
- 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 +0 -1
- package/dist/run/artifacts.js +0 -1
- 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 +0 -1
- package/dist/run/execute.js +27 -13
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +0 -1
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +0 -1
- 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 +0 -1
- package/dist/run/in-process.d.ts +0 -1
- package/dist/run/in-process.js +0 -1
- package/dist/run/last-run.d.ts +0 -1
- package/dist/run/last-run.js +0 -1
- 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 +2 -1
- package/dist/run/realm.js +1 -2
- package/dist/run/records.d.ts +0 -1
- package/dist/run/records.js +0 -1
- package/dist/run/retry.d.ts +0 -1
- package/dist/run/retry.js +0 -1
- package/dist/run/runner.d.ts +2 -1
- package/dist/run/runner.js +1 -2
- 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 +0 -1
- package/dist/run/serial.js +0 -1
- 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 -3
- package/dist/run/steps.js +4 -2
- 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 +2 -3
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +0 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +0 -1
- package/dist/run/worker/session.js +0 -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 +107 -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 +26 -24
- package/dist/types.js +0 -1
- package/docs/agent-steps.mdx +126 -0
- package/docs/agents.mdx +217 -0
- package/docs/api-testing.mdx +65 -0
- package/docs/authentication.mdx +345 -0
- package/docs/browser.mdx +440 -0
- package/docs/bug-bash.mdx +90 -0
- package/docs/cache.mdx +306 -0
- package/docs/ci.mdx +210 -0
- package/docs/coding-agents.mdx +183 -0
- package/docs/debugging.mdx +291 -0
- package/docs/executors.mdx +243 -0
- package/docs/explore.mdx +174 -0
- package/docs/github.mdx +184 -0
- package/docs/index.mdx +82 -0
- package/docs/integrations/eas.mdx +216 -0
- package/docs/integrations/index.mdx +24 -0
- package/docs/integrations/kernel.mdx +163 -0
- package/docs/migrate/cypress.mdx +124 -0
- package/docs/migrate/detox.mdx +140 -0
- package/docs/migrate/maestro.mdx +229 -0
- package/docs/migrate/playwright.mdx +430 -0
- package/docs/migrate/selenium.mdx +110 -0
- package/docs/mobile-ci.mdx +567 -0
- package/docs/mobile.mdx +595 -0
- package/docs/models.mdx +241 -0
- package/docs/quickstart.mdx +260 -0
- package/docs/reference/agent.mdx +524 -0
- package/docs/reference/app.mdx +72 -0
- package/docs/reference/cli.mdx +819 -0
- package/docs/reference/config.mdx +986 -0
- package/docs/reference/engine.mdx +1363 -0
- package/docs/reference/environment.mdx +113 -0
- package/docs/reference/errors.mdx +143 -0
- package/docs/reference/expect.mdx +546 -0
- package/docs/reference/mcp.mdx +205 -0
- package/docs/reference/mobile.mdx +522 -0
- package/docs/reference/reporters.mdx +216 -0
- package/docs/reference/screen.mdx +688 -0
- package/docs/reference/test.mdx +449 -0
- package/docs/reference/web.mdx +615 -0
- package/docs/security.mdx +308 -0
- package/docs/starting-your-app.mdx +231 -0
- package/docs/subscriptions.mdx +166 -0
- package/docs/telemetry.mdx +227 -0
- package/docs/tools.mdx +150 -0
- package/docs/viewports.mdx +146 -0
- package/docs/writing-an-engine.mdx +316 -0
- package/docs/writing-tests.mdx +256 -0
- package/package.json +5 -3
- package/skills/e2e/SKILL.md +4 -1
- package/skills/e2e/references/agent.md +3 -1
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/setup.md +19 -4
- package/skills/e2e/references/writing-tests.md +11 -0
- 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
|
@@ -0,0 +1,819 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CLI
|
|
3
|
+
description: Commands, flags, output formats, and exit codes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<CodeGroup>
|
|
7
|
+
```bash npm
|
|
8
|
+
npx e2e init [directory]
|
|
9
|
+
npx e2e login [provider]
|
|
10
|
+
npx e2e logout [provider]
|
|
11
|
+
npx e2e models [provider]
|
|
12
|
+
npx e2e guide [topic]
|
|
13
|
+
npx e2e mcp [options]
|
|
14
|
+
npx e2e run [files...] [options]
|
|
15
|
+
npx e2e explore [goal] [options]
|
|
16
|
+
npx e2e list [files...] [options]
|
|
17
|
+
npx e2e cache ls|clear|stats [--config <path>]
|
|
18
|
+
npx e2e feedback -m <text> [options]
|
|
19
|
+
npx e2e telemetry [status|enable|disable]
|
|
20
|
+
npx e2e --help
|
|
21
|
+
npx e2e --version
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```bash pnpm
|
|
25
|
+
pnpm dlx e2e init [directory]
|
|
26
|
+
pnpm exec e2e login [provider]
|
|
27
|
+
pnpm exec e2e logout [provider]
|
|
28
|
+
pnpm exec e2e models [provider]
|
|
29
|
+
pnpm exec e2e guide [topic]
|
|
30
|
+
pnpm exec e2e mcp [options]
|
|
31
|
+
pnpm exec e2e run [files...] [options]
|
|
32
|
+
pnpm exec e2e explore [goal] [options]
|
|
33
|
+
pnpm exec e2e list [files...] [options]
|
|
34
|
+
pnpm exec e2e cache ls|clear|stats [--config <path>]
|
|
35
|
+
pnpm exec e2e feedback -m <text> [options]
|
|
36
|
+
pnpm exec e2e telemetry [status|enable|disable]
|
|
37
|
+
pnpm exec e2e --help
|
|
38
|
+
pnpm exec e2e --version
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```bash bun
|
|
42
|
+
bunx e2e init [directory]
|
|
43
|
+
bunx e2e login [provider]
|
|
44
|
+
bunx e2e logout [provider]
|
|
45
|
+
bunx e2e models [provider]
|
|
46
|
+
bunx e2e guide [topic]
|
|
47
|
+
bunx e2e mcp [options]
|
|
48
|
+
bunx e2e run [files...] [options]
|
|
49
|
+
bunx e2e explore [goal] [options]
|
|
50
|
+
bunx e2e list [files...] [options]
|
|
51
|
+
bunx e2e cache ls|clear|stats [--config <path>]
|
|
52
|
+
bunx e2e feedback -m <text> [options]
|
|
53
|
+
bunx e2e telemetry [status|enable|disable]
|
|
54
|
+
bunx e2e --help
|
|
55
|
+
bunx e2e --version
|
|
56
|
+
```
|
|
57
|
+
</CodeGroup>
|
|
58
|
+
|
|
59
|
+
The CLI needs Node.js 22.12 or newer.
|
|
60
|
+
|
|
61
|
+
## Help and version
|
|
62
|
+
|
|
63
|
+
| Flag | Behavior |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `-h`, `--help` | Prints the help of the command it follows and exits 0. `e2e help run` is the same as `e2e run --help`. |
|
|
66
|
+
| `-v`, `--version` | Prints the installed `e2e` version and exits 0. |
|
|
67
|
+
|
|
68
|
+
```console
|
|
69
|
+
$ npx e2e --version
|
|
70
|
+
0.14.0
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Output is colored on a terminal or in CI, plain when piped or when `NO_COLOR`
|
|
74
|
+
is set. `FORCE_COLOR` keeps the colors. `e2e` without a command prints the
|
|
75
|
+
help on stderr and exits 2.
|
|
76
|
+
|
|
77
|
+
On a terminal at least 55 columns wide, `e2e --help` opens with the e2e
|
|
78
|
+
wordmark, the site's lettering drawn in block characters; piped output and
|
|
79
|
+
narrower terminals get the text alone.
|
|
80
|
+
|
|
81
|
+
## e2e init
|
|
82
|
+
|
|
83
|
+
Scaffolds a project and adds `e2e` to `devDependencies`. Existing
|
|
84
|
+
config and test files are skipped. With a `directory` argument the project is
|
|
85
|
+
scaffolded there.
|
|
86
|
+
|
|
87
|
+
On a terminal, the wizard opens with the e2e wordmark written in over about
|
|
88
|
+
a second, letter by letter, the way a pen writes it. With `--yes`, in CI, on
|
|
89
|
+
a dumb terminal, and on a terminal shorter than 11 rows the wordmark prints at
|
|
90
|
+
once, and piped output never shows it. Ctrl-C or SIGTERM while it is being
|
|
91
|
+
written exits 130.
|
|
92
|
+
|
|
93
|
+
For a new project, the wizard asks you to choose:
|
|
94
|
+
|
|
95
|
+
- The engine. **Web** (Playwright, the default) adds `@e2e-dev/web`.
|
|
96
|
+
**Mobile (iOS/Android)** adds `@e2e-dev/mobile`, defaults to iOS on
|
|
97
|
+
macOS and Android elsewhere, and opens Settings. **None** adds nothing.
|
|
98
|
+
- A model provider or subscription for agent steps. Choose Vercel AI Gateway,
|
|
99
|
+
OpenRouter, an OpenAI-compatible endpoint, ChatGPT, GitHub Copilot, or
|
|
100
|
+
SuperGrok. Choose None for tests that only use locators. The wizard adds
|
|
101
|
+
the required packages and model config. Subscription users then sign in
|
|
102
|
+
with `e2e login`. See [Models](/models) and [Subscriptions](/subscriptions).
|
|
103
|
+
- Where to install the agent skill (see [e2e guide](#e2e-guide)):
|
|
104
|
+
`.agents/skills/` for Codex, Cursor, Copilot, Gemini CLI, OpenCode, and
|
|
105
|
+
Zed, and `.claude/skills/` for Claude Code. Both are preselected; with
|
|
106
|
+
both, `.claude/skills/e2e` is a symlink to `.agents/skills/e2e`, the
|
|
107
|
+
layout `npx skills add` produces.
|
|
108
|
+
- Where to register the [MCP server](/reference/mcp): `.mcp.json` for
|
|
109
|
+
Claude Code and `.cursor/mcp.json` for Cursor. Both are preselected.
|
|
110
|
+
|
|
111
|
+
After confirming the file changes, choose whether to install the selected
|
|
112
|
+
dependencies. The installer follows the project's `packageManager` field or
|
|
113
|
+
lockfile, then the invoking package manager, then npm.
|
|
114
|
+
|
|
115
|
+
| Argument or flag | Type | Default | Behavior |
|
|
116
|
+
| --- | --- | --- | --- |
|
|
117
|
+
| `[directory]` | path | the working directory | Where to scaffold; created when missing |
|
|
118
|
+
| `-y`, `--yes` | boolean | `false` | Uses the Web engine and Vercel AI Gateway, installs the skill and MCP config in both locations, and skips dependency installation |
|
|
119
|
+
|
|
120
|
+
| Creates | Content |
|
|
121
|
+
| --- | --- |
|
|
122
|
+
| `package.json` | Created as a private ESM package when missing; otherwise only missing dependencies and scripts are added. Sibling packages (`@e2e-dev/web`, `@e2e-dev/mobile`) get the caret range of the version released with the CLI, or that exact version when the CLI is a prerelease. A `test:e2e` script runs `e2e run` unless one exists |
|
|
123
|
+
| `e2e.config.ts` | One target for the selected engine, with the app in its `app`. Playwright reads `APP_URL` (default `http://localhost:3000`) into `app.url` and shows `app.command` in a comment. Mobile sets `app: { bundleId: 'Settings' }` on iOS and `com.android.settings` on Android. With a gateway, `agents.default` is `{ model, system }` |
|
|
124
|
+
| `tests/example.e2e.ts` | An app-open test that passes against any page, plus a commented agent test. Device setup gets a Settings check instead |
|
|
125
|
+
| `.gitignore` | Appends `node_modules/`, `.e2e/artifacts/`, `.e2e/cache/`, `.e2e/sessions/`, `.e2e/report.json`, `.e2e/ai-trace.json`, `.e2e/junit.xml`, `.e2e/summary.md`, `.e2e/failures/`, `.e2e/logs/`, and `.e2e/videos/`. Committing the cache is opt-in; see [commit the replay cache](/cache#commit-the-replay-cache) |
|
|
126
|
+
| `.agents/skills/e2e/`, `.claude/skills/e2e/` | `SKILL.md` and one `references/<topic>.md` per `e2e guide` topic. With both chosen, the Claude Code directory is a relative symlink (`../../.agents/skills/e2e`) to the copy |
|
|
127
|
+
| `.mcp.json`, `.cursor/mcp.json` | Registers `e2e mcp` without changing other servers |
|
|
128
|
+
|
|
129
|
+
<CodeGroup>
|
|
130
|
+
```bash npm
|
|
131
|
+
npx e2e init --yes
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```bash pnpm
|
|
135
|
+
pnpm dlx e2e init --yes
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```bash bun
|
|
139
|
+
bunx e2e init --yes
|
|
140
|
+
```
|
|
141
|
+
</CodeGroup>
|
|
142
|
+
|
|
143
|
+
Re-running `init` keeps an existing config and adds no packages for it. Once
|
|
144
|
+
a skill directory exists, later runs refresh copies that differ from the
|
|
145
|
+
installed version and never add a directory the project did not choose. A
|
|
146
|
+
`.claude/skills/e2e/` copy from an earlier version becomes the symlink when
|
|
147
|
+
it holds nothing but the shipped files; one with other files in it stays a
|
|
148
|
+
copy and is refreshed. A skill directory that is a symlink elsewhere, or sits
|
|
149
|
+
under one, is never written through: `--yes` skips it with a warning naming
|
|
150
|
+
the link and its target, and an interactive run offers to replace a linked
|
|
151
|
+
skill directory with a copy, or with the link where the link goes. A
|
|
152
|
+
copy with a directory where a file goes, or a file where a directory goes, is
|
|
153
|
+
skipped with a warning naming the entry; `init` removes nothing to repair it.
|
|
154
|
+
|
|
155
|
+
Cancellation leaves files untouched and exits 0. An invalid `package.json`
|
|
156
|
+
exits 2 before any write. Without a terminal on stdin and stdout, `init`
|
|
157
|
+
without `--yes` exits 2 and names the flag.
|
|
158
|
+
|
|
159
|
+
## e2e login
|
|
160
|
+
|
|
161
|
+
<CodeGroup>
|
|
162
|
+
```bash npm
|
|
163
|
+
npx e2e login openai # ChatGPT, browser sign-in
|
|
164
|
+
npx e2e login openai --device # sign in with a device code
|
|
165
|
+
npx e2e login github-copilot --from-gh # use your GitHub CLI login
|
|
166
|
+
npx e2e login github-copilot --client-id <id> [--enterprise-url <host>]
|
|
167
|
+
npx e2e login spacexai # SuperGrok, device code
|
|
168
|
+
npx e2e login # choose a provider
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
```bash pnpm
|
|
172
|
+
pnpm exec e2e login openai # ChatGPT, browser sign-in
|
|
173
|
+
pnpm exec e2e login openai --device # sign in with a device code
|
|
174
|
+
pnpm exec e2e login github-copilot --from-gh # use your GitHub CLI login
|
|
175
|
+
pnpm exec e2e login github-copilot --client-id <id> [--enterprise-url <host>]
|
|
176
|
+
pnpm exec e2e login spacexai # SuperGrok, device code
|
|
177
|
+
pnpm exec e2e login # choose a provider
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
```bash bun
|
|
181
|
+
bunx e2e login openai # ChatGPT, browser sign-in
|
|
182
|
+
bunx e2e login openai --device # sign in with a device code
|
|
183
|
+
bunx e2e login github-copilot --from-gh # use your GitHub CLI login
|
|
184
|
+
bunx e2e login github-copilot --client-id <id> [--enterprise-url <host>]
|
|
185
|
+
bunx e2e login spacexai # SuperGrok, device code
|
|
186
|
+
bunx e2e login # choose a provider
|
|
187
|
+
```
|
|
188
|
+
</CodeGroup>
|
|
189
|
+
|
|
190
|
+
Signs in to a subscription and stores credentials in
|
|
191
|
+
`$XDG_CONFIG_HOME/e2e/oauth.json`, by default `~/.config/e2e/oauth.json`. A failed sign-in exits 1, a cancelled one 130; an
|
|
192
|
+
unknown provider exits 2. See [Subscriptions](/subscriptions) for model
|
|
193
|
+
configuration.
|
|
194
|
+
|
|
195
|
+
| Argument or flag | Type | Default | Behavior |
|
|
196
|
+
| --- | --- | --- | --- |
|
|
197
|
+
| `[provider]` | `openai`, `github-copilot`, or `spacexai` | a picker | The subscription to sign in to |
|
|
198
|
+
| `--device` | boolean | `false` | ChatGPT: show a code to enter on another device instead of opening a browser |
|
|
199
|
+
| `--from-gh` | boolean | `false` | GitHub Copilot: reuse the token of the signed-in GitHub CLI |
|
|
200
|
+
| `--client-id <id>` | string | none | GitHub Copilot: the client id of your GitHub OAuth App with the device flow enabled |
|
|
201
|
+
| `--enterprise-url <host>` | string | none | GitHub Copilot: the GitHub Enterprise host |
|
|
202
|
+
|
|
203
|
+
## e2e logout
|
|
204
|
+
|
|
205
|
+
<CodeGroup>
|
|
206
|
+
```bash npm
|
|
207
|
+
npx e2e logout # pick one of the stored logins
|
|
208
|
+
npx e2e logout openai # forget one
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
```bash pnpm
|
|
212
|
+
pnpm exec e2e logout # pick one of the stored logins
|
|
213
|
+
pnpm exec e2e logout openai # forget one
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```bash bun
|
|
217
|
+
bunx e2e logout # pick one of the stored logins
|
|
218
|
+
bunx e2e logout openai # forget one
|
|
219
|
+
```
|
|
220
|
+
</CodeGroup>
|
|
221
|
+
|
|
222
|
+
## e2e models
|
|
223
|
+
|
|
224
|
+
<CodeGroup>
|
|
225
|
+
```bash npm
|
|
226
|
+
npx e2e models # every stored login
|
|
227
|
+
npx e2e models openai # one provider
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
```bash pnpm
|
|
231
|
+
pnpm exec e2e models # every stored login
|
|
232
|
+
pnpm exec e2e models openai # one provider
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
```bash bun
|
|
236
|
+
bunx e2e models # every stored login
|
|
237
|
+
bunx e2e models openai # one provider
|
|
238
|
+
```
|
|
239
|
+
</CodeGroup>
|
|
240
|
+
|
|
241
|
+
Asks the vendor which models the stored login serves and prints one line per
|
|
242
|
+
model: the id `chatgpt()`, `copilot()`, or `grok()` takes, the vendor's name
|
|
243
|
+
for it, and its notes (reasoning levels, vision, preview, hidden, and for
|
|
244
|
+
Copilot `not enabled` or `no chat completions` when `copilot()` cannot call
|
|
245
|
+
it). Without a
|
|
246
|
+
stored login, or when the named provider has none, exits 1 with the sign-in
|
|
247
|
+
command; when one of several logins fails to list, the others still print and
|
|
248
|
+
the command exits 1. An unknown provider exits 2. See
|
|
249
|
+
[Pick a model](/subscriptions#pick-a-model).
|
|
250
|
+
|
|
251
|
+
## e2e guide
|
|
252
|
+
|
|
253
|
+
<CodeGroup>
|
|
254
|
+
```bash npm
|
|
255
|
+
npx e2e guide # the overview
|
|
256
|
+
npx e2e guide setup # one topic
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
```bash pnpm
|
|
260
|
+
pnpm exec e2e guide # the overview
|
|
261
|
+
pnpm exec e2e guide setup # one topic
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
```bash bun
|
|
265
|
+
bunx e2e guide # the overview
|
|
266
|
+
bunx e2e guide setup # one topic
|
|
267
|
+
```
|
|
268
|
+
</CodeGroup>
|
|
269
|
+
|
|
270
|
+
Prints the skill that `init` installs. `guide` alone prints the overview;
|
|
271
|
+
`guide <topic>` prints one of `setup`, `writing-tests`, `agent`, `running`,
|
|
272
|
+
`explore`, `debugging`, `mcp`, or `bug-bash`. An unknown topic exits 2 and names the
|
|
273
|
+
valid ones. The same skill installs with `npx skills add tester-army/e2e`.
|
|
274
|
+
See [Coding agents](/coding-agents).
|
|
275
|
+
|
|
276
|
+
## e2e mcp
|
|
277
|
+
|
|
278
|
+
<CodeGroup>
|
|
279
|
+
```bash npm
|
|
280
|
+
npx e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
```bash pnpm
|
|
284
|
+
pnpm exec e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
```bash bun
|
|
288
|
+
bunx e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
|
|
289
|
+
```
|
|
290
|
+
</CodeGroup>
|
|
291
|
+
|
|
292
|
+
An MCP server on stdio that gives a coding agent a live session on the app.
|
|
293
|
+
Flags, tools, and session rules are on the [MCP server](/reference/mcp) page.
|
|
294
|
+
|
|
295
|
+
## e2e run
|
|
296
|
+
|
|
297
|
+
### Positional arguments
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
e2e run [files...]
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Test files, directories, or globs relative to the project root:
|
|
304
|
+
|
|
305
|
+
- a file path (`tests/signup.e2e.ts`) selects that file;
|
|
306
|
+
- a directory (`tests/agent`, `.`) selects every discovered test file beneath
|
|
307
|
+
it;
|
|
308
|
+
- a bare name selects every discovered file whose path ends with it at a
|
|
309
|
+
segment boundary. `signup.e2e.ts` and `agent/signup.e2e.ts` both select
|
|
310
|
+
`tests/agent/signup.e2e.ts`. Without a `/` or `.` it matches the file name
|
|
311
|
+
with extensions dropped, so `signup` selects it too;
|
|
312
|
+
- any of these with `:line` appended (`tests/signup.e2e.ts:12`, `signup:12`)
|
|
313
|
+
selects only the test declared at that line of each file it names: the line
|
|
314
|
+
the `test(` call opens on, as an editor or a report's `source` shows it. A
|
|
315
|
+
serial group runs whole when a line names one member. Several lines of one
|
|
316
|
+
file add up; naming the file without a line selects it whole. When no test
|
|
317
|
+
is declared at a named line, `NO_TESTS` names the positional and the lines
|
|
318
|
+
the file declares tests at. A positional that exists on disk as written is
|
|
319
|
+
a path, even when its name ends in `:12`;
|
|
320
|
+
- a glob (`'tests/**/*.smoke.e2e.ts'`, quoted) uses the grammar of the config
|
|
321
|
+
`tests` globs: `*`, `?`, and a whole `**` segment. Braces, character
|
|
322
|
+
classes, and extglobs are `INVALID_GLOB` with a hint rather than a pattern
|
|
323
|
+
that matches nothing: there is no expansion, so name one glob per
|
|
324
|
+
alternative. `./`, `..`, a trailing `/`, and an absolute path inside the
|
|
325
|
+
project resolve as they do for any positional path, and an existing file or
|
|
326
|
+
directory is selected by its path whatever its name is spelled with.
|
|
327
|
+
|
|
328
|
+
Positionals narrow the config globs and the tag, platform, and capability
|
|
329
|
+
filters; they never bypass them. Names and globs are case-sensitive on every
|
|
330
|
+
OS. A path outside the project root is `COLLECTION_ERROR`.
|
|
331
|
+
|
|
332
|
+
The runner imports every discovered test file, even when you select only a
|
|
333
|
+
few. This lets a selected test find its session setup in another file.
|
|
334
|
+
Other ordinary tests remain unselected. A collection error in a selected
|
|
335
|
+
file, or in any file of a run with no positionals, fails the run. A file the
|
|
336
|
+
positionals left out that fails to import or register its tests is skipped
|
|
337
|
+
with a notice, so a half-written file elsewhere in the suite does not stop
|
|
338
|
+
`npx e2e run tests/login.e2e.ts`; if a selected test's session then has no
|
|
339
|
+
setup test, the error names that file as where the setup may be.
|
|
340
|
+
|
|
341
|
+
A positional starting with `-` that names no file is a usage error, exit 2.
|
|
342
|
+
This is what `pnpm test:e2e -- --headed` produces: the `--` reaches e2e and
|
|
343
|
+
`--headed` would otherwise be taken for a file. The message names the direct
|
|
344
|
+
form, `pnpm exec e2e run --headed`.
|
|
345
|
+
|
|
346
|
+
When nothing is left to run, `NO_TESTS` names the cause: no file matched the
|
|
347
|
+
globs (with look-alike files such as `tests/login.test.ts`), a positional
|
|
348
|
+
matched nothing (with the nearest path), a matched file registered no tests,
|
|
349
|
+
or every test was filtered out.
|
|
350
|
+
|
|
351
|
+
### Flags
|
|
352
|
+
|
|
353
|
+
| Flag | Type | Default | Behavior |
|
|
354
|
+
| --- | --- | --- | --- |
|
|
355
|
+
| `--config <path>` | string | discovered | Explicit config path. A missing file is `CONFIG_NOT_FOUND`. |
|
|
356
|
+
| `--target <ids>` | comma-separated or repeated | every configured target | Selects targets by name. Only the app commands of selected targets start. An unknown ID is `UNKNOWN_TARGET`. |
|
|
357
|
+
| `--tag <tags>` | comma-separated or repeated | none | Only tests carrying the tags: any of them, or every one with `--tag-mode all`. When the filter leaves nothing to run, `NO_TESTS` counts the tests it filtered, marks each tag no test declares, and names the nearest declared one. |
|
|
358
|
+
| `--tag-mode <mode>` | `any` or `all` | `any` | How several tags combine: any of them, or every one. |
|
|
359
|
+
| `--exclude-tag <tags>` | comma-separated or repeated | none | Leaves out every test carrying any of the tags, whatever `--tag` or a positional selected. A serial group still runs whole when any member is selected; tag the serial `describe` to exclude the flow. |
|
|
360
|
+
| `--grep <pattern>` | regular expression, repeatable | none | Only tests whose title matches one of the patterns. The text matched is the describe titles and the test title joined by one space (`checkout pays`); the file and the tags are not part of it. A bare pattern is case-sensitive; `'/pattern/i'` adds flags. A pattern that does not compile is a usage error, exit 2. |
|
|
361
|
+
| `--grep-invert <pattern>` | regular expression, repeatable | none | Leaves out every test whose title matches one of the patterns. Same text and pattern forms as `--grep`; both together keep the tests `--grep` matches minus the ones `--grep-invert` matches. |
|
|
362
|
+
| `--last-failed` | boolean | `false` | Only the tests the previous run did not pass, read from the `report.json` this run overwrites, `<output>/report.json` (`--output`, else the config's [`output`](/reference/config#output)): failed, timed out, interrupted, or skipped because a setup, a serial predecessor, a hook, or the worker failed, and every test it selected in the describe or file, on that target, of a `beforeAll` or `afterAll` that failed (for a setup, the tests that consume its session). A rerun that runs the hook again reports it again if it still fails; another filter that leaves its tests out leaves the failure out of the next report too. A test is named per target and agent. No report is `NO_LAST_RUN`; a previous run with nothing failed selects nothing, `NO_TESTS` unless `--pass-with-no-tests`. |
|
|
363
|
+
| `--shard <index/total>` | `2/3` | none | Runs one contiguous slice of the selected tests, cut once every other filter applied. Slices differ in size by at most one test, a serial group counts as one and is never split, and each shard brings only the setup tests its own tests need. Every shard runs the same command with a different index; the order is the report order, so the same suite shards the same way on every machine. A shard that gets no test is `NO_TESTS` unless `--pass-with-no-tests`. See [Sharding](/ci#sharding). |
|
|
364
|
+
| `--headed` | boolean | `false` | Visible UI when the engine supports it. |
|
|
365
|
+
| `--agent <names>` | comma-separated or repeated | `default` | Runs unpinned tests once per selected agent. For a test with `{ agent }`, selects the shared names when there is overlap; otherwise keeps the test's selection. An unknown name is `INVALID_CONFIG`. |
|
|
366
|
+
| `--retries <n>` | integer 0-10 | config | Replaces `config.retries`. |
|
|
367
|
+
| `--workers <n>` | integer 1-1024 | config | Replaces `config.workers`. |
|
|
368
|
+
| `--repeat-each <n>` | integer, at least 1 | `1` | Runs every selected test this many times. Each run is a result of its own, with `repeat` 0 through `n - 1` and its own `id`; the list reporter titles the later runs `(repeat #1)`, `(repeat #2)`, and their artifacts go under a `repeat-<n>` directory. Setup tests run once. With the replay cache on, the first run records and the later ones replay, so pair it with `--no-cache` to exercise the model each time. The `list` summary adds a `Repeats` row (`1 of 2 tests passed all 5 runs`) and one line per test that did not pass every run, naming each run that failed; the `markdown` page carries the same tally. |
|
|
369
|
+
| `--max-failures <n>` | integer, at least 1 | none | Stops the run once this many tests have failed or timed out. Nothing more is dispatched, the tests running on other workers end as `interrupted`, and the tests not started, the rest of the file whose test reached the limit included, are skipped with cause `failure-limit` and the reason `run stopped after 3 failures (--max-failures 3)`. The exit code is the failures' own, 1, not 130. |
|
|
370
|
+
| `--reporter <ids>` | comma-separated list | config | Replaces the built-in IDs in `config.reporters`: `list`, `json`, `junit`, `markdown`. `json` with `list` is `INVALID_CONFIG`. [Reporter objects](/reference/reporters) in the config keep running. |
|
|
371
|
+
| `--output <dir>` | string | config, else `.e2e` | The results directory for this run, over the config's [`output`](/reference/config#output): the report, the reporter files, the AI trace, `artifacts/` (cleared once the run's tests start), and `sessions/`. Resolved from the project root; one the run cannot own is `INVALID_CONFIG`. The removed `--artifacts <dir>` fails with the `--output` it maps to: `--artifacts out/artifacts` is `--output out`, and a directory whose parent is the project root or outside it maps to `--output .e2e`. |
|
|
372
|
+
| `--no-cache` | boolean | `false` | Replay cache off for this run, whatever `config.cache` says. |
|
|
373
|
+
| `--strict-cache` | boolean | `false` | Turns on `cache.strict` for this run: a step whose recording exists but no longer replays fails with `REPLAY_STALE` instead of handing off to the agent. See [Fail on a stale recording](/cache#fail-on-a-stale-recording). |
|
|
374
|
+
| `--pass-with-no-tests` | boolean | `false` | Exit 0 instead of `NO_TESTS` when nothing is selected. |
|
|
375
|
+
| `--debug` | boolean | `false` | Phase timings and an agent step table on stderr after the run. |
|
|
376
|
+
| `--ai-trace` | boolean | `false` | Records every model call to `<output>/ai-trace.json`, an AI SDK devtools database. Open it with [unbox-ai](https://github.com/tester-army/unbox-ai). |
|
|
377
|
+
| `--trace [mode]` | `off`, `on`, `retain-on-failure`, `on-first-retry`, or `on-all-retries` | config | Which attempts record a trace, over the config's and every target's `trace`; a test's own `trace` still wins. A bare `--trace` is `on`, `--trace off` skips the cost for one run. It applies to the targets whose engine can trace; the run names the others in one notice. The value is optional and greedy, so `--trace tests/a.e2e.ts` reads the file as a mode and fails: write `--trace=<mode>`, or put test files before `--trace`. See [trace](/reference/config#trace). |
|
|
378
|
+
| `--video [mode]` | a recording mode, as `--trace` | config | Which attempts record a video (WebM on a browser engine, MP4 on a device engine), over the config's and every target's `video`; a test's own `video` still wins. A bare `--video` is `on`. It applies to the targets whose engine can record; the run names the others in one notice. Greedy like `--trace`: write `--video=<mode>`, or put test files before `--video`. See [video](/reference/config#video). |
|
|
379
|
+
|
|
380
|
+
Out-of-range `--retries` and `--workers` fail with `INVALID_CONFIG` before
|
|
381
|
+
anything starts, the same as the config value would. `--target`, `--tag`,
|
|
382
|
+
`--exclude-tag`, and `--agent` take each name once; an empty value (`--tag ''`,
|
|
383
|
+
or `--tag "$TAGS"` with the variable unset) is a usage error, exit 2, never a
|
|
384
|
+
wider selection.
|
|
385
|
+
|
|
386
|
+
Filters only narrow, and each applies after the one before: positionals, then
|
|
387
|
+
`.only`, `--tag`, `--exclude-tag`, `--grep`, `--grep-invert`, `--last-failed`,
|
|
388
|
+
then the platform and capability rules, then `--shard`. When they leave
|
|
389
|
+
nothing to run, `NO_TESTS` counts the tests each filter removed, names the tags
|
|
390
|
+
and patterns, and marks a tag no test declares.
|
|
391
|
+
|
|
392
|
+
`--debug` appends two tables to stderr. Phase timings are summed across the
|
|
393
|
+
runner and every worker. The agent step table lists every agent step in
|
|
394
|
+
execution order with its per-phase split, model calls, tokens, and cost when
|
|
395
|
+
the provider reported one.
|
|
396
|
+
|
|
397
|
+
```console
|
|
398
|
+
$ npx e2e run --debug
|
|
399
|
+
...
|
|
400
|
+
[e2e debug] phase timings (wall 14.2s)
|
|
401
|
+
phase count total avg max
|
|
402
|
+
scheduler 1 11.8s 11.8s 11.8s
|
|
403
|
+
test.body 6 10.1s 1.7s 3.9s
|
|
404
|
+
session.launch 6 1.1s 183ms 410ms
|
|
405
|
+
engine.prepare 1 612ms 612ms 612ms
|
|
406
|
+
collect 1 420ms 420ms 420ms
|
|
407
|
+
config.load 1 118ms 118ms 118ms
|
|
408
|
+
realm.import 1 96ms 96ms 96ms
|
|
409
|
+
session.close 6 88ms 15ms 31ms
|
|
410
|
+
engine.init 1 74ms 74ms 74ms
|
|
411
|
+
|
|
412
|
+
[e2e debug] agent steps (execution order, model anthropic/claude-sonnet-4.5, total $0.0312)
|
|
413
|
+
step total model observe action calls tokens in/out cached cost
|
|
414
|
+
act "add a todo named groceries" 3.9s 2.8s 410ms 620ms 3 9412/388 61% (5740) $0.0198
|
|
415
|
+
assert "the list shows groceries" 1.2s 1.1s 88ms 0ms 1 3120/41 0% (0) $0.0114
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
`cached` is the share of input tokens the provider served from its prompt
|
|
419
|
+
cache, `-` when it reports no split. The report records the same per step
|
|
420
|
+
(`model.cacheReadTokens`, `model.cacheWriteTokens`) and per run
|
|
421
|
+
(`usage.modelCachedTokens`).
|
|
422
|
+
|
|
423
|
+
<CodeGroup>
|
|
424
|
+
```bash npm
|
|
425
|
+
npx e2e run
|
|
426
|
+
npx e2e run tests/signup.e2e.ts --tag smoke
|
|
427
|
+
npx e2e run tests/signup.e2e.ts:12
|
|
428
|
+
npx e2e run tests/agent
|
|
429
|
+
npx e2e run 'tests/**/*.smoke.e2e.ts'
|
|
430
|
+
npx e2e run --target web,webkit --tag smoke,billing --tag-mode all
|
|
431
|
+
npx e2e run --tag smoke --exclude-tag slow
|
|
432
|
+
npx e2e run --grep checkout --grep-invert '/refund/i'
|
|
433
|
+
npx e2e run --last-failed
|
|
434
|
+
npx e2e run --shard 2/3
|
|
435
|
+
npx e2e run --reporter json --workers 4 --retries 2
|
|
436
|
+
npx e2e run --max-failures 3
|
|
437
|
+
npx e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
|
|
438
|
+
npx e2e run --reporter list,junit
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
```bash pnpm
|
|
442
|
+
pnpm exec e2e run
|
|
443
|
+
pnpm exec e2e run tests/signup.e2e.ts --tag smoke
|
|
444
|
+
pnpm exec e2e run tests/signup.e2e.ts:12
|
|
445
|
+
pnpm exec e2e run tests/agent
|
|
446
|
+
pnpm exec e2e run 'tests/**/*.smoke.e2e.ts'
|
|
447
|
+
pnpm exec e2e run --target web,webkit --tag smoke,billing --tag-mode all
|
|
448
|
+
pnpm exec e2e run --tag smoke --exclude-tag slow
|
|
449
|
+
pnpm exec e2e run --grep checkout --grep-invert '/refund/i'
|
|
450
|
+
pnpm exec e2e run --last-failed
|
|
451
|
+
pnpm exec e2e run --shard 2/3
|
|
452
|
+
pnpm exec e2e run --reporter json --workers 4 --retries 2
|
|
453
|
+
pnpm exec e2e run --max-failures 3
|
|
454
|
+
pnpm exec e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
|
|
455
|
+
pnpm exec e2e run --reporter list,junit
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
```bash bun
|
|
459
|
+
bunx e2e run
|
|
460
|
+
bunx e2e run tests/signup.e2e.ts --tag smoke
|
|
461
|
+
bunx e2e run tests/signup.e2e.ts:12
|
|
462
|
+
bunx e2e run tests/agent
|
|
463
|
+
bunx e2e run 'tests/**/*.smoke.e2e.ts'
|
|
464
|
+
bunx e2e run --target web,webkit --tag smoke,billing --tag-mode all
|
|
465
|
+
bunx e2e run --tag smoke --exclude-tag slow
|
|
466
|
+
bunx e2e run --grep checkout --grep-invert '/refund/i'
|
|
467
|
+
bunx e2e run --last-failed
|
|
468
|
+
bunx e2e run --shard 2/3
|
|
469
|
+
bunx e2e run --reporter json --workers 4 --retries 2
|
|
470
|
+
bunx e2e run --max-failures 3
|
|
471
|
+
bunx e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
|
|
472
|
+
bunx e2e run --reporter list,junit
|
|
473
|
+
```
|
|
474
|
+
</CodeGroup>
|
|
475
|
+
|
|
476
|
+
### Output
|
|
477
|
+
|
|
478
|
+
| Reporter | Writes |
|
|
479
|
+
| --- | --- |
|
|
480
|
+
| `list` | Terminal progress, failures with code frames, and a run summary. On a TTY, live progress includes the current agent step, model turns, tool calls, and reasoning excerpts. Untrusted fields are capped at 8 KiB and stripped of control characters. |
|
|
481
|
+
| `json` | The report document to stdout and nothing else there, so `e2e run --reporter json \| jq` works. Same document as `<output>/report.json`, described by `schema/report-v1.schema.json` in the package. The shape changes only with the `schemaVersion` field (`report-1` today). Cannot be combined with `list`. |
|
|
482
|
+
| `junit` | `junit.xml` beside the report. One `<testsuite>` per file, one `<testcase>` per test-target pair named `title > path [target]`. A test-class error is a `<failure>`, any other an `<error>`, a skip a `<skipped>` with its reason. Run-level errors form a `run` suite. |
|
|
483
|
+
| `markdown` | `summary.md` beside the report with counts, cost, errors, and failure details. Failed and flaky tests also get a page under `failures/` there, with steps, model turns, and the screen at failure. Exploration runs show findings. [`@e2e-dev/github`](/github) uses this summary for pull request comments. |
|
|
484
|
+
|
|
485
|
+
Every run that gets to its tests writes `report.json` under the [output directory](/reference/config#output)
|
|
486
|
+
(`.e2e` by default) whatever the reporters are, and the reporters' files
|
|
487
|
+
beside it. A run that stops before (a config or collection error,
|
|
488
|
+
`NO_TESTS`, `NO_LAST_RUN`, `UNSUPPORTED_ARTIFACT`, an app command that
|
|
489
|
+
fails to start, an interrupt) writes none of them and leaves the previous
|
|
490
|
+
run's files in place; its errors are on the terminal and in the exit code. A `junit.xml` or `summary.md` that could not be written is a
|
|
491
|
+
line on stderr, never a run error.
|
|
492
|
+
|
|
493
|
+
With `--ai-trace`, the run also writes `<output>/ai-trace.json`: one entry per
|
|
494
|
+
model round trip with the exact prompt, tool definitions, response, usage,
|
|
495
|
+
and provider metadata. Observations in it are already redacted. Inline image
|
|
496
|
+
and file bytes are replaced with byte counts. Open it with
|
|
497
|
+
`npx unbox-ai .e2e/ai-trace.json` for the default output; see [Debugging a run](/debugging#agent-steps).
|
|
498
|
+
|
|
499
|
+
### Signals
|
|
500
|
+
|
|
501
|
+
Signals escalate.
|
|
502
|
+
|
|
503
|
+
1. The first `SIGINT` or `SIGTERM` interrupts. The running test ends with
|
|
504
|
+
status `interrupted`, its `afterEach` hooks and session close run within
|
|
505
|
+
the cleanup budget, and every worker disposes its engine. The tests not
|
|
506
|
+
started are skipped with cause `infrastructure-unavailable` and the reason
|
|
507
|
+
`run interrupted before execution`, so the report lists every planned
|
|
508
|
+
test and `--last-failed` runs the interrupted and the unstarted ones
|
|
509
|
+
again. The runner writes the report and exits 130. An interrupt before
|
|
510
|
+
any test starts (during collection, an engine's `prepare`, or app
|
|
511
|
+
startup) writes no report and leaves the previous one in place.
|
|
512
|
+
2. A second signal forces. Workers dispose their engines at once and are
|
|
513
|
+
killed when the cleanup budget is spent. The report is still written.
|
|
514
|
+
3. A third signal exits on the spot, after killing the process groups of every
|
|
515
|
+
app command the run started. A process attached through
|
|
516
|
+
`reuseExisting` is left alone.
|
|
517
|
+
|
|
518
|
+
A worker whose runner disappears disposes its engine and exits within the
|
|
519
|
+
cleanup budget.
|
|
520
|
+
|
|
521
|
+
## e2e explore
|
|
522
|
+
|
|
523
|
+
```bash
|
|
524
|
+
e2e explore [goal]
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
A run with no test file. The agent gets a goal, plans one exploration step
|
|
528
|
+
at a time, reports defects through its `report_finding` tool, and ends with an
|
|
529
|
+
assessment. The default goal is `Explore the app and find bugs`. See
|
|
530
|
+
[Exploring without a test](/explore).
|
|
531
|
+
|
|
532
|
+
| Flag | Type | Default | Behavior |
|
|
533
|
+
| --- | --- | --- | --- |
|
|
534
|
+
| `--config <path>` | string | discovered | Explicit config path, with the same errors as `run`. |
|
|
535
|
+
| `--target <id>` | string | the first configured target | The one target to explore. Several targets and no flag explores the first and says so on stderr. An unknown name is `UNKNOWN_TARGET`. |
|
|
536
|
+
| `--agent <name>` | string | `default` | The configured agent the exploration runs as. Its model, tools, and context are reused; a hand-rolled `StepExecutor` is replaced by the built-in agent, with a notice. An unknown name is `INVALID_CONFIG`. |
|
|
537
|
+
| `--session <name>` | string | none | Starts signed in. The setup test in the config's test files that declares this session runs first, and the exploration restores what it saved, as a test with `{ session }` does. No other test runs. A name no setup test declares is `COLLECTION_ERROR`, naming the declared ones, before any app process starts. See [Start signed in](/explore#start-signed-in). |
|
|
538
|
+
| `--max-steps <n>` | integer 1-12 | `8` | Exploration steps at most. Out of range exits 2. |
|
|
539
|
+
| `--timeout <ms>` | integer 180000-900000 | `600000` | The run's wall clock. The last minute is kept for the closing assessment. Out of range exits 2. |
|
|
540
|
+
| `--headed` | boolean | `false` | Requests visible UI when the engine supports it. |
|
|
541
|
+
| `--reporter <ids>` | comma-separated list | resolved config value | As for `run`. The exploration summary rows print under the `list` summary; `json` carries the record in the report. |
|
|
542
|
+
| `--output <dir>` | string | config, else `.e2e` | As for `run`; a finding's evidence screenshot is one of the attempt's artifacts under `<output>/artifacts`. |
|
|
543
|
+
| `--debug` | boolean | `false` | As for `run`: phase timings and the agent step table. |
|
|
544
|
+
| `--ai-trace` | boolean | `false` | As for `run`. |
|
|
545
|
+
| `--trace [mode]` | a recording mode | config | As for `run`: one trace of the whole exploration. A bare `--trace` is `on`; `retain-on-failure` keeps it only when the exploration did not pass. The exploration is one attempt, so `on-first-retry` and `on-all-retries` record nothing, and neither does the CI default: `CI=1 e2e explore` needs `--trace on` for a trace, and its plan-time notice says so. Put the goal before `--trace`, or write `--trace=<mode>`. |
|
|
546
|
+
| `--video [mode]` | a recording mode | config | As for `run`: one video of the whole exploration (WebM on a browser engine, MP4 on a device engine). A bare `--video` is `on`; `retain-on-failure` keeps it only when the exploration did not pass. The exploration is one attempt, so a retry mode records nothing. Put the goal before `--video`, or write `--video=<mode>`. |
|
|
547
|
+
|
|
548
|
+
The run has one result, under the virtual file `explore`, titled by the goal.
|
|
549
|
+
With `--session`, the report also holds the setup test's result and lists the
|
|
550
|
+
project's other tests as skipped with cause `filtered`, as `run` lists the
|
|
551
|
+
tests of a file no positional named.
|
|
552
|
+
The exploration runs with the replay cache off and zero retries whatever the
|
|
553
|
+
config says. A `--session` setup test runs as it would for `run`, with the
|
|
554
|
+
config's agents, cache, and retries.
|
|
555
|
+
`<output>/report.json` gains `run.explore`: the goal, the budgets, why the run
|
|
556
|
+
ended (`finished`, `step-limit`, `time`, `stuck`, or `aborted`), the
|
|
557
|
+
assessment, the steps, and the findings.
|
|
558
|
+
|
|
559
|
+
Exit codes: `0` when steps ran and no finding of kind `issue` was reported,
|
|
560
|
+
`1` when one was or when no step ran at all, `2` and `3` as for `run`, `130`
|
|
561
|
+
on Ctrl-C.
|
|
562
|
+
|
|
563
|
+
<CodeGroup>
|
|
564
|
+
```bash npm
|
|
565
|
+
npx e2e explore
|
|
566
|
+
npx e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
|
|
567
|
+
npx e2e explore --target web --max-steps 4 --headed
|
|
568
|
+
npx e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
```bash pnpm
|
|
572
|
+
pnpm exec e2e explore
|
|
573
|
+
pnpm exec e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
|
|
574
|
+
pnpm exec e2e explore --target web --max-steps 4 --headed
|
|
575
|
+
pnpm exec e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
```bash bun
|
|
579
|
+
bunx e2e explore
|
|
580
|
+
bunx e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
|
|
581
|
+
bunx e2e explore --target web --max-steps 4 --headed
|
|
582
|
+
bunx e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
|
|
583
|
+
```
|
|
584
|
+
</CodeGroup>
|
|
585
|
+
|
|
586
|
+
## e2e list
|
|
587
|
+
|
|
588
|
+
```bash
|
|
589
|
+
e2e list [files...]
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
A dry run. `list` selects tests exactly as `run` does, prints one line per
|
|
593
|
+
test-target pair, and exits. No app process, engine, or worker starts, and
|
|
594
|
+
nothing is written.
|
|
595
|
+
|
|
596
|
+
Positionals and the selection flags (`--config`, `--target`, `--tag`,
|
|
597
|
+
`--tag-mode`, `--exclude-tag`, `--grep`, `--grep-invert`, `--last-failed`,
|
|
598
|
+
`--shard`, `--pass-with-no-tests`) are those of `run`; `--last-failed` reads
|
|
599
|
+
`report.json` under the config's [`output`](/reference/config#output). `--reporter` accepts `list` (the default) or `json`.
|
|
600
|
+
|
|
601
|
+
| Reporter | Writes |
|
|
602
|
+
| --- | --- |
|
|
603
|
+
| `list` | One line per pair, `file › title [target]`, in selection order, with the describe path joined by ` › ` (`tests/billing.e2e.ts › checkout › pays [web]`), then each tag the test declares as `#tag` (`tests/billing.e2e.ts › checkout › pays [web] #smoke #billing`). A skipped test keeps its line with `(skipped: <reason>)` appended. Setup tests are listed like any other. |
|
|
604
|
+
| `json` | `{ "pairs": [...] }` to stdout. Each pair carries `file`, `title`, `titlePath`, `kind` (`test` or `setup`), `tags` (the tags the test declares, `[]` when none), `target`, `disposition` (`run` or `skip`), and `skipReason` when skipped. |
|
|
605
|
+
|
|
606
|
+
Pairs a filter removed are not listed.
|
|
607
|
+
|
|
608
|
+
<CodeGroup>
|
|
609
|
+
```bash npm
|
|
610
|
+
npx e2e list
|
|
611
|
+
npx e2e list tests/signup.e2e.ts
|
|
612
|
+
npx e2e list --tag smoke --target web
|
|
613
|
+
npx e2e list --grep checkout --exclude-tag slow
|
|
614
|
+
npx e2e list --reporter json
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
```bash pnpm
|
|
618
|
+
pnpm exec e2e list
|
|
619
|
+
pnpm exec e2e list tests/signup.e2e.ts
|
|
620
|
+
pnpm exec e2e list --tag smoke --target web
|
|
621
|
+
pnpm exec e2e list --grep checkout --exclude-tag slow
|
|
622
|
+
pnpm exec e2e list --reporter json
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
```bash bun
|
|
626
|
+
bunx e2e list
|
|
627
|
+
bunx e2e list tests/signup.e2e.ts
|
|
628
|
+
bunx e2e list --tag smoke --target web
|
|
629
|
+
bunx e2e list --grep checkout --exclude-tag slow
|
|
630
|
+
bunx e2e list --reporter json
|
|
631
|
+
```
|
|
632
|
+
</CodeGroup>
|
|
633
|
+
|
|
634
|
+
## e2e cache
|
|
635
|
+
|
|
636
|
+
Inspect or clear the replay cache. These commands load the discovered config
|
|
637
|
+
or `--config <path>`, honor `cache.dir`, and exit 0 on an empty store. The
|
|
638
|
+
default directory is `.e2e/cache/`.
|
|
639
|
+
|
|
640
|
+
| Command | Prints |
|
|
641
|
+
| --- | --- |
|
|
642
|
+
| `e2e cache ls` | One row per entry: the test and target it was recorded for, the first 12 characters of its instruction digest, its age, and how many actions a replay would run (`(truncated)` when recording hit the action cap). Rows are grouped by test, then target, oldest first. |
|
|
643
|
+
| `e2e cache stats` | The store directory, the number of readable entries, their total size, and the number of unreadable files when there are any. |
|
|
644
|
+
| `e2e cache clear` | Deletes every cache file, then the directory when nothing else is left in it, and reports how many files went. |
|
|
645
|
+
|
|
646
|
+
<CodeGroup>
|
|
647
|
+
```bash npm
|
|
648
|
+
npx e2e cache ls
|
|
649
|
+
npx e2e cache stats
|
|
650
|
+
npx e2e cache clear
|
|
651
|
+
npx e2e cache ls --config packages/web/e2e.config.ts
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
```bash pnpm
|
|
655
|
+
pnpm exec e2e cache ls
|
|
656
|
+
pnpm exec e2e cache stats
|
|
657
|
+
pnpm exec e2e cache clear
|
|
658
|
+
pnpm exec e2e cache ls --config packages/web/e2e.config.ts
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
```bash bun
|
|
662
|
+
bunx e2e cache ls
|
|
663
|
+
bunx e2e cache stats
|
|
664
|
+
bunx e2e cache clear
|
|
665
|
+
bunx e2e cache ls --config packages/web/e2e.config.ts
|
|
666
|
+
```
|
|
667
|
+
</CodeGroup>
|
|
668
|
+
|
|
669
|
+
```text
|
|
670
|
+
TEST TARGET INSTRUCTION AGE ACTIONS
|
|
671
|
+
tests/billing.e2e.ts::upgrades web 4f1c0a9d3b62 2h 4
|
|
672
|
+
tests/signup.e2e.ts::signs%20up web 9ab7715ce004 3d 7 (truncated)
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
An entry recorded before entries carried provenance prints `-` in those
|
|
676
|
+
columns and still replays. A file the store cannot read (truncated, over the
|
|
677
|
+
1 MiB ceiling, or from a newer schema) is counted separately on stderr, treated
|
|
678
|
+
as a miss by a run, and removed by `clear`. Files the runner never wrote are
|
|
679
|
+
left alone.
|
|
680
|
+
|
|
681
|
+
<Note>
|
|
682
|
+
These commands read the file store only. With a custom `cache.store` they
|
|
683
|
+
exit 2 and say so.
|
|
684
|
+
</Note>
|
|
685
|
+
|
|
686
|
+
## e2e feedback
|
|
687
|
+
|
|
688
|
+
<CodeGroup>
|
|
689
|
+
```bash npm
|
|
690
|
+
npx e2e feedback -m <text> [--type bug|docs|feature|other] [options]
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
```bash pnpm
|
|
694
|
+
pnpm exec e2e feedback -m <text> [--type bug|docs|feature|other] [options]
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
```bash bun
|
|
698
|
+
bunx e2e feedback -m <text> [--type bug|docs|feature|other] [options]
|
|
699
|
+
```
|
|
700
|
+
</CodeGroup>
|
|
701
|
+
|
|
702
|
+
Sends one report about e2e itself to the e2e team: something broke, the docs
|
|
703
|
+
or the skill misled, or a capability is missing. Coding agents are welcome to
|
|
704
|
+
send one when they hit a problem with e2e, not with the app under test.
|
|
705
|
+
|
|
706
|
+
| Flag | Meaning |
|
|
707
|
+
| --- | --- |
|
|
708
|
+
| `-m, --message <text>` | Required. One or two sentences on the problem, at most 2000 characters |
|
|
709
|
+
| `--type <type>` | `bug`, `docs`, `feature`, or `other` (default) |
|
|
710
|
+
| `--task <text>` | What you were trying to do |
|
|
711
|
+
| `--expected <text>` | What you expected to happen |
|
|
712
|
+
| `--actual <text>` | What happened instead, with the error code and message |
|
|
713
|
+
| `--approach <text>` | What you tried, workarounds included |
|
|
714
|
+
| `--command <text>` | The e2e command or API involved, at most 200 characters |
|
|
715
|
+
| `--agent <text>` | The coding agent and model sending it, at most 200 characters |
|
|
716
|
+
| `--dry-run` | Print the event that would be sent and send nothing |
|
|
717
|
+
|
|
718
|
+
`--task`, `--expected`, `--actual`, and `--approach` take up to 4000
|
|
719
|
+
characters each. A blank or longer value exits 2.
|
|
720
|
+
|
|
721
|
+
<CodeGroup>
|
|
722
|
+
```bash npm
|
|
723
|
+
npx e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
|
|
724
|
+
npx e2e feedback --type docs -m "The mcp topic never says how to close a session"
|
|
725
|
+
npx e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
```bash pnpm
|
|
729
|
+
pnpm exec e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
|
|
730
|
+
pnpm exec e2e feedback --type docs -m "The mcp topic never says how to close a session"
|
|
731
|
+
pnpm exec e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
```bash bun
|
|
735
|
+
bunx e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
|
|
736
|
+
bunx e2e feedback --type docs -m "The mcp topic never says how to close a session"
|
|
737
|
+
bunx e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
|
|
738
|
+
```
|
|
739
|
+
</CodeGroup>
|
|
740
|
+
|
|
741
|
+
The report goes to the same PostHog project as [telemetry](/telemetry#feedback),
|
|
742
|
+
as one `e2e_feedback` event, together with the anonymous machine facts every
|
|
743
|
+
telemetry event carries. Before sending, the value of every environment
|
|
744
|
+
variable whose name holds `KEY`, `TOKEN`, `SECRET`, `PASS`, `_PWD`,
|
|
745
|
+
`CREDENTIAL`, `AUTH`, `COOKIE`, or `PRIVATE` becomes `<secret:NAME>` when it
|
|
746
|
+
is at least six characters long, the minimum for a config secret, since a
|
|
747
|
+
shorter one would rewrite ordinary words. Bearer tokens,
|
|
748
|
+
URL credentials, private keys, JWTs, and common API key shapes become
|
|
749
|
+
`<redacted>`. Do not paste app data, page content, or test files.
|
|
750
|
+
|
|
751
|
+
Feedback is sent only when you run the command, so a saved
|
|
752
|
+
`e2e telemetry disable` does not stop it. `E2E_TELEMETRY_DISABLED=1` and
|
|
753
|
+
`DO_NOT_TRACK=1` do: with either set the command exits 2 and sends nothing,
|
|
754
|
+
so a CI job or a fleet that opted out sends nothing even when an agent runs
|
|
755
|
+
it. `E2E_TELEMETRY_DEBUG=1` prints it like `--dry-run`. It prints a reference
|
|
756
|
+
id and exits 0 once PostHog accepts the event, or exits 3 when PostHog did
|
|
757
|
+
not confirm it; the report may still have arrived, so the message names its
|
|
758
|
+
reference id.
|
|
759
|
+
|
|
760
|
+
## e2e telemetry
|
|
761
|
+
|
|
762
|
+
Shows whether anonymous usage telemetry is on, and switches it.
|
|
763
|
+
[Telemetry](/telemetry) lists every property sent.
|
|
764
|
+
|
|
765
|
+
| Command | Effect |
|
|
766
|
+
| --- | --- |
|
|
767
|
+
| `e2e telemetry`, `e2e telemetry status` | Prints `Status: enabled`, or `Status: disabled` with the reason: the variable that is set, the saved choice, or a preferences directory that cannot be written. |
|
|
768
|
+
| `e2e telemetry disable` | Saves the opt-out to `~/.config/e2e/telemetry.json` (`$XDG_CONFIG_HOME/e2e/` when set, `%APPDATA%\e2e\` on Windows) and prints the status. |
|
|
769
|
+
| `e2e telemetry enable` | Saves the opt-in and prints the status. A variable set in the environment still wins, and the status says so. |
|
|
770
|
+
|
|
771
|
+
<CodeGroup>
|
|
772
|
+
```bash npm
|
|
773
|
+
npx e2e telemetry
|
|
774
|
+
npx e2e telemetry disable
|
|
775
|
+
E2E_TELEMETRY_DEBUG=1 npx e2e run
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
```bash pnpm
|
|
779
|
+
pnpm exec e2e telemetry
|
|
780
|
+
pnpm exec e2e telemetry disable
|
|
781
|
+
E2E_TELEMETRY_DEBUG=1 pnpm exec e2e run
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
```bash bun
|
|
785
|
+
bunx e2e telemetry
|
|
786
|
+
bunx e2e telemetry disable
|
|
787
|
+
E2E_TELEMETRY_DEBUG=1 bunx e2e run
|
|
788
|
+
```
|
|
789
|
+
</CodeGroup>
|
|
790
|
+
|
|
791
|
+
`E2E_TELEMETRY_DISABLED=1` and `DO_NOT_TRACK=1` turn telemetry off without
|
|
792
|
+
touching the file. `E2E_TELEMETRY_DEBUG=1` prints every event to stderr and
|
|
793
|
+
sends nothing. The first command on a machine other than `e2e init` and
|
|
794
|
+
`e2e telemetry` prints a notice once; in CI nothing is printed and no file is written.
|
|
795
|
+
|
|
796
|
+
## Exit codes
|
|
797
|
+
|
|
798
|
+
| Code | Meaning |
|
|
799
|
+
| ---: | --- |
|
|
800
|
+
| 0 | All selected tests passed, were flaky, or were explicitly skipped |
|
|
801
|
+
| 1 | Final test or setup failure, or test timeout |
|
|
802
|
+
| 2 | CLI, config, collection, dependency, credential, model-config, or policy error |
|
|
803
|
+
| 3 | Engine, app process, model provider, artifact, or cleanup infrastructure failure; `e2e feedback` that could not be delivered |
|
|
804
|
+
| 4 | Internal runner invariant or unhandled runner error |
|
|
805
|
+
| 130 | Interrupted by a user or CI signal |
|
|
806
|
+
|
|
807
|
+
Precedence for a mixed run is `130 > 4 > 3 > 2 > 1 > 0`. The report keeps every
|
|
808
|
+
individual result; precedence affects only the process exit code.
|
|
809
|
+
|
|
810
|
+
Argument parsing failures exit 2 with a one-line error on stderr.
|
|
811
|
+
|
|
812
|
+
## Diagnostics
|
|
813
|
+
|
|
814
|
+
A message that rejects a name suggests the nearest valid one. Keys from other
|
|
815
|
+
runners' configs (`testDir`, `baseURL`, `webServer`, `projects`) say where
|
|
816
|
+
that fact lives here. A failing `import` in the config or a test file ends
|
|
817
|
+
with the install or add command for the project's package manager, or the
|
|
818
|
+
subpaths the package exports. A model credential the provider rejects names
|
|
819
|
+
the variable the provider reads.
|