@testdriverai/mcp 7.11.135-test → 7.11.137-test
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/ai/skills/testdriver-assert/SKILL.md +5 -5
- package/ai/skills/testdriver-caching/SKILL.md +2 -2
- package/ai/skills/testdriver-changelog/SKILL.md +186 -0
- package/ai/skills/testdriver-claude-mcp-plugin/SKILL.md +208 -0
- package/ai/skills/testdriver-click/SKILL.md +13 -13
- package/ai/skills/testdriver-client/SKILL.md +1 -1
- package/ai/skills/testdriver-debugging-with-screenshots/SKILL.md +5 -5
- package/ai/skills/testdriver-double-click/SKILL.md +7 -7
- package/ai/skills/testdriver-enterprise/SKILL.md +1 -1
- package/ai/skills/testdriver-events/SKILL.md +1 -1
- package/ai/skills/testdriver-exec/SKILL.md +10 -10
- package/ai/skills/testdriver-extract/SKILL.md +6 -6
- package/ai/skills/testdriver-find/SKILL.md +61 -61
- package/ai/skills/testdriver-focus-application/SKILL.md +6 -6
- package/ai/skills/testdriver-generating-tests/SKILL.md +3 -3
- package/ai/skills/testdriver-hosted/SKILL.md +3 -3
- package/ai/skills/testdriver-hover/SKILL.md +6 -6
- package/ai/skills/testdriver-making-assertions/SKILL.md +2 -2
- package/ai/skills/testdriver-mouse-down/SKILL.md +9 -9
- package/ai/skills/testdriver-mouse-up/SKILL.md +9 -9
- package/ai/skills/testdriver-parse/SKILL.md +4 -4
- package/ai/skills/testdriver-performing-actions/SKILL.md +4 -4
- package/ai/skills/testdriver-press-keys/SKILL.md +5 -5
- package/ai/skills/testdriver-quickstart/SKILL.md +51 -54
- package/ai/skills/testdriver-redraw/SKILL.md +1 -1
- package/ai/skills/testdriver-right-click/SKILL.md +7 -7
- package/ai/skills/testdriver-screenshot/SKILL.md +9 -9
- package/ai/skills/testdriver-scroll/SKILL.md +13 -13
- package/ai/skills/testdriver-self-hosted/SKILL.md +1 -1
- package/ai/skills/testdriver-type/SKILL.md +7 -7
- package/ai/skills/testdriver-wait/SKILL.md +5 -5
- package/ai/skills/testdriver-what-is-testdriver/SKILL.md +11 -11
- package/docs/{v7/_drafts → _drafts}/agents.mdx +1 -1
- package/docs/{v7/_drafts → _drafts}/best-practices.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/caching-selectors.mdx +3 -3
- package/docs/{v7/_drafts → _drafts}/configuration.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/debugging.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/error-handling.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/faq.mdx +7 -7
- package/docs/{v7/_drafts → _drafts}/installation.mdx +2 -2
- package/docs/{v7/_drafts → _drafts}/migration.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/observable.mdx +3 -3
- package/docs/{v7/_drafts → _drafts}/powerful.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/readme.mdx +11 -11
- package/docs/{v7/_drafts → _drafts}/reports.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/scalable.mdx +10 -10
- package/docs/{v7/_drafts → _drafts}/troubleshooting.mdx +4 -4
- package/docs/{v7/_drafts → _drafts}/vitest-plugin.mdx +2 -2
- package/docs/{v7/_drafts → _drafts}/vitest.mdx +9 -9
- package/docs/_scripts/generate-examples.js +9 -10
- package/docs/_scripts/generate-skills.js +4 -4
- package/docs/{v7/agent.mdx → agent.mdx} +17 -17
- package/docs/{v7/assert.mdx → assert.mdx} +5 -5
- package/docs/{v7/aws-setup.mdx → aws-setup.mdx} +6 -6
- package/docs/{v7/cache.mdx → cache.mdx} +9 -9
- package/docs/{v7/caching.mdx → caching.mdx} +13 -12
- package/docs/{v7/captcha.mdx → captcha.mdx} +7 -7
- package/docs/changelog.mdx +13 -13
- package/docs/{v7/ci-cd.mdx → ci-cd.mdx} +10 -10
- package/docs/{v7/click.mdx → click.mdx} +13 -13
- package/docs/client.mdx +323 -0
- package/docs/{v7/copilot → copilot}/auto-healing.mdx +2 -2
- package/docs/{v7/copilot → copilot}/running-tests.mdx +8 -8
- package/docs/{v7/customizing-devices.mdx → customizing-devices.mdx} +1 -1
- package/docs/{v7/dashcam.mdx → dashcam.mdx} +3 -3
- package/docs/{v7/debugging-with-screenshots.mdx → debugging-with-screenshots.mdx} +12 -12
- package/docs/docs.json +429 -288
- package/docs/{v7/double-click.mdx → double-click.mdx} +7 -7
- package/docs/{v7/elements.mdx → elements.mdx} +7 -7
- package/docs/{v7/enterprise.mdx → enterprise.mdx} +2 -2
- package/docs/{v7/errors.mdx → errors.mdx} +3 -3
- package/docs/{v7/events.mdx → events.mdx} +4 -4
- package/docs/{v7/exec.mdx → exec.mdx} +10 -10
- package/docs/{v7/extract.mdx → extract.mdx} +10 -10
- package/docs/{v7/find.mdx → find.mdx} +61 -61
- package/docs/{v7/focus-application.mdx → focus-application.mdx} +6 -6
- package/docs/{v7/generating-tests.mdx → generating-tests.mdx} +10 -10
- package/docs/guide/best-practices-polling.mdx +6 -1
- package/docs/{v7/hosted.mdx → hosted.mdx} +7 -7
- package/docs/{v7/hover.mdx → hover.mdx} +6 -6
- package/docs/interacting-with-your-app.mdx +198 -0
- package/docs/locating-elements.mdx +423 -0
- package/docs/{v7/making-assertions.mdx → making-assertions.mdx} +7 -7
- package/docs/{v7/mouse-down.mdx → mouse-down.mdx} +9 -9
- package/docs/{v7/mouse-up.mdx → mouse-up.mdx} +9 -9
- package/docs/options.mdx +320 -0
- package/docs/{v7/parse.mdx → parse.mdx} +12 -12
- package/docs/{v7/performing-actions.mdx → performing-actions.mdx} +11 -11
- package/docs/{v7/press-keys.mdx → press-keys.mdx} +5 -5
- package/docs/{v7/provision.mdx → provision.mdx} +9 -9
- package/docs/quickstart-cli.mdx +437 -0
- package/docs/quickstart-github.mdx +54 -0
- package/docs/quickstart-manual.mdx +135 -0
- package/docs/quickstart.mdx +22 -0
- package/docs/{v7/redraw.mdx → redraw.mdx} +7 -7
- package/docs/{v7/reusable-code.mdx → reusable-code.mdx} +3 -3
- package/docs/{v7/right-click.mdx → right-click.mdx} +7 -7
- package/docs/{v7/screenshot.mdx → screenshot.mdx} +9 -9
- package/docs/{v7/screenshots.mdx → screenshots.mdx} +3 -3
- package/docs/{v7/scroll.mdx → scroll.mdx} +13 -13
- package/docs/{v7/secrets.mdx → secrets.mdx} +4 -4
- package/docs/{v7/self-hosted.mdx → self-hosted.mdx} +7 -7
- package/docs/{v7/test-results-json.mdx → test-results-json.mdx} +4 -4
- package/docs/{v7/type.mdx → type.mdx} +7 -7
- package/docs/{v7/variables.mdx → variables.mdx} +2 -2
- package/docs/{v7/wait.mdx → wait.mdx} +5 -5
- package/docs/what-is-testdriver.mdx +54 -0
- package/package.json +1 -1
- package/scripts/generate-skills.js +1 -1
- package/docs/v7/client.mdx +0 -486
- package/docs/v7/quickstart.mdx +0 -451
- package/docs/v7/what-is-testdriver.mdx +0 -54
- /package/docs/{v7/_drafts → _drafts}/architecture.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/auto-cache-key.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/awesome-logs-quick-ref.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/cli-to-sdk-migration.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/assert.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/exec.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/focus-application.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/hover-image.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/hover-text.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/if.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/match-image.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/press-keys.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/remember.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/run.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/scroll-until-image.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/scroll-until-text.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/scroll.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/type.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/wait-for-image.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/wait-for-text.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/commands/wait.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/contributing.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/dashcam-title-feature.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/hooks.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/init-command.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/playwright.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/plugin-migration.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/presets.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/progressive-disclosure.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/provision.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/quick-start-test-recording.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/screenshot.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/sdk-awesome-logs.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/sdk-browser-rendering.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/sdk-migration.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/sdk-v7-complete.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/self-hosting.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/test-recording.mdx +0 -0
- /package/docs/{v7/_drafts → _drafts}/writing-tests.mdx +0 -0
- /package/docs/{v7/examples → examples}/ai.mdx +0 -0
- /package/docs/{v7/examples → examples}/assert.mdx +0 -0
- /package/docs/{v7/examples → examples}/captcha-api.mdx +0 -0
- /package/docs/{v7/examples → examples}/chrome-extension.mdx +0 -0
- /package/docs/{v7/examples → examples}/drag-and-drop.mdx +0 -0
- /package/docs/{v7/examples → examples}/element-not-found.mdx +0 -0
- /package/docs/{v7/examples → examples}/findall-coffee-icons.mdx +0 -0
- /package/docs/{v7/examples → examples}/formatted-logging.mdx +0 -0
- /package/docs/{v7/examples → examples}/hover-image.mdx +0 -0
- /package/docs/{v7/examples → examples}/hover-text-with-description.mdx +0 -0
- /package/docs/{v7/examples → examples}/hover-text.mdx +0 -0
- /package/docs/{v7/examples → examples}/installer.mdx +0 -0
- /package/docs/{v7/examples → examples}/launch-vscode-linux.mdx +0 -0
- /package/docs/{v7/examples → examples}/match-image.mdx +0 -0
- /package/docs/{v7/examples → examples}/parse.mdx +0 -0
- /package/docs/{v7/examples → examples}/press-keys.mdx +0 -0
- /package/docs/{v7/examples → examples}/scroll-keyboard.mdx +0 -0
- /package/docs/{v7/examples → examples}/scroll-until-text.mdx +0 -0
- /package/docs/{v7/examples → examples}/scroll.mdx +0 -0
- /package/docs/{v7/examples → examples}/type.mdx +0 -0
- /package/docs/{v7/mcp.mdx → mcp.mdx} +0 -0
|
@@ -6,7 +6,7 @@ description: Make AI-powered assertions about screen state
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
Make
|
|
9
|
+
Make assertions about the screen state with natural language and AI. The AI examines the screen. It makes sure that your assertion is true.
|
|
10
10
|
|
|
11
11
|
## Syntax
|
|
12
12
|
|
|
@@ -53,7 +53,7 @@ await testdriver.assert(assertion, options)
|
|
|
53
53
|
|
|
54
54
|
## Returns
|
|
55
55
|
|
|
56
|
-
`Promise<boolean>` - `true` if assertion passes
|
|
56
|
+
`Promise<boolean>` - `true` if the assertion passes. It throws an error if the assertion fails.
|
|
57
57
|
|
|
58
58
|
## Examples
|
|
59
59
|
|
|
@@ -100,7 +100,7 @@ await testdriver.assert('the modal dialog is open');
|
|
|
100
100
|
<Check>
|
|
101
101
|
**Assert state changes**
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
Make sure of the state before and after actions:
|
|
104
104
|
|
|
105
105
|
```javascript
|
|
106
106
|
// Before
|
|
@@ -310,5 +310,5 @@ describe('Assertions', () => {
|
|
|
310
310
|
|
|
311
311
|
## Related Methods
|
|
312
312
|
|
|
313
|
-
- [`extract()`](/
|
|
314
|
-
- [`find()`](/
|
|
313
|
+
- [`extract()`](/extract) - Extract information for detailed assertions
|
|
314
|
+
- [`find()`](/find) - Locate elements to verify
|
|
@@ -4,7 +4,7 @@ description: How TestDriver learns your app and caches what it discovers for ins
|
|
|
4
4
|
---
|
|
5
5
|
<!-- Generated from caching.mdx. DO NOT EDIT. -->
|
|
6
6
|
|
|
7
|
-
Once the agent has [explored your app](/
|
|
7
|
+
Once the agent has [explored your app](/generating-tests), TestDriver remembers what it found. Every element the AI vision agent discovers is cached with a vision fingerprint—a perceptual hash of the screen state where it was located. On the next run, TestDriver matches against that cache instead of calling the AI again. Passing tests replay instantly, deterministically, and cheaply.
|
|
8
8
|
|
|
9
9
|
This learning is what makes TestDriver fast. Intelligent caching delivers up to **1.7x faster** test execution by skipping redundant AI vision analysis—the agent only thinks when it sees something new.
|
|
10
10
|
|
|
@@ -126,6 +126,6 @@ await testdriver.find(`order ${orderId} status`, {
|
|
|
126
126
|
|
|
127
127
|
## Next
|
|
128
128
|
|
|
129
|
-
<Card href="/
|
|
129
|
+
<Card href="/copilot/running-tests" title="Run" icon="play">
|
|
130
130
|
Now that TestDriver has learned your app, run your tests in CI and locally—replaying the cache for fast, deterministic results.
|
|
131
131
|
</Card>
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testdriver:changelog
|
|
3
|
+
description: Product updates and announcements
|
|
4
|
+
---
|
|
5
|
+
<!-- Generated from changelog.mdx. DO NOT EDIT. -->
|
|
6
|
+
|
|
7
|
+
<Update label="v7.9.51-canary" description="April 2026" tags={["canary"]}>
|
|
8
|
+
|
|
9
|
+
🚀 Canary release
|
|
10
|
+
|
|
11
|
+
This release promotes changes from `v7.9.4-test` through `v7.9.51-test` to canary, rolling up all updates since `v7.9.3`.
|
|
12
|
+
|
|
13
|
+
✨ New features
|
|
14
|
+
|
|
15
|
+
- (Internal) **Autoscaling**
|
|
16
|
+
- (Internal) **End-to-end distributed tracing**
|
|
17
|
+
|
|
18
|
+
🔧 Improvements
|
|
19
|
+
|
|
20
|
+
- **Faster image matching**
|
|
21
|
+
- **Storage and infra hardening**
|
|
22
|
+
- **Sentry environment consistency**
|
|
23
|
+
- **Chrome extension interaction reliability**
|
|
24
|
+
- **Docs and onboarding refresh** — Updated v7 docs, SDK examples, and VS Code onboarding/init flows.
|
|
25
|
+
|
|
26
|
+
🐛 Bug fixes
|
|
27
|
+
|
|
28
|
+
- **Windows AMI build stability** — Fixed `chrome.exe` startup/build failures.
|
|
29
|
+
- **Realtime cleanup reliability** — Fixed connection cleanup leaks in session shutdown paths.
|
|
30
|
+
- **Environment and deployment fixes**
|
|
31
|
+
|
|
32
|
+
</Update>
|
|
33
|
+
|
|
34
|
+
<Update label="v7.8.0-test.22" description="March 2026" tags={["test"]}>
|
|
35
|
+
|
|
36
|
+
Releases test.11 through test.22 include version bumps and internal CI improvements across all packages. No new user-facing changes — see [v7.8.0-test.10](#v780-test10) for the latest updates in this release stream.
|
|
37
|
+
|
|
38
|
+
</Update>
|
|
39
|
+
|
|
40
|
+
<Update label="v7.8.0-test.10" description="March 2026" tags={["test"]}>
|
|
41
|
+
|
|
42
|
+
🔧 Improvements
|
|
43
|
+
|
|
44
|
+
- **Parallel test concurrency** — Concurrency limits are now enforced with atomic slot tracking, eliminating a race condition where multiple tests launching at the same time could all bypass the limit. If you hit your concurrency cap, the SDK waits and retries automatically.
|
|
45
|
+
- **Dashboard access for all plans** — Test recordings and metrics on the [dashboard](https://console.testdriver.ai) are now visible to all users, including those on the Free plan.
|
|
46
|
+
- **Sandbox message throttling** — High-frequency interactions no longer risk hitting connection limits. The SDK automatically paces outgoing messages during fast command sequences.
|
|
47
|
+
- **Windows Dashcam stability** — Web log tracking on Windows sandboxes now handles errors gracefully instead of failing the test.
|
|
48
|
+
|
|
49
|
+
</Update>
|
|
50
|
+
|
|
51
|
+
<Update label="v7.8.0-test.9" description="March 2026" tags={["test"]}>
|
|
52
|
+
|
|
53
|
+
🔧 Improvements
|
|
54
|
+
|
|
55
|
+
- **Stable release promotion** — Fixed an issue where promoting a test or canary release to stable could be incorrectly skipped. Stable releases now proceed reliably regardless of the prior pre-release channel.
|
|
56
|
+
- **Example docs sync** — Example documentation now updates more reliably, continuing even when individual example tests fail so that passing examples still get refreshed.
|
|
57
|
+
|
|
58
|
+
</Update>
|
|
59
|
+
|
|
60
|
+
<Update label="v7.8.0-test.8" description="March 2026" tags={["test"]}>
|
|
61
|
+
|
|
62
|
+
🔧 Improvements
|
|
63
|
+
|
|
64
|
+
- **VS Code environment switching** — The TestDriver VS Code extension now includes a status bar indicator and a new **TestDriver: Switch Environment** command. You can switch between stable, canary, and test environments directly from VS Code, and your MCP server configuration updates automatically.
|
|
65
|
+
- **Plan rename: Starter → Pro** — The "Starter" plan has been renamed to **Pro**. No changes to pricing or features — just a clearer name. The "Self-Hosted" tier is now labeled **Enterprise**.
|
|
66
|
+
- **SDK network resilience** — API requests now automatically retry on transient server errors (500, 502, 503, 504) with exponential backoff, reducing flaky test failures caused by brief infrastructure hiccups.
|
|
67
|
+
- **Pricing page refresh** — The [hosted plans page](/hosted) now shows plan cards with included minutes, concurrency limits, and pricing at a glance.
|
|
68
|
+
|
|
69
|
+
📚 Docs updates
|
|
70
|
+
|
|
71
|
+
- **Quickstart redesign** — The [quickstart](/quickstart) now has tabbed setup paths for CLI, GitHub Copilot, and manual installation.
|
|
72
|
+
- **Deployment section** — "Cloud" is now [Hosted](/hosted) and the previous Enterprise page has been consolidated into [Self-Hosted](/self-hosted), which covers both standard and air-gapped deployments.
|
|
73
|
+
|
|
74
|
+
</Update>
|
|
75
|
+
|
|
76
|
+
<Update label="v7.8.0-test.7" description="March 2026" tags={["test"]}>
|
|
77
|
+
This release includes all changes from v7.8.0-test.6 with version bumps across all packages. No additional user-facing changes.
|
|
78
|
+
</Update>
|
|
79
|
+
|
|
80
|
+
<Update label="v7.8.0-test.6" description="March 2026" tags={["test"]}>
|
|
81
|
+
|
|
82
|
+
🔧 Improvements
|
|
83
|
+
|
|
84
|
+
- **Sandbox spawning reliability** — Sandbox creation now uses a 3-minute timeout to handle slow infrastructure, then immediately switches to a 60-second orphan timeout for fast cleanup. This reduces sandbox creation failures during high-traffic periods.
|
|
85
|
+
- **Command deadline timeouts** — Sandbox commands now enforce a hard deadline that terminates execution if the connection drops mid-command, preventing tests from hanging indefinitely.
|
|
86
|
+
- **Real-time channel cleanup** — Fixed a compatibility issue with the real-time messaging layer that could cause channel cleanup to fail during shutdown.
|
|
87
|
+
- **Dashboard timestamp tooltips** — Extended UTC date tooltips to the test history sidebar. Hovering over any relative timestamp (e.g., "5 minutes ago") across the [dashboard](https://console.testdriver.ai) now shows the full UTC date and time.
|
|
88
|
+
|
|
89
|
+
</Update>
|
|
90
|
+
|
|
91
|
+
<Update label="v7.8.0-test.4" description="March 2026" tags={["test"]}>
|
|
92
|
+
|
|
93
|
+
✨ New features
|
|
94
|
+
|
|
95
|
+
- **[GitHub Copilot integration](/copilot/running-tests)** — Use TestDriver directly from GitHub Copilot in VS Code. The new MCP server lets Copilot launch sandboxes, interact with elements, and run assertions through natural language. Includes guides for [creating tests](/generating-tests), [running tests](/copilot/running-tests), [GitHub Actions integration](/copilot/auto-healing#use-testdriver-in-github), and [auto-healing](/copilot/auto-healing).
|
|
96
|
+
|
|
97
|
+
🔧 Improvements
|
|
98
|
+
|
|
99
|
+
- **Sandbox reliability** — Linux sandboxes now use a longer creation timeout to handle slow infrastructure, then immediately switch to a short orphan timeout for fast cleanup of disconnected sessions.
|
|
100
|
+
- **Command execution timeouts** — Sandbox commands now have deadline timeouts that prevent hangs if the connection drops mid-execution.
|
|
101
|
+
- **Real-time connection stability** — Updated the real-time messaging layer for better compatibility and more reliable channel cleanup during shutdown.
|
|
102
|
+
- **Dashboard date display** — Hovering over relative timestamps (e.g., "5 minutes ago") now shows the full UTC date and time.
|
|
103
|
+
|
|
104
|
+
</Update>
|
|
105
|
+
|
|
106
|
+
<Update label="v7.8.0-canary.5" description="March 2026" tags={["canary"]}>
|
|
107
|
+
This release includes all changes from v7.8.0-canary.4 with version bumps.
|
|
108
|
+
|
|
109
|
+
✨ New features
|
|
110
|
+
|
|
111
|
+
- **[Cache API](/cache)** — Speed up repeated test runs with screenshot-based caching. The system compares screenshots to cached results and reuses element positions when the screen hasn't changed, reducing AI calls.
|
|
112
|
+
- **[Custom error classes](/errors)** — New `ElementNotFoundError` class with rich debugging info including screenshot paths, pixel diffs, and detailed messages.
|
|
113
|
+
- **[Events system](/events)** — Listen to SDK lifecycle events with wildcard support via `testdriver.emitter`. Uses colon-delimited namespaces (e.g., `command:start`, `log:*`).
|
|
114
|
+
- **[Provision API](/provision)** — Launch browsers, desktop apps, VS Code, and Chrome extensions in your sandbox before tests run. Access via `testdriver.provision.*`.
|
|
115
|
+
- **[Redraw detection](/redraw)** — Wait for screens to stabilize after interactions using two-phase detection with pixel comparison and z-score analysis.
|
|
116
|
+
- **[Screenshots API](/screenshots)** — Capture screenshots manually with `testdriver.screenshot()` or automatically before/after every command.
|
|
117
|
+
|
|
118
|
+
📚 New examples
|
|
119
|
+
|
|
120
|
+
- [Exec output](/examples/exec-output) — Capture and use output from PowerShell commands
|
|
121
|
+
- [Exec PowerShell](/examples/exec-pwsh) — Generate dynamic data with PowerShell
|
|
122
|
+
- [Focus window](/examples/focus-window) — Switch focus between application windows
|
|
123
|
+
|
|
124
|
+
🔧 Improvements
|
|
125
|
+
|
|
126
|
+
- Improved console URL mapping for canary and test environments
|
|
127
|
+
- Enhanced Ably channel cleanup for better resource management
|
|
128
|
+
- Updated release workflow with improved changelog generation
|
|
129
|
+
</Update>
|
|
130
|
+
|
|
131
|
+
<Update label="v7.5.26" description="March 2026" tags={["stable"]}>
|
|
132
|
+
🚀 Stable release
|
|
133
|
+
|
|
134
|
+
This release promotes v7.5.25 to stable with deployment channel improvements.
|
|
135
|
+
|
|
136
|
+
✨ Features
|
|
137
|
+
|
|
138
|
+
- **Deployment channels** — SDK now supports stable and canary release channels. Stable releases use the `latest` npm tag, while canary releases use the `canary` tag. Install canary with `npm install testdriverai@canary`.
|
|
139
|
+
|
|
140
|
+
🔧 Improvements
|
|
141
|
+
|
|
142
|
+
- Improved cache hit debugging and logging
|
|
143
|
+
- Enhanced element location reliability
|
|
144
|
+
- Better error handling during test execution
|
|
145
|
+
|
|
146
|
+
🐛 Bug fixes
|
|
147
|
+
|
|
148
|
+
- Fixed restart behavior during auto-updates
|
|
149
|
+
- Fixed console URL routing for various environments
|
|
150
|
+
|
|
151
|
+
<Note>
|
|
152
|
+
This release includes changes from v7.5.17 through v7.5.25.
|
|
153
|
+
</Note>
|
|
154
|
+
</Update>
|
|
155
|
+
|
|
156
|
+
<Update label="v7.5.25" description="March 2026" tags={["stable"]}>
|
|
157
|
+
🐛 Bug fixes
|
|
158
|
+
|
|
159
|
+
- Fixed restart update behavior
|
|
160
|
+
</Update>
|
|
161
|
+
|
|
162
|
+
<Update label="v7.5.24" description="March 2026" tags={["stable"]}>
|
|
163
|
+
🔧 Improvements
|
|
164
|
+
|
|
165
|
+
- Disabled auto-update restart to improve CI stability
|
|
166
|
+
</Update>
|
|
167
|
+
|
|
168
|
+
<Update label="v7.5.22" description="March 2026" tags={["stable"]}>
|
|
169
|
+
🔧 Improvements
|
|
170
|
+
|
|
171
|
+
- Added markdown-to-HTML rendering for marketing content
|
|
172
|
+
</Update>
|
|
173
|
+
|
|
174
|
+
<Update label="v7.5.19" description="March 2026" tags={["stable"]}>
|
|
175
|
+
🔧 Improvements
|
|
176
|
+
|
|
177
|
+
- Enhanced debugging output for cache hits
|
|
178
|
+
- Improved element location reliability
|
|
179
|
+
</Update>
|
|
180
|
+
|
|
181
|
+
<Update label="v7.5.17" description="March 2026" tags={["stable"]}>
|
|
182
|
+
🔧 Improvements
|
|
183
|
+
|
|
184
|
+
- Improved codespace scaling and development environment setup
|
|
185
|
+
- Updated VS Code extension version
|
|
186
|
+
</Update>
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testdriver:claude-mcp-plugin
|
|
3
|
+
description: claude-mcp-plugin
|
|
4
|
+
---
|
|
5
|
+
<!-- Generated from claude-mcp-plugin.mdx. DO NOT EDIT. -->
|
|
6
|
+
|
|
7
|
+
TestDriver ships as a native [Claude Code plugin](https://docs.claude.com/en/docs/claude-code/plugins) that bundles the **TestDriver MCP server**, the **`testdriver` expert sub-agent**, and all **TestDriver skills**. You get everything you need to drive TestDriver from Claude Code with a single install.
|
|
8
|
+
|
|
9
|
+
> The plugin lives inside the `testdriverai` npm package at `ai/.claude-plugin/plugin.json`, and the marketplace entry lives at `.claude-plugin/marketplace.json` in this repo.
|
|
10
|
+
|
|
11
|
+
## 1. Get a TestDriver API key
|
|
12
|
+
|
|
13
|
+
- Visit your team page (e.g. `https://console.testdriver.ai/settings`)
|
|
14
|
+
- Create or copy a **Team API Key** (or User API Key)
|
|
15
|
+
- Export it in your shell so Claude Code can pass it to the MCP server:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
export TD_API_KEY="your_api_key_here"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 2. Install the plugin in Claude Code
|
|
22
|
+
|
|
23
|
+
From inside Claude Code, add this repo as a plugin marketplace and install the `testdriver` plugin:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
/plugin marketplace add testdriverai/testdriverai
|
|
27
|
+
/plugin install testdriver@testdriver
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
That registers three things:
|
|
31
|
+
|
|
32
|
+
- **`testdriver` MCP server** — spawned via `npx -p testdriverai testdriverai-mcp`, with `TD_API_KEY` forwarded from your environment.
|
|
33
|
+
- **`testdriver` sub-agent** — the TestDriver expert agent from `ai/agents/testdriver.md`. Invoke it with `@testdriver ...`.
|
|
34
|
+
- **TestDriver skills** — every `ai/skills/testdriver-*` skill, auto-loaded by Claude Code.
|
|
35
|
+
|
|
36
|
+
## 3. Write tests with the agent
|
|
37
|
+
|
|
38
|
+
In a Claude Code session, delegate to the agent:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
@testdriver Write a test that signs into https://example.com and adds an item to the cart.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The agent will use the TestDriver MCP tools (`session_start`, `find`, `click`, `type`, `assert`, …) to interactively build a Vitest test, append generated code to your test file after every action, and run it with `vitest run` until it passes.
|
|
45
|
+
|
|
46
|
+
For the full agent guide, see the [`testdriver` agent definition](https://github.com/testdriverai/testdriverai/blob/main/ai/agents/testdriver.md) and the [MCP workflow skill](https://github.com/testdriverai/testdriverai/blob/main/ai/skills/testdriver-mcp-workflow/SKILL.md).
|
|
47
|
+
|
|
48
|
+
## Manual MCP configuration (no plugin)
|
|
49
|
+
|
|
50
|
+
If you prefer not to use the plugin, you can register the MCP server manually in any MCP-compatible client (Claude Desktop, Cursor, VS Code, …):
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"mcpServers": {
|
|
55
|
+
"testdriver": {
|
|
56
|
+
"command": "npx",
|
|
57
|
+
"args": ["-p", "testdriverai", "testdriverai-mcp"],
|
|
58
|
+
"env": {
|
|
59
|
+
"TD_API_KEY": "${TD_API_KEY}"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This is the same config the plugin wires up for you — the plugin just bundles it alongside the agent and skills.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Observing test runs via HTTP MCP
|
|
71
|
+
|
|
72
|
+
TestDriver also exposes **test results and analytics** over an HTTP MCP endpoint, so Claude Code (or any MCP-compatible client) can inspect your test runs, failures, and filters without provisioning a sandbox.
|
|
73
|
+
|
|
74
|
+
### HTTP MCP endpoint contract
|
|
75
|
+
|
|
76
|
+
The HTTP endpoint lives at:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
POST /api/v1/mcp
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
It expects the TestDriver API key in the `X-Api-Key` header (or `Authorization: Bearer <key>`).
|
|
83
|
+
|
|
84
|
+
Common request shapes:
|
|
85
|
+
|
|
86
|
+
- **List tools**
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"kind": "list_tools"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
- **Call a tool**
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"kind": "call_tool",
|
|
99
|
+
"tool": "list_test_runs",
|
|
100
|
+
"arguments": {
|
|
101
|
+
"status": "failed",
|
|
102
|
+
"page": 1,
|
|
103
|
+
"limit": 20
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Responses from tool calls follow the MCP content convention:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"content": [
|
|
113
|
+
{
|
|
114
|
+
"type": "json",
|
|
115
|
+
"json": {
|
|
116
|
+
"testRuns": [],
|
|
117
|
+
"totalCount": 0,
|
|
118
|
+
"hasMore": false
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Available tools
|
|
126
|
+
|
|
127
|
+
The MCP server advertises at least these tools in `list_tools`:
|
|
128
|
+
|
|
129
|
+
- `list_test_runs`
|
|
130
|
+
List recent TestDriver test runs for the current team, with filters and pagination.
|
|
131
|
+
|
|
132
|
+
- `get_test_run_detail`
|
|
133
|
+
Get a single test run and its test cases (including replay IDs / share keys when available).
|
|
134
|
+
|
|
135
|
+
- `list_test_cases`
|
|
136
|
+
List individual test cases for the team with status, duration, error messages, and replay info.
|
|
137
|
+
|
|
138
|
+
- `get_filter_options`
|
|
139
|
+
Get branch, suite, repo, filename, commit, status, platform, and test name options for building queries.
|
|
140
|
+
|
|
141
|
+
### Pointing Claude Code at the HTTP MCP endpoint
|
|
142
|
+
|
|
143
|
+
You can point Claude Code at the HTTP MCP endpoint using a JSON configuration similar to:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"$schema": "https://schema.anthropic.com/mcp/servers.json",
|
|
148
|
+
"mcpServers": {
|
|
149
|
+
"testdriver-cloud": {
|
|
150
|
+
"type": "sse",
|
|
151
|
+
"url": "https://your-api-host.example.com/api/v1/mcp",
|
|
152
|
+
"requestHeaders": {
|
|
153
|
+
"X-Api-Key": "${TD_API_KEY}"
|
|
154
|
+
},
|
|
155
|
+
"description": "Query TestDriver test runs, test cases, and filters for your team using an API key."
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
You can find this exact snippet in the repo at:
|
|
162
|
+
|
|
163
|
+
- `claude-mcp-config.example.json`
|
|
164
|
+
|
|
165
|
+
Replace `https://your-api-host.example.com` with your actual API origin (e.g. `https://api.testdriver.ai` or `http://localhost:1337` in development).
|
|
166
|
+
|
|
167
|
+
### Local development
|
|
168
|
+
|
|
169
|
+
For local development:
|
|
170
|
+
|
|
171
|
+
- Run your API server on `http://localhost:1337`
|
|
172
|
+
- Point `baseUrl` at `http://localhost:1337/api/v1/mcp`
|
|
173
|
+
- Use a local team or user API key in `TD_API_KEY`
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"mcpServers": {
|
|
178
|
+
"testdriver-cloud-local": {
|
|
179
|
+
"type": "sse",
|
|
180
|
+
"url": "http://localhost:1337/api/v1/mcp",
|
|
181
|
+
"requestHeaders": {
|
|
182
|
+
"X-Api-Key": "${TD_API_KEY}"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Skills documentation for Claude
|
|
190
|
+
|
|
191
|
+
Claude Code loads the agent and skills automatically when you install the plugin (see step 2). The underlying sources are:
|
|
192
|
+
|
|
193
|
+
- `ai/agents/testdriver.md` contains the **full TestDriver Agent Guide**
|
|
194
|
+
- `ai/skills/testdriver-*/SKILL.md` provide task-specific skills (MCP workflow, assertions, provisioning, etc.)
|
|
195
|
+
|
|
196
|
+
Use these as the primary reference for:
|
|
197
|
+
|
|
198
|
+
- How to initialize the `TestDriver` SDK in Vitest
|
|
199
|
+
- The MCP workflow for building tests interactively with visual feedback
|
|
200
|
+
- How to find elements, click, type, scroll, assert, and capture screenshots
|
|
201
|
+
|
|
202
|
+
The MCP tools described above are **read-only** helpers for:
|
|
203
|
+
|
|
204
|
+
- Inspecting recent test runs and failures
|
|
205
|
+
- Discovering branches, files, and suites to focus on
|
|
206
|
+
- Pulling detailed test case and replay information into Claude for analysis
|
|
207
|
+
|
|
208
|
+
Use the SDK (`testdriverai`) for **driving tests**, and the HTTP MCP server (`/api/v1/mcp`) for **observing and debugging** them from Claude Code.
|
|
@@ -6,7 +6,7 @@ description: Click at specific coordinates or on elements
|
|
|
6
6
|
|
|
7
7
|
## Element Click
|
|
8
8
|
|
|
9
|
-
When
|
|
9
|
+
When you call this on an Element object, it clicks on the found element.
|
|
10
10
|
|
|
11
11
|
### Syntax
|
|
12
12
|
|
|
@@ -89,7 +89,7 @@ await testdriver.click(500, 300, 'right-click');
|
|
|
89
89
|
|
|
90
90
|
### Regular Click
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
One left-click action.
|
|
93
93
|
|
|
94
94
|
```javascript
|
|
95
95
|
const button = await testdriver.find('Login button');
|
|
@@ -98,7 +98,7 @@ await button.click();
|
|
|
98
98
|
|
|
99
99
|
### Double Click
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
A double-click action. It usually opens files or selects text.
|
|
102
102
|
|
|
103
103
|
```javascript
|
|
104
104
|
const file = await testdriver.find('document.pdf');
|
|
@@ -122,7 +122,7 @@ await folder.rightClick();
|
|
|
122
122
|
|
|
123
123
|
### Mouse Down / Mouse Up
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
Use these for drag operations or custom click behavior.
|
|
126
126
|
|
|
127
127
|
```javascript
|
|
128
128
|
const draggable = await testdriver.find('draggable item');
|
|
@@ -141,9 +141,9 @@ await dropZone.mouseUp();
|
|
|
141
141
|
## Best Practices
|
|
142
142
|
|
|
143
143
|
<Check>
|
|
144
|
-
**Prefer element clicks
|
|
144
|
+
**Prefer element clicks to coordinate clicks**
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
A click on an element is more reliable. It does not depend on the resolution:
|
|
147
147
|
|
|
148
148
|
```javascript
|
|
149
149
|
// ✅ Preferred
|
|
@@ -156,7 +156,7 @@ await dropZone.mouseUp();
|
|
|
156
156
|
</Check>
|
|
157
157
|
|
|
158
158
|
<Check>
|
|
159
|
-
**
|
|
159
|
+
**Make sure that TestDriver found the element**
|
|
160
160
|
|
|
161
161
|
```javascript
|
|
162
162
|
const element = await testdriver.find('button');
|
|
@@ -168,9 +168,9 @@ await dropZone.mouseUp();
|
|
|
168
168
|
</Check>
|
|
169
169
|
|
|
170
170
|
<Warning>
|
|
171
|
-
**
|
|
171
|
+
**TestDriver must find the element before you click it**
|
|
172
172
|
|
|
173
|
-
The `find()` method automatically
|
|
173
|
+
The `find()` method finds elements automatically. But a click on an element that TestDriver did not find throws an error:
|
|
174
174
|
|
|
175
175
|
```javascript
|
|
176
176
|
const element = await testdriver.find('button');
|
|
@@ -280,7 +280,7 @@ describe('Click Interactions', () => {
|
|
|
280
280
|
|
|
281
281
|
## Related Methods
|
|
282
282
|
|
|
283
|
-
- [`find()`](/
|
|
284
|
-
- [`hover()`](/
|
|
285
|
-
- [`doubleClick()`](/
|
|
286
|
-
- [`rightClick()`](/
|
|
283
|
+
- [`find()`](/find) - Find elements to click
|
|
284
|
+
- [`hover()`](/hover) - Put the cursor on the element without a click
|
|
285
|
+
- [`doubleClick()`](/double-click) - The double-click method
|
|
286
|
+
- [`rightClick()`](/right-click) - The right-click method
|
|
@@ -53,7 +53,7 @@ const testdriver = new TestDriver(apiKey, options)
|
|
|
53
53
|
</ParamField>
|
|
54
54
|
|
|
55
55
|
<ParamField path="reconnect" type="boolean" default="false">
|
|
56
|
-
Reattach to the last used sandbox instead of creating a new one. When `true`, the SDK reads the sandbox id from `.testdriver/last-sandbox` (written automatically on every successful connect) and rejoins that VM. Provision methods (`chrome`, `vscode`, `installer`, etc.) are skipped because the application is already running. The previous sandbox must still be alive — see [`keepAlive`](#keepalive) and the [Run guide](/
|
|
56
|
+
Reattach to the last used sandbox instead of creating a new one. When `true`, the SDK reads the sandbox id from `.testdriver/last-sandbox` (written automatically on every successful connect) and rejoins that VM. Provision methods (`chrome`, `vscode`, `installer`, etc.) are skipped because the application is already running. The previous sandbox must still be alive — see [`keepAlive`](#keepalive) and the [Run guide](/copilot/running-tests#keeping-machines-alive-between-runs).
|
|
57
57
|
</ParamField>
|
|
58
58
|
|
|
59
59
|
<ParamField path="sandboxId" type="string">
|
|
@@ -410,16 +410,16 @@ When tests fail or behave unexpectedly, replay what happened step by step:
|
|
|
410
410
|
|
|
411
411
|
## Where this fits in the Guide
|
|
412
412
|
|
|
413
|
-
Debugging is what you reach for when a [Run](/
|
|
413
|
+
Debugging is what you reach for when a [Run](/copilot/running-tests) goes sideways or a [Validate](/making-assertions) assertion fails — the screenshots show you precisely what the AI saw before it acted. Once you've diagnosed the failure, the next step is to stop it from recurring.
|
|
414
414
|
|
|
415
415
|
## Related
|
|
416
416
|
|
|
417
|
-
- [screenshot()](/
|
|
418
|
-
- [Dashcam](/
|
|
419
|
-
- [assert()](/
|
|
417
|
+
- [screenshot()](/screenshot) - Capture screenshots during test execution
|
|
418
|
+
- [Dashcam](/dashcam) - Record full test sessions with video and logs
|
|
419
|
+
- [assert()](/assert) - Make AI-powered assertions that benefit from screenshot context
|
|
420
420
|
|
|
421
421
|
## Next
|
|
422
422
|
|
|
423
|
-
<Card title="Prevent" icon="shield-check" href="/
|
|
423
|
+
<Card title="Prevent" icon="shield-check" href="/copilot/auto-healing">
|
|
424
424
|
You've seen what went wrong — now keep it from happening again. Let auto-healing repair flaky tests automatically before they fail your suite.
|
|
425
425
|
</Card>
|
|
@@ -6,7 +6,7 @@ description: Perform a double-click action on an element or at specific coordina
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
The `doubleClick()` method
|
|
9
|
+
The `doubleClick()` method does a double-click action on an element. You can call it on an [`Element`](/core-concepts/elements) instance. Or you can use it with a selector.
|
|
10
10
|
|
|
11
11
|
## Syntax
|
|
12
12
|
|
|
@@ -30,7 +30,7 @@ When called directly on the AI client:
|
|
|
30
30
|
|
|
31
31
|
## Returns
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
It returns a `Promise<void>`. The promise resolves when the double-click action completes.
|
|
34
34
|
|
|
35
35
|
## Examples
|
|
36
36
|
|
|
@@ -95,8 +95,8 @@ expect(selectedText).toBe('TestDriver');
|
|
|
95
95
|
|
|
96
96
|
## Related Methods
|
|
97
97
|
|
|
98
|
-
- [`click()`](/
|
|
99
|
-
- [`rightClick()`](/
|
|
100
|
-
- [`mouseDown()`](/
|
|
101
|
-
- [`mouseUp()`](/
|
|
102
|
-
- [`hover()`](/
|
|
98
|
+
- [`click()`](/click) - Single click on an element
|
|
99
|
+
- [`rightClick()`](/right-click) - Right-click to open context menu
|
|
100
|
+
- [`mouseDown()`](/mouse-down) - Press mouse button without releasing
|
|
101
|
+
- [`mouseUp()`](/mouse-up) - Release mouse button
|
|
102
|
+
- [`hover()`](/hover) - Move mouse over element without clicking
|
|
@@ -155,7 +155,7 @@ testdriver.emitter.on('sandbox:progress', ({ step, message }) => {
|
|
|
155
155
|
|
|
156
156
|
### Redraw Events
|
|
157
157
|
|
|
158
|
-
Emitted during screen stability detection. See [Redraw](/
|
|
158
|
+
Emitted during screen stability detection. See [Redraw](/redraw) for more details.
|
|
159
159
|
|
|
160
160
|
| Event | Payload |
|
|
161
161
|
|---|---|
|
|
@@ -6,7 +6,7 @@ description: Execute shell or PowerShell commands in the sandbox
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Run shell commands (Linux) or PowerShell commands (Windows) in the sandbox.
|
|
10
10
|
|
|
11
11
|
## Syntax
|
|
12
12
|
|
|
@@ -17,28 +17,28 @@ await testdriver.exec(language, code, timeout, silent)
|
|
|
17
17
|
## Parameters
|
|
18
18
|
|
|
19
19
|
<ParamField path="language" type="string" required>
|
|
20
|
-
|
|
20
|
+
The language to run: `'sh'` (Shell/Linux) or `'pwsh'` (PowerShell/Windows)
|
|
21
21
|
</ParamField>
|
|
22
22
|
|
|
23
23
|
<ParamField path="code" type="string" required>
|
|
24
|
-
|
|
24
|
+
The code or the command to run
|
|
25
25
|
</ParamField>
|
|
26
26
|
|
|
27
27
|
<ParamField path="timeout" type="number" required>
|
|
28
|
-
|
|
28
|
+
The timeout in milliseconds
|
|
29
29
|
</ParamField>
|
|
30
30
|
|
|
31
31
|
<ParamField path="silent" type="boolean" default="false">
|
|
32
|
-
|
|
32
|
+
If `true`, TestDriver does not show the output
|
|
33
33
|
</ParamField>
|
|
34
34
|
|
|
35
35
|
## Returns
|
|
36
36
|
|
|
37
|
-
`Promise<string>` -
|
|
37
|
+
`Promise<string>` - The command output
|
|
38
38
|
|
|
39
39
|
## Shell Execution (Linux)
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Run shell commands in the Linux sandbox.
|
|
42
42
|
|
|
43
43
|
### Basic Commands
|
|
44
44
|
|
|
@@ -312,6 +312,6 @@ describe('Code Execution', () => {
|
|
|
312
312
|
|
|
313
313
|
## Related Methods
|
|
314
314
|
|
|
315
|
-
- [`focusApplication()`](/
|
|
316
|
-
- [`find()`](/
|
|
317
|
-
- [`type()`](/
|
|
315
|
+
- [`focusApplication()`](/focus-application) - Focus apps before exec
|
|
316
|
+
- [`find()`](/find) - Locate elements visually
|
|
317
|
+
- [`type()`](/type) - Type text into inputs
|