e2e 0.15.2 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build.json +1 -1
- package/dist/agent/act-validation.d.ts +10 -1
- package/dist/agent/act-validation.js +48 -1
- package/dist/agent/act.d.ts +1 -2
- package/dist/agent/act.js +29 -9
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +4 -6
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +32 -24
- package/dist/agent/actions.js +38 -25
- package/dist/agent/agent-brand.d.ts +0 -1
- package/dist/agent/agent-brand.js +0 -1
- package/dist/agent/ai-sdk.d.ts +7 -1
- package/dist/agent/ai-sdk.js +11 -1
- package/dist/agent/call-options.d.ts +0 -1
- package/dist/agent/call-options.js +0 -1
- package/dist/agent/default-agent.d.ts +0 -1
- package/dist/agent/default-agent.js +0 -1
- package/dist/agent/derived.d.ts +0 -1
- package/dist/agent/derived.js +0 -1
- package/dist/agent/error.d.ts +0 -1
- package/dist/agent/error.js +0 -1
- package/dist/agent/executor.d.ts +0 -1
- package/dist/agent/executor.js +0 -1
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +0 -1
- package/dist/agent/interactive-step.d.ts +0 -1
- package/dist/agent/interactive-step.js +0 -1
- package/dist/agent/invocation.d.ts +0 -1
- package/dist/agent/invocation.js +10 -5
- package/dist/agent/ledger.d.ts +0 -1
- package/dist/agent/ledger.js +0 -1
- package/dist/agent/loop-guards.d.ts +0 -1
- package/dist/agent/loop-guards.js +0 -1
- package/dist/agent/model/adapter.d.ts +0 -1
- package/dist/agent/model/adapter.js +0 -1
- package/dist/agent/model/overflow.d.ts +0 -1
- package/dist/agent/model/overflow.js +0 -1
- package/dist/agent/model/provider-hints.d.ts +0 -1
- package/dist/agent/model/provider-hints.js +0 -1
- package/dist/agent/model/schema.d.ts +0 -1
- package/dist/agent/model/schema.js +0 -1
- package/dist/agent/model/sdk.d.ts +0 -1
- package/dist/agent/model/sdk.js +2 -1
- package/dist/agent/model/stall.d.ts +0 -1
- package/dist/agent/model/stall.js +0 -1
- package/dist/agent/model/tool-choice.d.ts +0 -1
- package/dist/agent/model/tool-choice.js +0 -1
- package/dist/agent/observation-budget.d.ts +0 -1
- package/dist/agent/observation-budget.js +0 -1
- package/dist/agent/observation-feed.d.ts +5 -7
- package/dist/agent/observation-feed.js +5 -8
- package/dist/agent/observation.d.ts +40 -12
- package/dist/agent/observation.js +109 -60
- package/dist/agent/operation-queue.d.ts +0 -1
- package/dist/agent/operation-queue.js +0 -1
- package/dist/agent/phases.d.ts +0 -1
- package/dist/agent/phases.js +0 -1
- package/dist/agent/pixels.d.ts +0 -1
- package/dist/agent/pixels.js +0 -1
- package/dist/agent/point-tap.d.ts +8 -9
- package/dist/agent/point-tap.js +1 -2
- package/dist/agent/primitives.d.ts +6 -1
- package/dist/agent/primitives.js +4 -2
- package/dist/agent/prompts.d.ts +0 -1
- package/dist/agent/prompts.js +0 -1
- package/dist/agent/protocol.d.ts +0 -1
- package/dist/agent/protocol.js +0 -1
- package/dist/agent/public.d.ts +0 -1
- package/dist/agent/public.js +0 -1
- package/dist/agent/reading.d.ts +0 -1
- package/dist/agent/reading.js +0 -1
- package/dist/agent/replay.d.ts +19 -9
- package/dist/agent/replay.js +11 -15
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +2 -4
- package/dist/agent/scroll-target.js +0 -1
- package/dist/agent/secrets.d.ts +0 -1
- package/dist/agent/secrets.js +0 -1
- package/dist/agent/settle-policy.d.ts +0 -1
- package/dist/agent/settle-policy.js +0 -1
- package/dist/agent/step-accounting.d.ts +0 -1
- package/dist/agent/step-accounting.js +0 -1
- package/dist/agent/step-cache.d.ts +41 -15
- package/dist/agent/step-cache.js +147 -63
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +2 -1
- package/dist/agent/tool-output.d.ts +0 -1
- package/dist/agent/tool-output.js +0 -1
- package/dist/agent/tool.d.ts +0 -1
- package/dist/agent/tool.js +0 -1
- package/dist/agent/transcript-compaction.d.ts +0 -1
- package/dist/agent/transcript-compaction.js +0 -1
- package/dist/agent/upload-paths.d.ts +0 -1
- package/dist/agent/upload-paths.js +0 -1
- package/dist/agent/usage.d.ts +0 -1
- package/dist/agent/usage.js +0 -1
- package/dist/cache/anchors.d.ts +72 -24
- package/dist/cache/anchors.js +233 -61
- package/dist/cache/context.d.ts +25 -15
- package/dist/cache/context.js +50 -9
- package/dist/cache/decide.d.ts +2 -3
- package/dist/cache/decide.js +4 -7
- package/dist/cache/identity.d.ts +18 -5
- package/dist/cache/identity.js +9 -5
- package/dist/cache/recorder.d.ts +15 -2
- package/dist/cache/recorder.js +36 -24
- package/dist/cache/rekeyed.d.ts +46 -0
- package/dist/cache/rekeyed.js +89 -0
- package/dist/cache/relocate.d.ts +14 -15
- package/dist/cache/relocate.js +33 -26
- package/dist/cache/route.d.ts +32 -34
- package/dist/cache/route.js +94 -51
- package/dist/cache/store.d.ts +6 -1
- package/dist/cache/store.js +21 -2
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +53 -15
- package/dist/cache/trace.js +70 -29
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/bin.js +0 -1
- package/dist/cli/cache.d.ts +0 -1
- package/dist/cli/cache.js +0 -1
- package/dist/cli/docs-url.d.ts +0 -1
- package/dist/cli/docs-url.js +0 -1
- package/dist/cli/feedback.d.ts +0 -1
- package/dist/cli/feedback.js +0 -1
- package/dist/cli/guide.d.ts +0 -1
- package/dist/cli/guide.js +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +10 -11
- package/dist/cli/init/agent-skill.d.ts +0 -1
- package/dist/cli/init/agent-skill.js +0 -1
- package/dist/cli/init/engines.d.ts +1 -4
- package/dist/cli/init/engines.js +2 -3
- package/dist/cli/init/gateways.d.ts +1 -2
- package/dist/cli/init/gateways.js +11 -2
- package/dist/cli/init/mcp-config.d.ts +0 -1
- package/dist/cli/init/mcp-config.js +0 -1
- package/dist/cli/init/package.d.ts +0 -1
- package/dist/cli/init/package.js +0 -1
- package/dist/cli/init/scaffold.d.ts +0 -1
- package/dist/cli/init/scaffold.js +0 -1
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/init/versions.d.ts +0 -9
- package/dist/cli/init/versions.js +1 -11
- package/dist/cli/init.d.ts +0 -1
- package/dist/cli/init.js +0 -1
- package/dist/cli/mcp.d.ts +9 -2
- package/dist/cli/mcp.js +14 -2
- package/dist/cli/signals.d.ts +0 -1
- package/dist/cli/signals.js +0 -1
- package/dist/cli/skill.d.ts +0 -1
- package/dist/cli/skill.js +0 -1
- package/dist/cli/telemetry.d.ts +0 -1
- package/dist/cli/telemetry.js +1 -2
- package/dist/cli/wordmark.d.ts +0 -1
- package/dist/cli/wordmark.js +0 -1
- package/dist/collect/collect.d.ts +0 -1
- package/dist/collect/collect.js +3 -2
- package/dist/collect/registry.d.ts +6 -3
- package/dist/collect/registry.js +31 -14
- package/dist/collect/select.d.ts +0 -1
- package/dist/collect/select.js +0 -1
- package/dist/config/agent.d.ts +0 -1
- package/dist/config/agent.js +0 -1
- package/dist/config/app.d.ts +0 -1
- package/dist/config/app.js +0 -1
- package/dist/config/command.d.ts +0 -1
- package/dist/config/command.js +0 -1
- package/dist/config/diagnose.d.ts +0 -1
- package/dist/config/diagnose.js +0 -1
- package/dist/config/esm-hooks.d.ts +0 -1
- package/dist/config/esm-hooks.js +0 -1
- package/dist/config/load.d.ts +0 -1
- package/dist/config/load.js +0 -1
- package/dist/config/resolve.d.ts +1 -1
- package/dist/config/resolve.js +33 -2
- package/dist/config/secrets.d.ts +0 -1
- package/dist/config/secrets.js +0 -1
- package/dist/config/targets.d.ts +0 -1
- package/dist/config/targets.js +0 -1
- package/dist/config/validate.d.ts +0 -1
- package/dist/config/validate.js +0 -1
- package/dist/engine/contract.d.ts +0 -1
- package/dist/engine/contract.js +0 -1
- package/dist/engine/index.d.ts +3 -4
- package/dist/engine/index.js +4 -4
- package/dist/engine/manifest.d.ts +0 -1
- package/dist/engine/manifest.js +0 -1
- package/dist/engine/recording.d.ts +0 -1
- package/dist/engine/recording.js +0 -1
- package/dist/engine/resolve.d.ts +0 -1
- package/dist/engine/resolve.js +0 -1
- package/dist/engine/session.d.ts +0 -1
- package/dist/engine/session.js +0 -1
- package/dist/engine/surface.d.ts +0 -1
- package/dist/engine/surface.js +0 -1
- package/dist/engine/timing.d.ts +0 -1
- package/dist/engine/timing.js +0 -1
- package/dist/expect/async.d.ts +0 -1
- package/dist/expect/async.js +101 -59
- package/dist/expect/attempt.d.ts +0 -1
- package/dist/expect/attempt.js +0 -1
- package/dist/expect/index.d.ts +0 -1
- package/dist/expect/index.js +0 -1
- package/dist/expect/poll-scope.d.ts +52 -0
- package/dist/expect/poll-scope.js +113 -0
- package/dist/expect/poll.d.ts +0 -1
- package/dist/expect/poll.js +31 -5
- package/dist/expect/soft.d.ts +0 -1
- package/dist/expect/soft.js +0 -1
- package/dist/expect/values.d.ts +0 -1
- package/dist/expect/values.js +11 -5
- package/dist/explore/body.d.ts +0 -1
- package/dist/explore/body.js +0 -1
- package/dist/explore/executor.d.ts +0 -1
- package/dist/explore/executor.js +0 -1
- package/dist/explore/index.d.ts +0 -1
- package/dist/explore/index.js +16 -2
- package/dist/explore/plan.d.ts +0 -1
- package/dist/explore/plan.js +0 -1
- package/dist/explore/progress.d.ts +0 -1
- package/dist/explore/progress.js +0 -1
- package/dist/explore/state.d.ts +0 -1
- package/dist/explore/state.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/internal/abandoned.d.ts +11 -0
- package/dist/internal/abandoned.js +23 -0
- package/dist/internal/ai-trace.d.ts +0 -1
- package/dist/internal/ai-trace.js +0 -1
- package/dist/internal/atomic-write.d.ts +0 -1
- package/dist/internal/atomic-write.js +0 -1
- package/dist/internal/brands.d.ts +2 -1
- package/dist/internal/brands.js +2 -1
- package/dist/internal/client-identity.d.ts +9 -0
- package/dist/internal/client-identity.js +14 -0
- package/dist/internal/debug.d.ts +0 -1
- package/dist/internal/debug.js +0 -1
- package/dist/internal/env.d.ts +0 -1
- package/dist/internal/env.js +0 -1
- package/dist/internal/errors.d.ts +0 -1
- package/dist/internal/errors.js +0 -1
- package/dist/internal/geometry.d.ts +0 -1
- package/dist/internal/geometry.js +0 -1
- package/dist/internal/git.d.ts +0 -1
- package/dist/internal/git.js +0 -1
- package/dist/internal/globs.d.ts +0 -1
- package/dist/internal/globs.js +0 -1
- package/dist/internal/ids.d.ts +0 -1
- package/dist/internal/ids.js +0 -1
- package/dist/internal/json-value.d.ts +0 -1
- package/dist/internal/json-value.js +0 -1
- package/dist/internal/keys.d.ts +0 -1
- package/dist/internal/keys.js +0 -1
- package/dist/internal/node-version.d.ts +0 -1
- package/dist/internal/node-version.js +0 -1
- package/dist/internal/objects.d.ts +0 -1
- package/dist/internal/objects.js +0 -1
- package/dist/internal/options.d.ts +0 -1
- package/dist/internal/options.js +0 -1
- package/dist/internal/package-manager.d.ts +0 -1
- package/dist/internal/package-manager.js +0 -1
- package/dist/internal/package-version.d.ts +0 -1
- package/dist/internal/package-version.js +0 -1
- package/dist/internal/paths.d.ts +0 -1
- package/dist/internal/paths.js +0 -1
- package/dist/internal/realm-slot.d.ts +0 -1
- package/dist/internal/realm-slot.js +0 -1
- package/dist/internal/recording-modes.d.ts +0 -1
- package/dist/internal/recording-modes.js +0 -1
- package/dist/internal/redact.d.ts +7 -5
- package/dist/internal/redact.js +116 -24
- package/dist/internal/regexp.d.ts +0 -1
- package/dist/internal/regexp.js +0 -1
- package/dist/internal/roles.d.ts +0 -1
- package/dist/internal/roles.js +0 -1
- package/dist/internal/skip.d.ts +0 -1
- package/dist/internal/skip.js +0 -1
- package/dist/internal/source.d.ts +0 -1
- package/dist/internal/source.js +0 -1
- package/dist/internal/standard-schema.d.ts +0 -1
- package/dist/internal/standard-schema.js +0 -1
- package/dist/internal/suggest.d.ts +0 -1
- package/dist/internal/suggest.js +0 -1
- package/dist/internal/text.d.ts +8 -1
- package/dist/internal/text.js +13 -2
- package/dist/internal/time.d.ts +6 -1
- package/dist/internal/time.js +25 -14
- package/dist/internal/urls.d.ts +9 -6
- package/dist/internal/urls.js +19 -11
- package/dist/internal/vcs.d.ts +0 -1
- package/dist/internal/vcs.js +0 -1
- package/dist/internal/zip.d.ts +0 -1
- package/dist/internal/zip.js +0 -1
- package/dist/locator/engine.d.ts +12 -3
- package/dist/locator/engine.js +8 -4
- package/dist/locator/expression.d.ts +0 -1
- package/dist/locator/expression.js +0 -1
- package/dist/locator/screen.d.ts +0 -1
- package/dist/locator/screen.js +28 -5
- package/dist/mcp/catalog.d.ts +7 -3
- package/dist/mcp/catalog.js +8 -9
- package/dist/mcp/config.d.ts +0 -1
- package/dist/mcp/config.js +0 -1
- package/dist/mcp/recording.d.ts +0 -1
- package/dist/mcp/recording.js +0 -1
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.js +8 -5
- package/dist/mcp/session.d.ts +4 -2
- package/dist/mcp/session.js +44 -22
- package/dist/mcp/sessions.d.ts +2 -1
- package/dist/mcp/sessions.js +5 -2
- package/dist/mcp/tools.d.ts +7 -6
- package/dist/mcp/tools.js +36 -11
- package/dist/mcp/usage.d.ts +61 -0
- package/dist/mcp/usage.js +73 -0
- package/dist/oauth/callback-server.d.ts +0 -1
- package/dist/oauth/callback-server.js +0 -1
- package/dist/oauth/chatgpt.d.ts +0 -1
- package/dist/oauth/chatgpt.js +3 -24
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +1 -1
- package/dist/oauth/copilot.d.ts +5 -5
- package/dist/oauth/copilot.js +80 -8
- package/dist/oauth/device-code.d.ts +0 -1
- package/dist/oauth/device-code.js +0 -1
- package/dist/oauth/errors.d.ts +0 -1
- package/dist/oauth/errors.js +0 -1
- package/dist/oauth/fetch.d.ts +0 -1
- package/dist/oauth/fetch.js +0 -1
- package/dist/oauth/grok.d.ts +0 -1
- package/dist/oauth/grok.js +2 -2
- package/dist/oauth/jwt.d.ts +0 -1
- package/dist/oauth/jwt.js +0 -1
- package/dist/oauth/login.d.ts +0 -1
- package/dist/oauth/login.js +0 -1
- package/dist/oauth/models.d.ts +0 -1
- package/dist/oauth/models.js +2 -2
- package/dist/oauth/opencode-console.d.ts +10 -0
- package/dist/oauth/opencode-console.js +133 -0
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +12 -1
- package/dist/oauth/providers/github-copilot.js +80 -19
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/opencode-console.d.ts +31 -0
- package/dist/oauth/providers/opencode-console.js +148 -0
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +2 -7
- package/dist/oauth/providers.js +3 -8
- package/dist/oauth/responses.d.ts +9 -0
- package/dist/oauth/responses.js +23 -0
- package/dist/oauth/sse.d.ts +0 -1
- package/dist/oauth/sse.js +0 -1
- package/dist/oauth/store.d.ts +0 -1
- package/dist/oauth/store.js +0 -1
- package/dist/oauth/token-endpoint.d.ts +0 -1
- package/dist/oauth/token-endpoint.js +0 -1
- package/dist/oauth/types.d.ts +0 -1
- package/dist/oauth/types.js +0 -1
- package/dist/params.d.ts +0 -1
- package/dist/params.js +0 -1
- package/dist/report/build.d.ts +26 -1
- package/dist/report/build.js +16 -9
- package/dist/report/builtin.d.ts +0 -1
- package/dist/report/builtin.js +0 -1
- package/dist/report/code-frame.d.ts +0 -1
- package/dist/report/code-frame.js +0 -1
- package/dist/report/debug-steps.d.ts +0 -1
- package/dist/report/debug-steps.js +0 -1
- package/dist/report/explore-text.d.ts +0 -1
- package/dist/report/explore-text.js +0 -1
- package/dist/report/failure-text.d.ts +6 -2
- package/dist/report/failure-text.js +14 -5
- package/dist/report/format.d.ts +10 -6
- package/dist/report/format.js +12 -6
- package/dist/report/json.d.ts +0 -1
- package/dist/report/json.js +0 -1
- package/dist/report/junit.d.ts +0 -1
- package/dist/report/junit.js +11 -13
- package/dist/report/list-explore.d.ts +0 -1
- package/dist/report/list-explore.js +0 -1
- package/dist/report/list-model.d.ts +0 -1
- package/dist/report/list-model.js +0 -1
- package/dist/report/list-steps.d.ts +0 -1
- package/dist/report/list-steps.js +0 -1
- package/dist/report/list.d.ts +1 -1
- package/dist/report/list.js +38 -19
- package/dist/report/live-window.d.ts +0 -1
- package/dist/report/live-window.js +0 -1
- package/dist/report/markdown-text.d.ts +0 -1
- package/dist/report/markdown-text.js +0 -1
- package/dist/report/markdown.d.ts +1 -2
- package/dist/report/markdown.js +37 -15
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +6 -2
- package/dist/report/repeats.js +12 -4
- package/dist/report/running-tree.d.ts +0 -1
- package/dist/report/running-tree.js +0 -1
- package/dist/report/write.d.ts +0 -1
- package/dist/report/write.js +0 -1
- package/dist/run/app-ports.d.ts +0 -1
- package/dist/run/app-ports.js +0 -1
- package/dist/run/artifacts.d.ts +18 -1
- package/dist/run/artifacts.js +68 -2
- package/dist/run/budget.d.ts +0 -1
- package/dist/run/budget.js +0 -1
- package/dist/run/declared-processes.d.ts +0 -1
- package/dist/run/declared-processes.js +0 -1
- package/dist/run/events.d.ts +0 -1
- package/dist/run/events.js +0 -1
- package/dist/run/execute.d.ts +9 -1
- package/dist/run/execute.js +55 -29
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +6 -3
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +4 -3
- package/dist/run/fixture-recording.d.ts +0 -1
- package/dist/run/fixture-recording.js +0 -1
- package/dist/run/fixtures.d.ts +0 -1
- package/dist/run/fixtures.js +6 -9
- package/dist/run/in-process.d.ts +2 -1
- package/dist/run/in-process.js +1 -1
- package/dist/run/last-run.d.ts +42 -9
- package/dist/run/last-run.js +121 -15
- package/dist/run/managed-process.d.ts +0 -1
- package/dist/run/managed-process.js +0 -1
- package/dist/run/output.d.ts +0 -1
- package/dist/run/output.js +0 -1
- package/dist/run/process-pool.d.ts +0 -1
- package/dist/run/process-pool.js +0 -1
- package/dist/run/provision.d.ts +0 -1
- package/dist/run/provision.js +0 -1
- package/dist/run/realm.d.ts +6 -2
- package/dist/run/realm.js +21 -8
- package/dist/run/records.d.ts +16 -1
- package/dist/run/records.js +26 -1
- package/dist/run/retry.d.ts +3 -2
- package/dist/run/retry.js +4 -3
- package/dist/run/runner.d.ts +3 -2
- package/dist/run/runner.js +70 -32
- package/dist/run/scheduler.d.ts +0 -1
- package/dist/run/scheduler.js +0 -1
- package/dist/run/secrecy.d.ts +15 -1
- package/dist/run/secrecy.js +27 -2
- package/dist/run/serial.d.ts +2 -1
- package/dist/run/serial.js +8 -6
- package/dist/run/sessions.d.ts +0 -1
- package/dist/run/sessions.js +0 -1
- package/dist/run/standalone.d.ts +0 -1
- package/dist/run/standalone.js +3 -3
- package/dist/run/steps.d.ts +2 -9
- package/dist/run/steps.js +7 -22
- package/dist/run/trace-redaction.d.ts +0 -1
- package/dist/run/trace-redaction.js +0 -1
- package/dist/run/unit-runner.d.ts +0 -1
- package/dist/run/unit-runner.js +0 -1
- package/dist/run/units.d.ts +0 -1
- package/dist/run/units.js +0 -1
- package/dist/run/worker/entry.d.ts +0 -1
- package/dist/run/worker/entry.js +7 -7
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +2 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +2 -1
- package/dist/run/worker/session.js +1 -1
- package/dist/run/worker-models.d.ts +0 -1
- package/dist/run/worker-models.js +0 -1
- package/dist/secrets.d.ts +0 -1
- package/dist/secrets.js +0 -1
- package/dist/telemetry/checkout.d.ts +0 -1
- package/dist/telemetry/checkout.js +0 -1
- package/dist/telemetry/environment.d.ts +0 -1
- package/dist/telemetry/environment.js +0 -1
- package/dist/telemetry/events.d.ts +26 -10
- package/dist/telemetry/events.js +108 -13
- package/dist/telemetry/failure-kind.d.ts +0 -1
- package/dist/telemetry/failure-kind.js +0 -1
- package/dist/telemetry/posthog.d.ts +0 -1
- package/dist/telemetry/posthog.js +0 -1
- package/dist/telemetry/project.d.ts +0 -1
- package/dist/telemetry/project.js +0 -1
- package/dist/telemetry/store.d.ts +0 -1
- package/dist/telemetry/store.js +0 -1
- package/dist/telemetry/telemetry.d.ts +19 -8
- package/dist/telemetry/telemetry.js +26 -9
- package/dist/telemetry/token.d.ts +0 -1
- package/dist/telemetry/token.js +0 -1
- package/dist/types.d.ts +34 -26
- package/dist/types.js +0 -1
- package/docs/agents.mdx +6 -3
- package/docs/assertions.mdx +94 -0
- package/docs/authentication.mdx +3 -1
- package/docs/browser.mdx +42 -6
- package/docs/cache.mdx +64 -18
- package/docs/ci.mdx +11 -7
- package/docs/debugging.mdx +6 -3
- package/docs/executors.mdx +5 -3
- package/docs/github.mdx +12 -4
- package/docs/{writing-tests.mdx → goals.mdx} +21 -101
- package/docs/index.mdx +4 -4
- package/docs/integrations/kernel.mdx +1 -1
- package/docs/locators.mdx +64 -0
- package/docs/migrate/cypress.mdx +2 -2
- package/docs/migrate/maestro.mdx +2 -2
- package/docs/migrate/playwright.mdx +22 -16
- package/docs/migrate/selenium.mdx +2 -2
- package/docs/mobile.mdx +61 -4
- package/docs/models.mdx +53 -7
- package/docs/physical-devices.mdx +76 -0
- package/docs/quickstart.mdx +4 -3
- package/docs/reference/app.mdx +1 -1
- package/docs/reference/cli.mdx +30 -11
- package/docs/reference/config.mdx +25 -7
- package/docs/reference/engine.mdx +4 -3
- package/docs/reference/environment.mdx +8 -1
- package/docs/reference/errors.mdx +5 -5
- package/docs/reference/expect.mdx +79 -24
- package/docs/reference/mcp.mdx +3 -0
- package/docs/reference/mobile.mdx +23 -13
- package/docs/reference/reporters.mdx +8 -2
- package/docs/reference/screen.mdx +30 -7
- package/docs/reference/test.mdx +11 -4
- package/docs/reference/web.mdx +131 -23
- package/docs/security.mdx +45 -19
- package/docs/subscriptions.mdx +97 -9
- package/docs/telemetry.mdx +48 -6
- package/package.json +18 -4
- package/schema/report-v1.schema.json +14 -1
- package/skills/e2e/SKILL.md +2 -2
- package/skills/e2e/references/agent.md +22 -11
- package/skills/e2e/references/debugging.md +4 -4
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/running.md +13 -8
- package/skills/e2e/references/setup.md +42 -15
- package/skills/e2e/references/writing-tests.md +43 -15
- package/dist/agent/act-validation.d.ts.map +0 -1
- package/dist/agent/act-validation.js.map +0 -1
- package/dist/agent/act.d.ts.map +0 -1
- package/dist/agent/act.js.map +0 -1
- package/dist/agent/action-dispatcher.d.ts.map +0 -1
- package/dist/agent/action-dispatcher.js.map +0 -1
- package/dist/agent/action-names.d.ts.map +0 -1
- package/dist/agent/action-names.js.map +0 -1
- package/dist/agent/actions.d.ts.map +0 -1
- package/dist/agent/actions.js.map +0 -1
- package/dist/agent/agent-brand.d.ts.map +0 -1
- package/dist/agent/agent-brand.js.map +0 -1
- package/dist/agent/ai-sdk.d.ts.map +0 -1
- package/dist/agent/ai-sdk.js.map +0 -1
- package/dist/agent/call-options.d.ts.map +0 -1
- package/dist/agent/call-options.js.map +0 -1
- package/dist/agent/default-agent.d.ts.map +0 -1
- package/dist/agent/default-agent.js.map +0 -1
- package/dist/agent/derived.d.ts.map +0 -1
- package/dist/agent/derived.js.map +0 -1
- package/dist/agent/error.d.ts.map +0 -1
- package/dist/agent/error.js.map +0 -1
- package/dist/agent/executor.d.ts.map +0 -1
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/interactive-step.d.ts.map +0 -1
- package/dist/agent/interactive-step.js.map +0 -1
- package/dist/agent/invocation.d.ts.map +0 -1
- package/dist/agent/invocation.js.map +0 -1
- package/dist/agent/ledger.d.ts.map +0 -1
- package/dist/agent/ledger.js.map +0 -1
- package/dist/agent/loop-guards.d.ts.map +0 -1
- package/dist/agent/loop-guards.js.map +0 -1
- package/dist/agent/model/adapter.d.ts.map +0 -1
- package/dist/agent/model/adapter.js.map +0 -1
- package/dist/agent/model/overflow.d.ts.map +0 -1
- package/dist/agent/model/overflow.js.map +0 -1
- package/dist/agent/model/provider-hints.d.ts.map +0 -1
- package/dist/agent/model/provider-hints.js.map +0 -1
- package/dist/agent/model/schema.d.ts.map +0 -1
- package/dist/agent/model/schema.js.map +0 -1
- package/dist/agent/model/sdk.d.ts.map +0 -1
- package/dist/agent/model/sdk.js.map +0 -1
- package/dist/agent/model/stall.d.ts.map +0 -1
- package/dist/agent/model/stall.js.map +0 -1
- package/dist/agent/model/tool-choice.d.ts.map +0 -1
- package/dist/agent/model/tool-choice.js.map +0 -1
- package/dist/agent/observation-budget.d.ts.map +0 -1
- package/dist/agent/observation-budget.js.map +0 -1
- package/dist/agent/observation-feed.d.ts.map +0 -1
- package/dist/agent/observation-feed.js.map +0 -1
- package/dist/agent/observation.d.ts.map +0 -1
- package/dist/agent/observation.js.map +0 -1
- package/dist/agent/operation-queue.d.ts.map +0 -1
- package/dist/agent/operation-queue.js.map +0 -1
- package/dist/agent/phases.d.ts.map +0 -1
- package/dist/agent/phases.js.map +0 -1
- package/dist/agent/pixels.d.ts.map +0 -1
- package/dist/agent/pixels.js.map +0 -1
- package/dist/agent/point-tap.d.ts.map +0 -1
- package/dist/agent/point-tap.js.map +0 -1
- package/dist/agent/primitives.d.ts.map +0 -1
- package/dist/agent/primitives.js.map +0 -1
- package/dist/agent/prompts.d.ts.map +0 -1
- package/dist/agent/prompts.js.map +0 -1
- package/dist/agent/protocol.d.ts.map +0 -1
- package/dist/agent/protocol.js.map +0 -1
- package/dist/agent/public.d.ts.map +0 -1
- package/dist/agent/public.js.map +0 -1
- package/dist/agent/reading.d.ts.map +0 -1
- package/dist/agent/reading.js.map +0 -1
- package/dist/agent/replay.d.ts.map +0 -1
- package/dist/agent/replay.js.map +0 -1
- package/dist/agent/screen-update.d.ts.map +0 -1
- package/dist/agent/screen-update.js.map +0 -1
- package/dist/agent/scroll-target.d.ts.map +0 -1
- package/dist/agent/scroll-target.js.map +0 -1
- package/dist/agent/secrets.d.ts.map +0 -1
- package/dist/agent/secrets.js.map +0 -1
- package/dist/agent/settle-policy.d.ts.map +0 -1
- package/dist/agent/settle-policy.js.map +0 -1
- package/dist/agent/step-accounting.d.ts.map +0 -1
- package/dist/agent/step-accounting.js.map +0 -1
- package/dist/agent/step-cache.d.ts.map +0 -1
- package/dist/agent/step-cache.js.map +0 -1
- package/dist/agent/tool-loop.d.ts.map +0 -1
- package/dist/agent/tool-loop.js.map +0 -1
- package/dist/agent/tool-output.d.ts.map +0 -1
- package/dist/agent/tool-output.js.map +0 -1
- package/dist/agent/tool.d.ts.map +0 -1
- package/dist/agent/tool.js.map +0 -1
- package/dist/agent/transcript-compaction.d.ts.map +0 -1
- package/dist/agent/transcript-compaction.js.map +0 -1
- package/dist/agent/upload-paths.d.ts.map +0 -1
- package/dist/agent/upload-paths.js.map +0 -1
- package/dist/agent/usage.d.ts.map +0 -1
- package/dist/agent/usage.js.map +0 -1
- package/dist/cache/anchors.d.ts.map +0 -1
- package/dist/cache/anchors.js.map +0 -1
- package/dist/cache/context.d.ts.map +0 -1
- package/dist/cache/context.js.map +0 -1
- package/dist/cache/decide.d.ts.map +0 -1
- package/dist/cache/decide.js.map +0 -1
- package/dist/cache/identity.d.ts.map +0 -1
- package/dist/cache/identity.js.map +0 -1
- package/dist/cache/recorder.d.ts.map +0 -1
- package/dist/cache/recorder.js.map +0 -1
- package/dist/cache/relocate.d.ts.map +0 -1
- package/dist/cache/relocate.js.map +0 -1
- package/dist/cache/route.d.ts.map +0 -1
- package/dist/cache/route.js.map +0 -1
- package/dist/cache/store.d.ts.map +0 -1
- package/dist/cache/store.js.map +0 -1
- package/dist/cache/template.d.ts.map +0 -1
- package/dist/cache/template.js.map +0 -1
- package/dist/cache/trace.d.ts.map +0 -1
- package/dist/cache/trace.js.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/cache.d.ts.map +0 -1
- package/dist/cli/cache.js.map +0 -1
- package/dist/cli/docs-url.d.ts.map +0 -1
- package/dist/cli/docs-url.js.map +0 -1
- package/dist/cli/feedback.d.ts.map +0 -1
- package/dist/cli/feedback.js.map +0 -1
- package/dist/cli/guide.d.ts.map +0 -1
- package/dist/cli/guide.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/init/agent-skill.d.ts.map +0 -1
- package/dist/cli/init/agent-skill.js.map +0 -1
- package/dist/cli/init/engines.d.ts.map +0 -1
- package/dist/cli/init/engines.js.map +0 -1
- package/dist/cli/init/gateways.d.ts.map +0 -1
- package/dist/cli/init/gateways.js.map +0 -1
- package/dist/cli/init/mcp-config.d.ts.map +0 -1
- package/dist/cli/init/mcp-config.js.map +0 -1
- package/dist/cli/init/package.d.ts.map +0 -1
- package/dist/cli/init/package.js.map +0 -1
- package/dist/cli/init/scaffold.d.ts.map +0 -1
- package/dist/cli/init/scaffold.js.map +0 -1
- package/dist/cli/init/versions.d.ts.map +0 -1
- package/dist/cli/init/versions.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js.map +0 -1
- package/dist/cli/signals.d.ts.map +0 -1
- package/dist/cli/signals.js.map +0 -1
- package/dist/cli/skill.d.ts.map +0 -1
- package/dist/cli/skill.js.map +0 -1
- package/dist/cli/telemetry.d.ts.map +0 -1
- package/dist/cli/telemetry.js.map +0 -1
- package/dist/cli/wordmark.d.ts.map +0 -1
- package/dist/cli/wordmark.js.map +0 -1
- package/dist/collect/collect.d.ts.map +0 -1
- package/dist/collect/collect.js.map +0 -1
- package/dist/collect/registry.d.ts.map +0 -1
- package/dist/collect/registry.js.map +0 -1
- package/dist/collect/select.d.ts.map +0 -1
- package/dist/collect/select.js.map +0 -1
- package/dist/config/agent.d.ts.map +0 -1
- package/dist/config/agent.js.map +0 -1
- package/dist/config/app.d.ts.map +0 -1
- package/dist/config/app.js.map +0 -1
- package/dist/config/command.d.ts.map +0 -1
- package/dist/config/command.js.map +0 -1
- package/dist/config/diagnose.d.ts.map +0 -1
- package/dist/config/diagnose.js.map +0 -1
- package/dist/config/esm-hooks.d.ts.map +0 -1
- package/dist/config/esm-hooks.js.map +0 -1
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js.map +0 -1
- package/dist/config/resolve.d.ts.map +0 -1
- package/dist/config/resolve.js.map +0 -1
- package/dist/config/secrets.d.ts.map +0 -1
- package/dist/config/secrets.js.map +0 -1
- package/dist/config/targets.d.ts.map +0 -1
- package/dist/config/targets.js.map +0 -1
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js.map +0 -1
- package/dist/engine/contract.d.ts.map +0 -1
- package/dist/engine/contract.js.map +0 -1
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/manifest.d.ts.map +0 -1
- package/dist/engine/manifest.js.map +0 -1
- package/dist/engine/recording.d.ts.map +0 -1
- package/dist/engine/recording.js.map +0 -1
- package/dist/engine/resolve.d.ts.map +0 -1
- package/dist/engine/resolve.js.map +0 -1
- package/dist/engine/session.d.ts.map +0 -1
- package/dist/engine/session.js.map +0 -1
- package/dist/engine/surface.d.ts.map +0 -1
- package/dist/engine/surface.js.map +0 -1
- package/dist/engine/timing.d.ts.map +0 -1
- package/dist/engine/timing.js.map +0 -1
- package/dist/expect/async.d.ts.map +0 -1
- package/dist/expect/async.js.map +0 -1
- package/dist/expect/attempt.d.ts.map +0 -1
- package/dist/expect/attempt.js.map +0 -1
- package/dist/expect/index.d.ts.map +0 -1
- package/dist/expect/index.js.map +0 -1
- package/dist/expect/poll.d.ts.map +0 -1
- package/dist/expect/poll.js.map +0 -1
- package/dist/expect/soft.d.ts.map +0 -1
- package/dist/expect/soft.js.map +0 -1
- package/dist/expect/values.d.ts.map +0 -1
- package/dist/expect/values.js.map +0 -1
- package/dist/explore/body.d.ts.map +0 -1
- package/dist/explore/body.js.map +0 -1
- package/dist/explore/executor.d.ts.map +0 -1
- package/dist/explore/executor.js.map +0 -1
- package/dist/explore/index.d.ts.map +0 -1
- package/dist/explore/index.js.map +0 -1
- package/dist/explore/plan.d.ts.map +0 -1
- package/dist/explore/plan.js.map +0 -1
- package/dist/explore/progress.d.ts.map +0 -1
- package/dist/explore/progress.js.map +0 -1
- package/dist/explore/state.d.ts.map +0 -1
- package/dist/explore/state.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/ai-trace.d.ts.map +0 -1
- package/dist/internal/ai-trace.js.map +0 -1
- package/dist/internal/atomic-write.d.ts.map +0 -1
- package/dist/internal/atomic-write.js.map +0 -1
- package/dist/internal/brands.d.ts.map +0 -1
- package/dist/internal/brands.js.map +0 -1
- package/dist/internal/debug.d.ts.map +0 -1
- package/dist/internal/debug.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/errors.d.ts.map +0 -1
- package/dist/internal/errors.js.map +0 -1
- package/dist/internal/geometry.d.ts.map +0 -1
- package/dist/internal/geometry.js.map +0 -1
- package/dist/internal/git.d.ts.map +0 -1
- package/dist/internal/git.js.map +0 -1
- package/dist/internal/globs.d.ts.map +0 -1
- package/dist/internal/globs.js.map +0 -1
- package/dist/internal/ids.d.ts.map +0 -1
- package/dist/internal/ids.js.map +0 -1
- package/dist/internal/json-value.d.ts.map +0 -1
- package/dist/internal/json-value.js.map +0 -1
- package/dist/internal/keys.d.ts.map +0 -1
- package/dist/internal/keys.js.map +0 -1
- package/dist/internal/node-version.d.ts.map +0 -1
- package/dist/internal/node-version.js.map +0 -1
- package/dist/internal/objects.d.ts.map +0 -1
- package/dist/internal/objects.js.map +0 -1
- package/dist/internal/options.d.ts.map +0 -1
- package/dist/internal/options.js.map +0 -1
- package/dist/internal/package-manager.d.ts.map +0 -1
- package/dist/internal/package-manager.js.map +0 -1
- package/dist/internal/package-version.d.ts.map +0 -1
- package/dist/internal/package-version.js.map +0 -1
- package/dist/internal/paths.d.ts.map +0 -1
- package/dist/internal/paths.js.map +0 -1
- package/dist/internal/realm-slot.d.ts.map +0 -1
- package/dist/internal/realm-slot.js.map +0 -1
- package/dist/internal/recording-modes.d.ts.map +0 -1
- package/dist/internal/recording-modes.js.map +0 -1
- package/dist/internal/redact.d.ts.map +0 -1
- package/dist/internal/redact.js.map +0 -1
- package/dist/internal/regexp.d.ts.map +0 -1
- package/dist/internal/regexp.js.map +0 -1
- package/dist/internal/roles.d.ts.map +0 -1
- package/dist/internal/roles.js.map +0 -1
- package/dist/internal/skip.d.ts.map +0 -1
- package/dist/internal/skip.js.map +0 -1
- package/dist/internal/source.d.ts.map +0 -1
- package/dist/internal/source.js.map +0 -1
- package/dist/internal/standard-schema.d.ts.map +0 -1
- package/dist/internal/standard-schema.js.map +0 -1
- package/dist/internal/suggest.d.ts.map +0 -1
- package/dist/internal/suggest.js.map +0 -1
- package/dist/internal/text.d.ts.map +0 -1
- package/dist/internal/text.js.map +0 -1
- package/dist/internal/time.d.ts.map +0 -1
- package/dist/internal/time.js.map +0 -1
- package/dist/internal/urls.d.ts.map +0 -1
- package/dist/internal/urls.js.map +0 -1
- package/dist/internal/vcs.d.ts.map +0 -1
- package/dist/internal/vcs.js.map +0 -1
- package/dist/internal/zip.d.ts.map +0 -1
- package/dist/internal/zip.js.map +0 -1
- package/dist/locator/engine.d.ts.map +0 -1
- package/dist/locator/engine.js.map +0 -1
- package/dist/locator/expression.d.ts.map +0 -1
- package/dist/locator/expression.js.map +0 -1
- package/dist/locator/screen.d.ts.map +0 -1
- package/dist/locator/screen.js.map +0 -1
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/recording.d.ts.map +0 -1
- package/dist/mcp/recording.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/sessions.d.ts.map +0 -1
- package/dist/mcp/sessions.js.map +0 -1
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js.map +0 -1
- package/dist/oauth/callback-server.d.ts.map +0 -1
- package/dist/oauth/callback-server.js.map +0 -1
- package/dist/oauth/chatgpt.d.ts.map +0 -1
- package/dist/oauth/chatgpt.js.map +0 -1
- package/dist/oauth/cli.d.ts.map +0 -1
- package/dist/oauth/cli.js.map +0 -1
- package/dist/oauth/copilot.d.ts.map +0 -1
- package/dist/oauth/copilot.js.map +0 -1
- package/dist/oauth/device-code.d.ts.map +0 -1
- package/dist/oauth/device-code.js.map +0 -1
- package/dist/oauth/errors.d.ts.map +0 -1
- package/dist/oauth/errors.js.map +0 -1
- package/dist/oauth/fetch.d.ts.map +0 -1
- package/dist/oauth/fetch.js.map +0 -1
- package/dist/oauth/grok.d.ts.map +0 -1
- package/dist/oauth/grok.js.map +0 -1
- package/dist/oauth/jwt.d.ts.map +0 -1
- package/dist/oauth/jwt.js.map +0 -1
- package/dist/oauth/login.d.ts.map +0 -1
- package/dist/oauth/login.js.map +0 -1
- package/dist/oauth/models.d.ts.map +0 -1
- package/dist/oauth/models.js.map +0 -1
- package/dist/oauth/pkce.d.ts.map +0 -1
- package/dist/oauth/pkce.js.map +0 -1
- package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
- package/dist/oauth/providers/github-copilot.js.map +0 -1
- package/dist/oauth/providers/openai.d.ts.map +0 -1
- package/dist/oauth/providers/openai.js.map +0 -1
- package/dist/oauth/providers/xai.d.ts.map +0 -1
- package/dist/oauth/providers/xai.js.map +0 -1
- package/dist/oauth/providers.d.ts.map +0 -1
- package/dist/oauth/providers.js.map +0 -1
- package/dist/oauth/sse.d.ts.map +0 -1
- package/dist/oauth/sse.js.map +0 -1
- package/dist/oauth/store.d.ts.map +0 -1
- package/dist/oauth/store.js.map +0 -1
- package/dist/oauth/token-endpoint.d.ts.map +0 -1
- package/dist/oauth/token-endpoint.js.map +0 -1
- package/dist/oauth/types.d.ts.map +0 -1
- package/dist/oauth/types.js.map +0 -1
- package/dist/params.d.ts.map +0 -1
- package/dist/params.js.map +0 -1
- package/dist/report/build.d.ts.map +0 -1
- package/dist/report/build.js.map +0 -1
- package/dist/report/builtin.d.ts.map +0 -1
- package/dist/report/builtin.js.map +0 -1
- package/dist/report/code-frame.d.ts.map +0 -1
- package/dist/report/code-frame.js.map +0 -1
- package/dist/report/debug-steps.d.ts.map +0 -1
- package/dist/report/debug-steps.js.map +0 -1
- package/dist/report/explore-text.d.ts.map +0 -1
- package/dist/report/explore-text.js.map +0 -1
- package/dist/report/failure-text.d.ts.map +0 -1
- package/dist/report/failure-text.js.map +0 -1
- package/dist/report/format.d.ts.map +0 -1
- package/dist/report/format.js.map +0 -1
- package/dist/report/json.d.ts.map +0 -1
- package/dist/report/json.js.map +0 -1
- package/dist/report/junit.d.ts.map +0 -1
- package/dist/report/junit.js.map +0 -1
- package/dist/report/list-explore.d.ts.map +0 -1
- package/dist/report/list-explore.js.map +0 -1
- package/dist/report/list-model.d.ts.map +0 -1
- package/dist/report/list-model.js.map +0 -1
- package/dist/report/list-steps.d.ts.map +0 -1
- package/dist/report/list-steps.js.map +0 -1
- package/dist/report/list.d.ts.map +0 -1
- package/dist/report/list.js.map +0 -1
- package/dist/report/live-window.d.ts.map +0 -1
- package/dist/report/live-window.js.map +0 -1
- package/dist/report/markdown-text.d.ts.map +0 -1
- package/dist/report/markdown-text.js.map +0 -1
- package/dist/report/markdown.d.ts.map +0 -1
- package/dist/report/markdown.js.map +0 -1
- package/dist/report/outcome.d.ts.map +0 -1
- package/dist/report/outcome.js.map +0 -1
- package/dist/report/repeats.d.ts.map +0 -1
- package/dist/report/repeats.js.map +0 -1
- package/dist/report/running-tree.d.ts.map +0 -1
- package/dist/report/running-tree.js.map +0 -1
- package/dist/report/write.d.ts.map +0 -1
- package/dist/report/write.js.map +0 -1
- package/dist/run/app-ports.d.ts.map +0 -1
- package/dist/run/app-ports.js.map +0 -1
- package/dist/run/artifacts.d.ts.map +0 -1
- package/dist/run/artifacts.js.map +0 -1
- package/dist/run/budget.d.ts.map +0 -1
- package/dist/run/budget.js.map +0 -1
- package/dist/run/declared-processes.d.ts.map +0 -1
- package/dist/run/declared-processes.js.map +0 -1
- package/dist/run/events.d.ts.map +0 -1
- package/dist/run/events.js.map +0 -1
- package/dist/run/execute.d.ts.map +0 -1
- package/dist/run/execute.js.map +0 -1
- package/dist/run/extended-fixtures.d.ts.map +0 -1
- package/dist/run/extended-fixtures.js.map +0 -1
- package/dist/run/failure-evidence.d.ts.map +0 -1
- package/dist/run/failure-evidence.js.map +0 -1
- package/dist/run/fixture-recording.d.ts.map +0 -1
- package/dist/run/fixture-recording.js.map +0 -1
- package/dist/run/fixtures.d.ts.map +0 -1
- package/dist/run/fixtures.js.map +0 -1
- package/dist/run/in-process.d.ts.map +0 -1
- package/dist/run/in-process.js.map +0 -1
- package/dist/run/last-run.d.ts.map +0 -1
- package/dist/run/last-run.js.map +0 -1
- package/dist/run/managed-process.d.ts.map +0 -1
- package/dist/run/managed-process.js.map +0 -1
- package/dist/run/output.d.ts.map +0 -1
- package/dist/run/output.js.map +0 -1
- package/dist/run/process-pool.d.ts.map +0 -1
- package/dist/run/process-pool.js.map +0 -1
- package/dist/run/provision.d.ts.map +0 -1
- package/dist/run/provision.js.map +0 -1
- package/dist/run/realm.d.ts.map +0 -1
- package/dist/run/realm.js.map +0 -1
- package/dist/run/records.d.ts.map +0 -1
- package/dist/run/records.js.map +0 -1
- package/dist/run/retry.d.ts.map +0 -1
- package/dist/run/retry.js.map +0 -1
- package/dist/run/runner.d.ts.map +0 -1
- package/dist/run/runner.js.map +0 -1
- package/dist/run/scheduler.d.ts.map +0 -1
- package/dist/run/scheduler.js.map +0 -1
- package/dist/run/secrecy.d.ts.map +0 -1
- package/dist/run/secrecy.js.map +0 -1
- package/dist/run/serial.d.ts.map +0 -1
- package/dist/run/serial.js.map +0 -1
- package/dist/run/sessions.d.ts.map +0 -1
- package/dist/run/sessions.js.map +0 -1
- package/dist/run/standalone.d.ts.map +0 -1
- package/dist/run/standalone.js.map +0 -1
- package/dist/run/steps.d.ts.map +0 -1
- package/dist/run/steps.js.map +0 -1
- package/dist/run/trace-redaction.d.ts.map +0 -1
- package/dist/run/trace-redaction.js.map +0 -1
- package/dist/run/unit-runner.d.ts.map +0 -1
- package/dist/run/unit-runner.js.map +0 -1
- package/dist/run/units.d.ts.map +0 -1
- package/dist/run/units.js.map +0 -1
- package/dist/run/worker/entry.d.ts.map +0 -1
- package/dist/run/worker/entry.js.map +0 -1
- package/dist/run/worker/handle.d.ts.map +0 -1
- package/dist/run/worker/handle.js.map +0 -1
- package/dist/run/worker/protocol.d.ts.map +0 -1
- package/dist/run/worker/protocol.js.map +0 -1
- package/dist/run/worker/session.d.ts.map +0 -1
- package/dist/run/worker/session.js.map +0 -1
- package/dist/run/worker-models.d.ts.map +0 -1
- package/dist/run/worker-models.js.map +0 -1
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/telemetry/checkout.d.ts.map +0 -1
- package/dist/telemetry/checkout.js.map +0 -1
- package/dist/telemetry/environment.d.ts.map +0 -1
- package/dist/telemetry/environment.js.map +0 -1
- package/dist/telemetry/events.d.ts.map +0 -1
- package/dist/telemetry/events.js.map +0 -1
- package/dist/telemetry/failure-kind.d.ts.map +0 -1
- package/dist/telemetry/failure-kind.js.map +0 -1
- package/dist/telemetry/posthog.d.ts.map +0 -1
- package/dist/telemetry/posthog.js.map +0 -1
- package/dist/telemetry/project.d.ts.map +0 -1
- package/dist/telemetry/project.js.map +0 -1
- package/dist/telemetry/store.d.ts.map +0 -1
- package/dist/telemetry/store.js.map +0 -1
- package/dist/telemetry/telemetry.d.ts.map +0 -1
- package/dist/telemetry/telemetry.js.map +0 -1
- package/dist/telemetry/token.d.ts.map +0 -1
- package/dist/telemetry/token.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
package/docs/reference/web.mdx
CHANGED
|
@@ -7,9 +7,10 @@ description: The browser engine, its options, and the browser fixture it contrib
|
|
|
7
7
|
A web target names it as its engine, and it contributes the `browser` fixture for
|
|
8
8
|
browser-only work. Import `test` from the package to have `browser` typed.
|
|
9
9
|
|
|
10
|
-
The package
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
The package depends on `playwright-core` pinned to an exact version, so the
|
|
11
|
+
engine always runs the Playwright it was tested against. An app that depends
|
|
12
|
+
on Playwright itself keeps its own copy; the two share a browser cache only
|
|
13
|
+
when their versions match.
|
|
13
14
|
|
|
14
15
|
```ts title="e2e.config.ts"
|
|
15
16
|
import type { E2EConfig } from 'e2e';
|
|
@@ -20,6 +21,31 @@ export default {
|
|
|
20
21
|
} satisfies E2EConfig;
|
|
21
22
|
```
|
|
22
23
|
|
|
24
|
+
## Installing browsers
|
|
25
|
+
|
|
26
|
+
A missing browser downloads once per run, before the run's clock starts. To
|
|
27
|
+
install browsers as their own step, in CI or a container image, run the
|
|
28
|
+
package's command. It installs the browsers for the Playwright version the
|
|
29
|
+
engine pins:
|
|
30
|
+
|
|
31
|
+
<CodeGroup>
|
|
32
|
+
```bash npm
|
|
33
|
+
npx @e2e-dev/web install chromium --with-deps
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```bash pnpm
|
|
37
|
+
pnpm exec e2e-web install chromium --with-deps
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```bash bun
|
|
41
|
+
bunx @e2e-dev/web install chromium --with-deps
|
|
42
|
+
```
|
|
43
|
+
</CodeGroup>
|
|
44
|
+
|
|
45
|
+
Name any of `chromium`, `firefox`, and `webkit`; with none named it installs
|
|
46
|
+
`chromium`. `--with-deps` also installs the system libraries the browsers need
|
|
47
|
+
on Linux. The command exits with the installer's exit code.
|
|
48
|
+
|
|
23
49
|
## Options
|
|
24
50
|
|
|
25
51
|
```ts
|
|
@@ -82,8 +108,27 @@ export interface WebOptions {
|
|
|
82
108
|
* (`connect.reconnectEndpoint`, or a provider with `scope: 'attempt'`).
|
|
83
109
|
*/
|
|
84
110
|
readonly userAgent?: string;
|
|
111
|
+
/**
|
|
112
|
+
* The locale every attempt's context runs in, a BCP 47 tag such as
|
|
113
|
+
* `de-DE`: what `navigator.language`, `Intl` formatting, and the
|
|
114
|
+
* `Accept-Language` header report. Defaults to the browser's own. An
|
|
115
|
+
* `accept-language` entry in `headers` beside it is `INVALID_CONFIG`, and
|
|
116
|
+
* so is a persistent context.
|
|
117
|
+
*/
|
|
118
|
+
readonly locale?: string;
|
|
119
|
+
/**
|
|
120
|
+
* The IANA time zone every attempt's context runs in, such as
|
|
121
|
+
* `Europe/Berlin`: what `Date` and `Intl` resolve local time against.
|
|
122
|
+
* Defaults to the machine's. A persistent context is `INVALID_CONFIG`.
|
|
123
|
+
*/
|
|
124
|
+
readonly timezoneId?: string;
|
|
125
|
+
/** Scripts every document runs before the page's own. See [Init scripts](#init-scripts). */
|
|
126
|
+
readonly initScripts?: readonly WebInitScript[];
|
|
85
127
|
}
|
|
86
128
|
|
|
129
|
+
/** JavaScript source, a file relative to the project root, or a function. */
|
|
130
|
+
export type WebInitScript = string | { readonly path: string } | (() => unknown);
|
|
131
|
+
|
|
87
132
|
/** The engine's screencast of the page: the frame size and the JPEG quality of the frames it encodes. */
|
|
88
133
|
export interface WebScreencastOptions {
|
|
89
134
|
/** Frame size in pixels; default the viewport's, or the window's under `viewport: null`. A smaller size makes a smaller file. */
|
|
@@ -180,7 +225,7 @@ recording resume, but a segment lost during the disconnect cannot be recovered.
|
|
|
180
225
|
Code using `surfaceOf(engine)` must read its accessors again after recovery;
|
|
181
226
|
previously retained Playwright objects belong to the disconnected transport.
|
|
182
227
|
|
|
183
|
-
Persistent recovery does not support `headers`, `basicAuth`, `userAgent`, `app.clearState`,
|
|
228
|
+
Persistent recovery does not support `headers`, `basicAuth`, `userAgent`, `locale`, `timezoneId`, `app.clearState`,
|
|
184
229
|
or session state capture and restore. `app.restart` remains available. Omit
|
|
185
230
|
`reconnectEndpoint` to keep ordinary isolated contexts and the existing behavior.
|
|
186
231
|
A `browser` provider with `scope: 'attempt'` rides the same persistent
|
|
@@ -202,7 +247,7 @@ a page acts on that tab: `goto`, `reload`, `back`, `forward`, `url`, `title`,
|
|
|
202
247
|
`waitForURL`, `locator`, `frameLocator`, `evaluate`, `waitForResponse`,
|
|
203
248
|
`waitForDownload`, `keyboard`, `mouse`, the `expect(browser)` matchers, and
|
|
204
249
|
every `screen` query. What belongs to the browser covers every tab:
|
|
205
|
-
`cookies`, `setCookies`, `route`, `unroute`, and `
|
|
250
|
+
`cookies`, `setCookies`, `route`, `unroute`, `onDialog`, and `addInitScript`. `setViewport`
|
|
206
251
|
sizes the active tab and every tab opened after it.
|
|
207
252
|
|
|
208
253
|
A tab the app opens itself, from a `target="_blank"` link or `window.open`,
|
|
@@ -253,6 +298,10 @@ export interface Browser extends Expectable<BrowserExpectation> {
|
|
|
253
298
|
fn: string | ((arg: Arg) => T | Promise<T>),
|
|
254
299
|
arg: Arg,
|
|
255
300
|
): Promise<T>;
|
|
301
|
+
/** Adds a script every document runs before the page's own, from the next navigation on. */
|
|
302
|
+
addInitScript(script: string | { path: string } | (() => unknown)): Promise<void>;
|
|
303
|
+
/** Adds an init script function called with one JSON argument. */
|
|
304
|
+
addInitScript<Arg extends JsonValue>(script: (arg: Arg) => unknown, arg: Arg): Promise<void>;
|
|
256
305
|
/** Adds an attempt-scoped network route. */
|
|
257
306
|
route(
|
|
258
307
|
pattern: string | RegExp,
|
|
@@ -308,7 +357,7 @@ export interface Browser extends Expectable<BrowserExpectation> {
|
|
|
308
357
|
| `goto`, `reload`, `back`, `forward` | `config.timeout`, 120000 ms, the same budget `app.open()` uses; `{ timeout }` overrides, capped by the test deadline |
|
|
309
358
|
| `waitForResponse`, `waitForDownload` | `config.actionTimeout`, 30000 ms; `{ timeout }` overrides, capped by the test deadline |
|
|
310
359
|
| `waitForURL` | `config.assertionTimeout`, 5000 ms |
|
|
311
|
-
| `url`, `title`, `evaluate`, `route`, `unroute`, `cookies`, `setCookies`, `setViewport`, `onDialog`, `keyboard.*`, `mouse.*` | `config.actionTimeout`, 30000 ms, not overridable |
|
|
360
|
+
| `url`, `title`, `evaluate`, `addInitScript`, `route`, `unroute`, `cookies`, `setCookies`, `setViewport`, `onDialog`, `keyboard.*`, `mouse.*` | `config.actionTimeout`, 30000 ms, not overridable |
|
|
312
361
|
|
|
313
362
|
Every `browser` call is a recorded `browser.<method>` step, except `locator` and
|
|
314
363
|
`frameLocator`: they build a locator without touching the page, and the
|
|
@@ -319,10 +368,12 @@ in a suite that also runs on other platforms.
|
|
|
319
368
|
### Navigation
|
|
320
369
|
|
|
321
370
|
`goto` defaults `waitUntil` to `'load'` and throws `POLICY_DENIED` for a
|
|
322
|
-
|
|
371
|
+
URL whose scheme is not `http:` or `https:` (`about:blank` is admitted). `waitForURL` polls every 100 ms; a
|
|
323
372
|
relative string resolves against the base URL and matches exactly after
|
|
324
373
|
normalization, a `RegExp` tests the full URL, anything else (a predicate
|
|
325
|
-
function, say) is `INVALID_ARGUMENT`, and a timeout is `ASSERTION_FAILED`.
|
|
374
|
+
function, say) is `INVALID_ARGUMENT`, and a timeout is `ASSERTION_FAILED`. It
|
|
375
|
+
takes `timeout` only: another key, such as Playwright's `waitUntil`, is
|
|
376
|
+
`INVALID_ARGUMENT`. The other navigations throw `ACTION_FAILED`.
|
|
326
377
|
|
|
327
378
|
```ts
|
|
328
379
|
await browser.goto('/dashboard', { waitUntil: 'networkidle' });
|
|
@@ -337,7 +388,9 @@ await browser.waitForURL(/\/orders\/\d+$/, { timeout: 15_000 });
|
|
|
337
388
|
The selector is a Playwright selector: CSS by default, XPath with `xpath=` or
|
|
338
389
|
a leading `//`, and `>>` chains, so
|
|
339
390
|
`browser.locator('[data-testid="row"] >> nth=2 >> [data-testid="conditions"] > div')`
|
|
340
|
-
scopes CSS to one row.
|
|
391
|
+
scopes CSS to one row. A `*` capture before the last part
|
|
392
|
+
(`*css=article >> text=Hello`) is `INVALID_LOCATOR`: use
|
|
393
|
+
`filter({ has })` for an element that contains another.
|
|
341
394
|
|
|
342
395
|
```ts
|
|
343
396
|
const payment = browser.frameLocator('#payment-frame');
|
|
@@ -387,16 +440,49 @@ const flag = await browser.evaluate(
|
|
|
387
440
|
);
|
|
388
441
|
```
|
|
389
442
|
|
|
443
|
+
### Init scripts
|
|
444
|
+
|
|
445
|
+
An init script runs in every document before the page's own scripts, in every
|
|
446
|
+
tab and frame. `web({ initScripts })` applies to every test;
|
|
447
|
+
`browser.addInitScript` adds one for the rest of the test.
|
|
448
|
+
|
|
449
|
+
A script is JavaScript source, a `{ path }` relative to the project root, or a
|
|
450
|
+
function. A function cannot close over test variables; pass a JSON `arg`
|
|
451
|
+
instead.
|
|
452
|
+
|
|
453
|
+
```ts
|
|
454
|
+
await browser.addInitScript((value) => { Math.random = () => value; }, 0.5);
|
|
455
|
+
await app.open('/raffle');
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
A script added after the page opened runs from the next navigation or reload.
|
|
459
|
+
|
|
390
460
|
### Routing
|
|
391
461
|
|
|
392
462
|
`route`, `unroute`, and `waitForResponse` take a string pattern (`*` within a
|
|
393
463
|
path segment, `**` across `/`) or a `RegExp`, both tested against the full
|
|
394
464
|
URL; a predicate function is `INVALID_ARGUMENT`. A route survives
|
|
395
465
|
`app.restart()`, `app.clearState()`, and session restore.
|
|
396
|
-
The handler must decide exactly once with `fulfill`, `continue`,
|
|
397
|
-
deciding twice or not at all is `ACTION_FAILED
|
|
398
|
-
|
|
399
|
-
|
|
466
|
+
The handler must decide exactly once with `fulfill`, `continue`, `fallback`,
|
|
467
|
+
or `abort`; deciding twice or not at all is `ACTION_FAILED`. Routes run newest
|
|
468
|
+
first. `continue` sends the request to the network and no other route sees
|
|
469
|
+
it; its `url` resolves against the base URL and goes through the same rule as
|
|
470
|
+
`goto`, so a forbidden scheme is `POLICY_DENIED`, and it must keep the
|
|
471
|
+
request's scheme. `headers` replaces every request header. The configured
|
|
472
|
+
`headers` still ride a continued request bound for the app's site, and only
|
|
473
|
+
that site. `fallback` hands the request to the route registered before this
|
|
474
|
+
one, or the network when none matches. `fulfill` takes one of `json`, `body`,
|
|
475
|
+
or `path`, a file relative to the project root whose extension sets the
|
|
476
|
+
`Content-Type` unless `contentType` or a `content-type` header does. An option
|
|
477
|
+
a decision does not take (Playwright's `abort(errorCode)`, a misspelled key) is
|
|
478
|
+
`INVALID_ARGUMENT`: the request is aborted and the next step fails.
|
|
479
|
+
|
|
480
|
+
A `waitForResponse` that nothing matches inside the deadline is
|
|
481
|
+
`ACTION_FAILED`. The deadline bounds the match: the response resolves as soon
|
|
482
|
+
as its headers arrive, and `text()` and `json()` wait for the body on a budget
|
|
483
|
+
of their own, `config.actionTimeout` capped by the test deadline; a body still
|
|
484
|
+
streaming when it runs out is `ACTION_FAILED`. `url`, `status`, and `headers`
|
|
485
|
+
are always readable, and a body the
|
|
400
486
|
browser could not read (a connection reset short of the declared
|
|
401
487
|
`Content-Length`, a request the page aborted, or a redirect, whose body the
|
|
402
488
|
browser never keeps) rejects `text()` and `json()` with `ACTION_FAILED`
|
|
@@ -417,16 +503,35 @@ expect(response.status).toBe(201);
|
|
|
417
503
|
```
|
|
418
504
|
|
|
419
505
|
```ts
|
|
420
|
-
/**
|
|
506
|
+
/**
|
|
507
|
+
* One of `json`, `body`, or `path`, or none for an empty body. `path` names a
|
|
508
|
+
* file relative to the project root; its `Content-Type` follows its
|
|
509
|
+
* extension unless `contentType` or a `content-type` header sets one.
|
|
510
|
+
*/
|
|
421
511
|
export type RouteFulfillResponse = {
|
|
422
512
|
status?: number;
|
|
423
513
|
headers?: Record<string, string>;
|
|
514
|
+
/** Sets the `Content-Type` response header. */
|
|
515
|
+
contentType?: string;
|
|
424
516
|
} & (
|
|
425
|
-
| { json: JsonValue; body?: never }
|
|
426
|
-
| { body: string; json?: never }
|
|
427
|
-
| {
|
|
517
|
+
| { json: JsonValue; body?: never; path?: never }
|
|
518
|
+
| { body: string; json?: never; path?: never }
|
|
519
|
+
| { path: string; json?: never; body?: never }
|
|
520
|
+
| { body?: never; json?: never; path?: never }
|
|
428
521
|
);
|
|
429
522
|
|
|
523
|
+
/** What `continue` changes about the request before it goes to the network. */
|
|
524
|
+
export interface RouteContinueOverrides {
|
|
525
|
+
/** Resolved against the base URL like `goto`; must keep the request's scheme. */
|
|
526
|
+
url?: string;
|
|
527
|
+
/** Request method. */
|
|
528
|
+
method?: string;
|
|
529
|
+
/** Replaces every request header; the configured `headers` for the app's site are added on top. */
|
|
530
|
+
headers?: Record<string, string>;
|
|
531
|
+
/** Request body. */
|
|
532
|
+
postData?: string;
|
|
533
|
+
}
|
|
534
|
+
|
|
430
535
|
export interface WebRoute {
|
|
431
536
|
/** The intercepted request. */
|
|
432
537
|
readonly request: {
|
|
@@ -437,8 +542,10 @@ export interface WebRoute {
|
|
|
437
542
|
};
|
|
438
543
|
/** Fulfills the intercepted request once. */
|
|
439
544
|
fulfill(response: RouteFulfillResponse): Promise<void>;
|
|
440
|
-
/**
|
|
441
|
-
continue(): Promise<void>;
|
|
545
|
+
/** Sends the intercepted request to the network once, skipping every other route. */
|
|
546
|
+
continue(overrides?: RouteContinueOverrides): Promise<void>;
|
|
547
|
+
/** Hands the intercepted request to the route registered before this one, or the network when none matches. */
|
|
548
|
+
fallback(): Promise<void>;
|
|
442
549
|
/** Aborts the intercepted request once. */
|
|
443
550
|
abort(): Promise<void>;
|
|
444
551
|
}
|
|
@@ -450,9 +557,9 @@ export interface WebResponse {
|
|
|
450
557
|
readonly status: number;
|
|
451
558
|
/** Response headers, lower-cased names. */
|
|
452
559
|
readonly headers: Readonly<Record<string, string>>;
|
|
453
|
-
/**
|
|
560
|
+
/** Waits for the body and parses it as JSON. */
|
|
454
561
|
json<T = unknown>(): Promise<T>;
|
|
455
|
-
/**
|
|
562
|
+
/** Waits for the body and reads it as text. */
|
|
456
563
|
text(): Promise<string>;
|
|
457
564
|
}
|
|
458
565
|
```
|
|
@@ -460,7 +567,8 @@ export interface WebResponse {
|
|
|
460
567
|
### Cookies and viewport
|
|
461
568
|
|
|
462
569
|
`setCookies` validates every cookie before setting any; an unparseable
|
|
463
|
-
target or a forbidden scheme is `POLICY_DENIED` and nothing is set.
|
|
570
|
+
target or a forbidden scheme is `POLICY_DENIED` and nothing is set. A
|
|
571
|
+
relative `url` resolves against the base URL, as `goto` resolves it. For the
|
|
464
572
|
`domain` form the scheme follows the base URL and a leading `.` is stripped.
|
|
465
573
|
`setViewport` records the new size on the report. It works before the first
|
|
466
574
|
navigation too, as Playwright's `setViewportSize` does: the next `app.open`
|
|
@@ -582,7 +690,7 @@ cannot reuse node IDs or publish handles over a newer observation.
|
|
|
582
690
|
`BrowserProvider`, `BrowserProviderScope`, `BrowserRequest`, `BrowserLease`,
|
|
583
691
|
`BrowserReleaseContext`, `BrowserProviderDownloads`, `BrowserDownloadContext`,
|
|
584
692
|
`PlaywrightLiveSurface`, `Browser`, `FrameScreen`,
|
|
585
|
-
`BrowserExpectation`, `WebRoute`, `RouteFulfillResponse`, `WebResponse`,
|
|
693
|
+
`BrowserExpectation`, `WebRoute`, `RouteFulfillResponse`, `RouteContinueOverrides`, `WebResponse`,
|
|
586
694
|
`Cookie`, `CookieFields`, `Dialog`, and `DialogHandler` are exported from the
|
|
587
695
|
package for typing config helpers and fixtures. The runtime exports are
|
|
588
696
|
`web`, [`surfaceOf`](#surfaceof), and `test`, `describe`, `beforeEach`,
|
package/docs/security.mdx
CHANGED
|
@@ -48,7 +48,7 @@ A tool call that breaks a rule fails with `POLICY_DENIED`:
|
|
|
48
48
|
|
|
49
49
|
| Denied | Why |
|
|
50
50
|
| --- | --- |
|
|
51
|
-
| Navigation to `file:`, `data:`,
|
|
51
|
+
| Navigation to any scheme but `http:` and `https:`, other than `about:blank` | `file:`, `data:`, `javascript:`, and wrappers such as `view-source:file:` would load local or inline content. |
|
|
52
52
|
| A malformed URL | Nothing is repaired. |
|
|
53
53
|
| A `Secret` reaching a JSON sink | Handles carry no value, and no value may be serialized. |
|
|
54
54
|
| Reading a value, text, or attribute from a secure field, with a getter or a `toHaveValue`, `toHaveText`, `toContainText`, or `toHaveAttribute` matcher | Assert the outcome, not the secret. A withheld value is redacted, not empty or absent. |
|
|
@@ -77,10 +77,12 @@ list. Shared hosting domains such as `vercel.app` count as one site, so
|
|
|
77
77
|
headers can reach other hosts under that domain. `basicAuth` is broader:
|
|
78
78
|
it answers a `401` challenge from any origin.
|
|
79
79
|
|
|
80
|
-
The runner checks
|
|
81
|
-
agent's `navigate` verb
|
|
82
|
-
`
|
|
83
|
-
|
|
80
|
+
The runner checks the scheme on explicit navigation. `app.open`,
|
|
81
|
+
`browser.goto`, and the agent's `navigate` verb admit `http:`, `https:`,
|
|
82
|
+
and the exact `about:blank`. A device link may use an app's custom scheme, so `device.openLink`
|
|
83
|
+
refuses a list instead: `file:`, `data:`, `javascript:`, `view-source:`,
|
|
84
|
+
`blob:`, and `filesystem:`. `device.openApp` and the `open_app` tool take an
|
|
85
|
+
app id and refuse a link, since the device would open one as a URL. The runner does not re-check redirects or attach to popup
|
|
84
86
|
pages. Register `browser.onDialog` to handle browser dialogs.
|
|
85
87
|
|
|
86
88
|
## Secrets
|
|
@@ -130,13 +132,28 @@ password on screen is not masked in pixels.
|
|
|
130
132
|
The runner replaces every occurrence of a registered secret value with
|
|
131
133
|
`<secret:name>` in model input, reports, a worker process's console output,
|
|
132
134
|
and the trace text of a session a secret was filled on or an engine option
|
|
133
|
-
holds.
|
|
135
|
+
holds. That includes a value the test passes as a plain string rather than
|
|
136
|
+
a `secrets.get()` handle: test and `describe` titles, step labels (an
|
|
137
|
+
`app.open` URL, a locator's text), an `agent.act` or `agent.assert`
|
|
138
|
+
instruction, the strings in `agent.act` params, `agentContext`, and an
|
|
139
|
+
`e2e explore` goal. Titles are redacted as the test file is collected, so
|
|
140
|
+
the test id, `--grep`, the reporters, and the artifact and failure-page file
|
|
141
|
+
names all see `<secret:name>`, and two titles in one file that differ only
|
|
142
|
+
in a secret value are a duplicate title path. A custom executor's
|
|
143
|
+
`ctx.step` and the built-in agent's prompt carry the marker, so only a
|
|
144
|
+
handle can type the real value.
|
|
145
|
+
|
|
146
|
+
Matching covers the value as written, JSON-escaped, HTML-escaped, and
|
|
134
147
|
percent-encoded, in any letter case (so a CSS `text-transform` does not hide
|
|
135
148
|
it), and with its whitespace collapsed. Text cut at a length limit is masked
|
|
136
149
|
too when it ends with the first 8 or more characters of a value (half of a
|
|
137
|
-
value shorter than 16)
|
|
138
|
-
|
|
139
|
-
|
|
150
|
+
value shorter than 16), as written or with its whitespace collapsed, the way
|
|
151
|
+
an engine collapses text before it cuts it. Every string of the observed
|
|
152
|
+
screen, names, text, values, test ids, attributes, selectors, and frame
|
|
153
|
+
paths alike, is redacted once, before the model, an executor's tree, a
|
|
154
|
+
replay cache descriptor, or an end anchor reads it. Redaction rewrites only
|
|
155
|
+
what the runner reports; assertions still compare the text the page shows.
|
|
156
|
+
Secret values and their cut parts never enter cache entries.
|
|
140
157
|
|
|
141
158
|
A static value shorter than 6 characters is `INVALID_CONFIG`, and a provider
|
|
142
159
|
returning one fails the fill: every occurrence of so short a value would take
|
|
@@ -150,19 +167,24 @@ ordinary text with it.
|
|
|
150
167
|
a hash, is a different string and passes through.
|
|
151
168
|
- A value the app renders in another Unicode normalization form, decomposed
|
|
152
169
|
accents where the secret has composed ones, passes through.
|
|
153
|
-
- Text that
|
|
154
|
-
through
|
|
170
|
+
- Text that drops the whitespace inside the value passes through. Text that
|
|
171
|
+
widens it passes through too, except on the observed screen: a field whose
|
|
172
|
+
collapsed form holds the value is kept collapsed and masked.
|
|
155
173
|
- A value spread over several nodes, one character per cell as a PIN pad
|
|
156
174
|
shows it, is not one string in the tree and passes through.
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
|
|
175
|
+
- A case mapping that changes length (`ß` shown as `SS`) escapes the prefix
|
|
176
|
+
rule for text cut at a length limit.
|
|
177
|
+
- A title is redacted when its file is collected, before any provider
|
|
178
|
+
runs, so a value a secret provider returns is not redacted from titles.
|
|
179
|
+
- A Playwright trace from a session no secret reached is kept as recorded,
|
|
180
|
+
so a value the test only spelled into a URL or a locator stays in its
|
|
181
|
+
text.
|
|
160
182
|
- When tests run in the runner's own process, with the config or tests
|
|
161
183
|
passed in memory by an embedding host, their console output is not
|
|
162
184
|
redacted.
|
|
163
185
|
- A Playwright trace from a session a secret reached, filled or held by the
|
|
164
186
|
engine, is rewritten before it is kept: any run of 8 or more characters of
|
|
165
|
-
a value becomes `<secret:name>`, so unrelated text that shares 8 characters
|
|
187
|
+
a value, its whitespace collapsed or not, becomes `<secret:name>`, so unrelated text that shares 8 characters
|
|
166
188
|
with a value is masked too. A base64 or base64url run that decodes to a
|
|
167
189
|
value or such a fragment (a basic-auth header, a cookie, a token segment)
|
|
168
190
|
is replaced whole. After a fill, screencast frames are dropped; with only
|
|
@@ -214,8 +236,12 @@ actions without consulting a model and are not signed.
|
|
|
214
236
|
|
|
215
237
|
The runner validates entries before use. Invalid entries become misses.
|
|
216
238
|
Files are named by a hash of the expected key and refused if larger than
|
|
217
|
-
1 MiB.
|
|
218
|
-
|
|
239
|
+
1 MiB. The key holds the agent's context only as a hash of its redacted
|
|
240
|
+
text, so no secret value enters it. Entries store actions and a redacted
|
|
241
|
+
summary; replay executes only the actions. Secret fills store a name and
|
|
242
|
+
authorize the fill again. An entry recorded by one agent never replays for
|
|
243
|
+
another, and one recorded on the app's origin never replays on a page from
|
|
244
|
+
another origin.
|
|
219
245
|
|
|
220
246
|
`e2e init` ignores `.e2e/cache/` in Git. If you choose to
|
|
221
247
|
[commit recordings](/cache#commit-the-replay-cache), review their actions and typed
|
|
@@ -252,8 +278,8 @@ what comes back is validated again before use.
|
|
|
252
278
|
|
|
253
279
|
Built-in features may connect to:
|
|
254
280
|
|
|
255
|
-
- one telemetry request per CLI invocation to `eu.i.posthog.com`,
|
|
256
|
-
opted out; see [Telemetry](/telemetry)
|
|
281
|
+
- one telemetry request per CLI invocation to `eu.i.posthog.com`, plus at
|
|
282
|
+
most one per session that `e2e mcp` serves, unless opted out; see [Telemetry](/telemetry)
|
|
257
283
|
- one request to `eu.i.posthog.com` per `e2e feedback` you run; see
|
|
258
284
|
[Feedback](/telemetry#feedback)
|
|
259
285
|
- the provider endpoint used by your configured model. Deterministic tests
|
package/docs/subscriptions.mdx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Subscriptions
|
|
3
|
-
description: Use your ChatGPT, GitHub Copilot, or SuperGrok subscription for agent steps.
|
|
3
|
+
description: Use your ChatGPT, GitHub Copilot, OpenCode Console, or SuperGrok subscription for agent steps.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Use an existing subscription without a separate API key. Choose your plan
|
|
@@ -10,6 +10,7 @@ in `e2e init`, install dependencies, then sign in:
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| ChatGPT Plus or Pro | `npx e2e login openai` |
|
|
12
12
|
| GitHub Copilot | `npx e2e login github-copilot` |
|
|
13
|
+
| OpenCode Console (OpenCode Zen and OpenCode Go) | `npx e2e login opencode-console` |
|
|
13
14
|
| SuperGrok or X Premium+ | `npx e2e login spacexai` |
|
|
14
15
|
|
|
15
16
|
Follow the terminal prompts, then run `npx e2e run`. Agent calls use your
|
|
@@ -52,17 +53,17 @@ const agent = { model: chatgpt('gpt-6-luna') };
|
|
|
52
53
|
<Tab title="GitHub Copilot">
|
|
53
54
|
<CodeGroup>
|
|
54
55
|
```bash npm
|
|
55
|
-
npm install -D ai @ai-sdk/openai-compatible
|
|
56
|
+
npm install -D ai @ai-sdk/openai-compatible @ai-sdk/openai
|
|
56
57
|
npx e2e login github-copilot
|
|
57
58
|
```
|
|
58
59
|
|
|
59
60
|
```bash pnpm
|
|
60
|
-
pnpm add -D ai @ai-sdk/openai-compatible
|
|
61
|
+
pnpm add -D ai @ai-sdk/openai-compatible @ai-sdk/openai
|
|
61
62
|
pnpm exec e2e login github-copilot
|
|
62
63
|
```
|
|
63
64
|
|
|
64
65
|
```bash bun
|
|
65
|
-
bun add -d ai @ai-sdk/openai-compatible
|
|
66
|
+
bun add -d ai @ai-sdk/openai-compatible @ai-sdk/openai
|
|
66
67
|
bunx e2e login github-copilot
|
|
67
68
|
```
|
|
68
69
|
</CodeGroup>
|
|
@@ -71,6 +72,33 @@ bunx e2e login github-copilot
|
|
|
71
72
|
import { copilot } from 'e2e/oauth/copilot';
|
|
72
73
|
|
|
73
74
|
const agent = { model: copilot('claude-sonnet-5') };
|
|
75
|
+
```
|
|
76
|
+
</Tab>
|
|
77
|
+
<Tab title="OpenCode Console">
|
|
78
|
+
<CodeGroup>
|
|
79
|
+
```bash npm
|
|
80
|
+
npm install -D ai @ai-sdk/openai-compatible @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
|
|
81
|
+
npx e2e login opencode-console
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```bash pnpm
|
|
85
|
+
pnpm add -D ai @ai-sdk/openai-compatible @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
|
|
86
|
+
pnpm exec e2e login opencode-console
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```bash bun
|
|
90
|
+
bun add -d ai @ai-sdk/openai-compatible @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google
|
|
91
|
+
bunx e2e login opencode-console
|
|
92
|
+
```
|
|
93
|
+
</CodeGroup>
|
|
94
|
+
|
|
95
|
+
```ts title="Model setup"
|
|
96
|
+
import { opencodeConsole } from 'e2e/oauth/opencode-console';
|
|
97
|
+
|
|
98
|
+
// OpenCode Zen, billed to the workspace's credits
|
|
99
|
+
const agent = { model: opencodeConsole('deepseek-v4.1-flash') };
|
|
100
|
+
// OpenCode Go, billed to your Go subscription
|
|
101
|
+
const goAgent = { model: opencodeConsole('go/deepseek-v4.1-flash') };
|
|
74
102
|
```
|
|
75
103
|
</Tab>
|
|
76
104
|
<Tab title="SuperGrok">
|
|
@@ -124,11 +152,49 @@ bunx e2e models openai # one provider
|
|
|
124
152
|
```
|
|
125
153
|
</CodeGroup>
|
|
126
154
|
|
|
127
|
-
Each line is the id to pass to `chatgpt()`, `copilot()`,
|
|
128
|
-
vendor's display name, and what it says about the model:
|
|
129
|
-
vision, preview, or hidden. ChatGPT lists what the Codex
|
|
130
|
-
plan; Copilot lists the chat models of your plan;
|
|
131
|
-
|
|
155
|
+
Each line is the id to pass to `chatgpt()`, `copilot()`, `opencodeConsole()`,
|
|
156
|
+
or `grok()`, the vendor's display name, and what it says about the model:
|
|
157
|
+
reasoning levels, vision, preview, or hidden. ChatGPT lists what the Codex
|
|
158
|
+
backend serves your plan; Copilot lists the chat models of your plan;
|
|
159
|
+
OpenCode Console lists the Zen and Go models your workspace has enabled,
|
|
160
|
+
each tagged with the plan that pays for it, and leaves out custom providers; SuperGrok lists the language models the
|
|
161
|
+
token reaches.
|
|
162
|
+
|
|
163
|
+
Copilot also lists models that `copilot()` cannot call, and marks them:
|
|
164
|
+
|
|
165
|
+
- `not enabled`: the model is off for your plan. Turn it on in your Copilot
|
|
166
|
+
settings on GitHub, or ask your organization admin if they manage your
|
|
167
|
+
seat.
|
|
168
|
+
- `no chat or responses`: Copilot serves the model only over APIs `copilot()`
|
|
169
|
+
does not speak, such as Anthropic's Messages API, so pick another model.
|
|
170
|
+
|
|
171
|
+
On its first call `copilot()` picks the endpoint from the model's entry in
|
|
172
|
+
this same listing: chat completions for most models, Copilot's Responses API
|
|
173
|
+
for the ones served only there. When the listing cannot be read, that call
|
|
174
|
+
goes over chat completions and the next call reads it again. The Responses
|
|
175
|
+
call runs through `@ai-sdk/openai`, so install it beside
|
|
176
|
+
`@ai-sdk/openai-compatible` to use those models; `e2e init` adds both.
|
|
177
|
+
|
|
178
|
+
### OpenCode Console
|
|
179
|
+
|
|
180
|
+
One OpenCode Console sign-in serves both plans billed through it:
|
|
181
|
+
|
|
182
|
+
- A bare id, such as `deepseek-v4.1-flash`, is an OpenCode Zen model, paid from
|
|
183
|
+
the workspace's credits.
|
|
184
|
+
- A `go/` id, such as `go/deepseek-v4.1-flash`, is an OpenCode Go model, paid
|
|
185
|
+
from the Go subscription. Go models are listed only when you hold the
|
|
186
|
+
workspace's Go subscription.
|
|
187
|
+
|
|
188
|
+
The list leaves out models your workspace has turned off, and Zen's free
|
|
189
|
+
models, which OpenCode keeps for its own clients.
|
|
190
|
+
|
|
191
|
+
On its first call `opencodeConsole()` reads the workspace config to pick the
|
|
192
|
+
model's API: chat completions, OpenAI Responses (`@ai-sdk/openai`), Anthropic
|
|
193
|
+
Messages (`@ai-sdk/anthropic`), or Google (`@ai-sdk/google`). Install those
|
|
194
|
+
beside `@ai-sdk/openai-compatible`; `e2e init` adds all four. Set
|
|
195
|
+
`providerOptions` under the key of that API: `opencode` for chat completions
|
|
196
|
+
models, on Zen and Go alike, and `openai`, `anthropic`, or `google` for the
|
|
197
|
+
others.
|
|
132
198
|
|
|
133
199
|
## Sign-in help
|
|
134
200
|
|
|
@@ -137,6 +203,9 @@ language models the token reaches.
|
|
|
137
203
|
- Copilot reuses your GitHub CLI login. If you do not use `gh`, pass
|
|
138
204
|
`--client-id` for your own GitHub OAuth app with device flow enabled.
|
|
139
205
|
Use `--enterprise-url` for GitHub Enterprise.
|
|
206
|
+
- OpenCode Console prints a device code and opens the page where you approve
|
|
207
|
+
it and pick the workspace; the page shows e2e as an unknown client. To
|
|
208
|
+
switch workspaces, run `npx e2e logout opencode-console` and sign in again.
|
|
140
209
|
- SuperGrok prints a device code and the URL where you enter it.
|
|
141
210
|
|
|
142
211
|
Run `npx e2e login` to choose a provider and see which accounts are signed
|
|
@@ -155,3 +224,22 @@ instead of the local file, but refreshed tokens are not saved back to that
|
|
|
155
224
|
variable. A value containing a rotating refresh token cannot be reused
|
|
156
225
|
indefinitely. See [CLI reference](/reference/cli#e2e-login) for all sign-in
|
|
157
226
|
options.
|
|
227
|
+
|
|
228
|
+
For OpenCode Console in CI, create a service account API key in the Console
|
|
229
|
+
(Service Accounts, then API Keys) and set it as `OPENCODE_API_KEY`;
|
|
230
|
+
`opencodeConsole()` uses it instead of the stored login. `e2e models` still
|
|
231
|
+
reads the stored login.
|
|
232
|
+
|
|
233
|
+
<CodeGroup>
|
|
234
|
+
```bash npm
|
|
235
|
+
OPENCODE_API_KEY=oc_sk_... npx e2e run
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
```bash pnpm
|
|
239
|
+
OPENCODE_API_KEY=oc_sk_... pnpm exec e2e run
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
```bash bun
|
|
243
|
+
OPENCODE_API_KEY=oc_sk_... bunx e2e run
|
|
244
|
+
```
|
|
245
|
+
</CodeGroup>
|
package/docs/telemetry.mdx
CHANGED
|
@@ -59,9 +59,11 @@ sends nothing.
|
|
|
59
59
|
## What is sent
|
|
60
60
|
|
|
61
61
|
Each command sends a session event. `run` and `explore` also send a run event,
|
|
62
|
-
|
|
63
|
-
asked on a command. Events go in one
|
|
64
|
-
two-second deadline for all telemetry
|
|
62
|
+
`init` an init event, and `mcp` one event per MCP session. `--help` and
|
|
63
|
+
`--version` send nothing, also when asked on a command. Events go in one
|
|
64
|
+
request when the command ends, with a two-second deadline for all telemetry
|
|
65
|
+
work. `e2e mcp` runs as long as its client does, so it sends each MCP session
|
|
66
|
+
event in its own request when that session ends, with the same deadline.
|
|
65
67
|
|
|
66
68
|
Every event carries these properties.
|
|
67
69
|
|
|
@@ -110,13 +112,14 @@ Versions:
|
|
|
110
112
|
| `engine`, `gateway` | The ids of the engine and the model gateway chosen for a new config (`web`, `mobile`, `none`; `vercel`, `openrouter`, `openai-compatible`, `chatgpt`, `copilot`, `grok`, `none`), `null` when not asked. Never the endpoint typed for an OpenAI-compatible gateway |
|
|
111
113
|
| `skill`, `mcp`, `install` | Whether the agent skill, the MCP registration, and the dependency install were chosen |
|
|
112
114
|
|
|
113
|
-
`e2e_run_completed`, once per `e2e run` or `e2e explore`, built from the numbers in `report.json
|
|
115
|
+
`e2e_run_completed`, once per `e2e run` or `e2e explore`, built from the numbers in `report.json` and the resolved config:
|
|
114
116
|
|
|
115
117
|
| Property | Value |
|
|
116
118
|
| --- | --- |
|
|
119
|
+
| `command` | `run` or `explore` |
|
|
117
120
|
| `status`, `exit_code`, `duration_ms` | The run's outcome |
|
|
118
121
|
| `flags` | The names of the flags given to the run command, never their values |
|
|
119
|
-
| `tests_discovered`, `tests_selected`, `tests_executed`, `tests_passed`, `tests_failed`, `tests_flaky`, `tests_skipped` | The summary counts |
|
|
122
|
+
| `tests_discovered`, `tests_selected`, `tests_executed`, `tests_passed`, `tests_failed`, `tests_interrupted`, `tests_flaky`, `tests_skipped` | The summary counts |
|
|
120
123
|
| `attempts_total`, `tests_retried` | How many attempts the run made across tests and serial groups, and how many of them needed more than one |
|
|
121
124
|
| `targets`, `platforms`, `engines` | How many targets, on which platforms, and with which engines and versions, as your config declares them: `web`, `ios`, `web@0.6.1`, or your own engine's name and version. A name that is not a plain token of letters, digits, dots, dashes, and underscores is reported as `other` |
|
|
122
125
|
| `steps_total`, `steps_agent`, `steps_locator`, `steps_assertion`, `steps_screen`, `steps_app`, `steps_session`, `steps_resource` | Step counts by kind |
|
|
@@ -129,11 +132,50 @@ Versions:
|
|
|
129
132
|
| `primary_error_code` | The first error the run recorded, which is the one that decided its status: a run-level error, else the failed attempt's verdict, else a step's; `null` for a clean run |
|
|
130
133
|
| `error_kinds` | For `ENGINE_FAILURE`, `MODEL_PROVIDER_FAILED`, and `ERROR`, whose code says where a failure surfaced but not what it was: the code and a kind read off the message against a closed list (`auth`, `rate-limit`, `overloaded`, `timeout`, `network`, `server`, `bad-request`, `device`, `daemon`, `browser`, `permission`, `not-found`, `memory`, `other`), as `MODEL_PROVIDER_FAILED:rate-limit`. Only the kind's name leaves the machine, never the message |
|
|
131
134
|
|
|
135
|
+
Which config features the run used, absent when the config did not load. Each
|
|
136
|
+
is a count, a boolean, or one of the runner's own option values, never a name,
|
|
137
|
+
a path, or free text you wrote:
|
|
138
|
+
|
|
139
|
+
| Property | Value |
|
|
140
|
+
| --- | --- |
|
|
141
|
+
| `config_workers`, `config_retries` | The worker count and retries the run resolved |
|
|
142
|
+
| `config_agents`, `config_custom_executor`, `config_separate_judge`, `config_project_tools` | How many agents are configured, whether any has a custom executor or a judge model of its own, and how many distinct project tools they declare |
|
|
143
|
+
| `config_credentials`, `config_secrets` | How many credentials and secrets are configured |
|
|
144
|
+
| `config_cache_mode`, `config_cache_store`, `config_cache_strict` | `off`, `read-only`, or `read-write`; `file` or `custom`; whether strict replay is on |
|
|
145
|
+
| `config_reporters`, `config_custom_reporters`, `config_artifact_store` | The built-in reporter ids (`list`, `json`, `junit`, `markdown`), how many reporter objects the config adds, and whether an artifact store is set |
|
|
146
|
+
| `config_trace_modes`, `config_video_modes` | The distinct recording modes across targets (`off`, `on`, `retain-on-failure`, `on-first-retry`, `on-all-retries`) |
|
|
147
|
+
| `config_app_commands`, `config_environments` | How many targets start an app command, and the distinct app environments (`test`, `staging`, `production`) |
|
|
148
|
+
|
|
149
|
+
On `e2e explore` only, what the exploration was given and found, by count.
|
|
150
|
+
Never the goal, a step's charter, or a finding's words:
|
|
151
|
+
|
|
152
|
+
| Property | Value |
|
|
153
|
+
| --- | --- |
|
|
154
|
+
| `explore_ended` | Why it stopped: `finished`, `step-limit`, `time`, `stuck`, or `aborted` |
|
|
155
|
+
| `explore_max_steps`, `explore_timeout_ms` | The budgets it ran with |
|
|
156
|
+
| `explore_steps`, `explore_steps_passed`, `explore_steps_failed`, `explore_steps_blocked`, `explore_steps_exhausted` | Exploration steps, by how each ended |
|
|
157
|
+
| `explore_assessed` | Whether the agent gave a closing assessment |
|
|
158
|
+
| `explore_issues`, `explore_warnings`, `explore_findings_by_severity` | Findings by kind, and by severity: `{"1": 0, "2": 1, "3": 0, "4": 0, "5": 1}` |
|
|
159
|
+
|
|
160
|
+
`e2e_mcp_session`, once per `open_session` an `e2e mcp` server receives, sent when the session closes or the open fails. A session still open when the client kills the server is not sent:
|
|
161
|
+
|
|
162
|
+
| Property | Value |
|
|
163
|
+
| --- | --- |
|
|
164
|
+
| `client`, `client_version` | The name and version the MCP client gives itself (`claude-code`, `cursor-vscode`, ...). A value that is not a plain token is reported as `other`; `null` before the client introduced itself |
|
|
165
|
+
| `outcome`, `error_code` | `closed` for a session that opened, `open-failed` with the runner code it failed with (`APP_UNREACHABLE`, `ENGINE_FAILURE`, ...) |
|
|
166
|
+
| `ended_by` | `agent` for `close_session`, `idle`, `step` for the session's time limit, `server` when the server shut down; `null` for a failed open |
|
|
167
|
+
| `platform`, `engine`, `headed` | The target's platform and engine with its version, as for a run, and whether the UI was shown |
|
|
168
|
+
| `duration_ms`, `sessions_open` | How long the session lived, and how many other sessions were open when it opened |
|
|
169
|
+
| `calls_total`, `calls_failed`, `calls` | Tool calls, failed calls, and calls by the session's own tool names: `{"observe": 4, "tap": 9, "locate": 2, "screenshot": 1}`. A project's own tools are counted together as `tool` and anything else as `other`; no other name is sent |
|
|
170
|
+
| `error_codes` | How often each runner code failed a call: `{"LOCATOR_NOT_FOUND": 2}`, at most 20 codes. A code that is not an upper-case token is reported as `OTHER` |
|
|
171
|
+
|
|
132
172
|
## What is never sent
|
|
133
173
|
|
|
134
174
|
Test titles, file paths, URLs, origins, instructions, observations, page
|
|
135
175
|
content, screenshots, error messages, stack traces, environment variable
|
|
136
|
-
values, credentials, or file contents.
|
|
176
|
+
values, credentials, or file contents. Nor the names of targets, agents,
|
|
177
|
+
credentials, secrets, or project tools, the arguments or results of MCP tool
|
|
178
|
+
calls, an exploration's goal, or its findings. Events include only the properties
|
|
137
179
|
listed above.
|
|
138
180
|
|
|
139
181
|
## In CI
|