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
package/docs/models.mdx
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Models
|
|
3
|
+
description: Configure a model with your own subscription, an API key, or a local server.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Agent steps use the model configured in `e2e.config.ts`. You can use an
|
|
7
|
+
[existing subscription](/subscriptions), an API key, or a local server.
|
|
8
|
+
`e2e init` offers these choices and writes the config for you. For the first
|
|
9
|
+
setup, follow the [quickstart](/quickstart#use-a-subscription-or-api-key).
|
|
10
|
+
|
|
11
|
+
Tests without agent steps do not need a model. For the built-in agent,
|
|
12
|
+
choose a model that supports tool calls and images. Agent steps need the `ai`
|
|
13
|
+
package installed, whichever provider you use:
|
|
14
|
+
|
|
15
|
+
<CodeGroup>
|
|
16
|
+
```bash npm
|
|
17
|
+
npm install -D ai
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```bash pnpm
|
|
21
|
+
pnpm add -D ai
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```bash bun
|
|
25
|
+
bun add -d ai
|
|
26
|
+
```
|
|
27
|
+
</CodeGroup>
|
|
28
|
+
|
|
29
|
+
There is no default model or shared API-key variable. The config selects the
|
|
30
|
+
model, and the provider reads its own key from the environment, such as
|
|
31
|
+
`AI_GATEWAY_API_KEY`. For a subscription, run `npx e2e login` instead.
|
|
32
|
+
|
|
33
|
+
## Pick a gateway or a provider
|
|
34
|
+
|
|
35
|
+
A gateway gives you access to several providers with one API key. A provider
|
|
36
|
+
package connects to one provider directly. To change an existing config,
|
|
37
|
+
replace its model import and `model` value:
|
|
38
|
+
|
|
39
|
+
<Tabs>
|
|
40
|
+
<Tab title="Vercel AI Gateway">
|
|
41
|
+
|
|
42
|
+
`gateway` is included in the `ai` package. Set `AI_GATEWAY_API_KEY`, or use
|
|
43
|
+
a [Vercel OIDC token](#vercel-oidc-instead-of-a-key) without a key.
|
|
44
|
+
|
|
45
|
+
```ts title="e2e.config.ts"
|
|
46
|
+
import type { E2EConfig } from 'e2e';
|
|
47
|
+
import { web } from '@e2e-dev/web';
|
|
48
|
+
import { gateway } from 'ai';
|
|
49
|
+
|
|
50
|
+
export default {
|
|
51
|
+
targets: [{ engine: web(), app: { url: 'http://localhost:3000' } }],
|
|
52
|
+
agents: { default: { model: gateway('openai/gpt-6-luna-fast') } },
|
|
53
|
+
} satisfies E2EConfig;
|
|
54
|
+
```
|
|
55
|
+
</Tab>
|
|
56
|
+
<Tab title="OpenRouter">
|
|
57
|
+
|
|
58
|
+
Install `@openrouter/ai-sdk-provider` and set `OPENROUTER_API_KEY`.
|
|
59
|
+
|
|
60
|
+
```ts title="Model setup"
|
|
61
|
+
import { openrouter } from '@openrouter/ai-sdk-provider';
|
|
62
|
+
|
|
63
|
+
const agent = { model: openrouter('openai/gpt-6-luna-fast') };
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Use `agent` as `agents.default` in your config.
|
|
67
|
+
</Tab>
|
|
68
|
+
<Tab title="Provider API key">
|
|
69
|
+
|
|
70
|
+
Install the provider's AI SDK package and set its API key. For OpenAI,
|
|
71
|
+
install `@ai-sdk/openai` and set `OPENAI_API_KEY`:
|
|
72
|
+
|
|
73
|
+
```ts title="Model setup"
|
|
74
|
+
import { openai } from '@ai-sdk/openai';
|
|
75
|
+
|
|
76
|
+
const agent = { model: openai('gpt-6-luna') };
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Use `agent` as `agents.default`. Other AI SDK providers work the same way,
|
|
80
|
+
with their own package, model IDs, and authentication settings.
|
|
81
|
+
</Tab>
|
|
82
|
+
<Tab title="Local or self-hosted">
|
|
83
|
+
|
|
84
|
+
Install `@ai-sdk/openai-compatible`. Set the endpoint URL and a model ID
|
|
85
|
+
served by that endpoint:
|
|
86
|
+
|
|
87
|
+
```ts title="Model setup"
|
|
88
|
+
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
89
|
+
|
|
90
|
+
const local = createOpenAICompatible({
|
|
91
|
+
name: 'local',
|
|
92
|
+
baseURL: 'http://127.0.0.1:11434/v1',
|
|
93
|
+
// apiKey: process.env.LLM_API_KEY,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const agent = { model: local.chatModel('your-model-id') };
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Use `agent` as `agents.default`. Add `apiKey` if the server requires one.
|
|
100
|
+
</Tab>
|
|
101
|
+
</Tabs>
|
|
102
|
+
|
|
103
|
+
Model IDs depend on the provider. Gateways usually use `provider/model`;
|
|
104
|
+
direct providers use their own model IDs.
|
|
105
|
+
|
|
106
|
+
DeepSeek's V4 models (`@ai-sdk/deepseek`) think by default, and in that mode
|
|
107
|
+
they refuse the forced tool choice agent steps ask for. The step is sent again
|
|
108
|
+
with `auto` and an instruction to reply with tool calls only, and later steps
|
|
109
|
+
on that model start that way, so thinking can stay on.
|
|
110
|
+
|
|
111
|
+
### Vercel OIDC instead of a key
|
|
112
|
+
|
|
113
|
+
Without `AI_GATEWAY_API_KEY`, `gateway()` authenticates with a Vercel OIDC
|
|
114
|
+
token. Sign in to the Vercel CLI and link the project once; the gateway then
|
|
115
|
+
mints a short-lived token for that project and refreshes it when it expires:
|
|
116
|
+
|
|
117
|
+
<CodeGroup>
|
|
118
|
+
```bash npm
|
|
119
|
+
npx vercel login
|
|
120
|
+
npx vercel link
|
|
121
|
+
npx e2e run
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```bash pnpm
|
|
125
|
+
pnpm dlx vercel login
|
|
126
|
+
pnpm dlx vercel link
|
|
127
|
+
pnpm exec e2e run
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```bash bun
|
|
131
|
+
bunx vercel login
|
|
132
|
+
bunx vercel link
|
|
133
|
+
bunx e2e run
|
|
134
|
+
```
|
|
135
|
+
</CodeGroup>
|
|
136
|
+
|
|
137
|
+
The token is a valid `VERCEL_OIDC_TOKEN`, otherwise one minted for the
|
|
138
|
+
project in `.vercel/project.json`, found by walking up from the working
|
|
139
|
+
directory. e2e loads no `.env` files, so a token pulled with
|
|
140
|
+
`npx vercel env pull` reaches the gateway only when your shell exports it or
|
|
141
|
+
the config loads the file with
|
|
142
|
+
[`process.loadEnvFile()`](/reference/config#loading).
|
|
143
|
+
|
|
144
|
+
An OIDC failure is the same `MODEL_PROVIDER_FAILED` as a bad key, and the AI
|
|
145
|
+
SDK's message names only `AI_GATEWAY_API_KEY`. With no key set, check that the
|
|
146
|
+
Vercel CLI is signed in and that `.vercel/project.json` exists.
|
|
147
|
+
|
|
148
|
+
## Several models in one config
|
|
149
|
+
|
|
150
|
+
Give agents different names to use different models:
|
|
151
|
+
|
|
152
|
+
```ts title="e2e.config.ts"
|
|
153
|
+
export default {
|
|
154
|
+
targets: [{ engine: web(), app: { url: 'http://localhost:3000' } }],
|
|
155
|
+
agents: {
|
|
156
|
+
default: { model: gateway('openai/gpt-6-luna-fast') },
|
|
157
|
+
careful: { model: gateway('anthropic/claude-sonnet-5') },
|
|
158
|
+
},
|
|
159
|
+
} satisfies E2EConfig;
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Run with `npx e2e run --agent careful`, or
|
|
163
|
+
[choose an agent in a test](/agents). Each model can use a different provider.
|
|
164
|
+
Agents do not inherit from each other: an entry without a `model` does not
|
|
165
|
+
use `default`'s, see [Agents and personas](/agents).
|
|
166
|
+
|
|
167
|
+
### Switch a model with an env var
|
|
168
|
+
|
|
169
|
+
To switch a model without editing the config, read your own environment
|
|
170
|
+
variable:
|
|
171
|
+
|
|
172
|
+
```ts title="Agent setup"
|
|
173
|
+
const agent = {
|
|
174
|
+
model: gateway(process.env.MODEL ?? 'openai/gpt-6-luna-fast'),
|
|
175
|
+
};
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### A judge of its own
|
|
179
|
+
|
|
180
|
+
By default, the same model drives `agent.act` and answers `agent.assert`,
|
|
181
|
+
`agent.waitFor`, and `agent.extract`. Set `judge` to use a separate model
|
|
182
|
+
for those checks:
|
|
183
|
+
|
|
184
|
+
```ts title="Agent setup"
|
|
185
|
+
const agent = {
|
|
186
|
+
model: gateway('openai/gpt-6-luna-fast'),
|
|
187
|
+
judge: gateway('anthropic/claude-sonnet-5'),
|
|
188
|
+
};
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Judgments use the current screen and the question, without the acting
|
|
192
|
+
agent's transcript or summaries. Reports include the model used for each
|
|
193
|
+
judgment. See [Custom executors](/executors) if you replace the built-in agent.
|
|
194
|
+
|
|
195
|
+
## Data retention and compliance
|
|
196
|
+
|
|
197
|
+
Model input is the redacted screen, the step instruction, and the
|
|
198
|
+
screenshots the agent asks for. e2e reads nothing back from the provider
|
|
199
|
+
after a response, so a run needs no state kept on the provider's side.
|
|
200
|
+
|
|
201
|
+
**OpenAI and Azure OpenAI.** Every request carries `store: false` and a
|
|
202
|
+
prompt cache key. The provider keeps no copy of the conversation, a
|
|
203
|
+
reasoning model's earlier turns travel inline as encrypted content, and the
|
|
204
|
+
prompt cache still serves the repeated prefix. Organizations with zero data
|
|
205
|
+
retention need no configuration. To keep stored responses, set `store` in
|
|
206
|
+
`providerOptions`; the key is `azure` for Azure OpenAI:
|
|
207
|
+
|
|
208
|
+
```ts title="Agent setup"
|
|
209
|
+
const agent = {
|
|
210
|
+
model: openai('gpt-6-luna'),
|
|
211
|
+
providerOptions: { openai: { store: true } },
|
|
212
|
+
};
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Anthropic under a BAA.** Agent steps use the Messages API with tool use,
|
|
216
|
+
prompt caching, images, and structured outputs, all eligible under
|
|
217
|
+
Anthropic's HIPAA readiness. The agreement covers `api.anthropic.com` only:
|
|
218
|
+
call it directly with `@ai-sdk/anthropic` rather than through a gateway or
|
|
219
|
+
OpenRouter, and leave `judge` unset so one agreement covers every request.
|
|
220
|
+
Anthropic's Covered Models require 30-day retention and are not offered to
|
|
221
|
+
organizations with zero data retention.
|
|
222
|
+
|
|
223
|
+
## What fails, and where
|
|
224
|
+
|
|
225
|
+
| Problem | Code | Fix |
|
|
226
|
+
| --- | --- | --- |
|
|
227
|
+
| A model is a string instead of an AI SDK instance | `INVALID_CONFIG` | Construct it, for example `gateway('openai/gpt-6-luna-fast')`. |
|
|
228
|
+
| The built-in agent has no model | `MODEL_UNAVAILABLE` | Set `agents.<name>.model`. |
|
|
229
|
+
| Authentication fails on the first model call | `MODEL_PROVIDER_FAILED` | Check the provider's API key or the linked Vercel project, or run `npx e2e login` for a subscription. |
|
|
230
|
+
| The `ai` package is missing | `MODEL_UNAVAILABLE` | Run `npm install -D ai`. |
|
|
231
|
+
| A step's second turn fails with `Item with id 'rs_…' not found` | `MODEL_PROVIDER_FAILED` | Leave `store` off in `providerOptions`, the default, or call OpenAI directly instead of through a gateway. |
|
|
232
|
+
| A custom executor's own `model` or `judge` differs from the agents entry's | `INVALID_CONFIG` | See [Custom executors](/executors#keep-the-loop-change-the-vocabulary). |
|
|
233
|
+
|
|
234
|
+
<CardGroup cols={2}>
|
|
235
|
+
<Card title="Subscriptions" icon="key" href="/subscriptions">
|
|
236
|
+
Sign in with ChatGPT, Copilot, or SuperGrok.
|
|
237
|
+
</Card>
|
|
238
|
+
<Card title="Agents and personas" icon="users" href="/agents">
|
|
239
|
+
Choose agents for tests and signed-in users.
|
|
240
|
+
</Card>
|
|
241
|
+
</CardGroup>
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quickstart
|
|
3
|
+
description: Set up e2e with one prompt to your coding agent, or step by step.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { SetupPrompt } from './snippets/setup-prompt-card.jsx';
|
|
7
|
+
|
|
8
|
+
export const setupPrompt = `Set up e2e end-to-end tests in this project. Docs: \`https://e2e.tester.army/docs/quickstart.md\`
|
|
9
|
+
|
|
10
|
+
1. Run \`npx e2e init --yes\` (or the pnpm or bun equivalent for this project). It writes a web config using Vercel AI Gateway, an example test, the e2e skill, and MCP config. It installs nothing yet.
|
|
11
|
+
2. Read the e2e skill (\`npx e2e guide\` prints it, \`npx e2e guide <topic>\` prints a topic) and follow it for every step below.
|
|
12
|
+
3. Point the target at this app. For a web app, set its URL and the command that starts its dev server. For an iOS or Android app, replace @e2e-dev/web and playwright with @e2e-dev/mobile and rewrite the example test for the mobile engine.
|
|
13
|
+
4. Ask me which model to use for agent steps: a ChatGPT, GitHub Copilot, or SuperGrok subscription, an API key, or a local model. Configure it with its provider package. If it needs a sign-in, give me the \`npx e2e login\` command and wait until I confirm.
|
|
14
|
+
5. Install dependencies, run the example test, and fix setup errors until it passes.
|
|
15
|
+
6. Write one test for the most important user flow in this app, run it, and iterate until it passes.`;
|
|
16
|
+
|
|
17
|
+
## Set up with your coding agent
|
|
18
|
+
|
|
19
|
+
Open Claude Code, Codex, Cursor, or another coding agent in your app's
|
|
20
|
+
directory and paste this prompt:
|
|
21
|
+
|
|
22
|
+
<SetupPrompt>
|
|
23
|
+
|
|
24
|
+
<Prompt description={setupPrompt} children={setupPrompt} actions={["copy", "cursor"]} />
|
|
25
|
+
|
|
26
|
+
</SetupPrompt>
|
|
27
|
+
|
|
28
|
+
The agent installs the [e2e skill](/coding-agents), so later prompts like
|
|
29
|
+
"add a test for checkout" or "why did this run fail" work without more setup.
|
|
30
|
+
|
|
31
|
+
<Note>
|
|
32
|
+
Use Node.js 22.12 or newer. On Windows, run inside WSL. Mobile tests also
|
|
33
|
+
need Xcode with an iOS simulator runtime, or the Android SDK with an emulator.
|
|
34
|
+
</Note>
|
|
35
|
+
|
|
36
|
+
## Set up manually
|
|
37
|
+
|
|
38
|
+
### Run your first test
|
|
39
|
+
|
|
40
|
+
<Steps>
|
|
41
|
+
<Step title="Create the test project">
|
|
42
|
+
In your app's directory:
|
|
43
|
+
|
|
44
|
+
<CodeGroup>
|
|
45
|
+
```bash npm
|
|
46
|
+
npx e2e init
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```bash pnpm
|
|
50
|
+
pnpm dlx e2e init
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```bash bun
|
|
54
|
+
bunx e2e init
|
|
55
|
+
```
|
|
56
|
+
</CodeGroup>
|
|
57
|
+
|
|
58
|
+
Choose **Web (Playwright)** or **Mobile (iOS/Android)**, then a
|
|
59
|
+
subscription or model provider, or **None** for tests without AI. The
|
|
60
|
+
wizard writes a config and an example test, adds dependencies, and offers
|
|
61
|
+
to set up your coding agent. Existing files stay intact.
|
|
62
|
+
|
|
63
|
+
<Tabs>
|
|
64
|
+
<Tab title="Web">
|
|
65
|
+
Start your app's dev server at `http://localhost:3000`, or set its address
|
|
66
|
+
in `e2e.config.ts`. You can also [let e2e start it](/starting-your-app).
|
|
67
|
+
|
|
68
|
+
<Accordion title="Example web config and test">
|
|
69
|
+
This config uses Vercel AI Gateway. The wizard configures the provider you chose.
|
|
70
|
+
|
|
71
|
+
```ts title="e2e.config.ts"
|
|
72
|
+
import type { E2EConfig } from 'e2e';
|
|
73
|
+
import { web } from '@e2e-dev/web';
|
|
74
|
+
import { gateway } from 'ai';
|
|
75
|
+
|
|
76
|
+
export default {
|
|
77
|
+
agents: { default: { model: gateway('openai/gpt-6-luna-fast') } },
|
|
78
|
+
targets: [{ engine: web(), app: { url: 'http://localhost:3000' } }],
|
|
79
|
+
} satisfies E2EConfig;
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```ts title="tests/example.e2e.ts"
|
|
83
|
+
import { test } from '@e2e-dev/web';
|
|
84
|
+
import { expect } from 'e2e';
|
|
85
|
+
|
|
86
|
+
test('app opens', async ({ app, browser }) => {
|
|
87
|
+
await app.open('/');
|
|
88
|
+
await expect(browser.locator('body')).toBeVisible();
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
</Accordion>
|
|
92
|
+
</Tab>
|
|
93
|
+
<Tab title="Mobile">
|
|
94
|
+
Run `npx agent-device doctor` to check your setup. The example opens
|
|
95
|
+
Settings so you can try it before installing your own app. The wizard
|
|
96
|
+
chooses iOS on macOS and Android elsewhere.
|
|
97
|
+
|
|
98
|
+
<Accordion title="Example iOS config and test">
|
|
99
|
+
This config uses Vercel AI Gateway. For Android, the wizard sets
|
|
100
|
+
`platform: 'android'` and `app: { bundleId: 'com.android.settings' }`.
|
|
101
|
+
|
|
102
|
+
```ts title="e2e.config.ts"
|
|
103
|
+
import type { E2EConfig } from 'e2e';
|
|
104
|
+
import { mobile } from '@e2e-dev/mobile';
|
|
105
|
+
import { gateway } from 'ai';
|
|
106
|
+
|
|
107
|
+
export default {
|
|
108
|
+
agents: { default: { model: gateway('openai/gpt-6-luna-fast') } },
|
|
109
|
+
targets: [{ name: 'ios', engine: mobile({ platform: 'ios' }), app: { bundleId: 'Settings' } }],
|
|
110
|
+
workers: 1,
|
|
111
|
+
} satisfies E2EConfig;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```ts title="tests/example.e2e.ts"
|
|
115
|
+
import { test } from '@e2e-dev/mobile';
|
|
116
|
+
import { expect } from 'e2e';
|
|
117
|
+
|
|
118
|
+
test('Settings opens', async ({ app, screen }) => {
|
|
119
|
+
await app.open();
|
|
120
|
+
await expect(screen.getByRole('button', 'General')).toBeVisible();
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
</Accordion>
|
|
124
|
+
|
|
125
|
+
See [Testing iOS and Android](/mobile) to use your own app.
|
|
126
|
+
</Tab>
|
|
127
|
+
</Tabs>
|
|
128
|
+
</Step>
|
|
129
|
+
<Step title="Run the example">
|
|
130
|
+
<CodeGroup>
|
|
131
|
+
```bash npm
|
|
132
|
+
npx e2e run
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
```bash pnpm
|
|
136
|
+
pnpm exec e2e run
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
```bash bun
|
|
140
|
+
bunx e2e run
|
|
141
|
+
```
|
|
142
|
+
</CodeGroup>
|
|
143
|
+
|
|
144
|
+
e2e downloads a browser or boots the simulator or emulator, checks that
|
|
145
|
+
the app opens, and writes `.e2e/report.json`. No model calls yet, so no
|
|
146
|
+
sign-in or API key needed.
|
|
147
|
+
</Step>
|
|
148
|
+
</Steps>
|
|
149
|
+
|
|
150
|
+
### Use a subscription or API key
|
|
151
|
+
|
|
152
|
+
Connect the provider you chose in the wizard.
|
|
153
|
+
|
|
154
|
+
<Tabs>
|
|
155
|
+
<Tab title="Subscription">
|
|
156
|
+
Sign in to your existing plan. No API key needed.
|
|
157
|
+
|
|
158
|
+
| Subscription | Command |
|
|
159
|
+
| --- | --- |
|
|
160
|
+
| ChatGPT Plus or Pro | `npx e2e login openai` |
|
|
161
|
+
| GitHub Copilot | `npx e2e login github-copilot` |
|
|
162
|
+
| SuperGrok or X Premium+ | `npx e2e login spacexai` |
|
|
163
|
+
|
|
164
|
+
Copilot reuses your GitHub CLI login if available. See
|
|
165
|
+
[Subscriptions](/subscriptions) for details.
|
|
166
|
+
</Tab>
|
|
167
|
+
<Tab title="API key">
|
|
168
|
+
Set your provider's key in the terminal where you run e2e. For Vercel AI
|
|
169
|
+
Gateway:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
export AI_GATEWAY_API_KEY="your-api-key"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
A project linked with `vercel link` can use a
|
|
176
|
+
[Vercel OIDC token](/models#vercel-oidc-instead-of-a-key) instead.
|
|
177
|
+
OpenRouter uses `OPENROUTER_API_KEY`. See [Models](/models) for other
|
|
178
|
+
providers and local models.
|
|
179
|
+
</Tab>
|
|
180
|
+
</Tabs>
|
|
181
|
+
|
|
182
|
+
### Add an agent step
|
|
183
|
+
|
|
184
|
+
Give `agent.act` one goal per call, then check the result. Adapt the
|
|
185
|
+
example to a flow in your app:
|
|
186
|
+
|
|
187
|
+
<Tabs>
|
|
188
|
+
<Tab title="Web">
|
|
189
|
+
```ts title="tests/agent.e2e.ts"
|
|
190
|
+
import { test } from '@e2e-dev/web';
|
|
191
|
+
import { expect } from 'e2e';
|
|
192
|
+
|
|
193
|
+
test('a visitor signs up for a trial', async ({ app, agent, screen }) => {
|
|
194
|
+
await app.open('/');
|
|
195
|
+
|
|
196
|
+
await agent.act('sign up for a free trial as {name} with email {email}', {
|
|
197
|
+
params: { name: 'Ada Lovelace', email: 'ada@example.test' },
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
await agent.assert('the welcome screen greets Ada by name');
|
|
201
|
+
await expect(screen.getByRole('status')).toContainText('trial');
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
</Tab>
|
|
205
|
+
<Tab title="Mobile (iOS)">
|
|
206
|
+
```ts title="tests/agent.e2e.ts"
|
|
207
|
+
import { test } from '@e2e-dev/mobile';
|
|
208
|
+
import { expect } from 'e2e';
|
|
209
|
+
|
|
210
|
+
test('the agent opens General', async ({ agent, app, device }) => {
|
|
211
|
+
await app.open();
|
|
212
|
+
await agent.act('open {section} settings', { params: { section: 'General' } });
|
|
213
|
+
|
|
214
|
+
await agent.assert('the General settings screen is showing');
|
|
215
|
+
await expect(device.locator('role=NavigationBar id=General')).toBeVisible();
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
`app.open()` launches the configured app fresh; without it, a test starts
|
|
220
|
+
where the previous one left the device. `device.locator` uses
|
|
221
|
+
[agent-device selectors](/mobile#the-device-fixture).
|
|
222
|
+
</Tab>
|
|
223
|
+
</Tabs>
|
|
224
|
+
|
|
225
|
+
`params` fill the goal's placeholders. `agent.assert` judges the screen;
|
|
226
|
+
`expect` checks an exact value.
|
|
227
|
+
|
|
228
|
+
<CodeGroup>
|
|
229
|
+
```bash npm
|
|
230
|
+
npx e2e run tests/agent.e2e.ts
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
```bash pnpm
|
|
234
|
+
pnpm exec e2e run tests/agent.e2e.ts
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
```bash bun
|
|
238
|
+
bunx e2e run tests/agent.e2e.ts
|
|
239
|
+
```
|
|
240
|
+
</CodeGroup>
|
|
241
|
+
|
|
242
|
+
Chose **None** in the wizard? [Add a model](/models) first. Add `--headed`
|
|
243
|
+
to watch a web test, `--no-cache` to skip replaying cached actions.
|
|
244
|
+
|
|
245
|
+
## Next
|
|
246
|
+
|
|
247
|
+
<CardGroup cols={2}>
|
|
248
|
+
<Card title="Writing tests" icon="pen-to-square" href="/writing-tests">
|
|
249
|
+
Write goals, check outcomes, and extract data.
|
|
250
|
+
</Card>
|
|
251
|
+
<Card title="Signing in" icon="key" href="/authentication">
|
|
252
|
+
Reuse an app login and keep passwords out of model input.
|
|
253
|
+
</Card>
|
|
254
|
+
<Card title="Debugging" icon="bug" href="/debugging">
|
|
255
|
+
Read failures, screenshots, and traces.
|
|
256
|
+
</Card>
|
|
257
|
+
<Card title="Continuous integration" icon="code-branch" href="/ci">
|
|
258
|
+
Run your tests in CI.
|
|
259
|
+
</Card>
|
|
260
|
+
</CardGroup>
|