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
|
@@ -51,14 +51,18 @@ before passing its result to `expect`.
|
|
|
51
51
|
| --- | --- |
|
|
52
52
|
| Default timeout | `config.assertionTimeout`, 5000 ms |
|
|
53
53
|
| Override | `{ timeout }` in milliseconds, on every locator and `browser` matcher |
|
|
54
|
-
|
|
|
54
|
+
| Unknown option | `INVALID_ARGUMENT` before the first read, from JavaScript too |
|
|
55
|
+
| Negation grace window | A negated matcher passes after 1000 ms of continuous truth, or at the deadline when `{ timeout }` is shorter than that and the negation held for the whole budget. The window counts from the moment the first read that saw the negation started, so a slow read counts toward it |
|
|
55
56
|
| Failure code | `ASSERTION_FAILED`, exit code 1 |
|
|
56
57
|
|
|
57
58
|
Locator strictness: except for `toHaveCount` and the list form of
|
|
58
59
|
`toHaveText` and `toContainText`, a positive matcher requires exactly one
|
|
59
60
|
match; zero matches keep polling until the timeout, and multiple matches fail
|
|
60
|
-
immediately with `LOCATOR_AMBIGUOUS`. `toBeHidden`,
|
|
61
|
-
|
|
61
|
+
immediately with `LOCATOR_AMBIGUOUS`. `toBeHidden`, `toBeVisible({ visible:
|
|
62
|
+
false })`, `toBeAttached({ attached: false })`, negated visibility, and
|
|
63
|
+
negated `toBeAttached` accept zero matches; for them, and for
|
|
64
|
+
`waitFor({ state: 'detached' })` and `'hidden'`, a locator under a frame that
|
|
65
|
+
is not in the document is zero matches rather than a wait for the frame.
|
|
62
66
|
|
|
63
67
|
Text comparison is normalized: leading and trailing whitespace is trimmed and
|
|
64
68
|
each run of whitespace collapses to one space. `toHaveText` and
|
|
@@ -84,21 +88,25 @@ Assert the outcome of the fill, not the field.
|
|
|
84
88
|
## Locator matchers
|
|
85
89
|
|
|
86
90
|
```ts
|
|
91
|
+
/**
|
|
92
|
+
* The locator matchers. An option a matcher does not take, or a flag that is
|
|
93
|
+
* not a boolean, is `INVALID_ARGUMENT` before the first read.
|
|
94
|
+
*/
|
|
87
95
|
export interface AsyncExpectation {
|
|
88
96
|
/** Inverts the matcher. A negated matcher passes after 1000 ms of continuous truth. */
|
|
89
97
|
readonly not: AsyncExpectation;
|
|
90
|
-
/** Waits for visibility
|
|
91
|
-
toBeVisible(options?: { timeout?: number }): Promise<void>;
|
|
98
|
+
/** Waits for visibility; `visible: false` waits for hidden or absent state, as `toBeHidden`. */
|
|
99
|
+
toBeVisible(options?: { visible?: boolean; timeout?: number }): Promise<void>;
|
|
92
100
|
/** Waits for hidden or absent state. */
|
|
93
101
|
toBeHidden(options?: { timeout?: number }): Promise<void>;
|
|
94
|
-
/** Waits for one match to exist, visible or not. */
|
|
95
|
-
toBeAttached(options?: { timeout?: number }): Promise<void>;
|
|
96
|
-
/** Waits for enabled state. */
|
|
97
|
-
toBeEnabled(options?: { timeout?: number }): Promise<void>;
|
|
102
|
+
/** Waits for one match to exist, visible or not; `attached: false` waits for none. */
|
|
103
|
+
toBeAttached(options?: { attached?: boolean; timeout?: number }): Promise<void>;
|
|
104
|
+
/** Waits for enabled state; `enabled: false` waits for disabled state. */
|
|
105
|
+
toBeEnabled(options?: { enabled?: boolean; timeout?: number }): Promise<void>;
|
|
98
106
|
/** Waits for disabled state. */
|
|
99
107
|
toBeDisabled(options?: { timeout?: number }): Promise<void>;
|
|
100
|
-
/** Waits for checked state. */
|
|
101
|
-
toBeChecked(options?: { timeout?: number }): Promise<void>;
|
|
108
|
+
/** Waits for checked state; `checked: false` waits for unchecked state. */
|
|
109
|
+
toBeChecked(options?: { checked?: boolean; timeout?: number }): Promise<void>;
|
|
102
110
|
/** Waits for selected state. */
|
|
103
111
|
toBeSelected(options?: { timeout?: number }): Promise<void>;
|
|
104
112
|
/** Waits for expanded state. */
|
|
@@ -106,20 +114,28 @@ export interface AsyncExpectation {
|
|
|
106
114
|
/** Waits for focused state. */
|
|
107
115
|
toBeFocused(options?: { timeout?: number }): Promise<void>;
|
|
108
116
|
/** Waits for exact normalized text; a list waits for exactly that many matches, each with its entry's text, in order. */
|
|
109
|
-
toHaveText(expected: TextMatch, options?:
|
|
110
|
-
toHaveText(expected: readonly TextMatch[], options?:
|
|
117
|
+
toHaveText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
118
|
+
toHaveText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
|
|
111
119
|
/** Waits for contained normalized text; a list waits for each entry to be contained by a distinct match, in order, extra matches allowed. */
|
|
112
|
-
toContainText(expected: TextMatch, options?:
|
|
113
|
-
toContainText(expected: readonly TextMatch[], options?:
|
|
120
|
+
toContainText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
121
|
+
toContainText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
|
|
114
122
|
/** Waits for a form control's value, compared as it is. */
|
|
115
123
|
toHaveValue(expected: TextMatch, options?: { timeout?: number }): Promise<void>;
|
|
116
124
|
/** Waits for the attribute to be present; with `value`, for it to match. */
|
|
117
125
|
toHaveAttribute(name: string, options?: { timeout?: number }): Promise<void>;
|
|
118
|
-
toHaveAttribute(name: string, value: TextMatch, options?:
|
|
126
|
+
toHaveAttribute(name: string, value: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
119
127
|
/** Waits for an exact match count. */
|
|
120
128
|
toHaveCount(expected: number, options?: { timeout?: number }): Promise<void>;
|
|
121
129
|
/** Waits for an accessible name. */
|
|
122
|
-
toHaveAccessibleName(expected: TextMatch, options?:
|
|
130
|
+
toHaveAccessibleName(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/** Options of a locator matcher that compares text. */
|
|
134
|
+
export interface TextMatcherOptions {
|
|
135
|
+
/** Compares a string case-insensitively; on a RegExp, `true` adds the `i` flag and `false` removes it. */
|
|
136
|
+
ignoreCase?: boolean;
|
|
137
|
+
/** Assertion budget in milliseconds. */
|
|
138
|
+
timeout?: number;
|
|
123
139
|
}
|
|
124
140
|
```
|
|
125
141
|
|
|
@@ -140,6 +156,22 @@ password input, `toHaveAttribute` throws `POLICY_DENIED` like
|
|
|
140
156
|
`toBeAttached` passes once one match exists, hidden or shown, where
|
|
141
157
|
`toBeVisible` needs a shown one. Negated, it passes once nothing matches.
|
|
142
158
|
|
|
159
|
+
The boolean options Playwright gives these matchers work the same way:
|
|
160
|
+
`toBeChecked({ checked: false })` waits for an unchecked node,
|
|
161
|
+
`toBeEnabled({ enabled: false })` for a disabled one,
|
|
162
|
+
`toBeVisible({ visible: false })` for a hidden or absent one, as
|
|
163
|
+
`toBeHidden` does, and `toBeAttached({ attached: false })` for no match.
|
|
164
|
+
`ignoreCase: true` on `toHaveText`, `toContainText`, `toHaveAccessibleName`,
|
|
165
|
+
and the value form of `toHaveAttribute` compares a string case-insensitively
|
|
166
|
+
and adds the `i` flag to a `RegExp`; `ignoreCase: false` removes it.
|
|
167
|
+
|
|
168
|
+
A matcher refuses any other option key, and a flag that is not a boolean, with
|
|
169
|
+
`INVALID_ARGUMENT` before it reads the screen. Types catch these in
|
|
170
|
+
TypeScript, but `e2e run` does not type-check, so the check runs for a
|
|
171
|
+
JavaScript test or a computed option object too. Playwright options e2e does
|
|
172
|
+
not implement, such as `indeterminate` on `toBeChecked` or `useInnerText` on
|
|
173
|
+
`toHaveText`, fail this way instead of passing on the default.
|
|
174
|
+
|
|
143
175
|
`toHaveText([...])` and `toContainText([...])` check a list, with no
|
|
144
176
|
exactly-one rule; the failure message lists every text observed.
|
|
145
177
|
`toHaveText([...])` needs the match count to equal the list length and the
|
|
@@ -153,6 +185,8 @@ holds. Negated, it fails as soon as that ordered subsequence exists, so
|
|
|
153
185
|
|
|
154
186
|
```ts
|
|
155
187
|
await expect(screen.getByRole('status')).toHaveText('Saved');
|
|
188
|
+
await expect(screen.getByRole('alert')).not.toContainText('error', { ignoreCase: true });
|
|
189
|
+
await expect(screen.getByLabel('Subscribe')).toBeChecked({ checked: false });
|
|
156
190
|
await expect(screen.getByTestId('todo')).toHaveCount(3);
|
|
157
191
|
await expect(screen.getByTestId('todo')).toHaveText(['Write spec', /^Ship/, 'Release']);
|
|
158
192
|
await expect(screen.getByTestId('todo')).toContainText(['spec', 'runner', 'Release']);
|
|
@@ -170,8 +204,8 @@ Every matcher call is a recorded `expect.<matcher>` assertion step.
|
|
|
170
204
|
export interface BrowserExpectation {
|
|
171
205
|
/** Inverts the matcher. */
|
|
172
206
|
readonly not: BrowserExpectation;
|
|
173
|
-
/** Waits for the current URL to match. */
|
|
174
|
-
toHaveURL(expected: string | RegExp, options?: { timeout?: number }): Promise<void>;
|
|
207
|
+
/** Waits for the current URL to match; `ignoreCase` compares a string case-insensitively and adds the `i` flag to a RegExp, `false` removes it. */
|
|
208
|
+
toHaveURL(expected: string | RegExp, options?: { ignoreCase?: boolean; timeout?: number }): Promise<void>;
|
|
175
209
|
/** Waits for the current title to match. */
|
|
176
210
|
toHaveTitle(expected: TextMatch, options?: { timeout?: number }): Promise<void>;
|
|
177
211
|
/** Waits for the target's `class` attribute to match: a string is the whole normalized class list, a RegExp is tested against it. */
|
|
@@ -181,7 +215,10 @@ export interface BrowserExpectation {
|
|
|
181
215
|
|
|
182
216
|
A relative `toHaveURL` string resolves against the base URL and matches
|
|
183
217
|
exactly after normalization; a `RegExp` tests the full URL. Anything else,
|
|
184
|
-
such as a predicate function, is `INVALID_ARGUMENT`.
|
|
218
|
+
such as a predicate function, is `INVALID_ARGUMENT`. `toHaveURL` also takes
|
|
219
|
+
Playwright's `ignoreCase`, with the locator matchers' semantics. Otherwise each
|
|
220
|
+
`browser` matcher takes `timeout` only; any other key, such as `ignoreCase` on
|
|
221
|
+
`toHaveTitle`, which Playwright does not take either, is `INVALID_ARGUMENT`.
|
|
185
222
|
|
|
186
223
|
`toHaveClass` polls for the node too: a target that matches nothing yet is one
|
|
187
224
|
more poll, not a failure, until the assertion timeout runs out. An ambiguous
|
|
@@ -293,8 +330,11 @@ side is refused.
|
|
|
293
330
|
`toHaveProperty` walks a dotted path or an array of keys. Use the array form
|
|
294
331
|
when a key contains a dot, or to index an array by number
|
|
295
332
|
(`['lines', 0, 'sku']`). Inherited properties count; a property holding
|
|
296
|
-
`undefined` exists.
|
|
297
|
-
|
|
333
|
+
`undefined` exists. A string, number, or boolean on the path is read through
|
|
334
|
+
its wrapper object, as in Jest, so `toHaveProperty('label.length', 3)` and
|
|
335
|
+
`toHaveProperty(['label', 0], 'a')` reach into a string; `null` and
|
|
336
|
+
`undefined` have no properties. With a second argument the value at the path
|
|
337
|
+
must equal it by `toEqual` rules.
|
|
298
338
|
|
|
299
339
|
### Matching a schema
|
|
300
340
|
|
|
@@ -422,11 +462,15 @@ ASSERTION_FAILED: 2 soft assertions failed
|
|
|
422
462
|
A soft locator or `browser` matcher is still a recorded `expect.<matcher>` step,
|
|
423
463
|
marked failed, so the report shows where in the flow it landed. A soft value
|
|
424
464
|
matcher is not a step, the same as a hard one; its failure appears in the
|
|
425
|
-
|
|
465
|
+
attempt's error records.
|
|
426
466
|
|
|
427
467
|
When the body throws on its own, or times out, that error stays the
|
|
428
468
|
attempt's verdict and the soft failures are recorded beside it under
|
|
429
|
-
`secondaryErrors`. A body that skips itself with `test.skip(...)`
|
|
469
|
+
`secondaryErrors`. A body that skips itself with `test.skip(...)` keeps them
|
|
470
|
+
there too. The CLI shows `Skipped After Failure`; set
|
|
471
|
+
[`failOnSkippedFailure: true`](/reference/config) to make that run fail with
|
|
472
|
+
exit code 1. Without that option, the test stays skipped and does not affect
|
|
473
|
+
the exit code.
|
|
430
474
|
|
|
431
475
|
A soft `toMatchSchema` returns the schema's output when the value matches
|
|
432
476
|
and `undefined` after a kept failure, and its type says so.
|
|
@@ -511,3 +555,14 @@ await expect.poll(() => readStatus(), { message: 'the batch never finished' }).n
|
|
|
511
555
|
|
|
512
556
|
`expect.poll` is not recorded as a report step; a timeout surfaces only as
|
|
513
557
|
the test's failure.
|
|
558
|
+
|
|
559
|
+
Await every poll. A poll belongs to the phase that started it: the test body
|
|
560
|
+
(with its fixtures and `beforeEach` hooks), one `afterEach` hook or fixture
|
|
561
|
+
teardown, or one `beforeAll` or `afterAll` hook. When that phase returns while
|
|
562
|
+
the poll still runs, the poll is cancelled and the phase fails with
|
|
563
|
+
`STEP_NOT_AWAITED` at the line of the call, whether or not the poll would
|
|
564
|
+
have passed. It never fails a later test: a poll started by work its phase
|
|
565
|
+
left running, such as a body past its timeout, is cancelled before its first
|
|
566
|
+
read. A body that threw keeps its own
|
|
567
|
+
error and records this one under `secondaryErrors`, and a suite hook reports
|
|
568
|
+
it as `HOOK_FAILED`.
|
package/docs/reference/mcp.mdx
CHANGED
|
@@ -53,6 +53,9 @@ For clients that use a `mcpServers` config, add:
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
The server needs no model: a project without the optional `ai` package
|
|
57
|
+
opens sessions and drives the app with the deterministic tools.
|
|
58
|
+
|
|
56
59
|
Start the server in the project directory. Config discovery works like
|
|
57
60
|
`e2e run`. Set `--config` for another location, or pass `config` to
|
|
58
61
|
`open_session` for one session.
|
|
@@ -3,7 +3,8 @@ title: Mobile
|
|
|
3
3
|
description: Mobile engine options and the device fixture for iOS and Android.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
`@e2e-dev/mobile` drives iOS simulators
|
|
6
|
+
`@e2e-dev/mobile` drives iOS simulators, Android emulators, and connected
|
|
7
|
+
phones through
|
|
7
8
|
[agent-device](https://github.com/callstack/agent-device). `agent`, `app`,
|
|
8
9
|
`screen`, and `expect` work as they do everywhere; this page covers what is
|
|
9
10
|
specific to a device target. Import `test` from the package to have `device`
|
|
@@ -79,8 +80,9 @@ export interface MobileOptions {
|
|
|
79
80
|
/** Platform the target's device runs. */
|
|
80
81
|
readonly platform: MobilePlatform;
|
|
81
82
|
/**
|
|
82
|
-
*
|
|
83
|
-
* serial (`emulator-5554`)
|
|
83
|
+
* Device to use: a simulator or emulator by name, simulator UDID, or
|
|
84
|
+
* emulator serial (`emulator-5554`), or a connected phone by name. A list
|
|
85
|
+
* is a pool: the
|
|
84
86
|
* engine declares one worker per entry and worker slot `n` drives the
|
|
85
87
|
* `n`th, so `workers` at or above the pool size runs the target's files
|
|
86
88
|
* across every device at once. Omitted, the pool is every booted device of
|
|
@@ -278,8 +280,8 @@ export interface Device {
|
|
|
278
280
|
* `relaunch` restarts it fresh. `launchArguments` and `permissions` apply
|
|
279
281
|
* to this launch alone; the target's configured ones apply to a `relaunch`
|
|
280
282
|
* of the pinned app, and to no foreground-only open. A link is
|
|
281
|
-
* `INVALID_ARGUMENT` (`file:`, `data:`,
|
|
282
|
-
* `POLICY_DENIED`): `openLink` opens one.
|
|
283
|
+
* `INVALID_ARGUMENT` (`file:`, `data:`, `javascript:`, `view-source:`,
|
|
284
|
+
* `blob:`, and `filesystem:` are `POLICY_DENIED`): `openLink` opens one.
|
|
283
285
|
*/
|
|
284
286
|
openApp(app: string, options?: OpenAppOptions): Promise<void>;
|
|
285
287
|
/**
|
|
@@ -289,8 +291,8 @@ export interface Device {
|
|
|
289
291
|
* a web link the app does not claim goes to Safari, and the next
|
|
290
292
|
* observation brings the app back. Android starts the link on that
|
|
291
293
|
* package. Without an app, Android lets the OS route the link; iOS needs
|
|
292
|
-
* one (`INVALID_ARGUMENT` without). `file:`, `data:`,
|
|
293
|
-
* links are `POLICY_DENIED`.
|
|
294
|
+
* one (`INVALID_ARGUMENT` without). `file:`, `data:`, `javascript:`,
|
|
295
|
+
* `view-source:`, `blob:`, and `filesystem:` links are `POLICY_DENIED`.
|
|
294
296
|
*/
|
|
295
297
|
openLink(url: string, options?: { app?: string }): Promise<void>;
|
|
296
298
|
/**
|
|
@@ -426,7 +428,10 @@ session opened. Android reads the device's foreground activity.
|
|
|
426
428
|
`installApp` installs a build from inside a test or a fixture: the run's build once per device (no path installs `app.appPath`), or another build for an upgrade path. A plain
|
|
427
429
|
install keeps the app's data; `reinstall: true` removes the app named by
|
|
428
430
|
`app` (default: the pinned app) first. It resolves to the id to `openApp`
|
|
429
|
-
the build by
|
|
431
|
+
the build by: the bundle id or package agent-device read from the build, else
|
|
432
|
+
the `app` passed in. With no reported id and no `app`, the install is
|
|
433
|
+
`ENGINE_FAILURE` instead of a file path posing as an id; see
|
|
434
|
+
[Troubleshooting](/mobile#troubleshooting).
|
|
430
435
|
|
|
431
436
|
```ts
|
|
432
437
|
const { app } = await device.installApp('./build/MyApp.app', { reinstall: true });
|
|
@@ -444,9 +449,9 @@ name (`Settings`); `relaunch: true` restarts it fresh, and `launchArguments`
|
|
|
444
449
|
and `permissions` apply to that launch alone (the target's own apply to a
|
|
445
450
|
`relaunch` of the pinned app). It takes no link:
|
|
446
451
|
agent-device opens any `scheme:rest` string as a URL, so a link is refused
|
|
447
|
-
before the device sees it. A `file:`, `data:`,
|
|
448
|
-
`
|
|
449
|
-
`INVALID_ARGUMENT` pointing at `openLink`.
|
|
452
|
+
before the device sees it. A `file:`, `data:`, `javascript:`,
|
|
453
|
+
`view-source:`, `blob:`, or `filesystem:` link is `POLICY_DENIED`; any other
|
|
454
|
+
link is `INVALID_ARGUMENT` pointing at `openLink`.
|
|
450
455
|
|
|
451
456
|
`openLink` opens a deep link or a web link into `app` (default: the pinned
|
|
452
457
|
app), for magic-link sign-in and deep-link routes, and the session observes
|
|
@@ -456,8 +461,13 @@ observation brings the app back. Android starts the link on that package.
|
|
|
456
461
|
Without an app, Android lets the OS route the link, to a verified app link
|
|
457
462
|
owner or the browser, and the session follows the package that took it. iOS
|
|
458
463
|
needs an app: an open bound to none leaves no app session to observe, so it
|
|
459
|
-
is `INVALID_ARGUMENT`. `file:`, `data:`,
|
|
460
|
-
`
|
|
464
|
+
is `INVALID_ARGUMENT`. `file:`, `data:`, `javascript:`, `view-source:`,
|
|
465
|
+
`blob:`, and `filesystem:` links are `POLICY_DENIED`. A device link may use
|
|
466
|
+
any app's custom scheme, so the rule refuses these schemes rather than
|
|
467
|
+
admitting http(s) alone as the web does. A string that does not parse as an
|
|
468
|
+
absolute URL is `INVALID_ARGUMENT` too, and its message names no part of the
|
|
469
|
+
input, which may carry a magic-link token in its query, path, or userinfo.
|
|
470
|
+
The report shows the link cut before its
|
|
461
471
|
query and fragment, where a magic link carries its token. The replay cache
|
|
462
472
|
anchors on the location the link lands on: a step recorded after `openLink`
|
|
463
473
|
replays when the link lands on the same screen again.
|
|
@@ -171,7 +171,7 @@ prints. All reporters run concurrently, each with a one-minute deadline.
|
|
|
171
171
|
A timeout, exception, or invalid return value is reported on stderr without
|
|
172
172
|
changing the run's status, exit code, or report.
|
|
173
173
|
|
|
174
|
-
One Ctrl-C still lets reporters finish. A second Ctrl-C stops waiting for them.
|
|
174
|
+
One Ctrl-C still lets reporters finish. A second Ctrl-C stops waiting for them, except the built-in `junit` and `markdown`, which still write their files so none of the previous run's is left beside the new report.
|
|
175
175
|
|
|
176
176
|
The second argument is an `AbortSignal` that aborts when the budget runs out
|
|
177
177
|
or the run is forced to stop. Hand it to every request and timer, or an
|
|
@@ -180,7 +180,13 @@ abandoned reporter keeps the CLI alive after the run has ended.
|
|
|
180
180
|
With `--last-failed`, `lastRun` is the report the rerun selected from. The
|
|
181
181
|
rerun's own report lists the tests it left out as unselected, so a reporter
|
|
182
182
|
that keeps one place current, the way `@e2e-dev/github` keeps a pull request
|
|
183
|
-
comment, folds the rerun into `lastRun` to show both runs as one.
|
|
183
|
+
comment, folds the rerun into `lastRun` to show both runs as one. A test the
|
|
184
|
+
rerun owed but another filter left out is in the rerun's `run.carried`: its
|
|
185
|
+
last result, the serial group its attempts live on, and the `beforeAll` or
|
|
186
|
+
`afterAll` failure whose scope holds it, from whichever earlier run reported
|
|
187
|
+
them. A fold shows the carried result in place of the unselected one and
|
|
188
|
+
counts a carried failure or hook error against the outcome. The artifacts
|
|
189
|
+
both reports name are on disk under `artifactsRoot`.
|
|
184
190
|
|
|
185
191
|
The rows a reporter resolves with print under the `list` summary in the same
|
|
186
192
|
layout as `Report`; the `json` reporter does not carry them:
|
|
@@ -107,7 +107,14 @@ await screen.getByTestId('memory-list', { visible: true }).getByRole('listitem')
|
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
`visible` uses the same visibility check as `toBeVisible()`, `isVisible()`,
|
|
110
|
-
and `waitFor()
|
|
110
|
+
and `waitFor()`: what renders, as Playwright reads it. `display: none`,
|
|
111
|
+
`visibility: hidden`, a box with no size, a closed `<details>` body, and
|
|
112
|
+
content under `content-visibility: hidden` are hidden; `aria-hidden` is not,
|
|
113
|
+
since a decorative spinner marked with it still paints, so
|
|
114
|
+
`toBeHidden()` on one waits until it leaves. A child that sets
|
|
115
|
+
`visibility: visible` under a hidden parent is visible. On the web, text
|
|
116
|
+
directly under a `display: contents` element with `visibility: hidden` is
|
|
117
|
+
hidden, where Playwright calls it visible. It works with scopes, `filter`, `first`, `last`, and `nth`:
|
|
111
118
|
`getByText('Save', { visible: true }).first()` is the first visible match.
|
|
112
119
|
Prefer it over `browser.locator('p:visible')`, which ties the test to CSS.
|
|
113
120
|
|
|
@@ -292,8 +299,12 @@ export interface Locator extends Screen {
|
|
|
292
299
|
all(): Promise<Locator[]>;
|
|
293
300
|
/** Reads the normalized text of every current match, without auto-waiting; empty when nothing matches. */
|
|
294
301
|
allTextContents(): Promise<string[]>;
|
|
295
|
-
/**
|
|
296
|
-
|
|
302
|
+
/**
|
|
303
|
+
* Waits for the requested locator state, `visible` by default: `attached`
|
|
304
|
+
* for one match, visible or not; `detached` for none; `hidden` for none or
|
|
305
|
+
* a hidden one.
|
|
306
|
+
*/
|
|
307
|
+
waitFor(options?: { state?: 'attached' | 'detached' | 'visible' | 'hidden'; timeout?: number }): Promise<void>;
|
|
297
308
|
/** Adds deterministic locator filters. */
|
|
298
309
|
filter(options: { hasText?: TextMatch; has?: Locator }): Locator;
|
|
299
310
|
/** Selects the first current match. */
|
|
@@ -382,7 +393,11 @@ await screen.getByLabel('City').pressSequentially('War', { delay: 50 });
|
|
|
382
393
|
## Locator reads
|
|
383
394
|
|
|
384
395
|
`waitFor` defaults `state` to `'visible'` and `timeout` to
|
|
385
|
-
`config.actionTimeout`, and throws `LOCATOR_NOT_FOUND` on timeout.
|
|
396
|
+
`config.actionTimeout`, and throws `LOCATOR_NOT_FOUND` on timeout. `'attached'`
|
|
397
|
+
waits for one match, hidden or shown, `'detached'` for none, and `'hidden'` for
|
|
398
|
+
a hidden match or none. Several matches are `LOCATOR_AMBIGUOUS` in every
|
|
399
|
+
state. Any other state, or an option key besides `state` and `timeout`, is
|
|
400
|
+
`INVALID_ARGUMENT` before anything is resolved.
|
|
386
401
|
|
|
387
402
|
`textContent` and `allTextContents` return the node's rendered text with
|
|
388
403
|
whitespace collapsed to single spaces. On the web that is what `innerText`
|
|
@@ -399,6 +414,12 @@ a heading; it does not throw.
|
|
|
399
414
|
`toHaveText`, `toContainText`, and `toHaveAttribute`.
|
|
400
415
|
`isEnabled`, `isDisabled`, `isChecked`, and `boundingBox` are allowed there.
|
|
401
416
|
|
|
417
|
+
`boundingBox()` is `null` for a node that lays out no box (`display: none`
|
|
418
|
+
on it or an ancestor), and a box for one `visibility: hidden` keeps.
|
|
419
|
+
`inputValue()` and `toHaveValue` on a checkbox or radio read its value
|
|
420
|
+
attribute, `on` when it has none, whatever its checked state; `isChecked()`
|
|
421
|
+
reads the state.
|
|
422
|
+
|
|
402
423
|
`isHidden` is `!isVisible()` and `isDisabled` is `!isEnabled()`, with the
|
|
403
424
|
same strictness: `isHidden` is `true` for zero matches, `isDisabled` is
|
|
404
425
|
`LOCATOR_NOT_FOUND` there, and both are `LOCATOR_AMBIGUOUS` on several.
|
|
@@ -521,7 +542,7 @@ export interface TextMatchOptions {
|
|
|
521
542
|
/**
|
|
522
543
|
* Role query options. A role query never matches a node hidden from the
|
|
523
544
|
* accessibility tree, on every engine; `visible` (inherited) is the one knob
|
|
524
|
-
* that narrows the other query kinds the
|
|
545
|
+
* that narrows the other query kinds, to the nodes `toBeVisible()` accepts.
|
|
525
546
|
*/
|
|
526
547
|
export interface RoleOptions extends TextMatchOptions {
|
|
527
548
|
/** Accessible name filter. */
|
|
@@ -623,8 +644,10 @@ export type ScrollDirection = 'up' | 'down' | 'left' | 'right';
|
|
|
623
644
|
export type Momentum = 'none' | 'slow' | 'fast';
|
|
624
645
|
```
|
|
625
646
|
|
|
626
|
-
A role query never matches a node hidden from the accessibility tree
|
|
627
|
-
|
|
647
|
+
A role query never matches a node hidden from the accessibility tree: one
|
|
648
|
+
that does not render, or one under `aria-hidden`. `visible` narrows the
|
|
649
|
+
other query kinds to the nodes that render, the check `toBeVisible()` makes,
|
|
650
|
+
so an `aria-hidden` node that still paints counts as visible there. See
|
|
628
651
|
[Hidden duplicates](#hidden-duplicates).
|
|
629
652
|
|
|
630
653
|
`img` is an alias, not a role: `getByRole('img', { name })` builds the same
|
package/docs/reference/test.mdx
CHANGED
|
@@ -97,16 +97,23 @@ group titles and then the test's own, are a `COLLECTION_ERROR`.
|
|
|
97
97
|
|
|
98
98
|
## Members
|
|
99
99
|
|
|
100
|
-
A skipped test
|
|
100
|
+
A skipped test does not affect the exit code by default. With `test.only`, other tests
|
|
101
101
|
are reported as `filtered`, and a CI run fails with `ONLY_IN_CI`.
|
|
102
102
|
|
|
103
103
|
Call `test.skip(condition, reason)` inside a test for conditions you learn at
|
|
104
104
|
runtime, such as a disabled feature flag. When the condition is true, the call
|
|
105
105
|
throws: the body stops at that line, as Playwright's does, and the test is
|
|
106
106
|
reported `skipped` with `reason`, with no retry. Nothing after the call runs.
|
|
107
|
-
Steps before it stay in the report as they ran
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
Steps before it stay in the report as they ran. Soft failures before the call
|
|
108
|
+
remain in the attempt's `secondaryErrors`, and the CLI lists the test under
|
|
109
|
+
`Skipped After Failure`. A failed attempt followed by a skip on retry appears
|
|
110
|
+
there too, with its original error. Hooks and fixtures still run their teardown.
|
|
111
|
+
When the condition is a precondition, call it first, before any step.
|
|
112
|
+
|
|
113
|
+
Set [`failOnSkippedFailure: true`](/reference/config) to fail the run with exit
|
|
114
|
+
code 1 when a runtime skip follows a failure in that test. The test remains
|
|
115
|
+
`skipped` with its reason, and the skip does not trigger another retry. Clean
|
|
116
|
+
skips and retries that pass are unaffected. The default is `false`.
|
|
110
117
|
|
|
111
118
|
A setup test cannot skip because other tests depend on its sessions; the
|
|
112
119
|
call fails with `INVALID_ARGUMENT`. Outside a test body, the conditional
|