@testdriverai/agent 7.8.0-test.38
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/.claude/settings.local.json +7 -0
- package/.env.example +4 -0
- package/.prettierignore +4 -0
- package/.prettierrc +1 -0
- package/CHANGELOG.md +953 -0
- package/README.md +81 -0
- package/agent/events.js +135 -0
- package/agent/index.js +2450 -0
- package/agent/interface.js +35 -0
- package/agent/lib/analytics.js +22 -0
- package/agent/lib/censorship.js +75 -0
- package/agent/lib/commander.js +246 -0
- package/agent/lib/commands.js +1684 -0
- package/agent/lib/config.js +60 -0
- package/agent/lib/generator.js +91 -0
- package/agent/lib/http.js +144 -0
- package/agent/lib/logger.js +56 -0
- package/agent/lib/outputs.js +29 -0
- package/agent/lib/parser.js +209 -0
- package/agent/lib/redraw.js +386 -0
- package/agent/lib/resources/cursor-2.png +0 -0
- package/agent/lib/sandbox.js +1104 -0
- package/agent/lib/sdk.js +633 -0
- package/agent/lib/session.js +25 -0
- package/agent/lib/source-mapper.js +342 -0
- package/agent/lib/subimage/index.js +77 -0
- package/agent/lib/subimage/opencv.js +69 -0
- package/agent/lib/system.js +204 -0
- package/agent/lib/theme.js +14 -0
- package/agent/lib/valid-version.js +21 -0
- package/agent/lib/validation.js +169 -0
- package/ai/.claude-plugin/plugin.json +9 -0
- package/ai/agents/testdriver.md +638 -0
- package/ai/skills/testdriver-ai/SKILL.md +204 -0
- package/ai/skills/testdriver-assert/SKILL.md +315 -0
- package/ai/skills/testdriver-aws-setup/SKILL.md +448 -0
- package/ai/skills/testdriver-cache/SKILL.md +221 -0
- package/ai/skills/testdriver-caching/SKILL.md +124 -0
- package/ai/skills/testdriver-captcha/SKILL.md +158 -0
- package/ai/skills/testdriver-ci-cd/SKILL.md +602 -0
- package/ai/skills/testdriver-click/SKILL.md +286 -0
- package/ai/skills/testdriver-client/SKILL.md +477 -0
- package/ai/skills/testdriver-cloud/SKILL.md +119 -0
- package/ai/skills/testdriver-customizing-devices/SKILL.md +319 -0
- package/ai/skills/testdriver-dashcam/SKILL.md +418 -0
- package/ai/skills/testdriver-debugging-with-screenshots/SKILL.md +401 -0
- package/ai/skills/testdriver-device-config/SKILL.md +317 -0
- package/ai/skills/testdriver-double-click/SKILL.md +102 -0
- package/ai/skills/testdriver-elements/SKILL.md +605 -0
- package/ai/skills/testdriver-enterprise/SKILL.md +114 -0
- package/ai/skills/testdriver-errors/SKILL.md +246 -0
- package/ai/skills/testdriver-events/SKILL.md +356 -0
- package/ai/skills/testdriver-examples/SKILL.md +7 -0
- package/ai/skills/testdriver-exec/SKILL.md +317 -0
- package/ai/skills/testdriver-find/SKILL.md +829 -0
- package/ai/skills/testdriver-focus-application/SKILL.md +293 -0
- package/ai/skills/testdriver-generating-tests/SKILL.md +36 -0
- package/ai/skills/testdriver-hover/SKILL.md +278 -0
- package/ai/skills/testdriver-locating-elements/SKILL.md +71 -0
- package/ai/skills/testdriver-making-assertions/SKILL.md +32 -0
- package/ai/skills/testdriver-mcp/SKILL.md +7 -0
- package/ai/skills/testdriver-mcp-workflow/SKILL.md +410 -0
- package/ai/skills/testdriver-mouse-down/SKILL.md +161 -0
- package/ai/skills/testdriver-mouse-up/SKILL.md +164 -0
- package/ai/skills/testdriver-parse/SKILL.md +236 -0
- package/ai/skills/testdriver-performing-actions/SKILL.md +54 -0
- package/ai/skills/testdriver-press-keys/SKILL.md +348 -0
- package/ai/skills/testdriver-provision/SKILL.md +331 -0
- package/ai/skills/testdriver-quickstart/SKILL.md +144 -0
- package/ai/skills/testdriver-redraw/SKILL.md +214 -0
- package/ai/skills/testdriver-reusable-code/SKILL.md +249 -0
- package/ai/skills/testdriver-right-click/SKILL.md +123 -0
- package/ai/skills/testdriver-running-tests/SKILL.md +185 -0
- package/ai/skills/testdriver-screenshot/SKILL.md +248 -0
- package/ai/skills/testdriver-screenshots/SKILL.md +184 -0
- package/ai/skills/testdriver-scroll/SKILL.md +335 -0
- package/ai/skills/testdriver-secrets/SKILL.md +115 -0
- package/ai/skills/testdriver-self-hosted/SKILL.md +65 -0
- package/ai/skills/testdriver-test-writer/SKILL.md +448 -0
- package/ai/skills/testdriver-testdriver/SKILL.md +628 -0
- package/ai/skills/testdriver-testdriver-mechanic/SKILL.md +165 -0
- package/ai/skills/testdriver-type/SKILL.md +357 -0
- package/ai/skills/testdriver-variables/SKILL.md +111 -0
- package/ai/skills/testdriver-wait/SKILL.md +50 -0
- package/ai/skills/testdriver-waiting-for-elements/SKILL.md +90 -0
- package/ai/skills/testdriver-what-is-testdriver/SKILL.md +54 -0
- package/bin/testdriverai.js +22 -0
- package/debugger/bg.png +0 -0
- package/debugger/icon.png +0 -0
- package/debugger/index.html +469 -0
- package/debugger/td.png +0 -0
- package/debugger/tray-buffered.png +0 -0
- package/debugger/tray.png +0 -0
- package/docs/GITHUB_COMMENTS.md +330 -0
- package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +167 -0
- package/docs/QUICK-START-GITHUB-COMMENTS.md +84 -0
- package/docs/TEST-GITHUB-COMMENTS.md +129 -0
- package/docs/_data/examples-manifest.json +177 -0
- package/docs/_data/examples-manifest.schema.json +41 -0
- package/docs/_scripts/extract-example-urls.js +165 -0
- package/docs/_scripts/generate-examples.js +560 -0
- package/docs/_scripts/generate-skills.js +154 -0
- package/docs/_scripts/link-replacer.js +164 -0
- package/docs/_scripts/upload-docs-to-openai.js +284 -0
- package/docs/changelog.mdx +161 -0
- package/docs/claude-mcp-plugin.mdx +160 -0
- package/docs/docs.json +442 -0
- package/docs/github-integration-setup.md +266 -0
- package/docs/guide/best-practices-polling.mdx +174 -0
- package/docs/images/content/account/newprojectsettings.png +0 -0
- package/docs/images/content/account/projectpage.png +0 -0
- package/docs/images/content/account/projectreplays.png +0 -0
- package/docs/images/content/account/team-manage.png +0 -0
- package/docs/images/content/account/teampage.png +0 -0
- package/docs/images/content/extension/cursor.svg +1 -0
- package/docs/images/content/extension/vscode.svg +57 -0
- package/docs/images/content/extension/windsurf.svg +3 -0
- package/docs/images/content/parse/output.png +0 -0
- package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
- package/docs/images/content/side-by-side.png +0 -0
- package/docs/images/content/vscode/ide-full.png +0 -0
- package/docs/images/content/vscode/running.png +0 -0
- package/docs/images/content/vscode/v7-chat.png +0 -0
- package/docs/images/content/vscode/v7-choose-agent.png +0 -0
- package/docs/images/content/vscode/v7-full.png +0 -0
- package/docs/images/content/vscode/v7-onboarding.png +0 -0
- package/docs/images/content/vscode/vscode-2-assert.png +0 -0
- package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
- package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
- package/docs/images/content/vscode/vscode-file-creation.png +0 -0
- package/docs/images/content/vscode/vscode-install.png +0 -0
- package/docs/images/content/vscode/vscode-overview.png +0 -0
- package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
- package/docs/images/content/vscode/vscode-stopchat.png +0 -0
- package/docs/images/content/vscode/vscode-stoptest.png +0 -0
- package/docs/images/content/vscode/vscode-tdservice.png +0 -0
- package/docs/images/content/vscode/vscode-test-output.png +0 -0
- package/docs/images/content/vscode/vscode-testhistory.png +0 -0
- package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
- package/docs/images/content/vscode/vscode-testpane.png +0 -0
- package/docs/images/template/dark.png +0 -0
- package/docs/images/template/icon.png +0 -0
- package/docs/images/template/light.png +0 -0
- package/docs/snippets/calendar-link.mdx +4 -0
- package/docs/snippets/gitignore-warning.mdx +7 -0
- package/docs/snippets/lifecycle-warning.mdx +6 -0
- package/docs/snippets/test-prereqs.mdx +12 -0
- package/docs/snippets/tests/assert-replay.mdx +7 -0
- package/docs/snippets/tests/assert-yaml.mdx +8 -0
- package/docs/snippets/tests/exec-js-replay.mdx +7 -0
- package/docs/snippets/tests/exec-js-yaml.mdx +32 -0
- package/docs/snippets/tests/exec-shell-replay.mdx +7 -0
- package/docs/snippets/tests/exec-shell-yaml.mdx +15 -0
- package/docs/snippets/tests/hover-image-replay.mdx +7 -0
- package/docs/snippets/tests/hover-image-yaml.mdx +17 -0
- package/docs/snippets/tests/hover-text-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-yaml.mdx +24 -0
- package/docs/snippets/tests/hover-text-yaml.mdx +14 -0
- package/docs/snippets/tests/match-image-replay.mdx +7 -0
- package/docs/snippets/tests/match-image-yaml.mdx +17 -0
- package/docs/snippets/tests/press-keys-replay.mdx +7 -0
- package/docs/snippets/tests/press-keys-yaml.mdx +36 -0
- package/docs/snippets/tests/remember-replay.mdx +7 -0
- package/docs/snippets/tests/remember-yaml.mdx +28 -0
- package/docs/snippets/tests/scroll-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-yaml.mdx +14 -0
- package/docs/snippets/tests/scroll-until-text-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-text-yaml.mdx +17 -0
- package/docs/snippets/tests/scroll-yaml.mdx +30 -0
- package/docs/snippets/tests/type-repeated-replay.mdx +7 -0
- package/docs/snippets/tests/type-repeated-yaml.mdx +22 -0
- package/docs/snippets/tests/type-replay.mdx +7 -0
- package/docs/snippets/tests/type-yaml.mdx +28 -0
- package/docs/snippets/tests/wait-for-image-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-image-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-for-text-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-text-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-replay.mdx +7 -0
- package/docs/snippets/tests/wait-yaml.mdx +13 -0
- package/docs/styles.css +65 -0
- package/docs/v6/account/dashboard.mdx +16 -0
- package/docs/v6/account/enterprise.mdx +110 -0
- package/docs/v6/account/pricing.mdx +33 -0
- package/docs/v6/account/projects.mdx +33 -0
- package/docs/v6/account/team.mdx +35 -0
- package/docs/v6/action/ami.mdx +109 -0
- package/docs/v6/action/performance.mdx +105 -0
- package/docs/v6/action/secrets.mdx +93 -0
- package/docs/v6/apps/chrome-extensions.mdx +48 -0
- package/docs/v6/apps/desktop-apps.mdx +93 -0
- package/docs/v6/apps/mobile-apps.mdx +26 -0
- package/docs/v6/apps/static-websites.mdx +54 -0
- package/docs/v6/apps/tauri-apps.mdx +361 -0
- package/docs/v6/bugs/jira.mdx +232 -0
- package/docs/v6/cli/overview.mdx +66 -0
- package/docs/v6/commands/assert.mdx +45 -0
- package/docs/v6/commands/exec.mdx +276 -0
- package/docs/v6/commands/focus-application.mdx +44 -0
- package/docs/v6/commands/hover-image.mdx +69 -0
- package/docs/v6/commands/hover-text.mdx +47 -0
- package/docs/v6/commands/if.mdx +53 -0
- package/docs/v6/commands/match-image.mdx +67 -0
- package/docs/v6/commands/press-keys.mdx +87 -0
- package/docs/v6/commands/remember.mdx +49 -0
- package/docs/v6/commands/run.mdx +44 -0
- package/docs/v6/commands/scroll-until-image.mdx +66 -0
- package/docs/v6/commands/scroll-until-text.mdx +60 -0
- package/docs/v6/commands/scroll.mdx +69 -0
- package/docs/v6/commands/type.mdx +45 -0
- package/docs/v6/commands/wait-for-image.mdx +54 -0
- package/docs/v6/commands/wait-for-text.mdx +48 -0
- package/docs/v6/commands/wait.mdx +45 -0
- package/docs/v6/exporting/junit.mdx +218 -0
- package/docs/v6/exporting/playwright.mdx +197 -0
- package/docs/v6/features/auto-healing.mdx +144 -0
- package/docs/v6/features/generation.mdx +116 -0
- package/docs/v6/features/parallel-testing.mdx +151 -0
- package/docs/v6/features/reusable-snippets.mdx +131 -0
- package/docs/v6/features/selectorless.mdx +80 -0
- package/docs/v6/features/visual-assertions.mdx +139 -0
- package/docs/v6/getting-started/ci.mdx +146 -0
- package/docs/v6/getting-started/cli.mdx +91 -0
- package/docs/v6/getting-started/editing.mdx +100 -0
- package/docs/v6/getting-started/playwright.mdx +342 -0
- package/docs/v6/getting-started/running.mdx +48 -0
- package/docs/v6/getting-started/self-hosting.mdx +408 -0
- package/docs/v6/getting-started/vscode.mdx +88 -0
- package/docs/v6/guide/assertions.mdx +189 -0
- package/docs/v6/guide/authentication.mdx +136 -0
- package/docs/v6/guide/code.mdx +65 -0
- package/docs/v6/guide/dashcam.mdx +118 -0
- package/docs/v6/guide/environment-variables.mdx +26 -0
- package/docs/v6/guide/lifecycle.mdx +242 -0
- package/docs/v6/guide/locating.mdx +141 -0
- package/docs/v6/guide/protips.mdx +43 -0
- package/docs/v6/guide/variables.mdx +143 -0
- package/docs/v6/guide/waiting.mdx +130 -0
- package/docs/v6/importing/csv.mdx +196 -0
- package/docs/v6/importing/gherkin.mdx +143 -0
- package/docs/v6/importing/jira.mdx +164 -0
- package/docs/v6/importing/testrail.mdx +162 -0
- package/docs/v6/integrations/electron.mdx +146 -0
- package/docs/v6/integrations/netlify.mdx +100 -0
- package/docs/v6/integrations/vercel.mdx +125 -0
- package/docs/v6/interactive/explore.mdx +99 -0
- package/docs/v6/interactive/run.mdx +52 -0
- package/docs/v6/interactive/save.mdx +63 -0
- package/docs/v6/overview/comparison.mdx +101 -0
- package/docs/v6/overview/faq.mdx +162 -0
- package/docs/v6/overview/performance.mdx +52 -0
- package/docs/v6/overview/quickstart.mdx +137 -0
- package/docs/v6/overview/what-is-testdriver.mdx +85 -0
- package/docs/v6/scenarios/ai-chatbot.mdx +28 -0
- package/docs/v6/scenarios/cookie-banner.mdx +32 -0
- package/docs/v6/scenarios/file-upload.mdx +33 -0
- package/docs/v6/scenarios/form-filling.mdx +32 -0
- package/docs/v6/scenarios/log-in.mdx +75 -0
- package/docs/v6/scenarios/pdf-generation.mdx +25 -0
- package/docs/v6/scenarios/spell-check.mdx +22 -0
- package/docs/v6/security/action.mdx +84 -0
- package/docs/v6/security/agent.mdx +73 -0
- package/docs/v6/security/platform.mdx +77 -0
- package/docs/v6/tutorials/advanced-test.mdx +81 -0
- package/docs/v6/tutorials/basic-test.mdx +45 -0
- package/docs/v7/_drafts/agents.mdx +843 -0
- package/docs/v7/_drafts/architecture.mdx +399 -0
- package/docs/v7/_drafts/auto-cache-key.mdx +167 -0
- package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +100 -0
- package/docs/v7/_drafts/best-practices.mdx +486 -0
- package/docs/v7/_drafts/caching-ai.mdx +215 -0
- package/docs/v7/_drafts/caching-selectors.mdx +424 -0
- package/docs/v7/_drafts/caching.mdx +366 -0
- package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
- package/docs/v7/_drafts/commands/assert.mdx +45 -0
- package/docs/v7/_drafts/commands/exec.mdx +276 -0
- package/docs/v7/_drafts/commands/focus-application.mdx +44 -0
- package/docs/v7/_drafts/commands/hover-image.mdx +69 -0
- package/docs/v7/_drafts/commands/hover-text.mdx +47 -0
- package/docs/v7/_drafts/commands/if.mdx +53 -0
- package/docs/v7/_drafts/commands/match-image.mdx +67 -0
- package/docs/v7/_drafts/commands/press-keys.mdx +87 -0
- package/docs/v7/_drafts/commands/remember.mdx +49 -0
- package/docs/v7/_drafts/commands/run.mdx +44 -0
- package/docs/v7/_drafts/commands/scroll-until-image.mdx +66 -0
- package/docs/v7/_drafts/commands/scroll-until-text.mdx +60 -0
- package/docs/v7/_drafts/commands/scroll.mdx +69 -0
- package/docs/v7/_drafts/commands/type.mdx +45 -0
- package/docs/v7/_drafts/commands/wait-for-image.mdx +54 -0
- package/docs/v7/_drafts/commands/wait-for-text.mdx +48 -0
- package/docs/v7/_drafts/commands/wait.mdx +45 -0
- package/docs/v7/_drafts/configuration.mdx +378 -0
- package/docs/v7/_drafts/contributing.mdx +174 -0
- package/docs/v7/_drafts/core.mdx +458 -0
- package/docs/v7/_drafts/dashcam-title-feature.mdx +89 -0
- package/docs/v7/_drafts/debugging.mdx +349 -0
- package/docs/v7/_drafts/error-handling.mdx +501 -0
- package/docs/v7/_drafts/faq.mdx +393 -0
- package/docs/v7/_drafts/hooks.mdx +360 -0
- package/docs/v7/_drafts/init-command.mdx +95 -0
- package/docs/v7/_drafts/installation.mdx +420 -0
- package/docs/v7/_drafts/migration.mdx +562 -0
- package/docs/v7/_drafts/observable.mdx +604 -0
- package/docs/v7/_drafts/playwright.mdx +342 -0
- package/docs/v7/_drafts/plugin-migration.mdx +220 -0
- package/docs/v7/_drafts/powerful.mdx +419 -0
- package/docs/v7/_drafts/presets.mdx +210 -0
- package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
- package/docs/v7/_drafts/prompt-cache.mdx +200 -0
- package/docs/v7/_drafts/provision.mdx +390 -0
- package/docs/v7/_drafts/quick-start-test-recording.mdx +214 -0
- package/docs/v7/_drafts/readme.mdx +135 -0
- package/docs/v7/_drafts/reports.mdx +414 -0
- package/docs/v7/_drafts/scalable.mdx +763 -0
- package/docs/v7/_drafts/screenshot.mdx +155 -0
- package/docs/v7/_drafts/sdk-awesome-logs.mdx +468 -0
- package/docs/v7/_drafts/sdk-browser-rendering.mdx +167 -0
- package/docs/v7/_drafts/sdk-migration.mdx +474 -0
- package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
- package/docs/v7/_drafts/self-hosting.mdx +369 -0
- package/docs/v7/_drafts/test-recording.mdx +382 -0
- package/docs/v7/_drafts/troubleshooting.mdx +526 -0
- package/docs/v7/_drafts/vitest-plugin.mdx +477 -0
- package/docs/v7/_drafts/vitest.mdx +535 -0
- package/docs/v7/_drafts/writing-tests.mdx +25 -0
- package/docs/v7/ai.mdx +205 -0
- package/docs/v7/assert.mdx +316 -0
- package/docs/v7/aws-setup.mdx +449 -0
- package/docs/v7/cache.mdx +223 -0
- package/docs/v7/caching.mdx +128 -0
- package/docs/v7/captcha.mdx +159 -0
- package/docs/v7/ci-cd.mdx +603 -0
- package/docs/v7/click.mdx +287 -0
- package/docs/v7/client.mdx +478 -0
- package/docs/v7/copilot/auto-healing.mdx +265 -0
- package/docs/v7/copilot/creating-tests.mdx +156 -0
- package/docs/v7/copilot/github.mdx +143 -0
- package/docs/v7/copilot/running-tests.mdx +149 -0
- package/docs/v7/copilot/setup.mdx +143 -0
- package/docs/v7/customizing-devices.mdx +319 -0
- package/docs/v7/dashcam.mdx +419 -0
- package/docs/v7/debugging-with-screenshots.mdx +402 -0
- package/docs/v7/device-config.mdx +317 -0
- package/docs/v7/double-click.mdx +102 -0
- package/docs/v7/elements.mdx +606 -0
- package/docs/v7/enterprise.mdx +9 -0
- package/docs/v7/errors.mdx +248 -0
- package/docs/v7/events.mdx +358 -0
- package/docs/v7/examples/ai.mdx +72 -0
- package/docs/v7/examples/assert.mdx +72 -0
- package/docs/v7/examples/captcha-api.mdx +92 -0
- package/docs/v7/examples/chrome-extension.mdx +132 -0
- package/docs/v7/examples/drag-and-drop.mdx +100 -0
- package/docs/v7/examples/element-not-found.mdx +67 -0
- package/docs/v7/examples/exec-output.mdx +85 -0
- package/docs/v7/examples/exec-pwsh.mdx +83 -0
- package/docs/v7/examples/focus-window.mdx +62 -0
- package/docs/v7/examples/hover-image.mdx +94 -0
- package/docs/v7/examples/hover-text.mdx +69 -0
- package/docs/v7/examples/installer.mdx +91 -0
- package/docs/v7/examples/launch-vscode-linux.mdx +101 -0
- package/docs/v7/examples/match-image.mdx +96 -0
- package/docs/v7/examples/press-keys.mdx +92 -0
- package/docs/v7/examples/scroll-keyboard.mdx +79 -0
- package/docs/v7/examples/scroll-until-image.mdx +81 -0
- package/docs/v7/examples/scroll-until-text.mdx +109 -0
- package/docs/v7/examples/scroll.mdx +81 -0
- package/docs/v7/examples/type.mdx +92 -0
- package/docs/v7/examples/windows-installer.mdx +89 -0
- package/docs/v7/exec.mdx +318 -0
- package/docs/v7/find.mdx +830 -0
- package/docs/v7/focus-application.mdx +294 -0
- package/docs/v7/generating-tests.mdx +36 -0
- package/docs/v7/hosted.mdx +158 -0
- package/docs/v7/hover.mdx +279 -0
- package/docs/v7/locating-elements.mdx +71 -0
- package/docs/v7/making-assertions.mdx +32 -0
- package/docs/v7/mcp.mdx +9 -0
- package/docs/v7/mouse-down.mdx +161 -0
- package/docs/v7/mouse-up.mdx +164 -0
- package/docs/v7/parse.mdx +237 -0
- package/docs/v7/performing-actions.mdx +54 -0
- package/docs/v7/press-keys.mdx +349 -0
- package/docs/v7/provision.mdx +333 -0
- package/docs/v7/quickstart.mdx +173 -0
- package/docs/v7/redraw.mdx +216 -0
- package/docs/v7/reusable-code.mdx +249 -0
- package/docs/v7/right-click.mdx +123 -0
- package/docs/v7/running-tests.mdx +185 -0
- package/docs/v7/screenshot.mdx +249 -0
- package/docs/v7/screenshots.mdx +186 -0
- package/docs/v7/scroll.mdx +336 -0
- package/docs/v7/secrets.mdx +115 -0
- package/docs/v7/self-hosted.mdx +149 -0
- package/docs/v7/type.mdx +358 -0
- package/docs/v7/variables.mdx +111 -0
- package/docs/v7/wait.mdx +52 -0
- package/docs/v7/waiting-for-elements.mdx +90 -0
- package/docs/v7/what-is-testdriver.mdx +54 -0
- package/eslint.config.js +67 -0
- package/examples/ai.test.mjs +31 -0
- package/examples/assert.test.mjs +47 -0
- package/examples/chrome-extension.test.mjs +97 -0
- package/examples/config.mjs +5 -0
- package/examples/element-not-found.test.mjs +27 -0
- package/examples/exec-output.test.mjs +60 -0
- package/examples/exec-pwsh.test.mjs +58 -0
- package/examples/findall-coffee-icons.test.mjs +42 -0
- package/examples/focus-window.test.mjs +37 -0
- package/examples/formatted-logging.test.mjs +27 -0
- package/examples/hover-image.test.mjs +53 -0
- package/examples/hover-text-with-description.test.mjs +57 -0
- package/examples/hover-text.test.mjs +28 -0
- package/examples/installer.test.mjs +50 -0
- package/examples/launch-vscode-linux.test.mjs +55 -0
- package/examples/match-image.test.mjs +55 -0
- package/examples/parse.test.mjs +19 -0
- package/examples/press-keys.test.mjs +44 -0
- package/examples/prompt.test.mjs +34 -0
- package/examples/scroll-keyboard.test.mjs +38 -0
- package/examples/scroll-until-image.test.mjs +40 -0
- package/examples/scroll.test.mjs +42 -0
- package/examples/type.test.mjs +46 -0
- package/examples/windows-installer.test.mjs +54 -0
- package/index.js +2 -0
- package/interfaces/cli/commands/init.js +438 -0
- package/interfaces/cli/commands/setup.js +382 -0
- package/interfaces/cli/lib/base.js +285 -0
- package/interfaces/cli.js +20 -0
- package/interfaces/junit-reporter.js +290 -0
- package/interfaces/logger.js +388 -0
- package/interfaces/readline.js +234 -0
- package/interfaces/shared-test-state.mjs +64 -0
- package/interfaces/vitest-plugin.d.ts +115 -0
- package/interfaces/vitest-plugin.mjs +1698 -0
- package/lib/captcha/solver.js +358 -0
- package/lib/core/Dashcam.js +533 -0
- package/lib/core/index.d.ts +172 -0
- package/lib/core/index.js +12 -0
- package/lib/environments.json +18 -0
- package/lib/github-comment-formatter.js +263 -0
- package/lib/github-comment.mjs +452 -0
- package/lib/init-project.js +575 -0
- package/lib/presets/index.mjs +331 -0
- package/lib/resolve-channel.js +46 -0
- package/lib/sentry.js +417 -0
- package/lib/vitest/hooks.d.ts +57 -0
- package/lib/vitest/hooks.mjs +674 -0
- package/lib/vitest/setup-aws.mjs +247 -0
- package/lib/vitest/setup-self-hosted.mjs +151 -0
- package/lib/vitest/setup.mjs +46 -0
- package/manual/captcha-api.test.mjs +51 -0
- package/manual/drag-and-drop.test.mjs +59 -0
- package/manual/flake-diffthreshold-001.test.mjs +9 -0
- package/manual/flake-diffthreshold-01.test.mjs +9 -0
- package/manual/flake-diffthreshold-05.test.mjs +9 -0
- package/manual/flake-noredraw-cache.test.mjs +9 -0
- package/manual/flake-noredraw-nocache.test.mjs +9 -0
- package/manual/flake-redraw-cache.test.mjs +9 -0
- package/manual/flake-redraw-nocache.test.mjs +9 -0
- package/manual/flake-rocket-match.test.mjs +30 -0
- package/manual/flake-shared.mjs +51 -0
- package/manual/no-provision.test.mjs +31 -0
- package/manual/packer-hover-image.test.mjs +176 -0
- package/manual/scroll-until-text.test.mjs +68 -0
- package/manual/test-init-command.js +223 -0
- package/mcp-server/README.md +322 -0
- package/mcp-server/dist/codegen.d.ts +9 -0
- package/mcp-server/dist/codegen.js +165 -0
- package/mcp-server/dist/mcp-app.html +114 -0
- package/mcp-server/dist/package.json +1 -0
- package/mcp-server/dist/provision-types.d.ts +290 -0
- package/mcp-server/dist/provision-types.js +174 -0
- package/mcp-server/dist/server.d.ts +6 -0
- package/mcp-server/dist/server.mjs +1925 -0
- package/mcp-server/dist/session.d.ts +85 -0
- package/mcp-server/dist/session.js +152 -0
- package/mcp-server/mcp-app.html +28 -0
- package/mcp-server/mcp-config.example.json +19 -0
- package/mcp-server/package-lock.json +4027 -0
- package/mcp-server/package.json +31 -0
- package/mcp-server/src/codegen.ts +189 -0
- package/mcp-server/src/mcp-app.css +360 -0
- package/mcp-server/src/mcp-app.ts +547 -0
- package/mcp-server/src/provision-types.ts +209 -0
- package/mcp-server/src/server.ts +2391 -0
- package/mcp-server/src/session.ts +194 -0
- package/mcp-server/tsconfig.json +16 -0
- package/mcp-server/vite.config.ts +23 -0
- package/package.json +158 -0
- package/schema.json +1046 -0
- package/scripts/generate-skills.js +94 -0
- package/sdk-log-formatter.js +1157 -0
- package/sdk.d.ts +1486 -0
- package/sdk.js +4336 -0
- package/setup/aws/cloudformation.yaml +463 -0
- package/setup/aws/disable-defender.sh +42 -0
- package/setup/aws/install-dev-runner.sh +79 -0
- package/setup/aws/spawn-runner.sh +289 -0
- package/test/captcha-solver.test.mjs +152 -0
- package/test/chrome-remote-debugging.test.mjs +66 -0
- package/test/duckduckgo/experiment.test.mjs +28 -0
- package/test/duckduckgo/setup.test.mjs +29 -0
- package/test/manual/debug-locate-response.js +82 -0
- package/test/manual/reconnect-provision.test.mjs +49 -0
- package/test/manual/test-console-logs.test.mjs +42 -0
- package/test/manual/test-find-api.js +73 -0
- package/test/manual/test-init.sh +54 -0
- package/test/manual/test-prompt-cache.js +97 -0
- package/test/manual/test-provision-auth.mjs +22 -0
- package/test/manual/test-sandbox-render.js +29 -0
- package/test/manual/test-sdk-methods.js +15 -0
- package/test/manual/test-sdk-refactor.js +53 -0
- package/test/manual/test-stack-trace.mjs +57 -0
- package/test/manual/verify-element-api.js +89 -0
- package/test/manual/verify-types.js +0 -0
- package/test/manual-unawaited-promise.test.mjs +31 -0
- package/vitest.config.mjs +58 -0
- package/vitest.runner.config.mjs +33 -0
- package/vscode-extension/.vscodeignore +12 -0
- package/vscode-extension/README.md +94 -0
- package/vscode-extension/media/icon.png +0 -0
- package/vscode-extension/package-lock.json +4126 -0
- package/vscode-extension/package.json +86 -0
- package/vscode-extension/src/extension.ts +829 -0
- package/vscode-extension/testdriverai-0.1.0.vsix +0 -0
- package/vscode-extension/tsconfig.json +16 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Visual Assertions with TestDriver"
|
|
3
|
+
sidebarTitle: "Visual Assertions"
|
|
4
|
+
description: "Discover how TestDriver leverages AI-powered visual assertions to validate UI behavior and enhance end-to-end testing."
|
|
5
|
+
icon: "binoculars"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Visual assertions in TestDriver allow you to validate that your application behaves as expected by analyzing what's displayed on the screen. This approach ensures that your tests mimic real user interactions and verify outcomes visually, making it ideal for testing UI-heavy applications and dynamic content.
|
|
9
|
+
|
|
10
|
+
## What can TestDriver test with visual assertions?
|
|
11
|
+
|
|
12
|
+
### AI chatbots
|
|
13
|
+
|
|
14
|
+
- Validate that chatbot responses are displayed correctly.
|
|
15
|
+
- Ensure the chatbot interface is accessible and functional.
|
|
16
|
+
- See [AI Chatbots](/scenarios/ai-chatbot) for an example.
|
|
17
|
+
|
|
18
|
+
### Desktop applications
|
|
19
|
+
|
|
20
|
+
- Verify that desktop app windows, dialogs, and UI elements render as expected.
|
|
21
|
+
- Test cross-platform compatibility for Windows, Mac, and Linux.
|
|
22
|
+
- See [Using TestDriver with Desktop Apps](/apps/desktop-apps) for an example.
|
|
23
|
+
|
|
24
|
+
### Chrome extensions
|
|
25
|
+
|
|
26
|
+
- Confirm that the extension UI integrates properly with the browser.
|
|
27
|
+
- Validate extension popups, settings, and interactions.
|
|
28
|
+
- See [Using TestDriver with Chrome Extensions](/apps/chrome-extensions) for an example.
|
|
29
|
+
|
|
30
|
+
### PDF generation
|
|
31
|
+
|
|
32
|
+
- Assert that generated PDFs contain the correct text, images, and formatting.
|
|
33
|
+
- Verify that PDFs open and display properly in viewers.
|
|
34
|
+
- See [PDF Generation](/scenarios/pdf-generation) for an example.
|
|
35
|
+
|
|
36
|
+
### Spelling & grammar
|
|
37
|
+
|
|
38
|
+
- Check for spelling and grammar errors in displayed text.
|
|
39
|
+
- Validate that text content matches expected language rules.
|
|
40
|
+
- See [Spell Check](/scenarios/spell-check) for an example.
|
|
41
|
+
|
|
42
|
+
### Auth signup & login
|
|
43
|
+
|
|
44
|
+
- Ensure OAuth flows display the correct login screens.
|
|
45
|
+
- Verify that users are redirected to the correct pages after login.
|
|
46
|
+
- See [Login](/scenarios/log-in) for an example.
|
|
47
|
+
|
|
48
|
+
### File system & uploads
|
|
49
|
+
|
|
50
|
+
- Confirm that file upload dialogs appear and function correctly.
|
|
51
|
+
- Validate that uploaded files are processed and displayed as expected.
|
|
52
|
+
- See [File Upload](/scenarios/file-upload) for an example.
|
|
53
|
+
|
|
54
|
+
### Image content
|
|
55
|
+
|
|
56
|
+
- Verify that images are displayed correctly and match expected content.
|
|
57
|
+
- Test for the presence of specific icons, logos, or visual elements.
|
|
58
|
+
|
|
59
|
+
### Video content
|
|
60
|
+
|
|
61
|
+
- Assert that videos play correctly and match expected visuals.
|
|
62
|
+
- Validate video controls (play, pause, fullscreen) and captions.
|
|
63
|
+
|
|
64
|
+
### OS accessibility features
|
|
65
|
+
|
|
66
|
+
- Test high-contrast modes, screen readers, and other accessibility features.
|
|
67
|
+
- Validate that UI elements are accessible and readable.
|
|
68
|
+
|
|
69
|
+
### Light / Dark mode
|
|
70
|
+
|
|
71
|
+
- Verify that the application switches between light and dark modes correctly.
|
|
72
|
+
- Assert that UI elements are visible and styled appropriately in both modes.
|
|
73
|
+
|
|
74
|
+
### Privacy configuration
|
|
75
|
+
|
|
76
|
+
- Confirm that privacy settings are displayed and functional.
|
|
77
|
+
- Validate that toggles, checkboxes, and options reflect the correct state.
|
|
78
|
+
|
|
79
|
+
### `<iframe>`
|
|
80
|
+
|
|
81
|
+
- Test content rendered inside `<iframe>` elements.
|
|
82
|
+
- Validate interactions within embedded frames.
|
|
83
|
+
|
|
84
|
+
### `<canvas>`
|
|
85
|
+
|
|
86
|
+
- Verify that canvas elements render graphics, charts, or animations correctly.
|
|
87
|
+
- Assert that dynamic content within the canvas matches expectations.
|
|
88
|
+
|
|
89
|
+
### `<video>`
|
|
90
|
+
|
|
91
|
+
- Ensure video elements load and play correctly.
|
|
92
|
+
- Validate video overlays, subtitles, and playback controls.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## How to use visual assertions
|
|
97
|
+
|
|
98
|
+
### Example: Asserting text on the screen
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
- command: assert
|
|
102
|
+
expect: The chatbot response is displayed correctly
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Example: Asserting an image is present
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
- command: assert
|
|
109
|
+
expect: The company logo appears in the header
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Example: Asserting video playback
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
- command: assert
|
|
116
|
+
expect: The video is playing
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Benefits of visual assertions
|
|
122
|
+
|
|
123
|
+
1. **Selectorless Testing**: No need to rely on brittle selectors or static code.
|
|
124
|
+
2. **Dynamic Adaptation**: Tests adapt to UI changes, reducing maintenance.
|
|
125
|
+
3. **Real User Simulation**: Validates the application as a user would experience it.
|
|
126
|
+
4. **Cross-Platform Support**: Works seamlessly across web, desktop, and mobile environments.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Best Practices for visual assertions
|
|
131
|
+
|
|
132
|
+
1. **Use Descriptive Prompts**: Provide clear descriptions for elements or behaviors you want to test.
|
|
133
|
+
2. **Combine with Other Commands**: Use visual assertions alongside navigation and interaction commands for end-to-end testing.
|
|
134
|
+
3. **Leverage AI Matching**: Use AI-powered matching for dynamic or non-deterministic content.
|
|
135
|
+
4. **Test Across Modes**: Validate light/dark modes, accessibility features, and privacy settings for comprehensive coverage.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
Visual assertions in TestDriver empower you to test a wide range of applications and scenarios with confidence, ensuring your software delivers a seamless user experience.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Running in CI/CD"
|
|
3
|
+
sidebarTitle: "Running in CI"
|
|
4
|
+
description: "Learn how to set up and run tests with TestDriver in CI/CD pipelines using GitHub Actions as an example for seamless end-to-end testing."
|
|
5
|
+
icon: "code-pull-request"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This guide explains how to set up TestDriver in CI/CD pipelines, using **GitHub Actions** as an example. The same principles can be applied to other CI/CD platforms like GitLab CI, Jenkins, or CircleCI.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
1. **Add API key to secrets**: Obtain your API key from TestDriver and store it as a [CI/CD secret](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets) as `TD_API_KEY`.
|
|
13
|
+
Also make sure to add the `TD_WEBSITE` secret to the repository with the value of the website you are testing if its a web based application.
|
|
14
|
+
2. **Test Files**: Ensure your test files are saved in the `testdriver/` directory of your repository.
|
|
15
|
+
|
|
16
|
+
## Create a CI/CD workflow
|
|
17
|
+
|
|
18
|
+
This example uses GitHub Actions, but the same approach can be adapted for other CI/CD platforms:
|
|
19
|
+
|
|
20
|
+
1. Create a new file in your repository: `.github/workflows/testdriver.yaml`.
|
|
21
|
+
|
|
22
|
+
<Note>
|
|
23
|
+
If you have already [initialized the project](/getting-started/setup) with
|
|
24
|
+
`npx testdriverai@latest init`, the workflow file will already be created.
|
|
25
|
+
</Note>
|
|
26
|
+
|
|
27
|
+
2. Add the following workflow configuration:
|
|
28
|
+
|
|
29
|
+
### Example GitHub Actions workflow
|
|
30
|
+
|
|
31
|
+
```yaml .github/workflows/testdriver.yaml [expandable]
|
|
32
|
+
name: TestDriver / Run / Regressions
|
|
33
|
+
|
|
34
|
+
on:
|
|
35
|
+
push:
|
|
36
|
+
branches: ["main"]
|
|
37
|
+
pull_request:
|
|
38
|
+
workflow_dispatch:
|
|
39
|
+
schedule:
|
|
40
|
+
- cron: "0 13 * * *" # Every day at 1 PM UTC (adjust if needed for timezone)
|
|
41
|
+
|
|
42
|
+
permissions:
|
|
43
|
+
contents: read
|
|
44
|
+
pull-requests: read
|
|
45
|
+
|
|
46
|
+
jobs:
|
|
47
|
+
test:
|
|
48
|
+
name: TestDriver
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
steps:
|
|
51
|
+
- name: Checkout repository
|
|
52
|
+
uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Run TestDriver
|
|
55
|
+
run: npx testdriverai@latest run testdriver/testdriver.yaml
|
|
56
|
+
env:
|
|
57
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
58
|
+
TD_WEBSITE: ${{ secrets.TD_WEBSITE }}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Trigger the workflow
|
|
62
|
+
|
|
63
|
+
1. Push changes to the `main` branch or open a pull request.
|
|
64
|
+
2. Alternatively, manually trigger the workflow from the **Actions** tab in your GitHub repository.
|
|
65
|
+
3. The scheduled trigger will run tests daily at 1 PM UTC for regression testing.
|
|
66
|
+
|
|
67
|
+
## View results
|
|
68
|
+
|
|
69
|
+
1. Navigate to the **Actions** tab in your GitHub repository (or equivalent CI/CD dashboard).
|
|
70
|
+
2. Select the workflow run to view the test results. You will also find the link to the test recording at the end of the run, the url is of the format: `https://app.dashcam.io/replay/1234567890`
|
|
71
|
+
|
|
72
|
+
<Tip>
|
|
73
|
+
You can also intregate our supported [reporting platform](/exporting/junit) to
|
|
74
|
+
get more currated results.
|
|
75
|
+
</Tip>
|
|
76
|
+
|
|
77
|
+
<Note>
|
|
78
|
+
For other CI/CD platforms, adapt the workflow syntax to match your platform's
|
|
79
|
+
requirements while keeping the same TestDriver CLI commands and environment
|
|
80
|
+
variables.
|
|
81
|
+
</Note>
|
|
82
|
+
|
|
83
|
+
# Debugging tests
|
|
84
|
+
|
|
85
|
+
TestDriver provides a powerful debugging interface through its platform. This interface allows you to analyze test runs, identify failures, and optimize your test suite with detailed visual and textual feedback.
|
|
86
|
+
|
|
87
|
+
### 1. Step-by-step execution logs
|
|
88
|
+
|
|
89
|
+
- View each step of the test execution, including:
|
|
90
|
+
- The **action performed** (for example, clicking a button, typing text).
|
|
91
|
+
- The **expected outcome** (for example, verifying a specific element is visible).
|
|
92
|
+
- The **result** (pass, fail, or skipped).
|
|
93
|
+
- Logs provide detailed context for each step, making it easier to pinpoint where and why a test failed.
|
|
94
|
+
|
|
95
|
+
### 2. Visual feedback
|
|
96
|
+
|
|
97
|
+
- **Screenshots**: See what the application looked like at each step of the test.
|
|
98
|
+
- **GIF Previews**: Watch a replay of the entire test execution to understand the flow and identify UI issues.
|
|
99
|
+
- **Highlighting**: Elements interacted with during the test are highlighted in screenshots, helping you verify that the correct elements were targeted.
|
|
100
|
+
|
|
101
|
+
### 3. Error details
|
|
102
|
+
|
|
103
|
+
- For failed steps, TestDriver provides:
|
|
104
|
+
- **Error messages**: Detailed descriptions of what went wrong (for example, "Element not found").
|
|
105
|
+
- **Stack traces**: For advanced debugging of backend or script-related issues.
|
|
106
|
+
- **Suggestions**: Recommendations for fixing common issues, such as adjusting prompts or improving element descriptions.
|
|
107
|
+
|
|
108
|
+
### 4. Test history
|
|
109
|
+
|
|
110
|
+
- Access the history of test runs to:
|
|
111
|
+
- Compare results across different builds or environments.
|
|
112
|
+
- Identify flaky tests by analyzing patterns in failures.
|
|
113
|
+
- Track improvements or regressions over time.
|
|
114
|
+
|
|
115
|
+
### 5. Environment context
|
|
116
|
+
|
|
117
|
+
- View the environment details for each test run, including:
|
|
118
|
+
- Operating system and browser version.
|
|
119
|
+
- Screen resolution and viewport size.
|
|
120
|
+
- Network conditions (if applicable).
|
|
121
|
+
|
|
122
|
+
### 6. Collaboration tools
|
|
123
|
+
|
|
124
|
+
- Share test results with your team by generating a shareable link.
|
|
125
|
+
- Add comments or annotations to specific steps to facilitate discussions and debugging.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## How it works
|
|
130
|
+
|
|
131
|
+
1. **Trigger**: The GitHub workflow is triggered based on the conditions defined in the `on` section.
|
|
132
|
+
2. **Fetch the test files**: The test files are fetched from the repository based off the current branch.
|
|
133
|
+
3. **Running the tests**: The TestDriver CLI is installed and the tests are run via the [`run`](/commands/run) command.
|
|
134
|
+
4. **Authentication**: The `TD_API_KEY` environment variable authenticates your account.
|
|
135
|
+
5. **Dashcam Recording**: Dashcam begins recording the test execution.
|
|
136
|
+
6. **Test Execution**: The TestDriver CLI executes your commands on the cloud VM.
|
|
137
|
+
7. **Test Summary**: TestDriver summarizes the test and sets the exit code based on the pass or fail state.
|
|
138
|
+
8. **Cleanup**: The recording is uploaded to the TestDriver platform and the VM is destroyed, and all data is wiped.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Additional features
|
|
143
|
+
|
|
144
|
+
- **Parallel testing**: You can run multiple tests in [parallel](/features/parallel-testing#setting-up-parallel-testing-with-a-matrix-strategy). The number of parallel instances depends on the plan you are on.
|
|
145
|
+
- **Environment Variables**: Pass [custom environment variables](guide/authentication#step-2%3A-pass-credentials-to-the-workflow) to configure credentials that are required for the tests.
|
|
146
|
+
- **Chaining Workflows**: A common workflow involves waiting for staging to deploy and testing against the staging environment by passing in the deployed url as `TD_WEBSITE` or the staging build's installation url depending on the kind of application you are testing.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Setup"
|
|
3
|
+
sidebarTitle: "Setup"
|
|
4
|
+
description: "Get started with TestDriver in minutes."
|
|
5
|
+
icon: "download"
|
|
6
|
+
mode: "wide"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<Steps>
|
|
10
|
+
<Step title="Set up your environment">
|
|
11
|
+
|
|
12
|
+
Copy your API key from [the TestDriver dashboard](https://app.testdriver.ai/team), and set it as an environment variable.
|
|
13
|
+
|
|
14
|
+
<Tabs>
|
|
15
|
+
<Tab title="macOS / Linux">
|
|
16
|
+
```bash Export an environment variable on macOS or Linux systems
|
|
17
|
+
export TD_API_KEY="your_api_key_here"
|
|
18
|
+
```
|
|
19
|
+
</Tab>
|
|
20
|
+
<Tab title="Windows">
|
|
21
|
+
```powershell Export an environment variable in PowerShell
|
|
22
|
+
setx TD_API_KEY "your_api_key_here"
|
|
23
|
+
```
|
|
24
|
+
</Tab>
|
|
25
|
+
</Tabs>
|
|
26
|
+
|
|
27
|
+
</Step>
|
|
28
|
+
<Step title="Try an example test">
|
|
29
|
+
|
|
30
|
+
Download the TestDriver GitHub repository and run the web example test.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git clone https://github.com/testdriverai/cli testdriverai
|
|
34
|
+
cd testdriverai/testdriver/examples/web
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
TestDriver tests are written in YAML, a human-readable data format. The `example.yaml` file contains a series of steps that the agent will execute.
|
|
38
|
+
|
|
39
|
+
```yaml testdriver/test.yaml
|
|
40
|
+
steps:
|
|
41
|
+
- prompt: log in
|
|
42
|
+
- prompt: add an item to the cart
|
|
43
|
+
- prompt: click on the cart icon
|
|
44
|
+
- prompt: complete checkout
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Each step has a `prompt` that describes what the agent should do. The agent will use the prompt to generate [commands](/commands/assert) that make the tests faster and more reliable the next time you run the test.
|
|
48
|
+
|
|
49
|
+
</Step>
|
|
50
|
+
<Step title="Generate test steps from prompts">
|
|
51
|
+
|
|
52
|
+
Run the following command to run the test file. TestDriver will spawn a virtual machine, launch the sandbox test page, and execute the steps defined in the `example.yaml` file.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx testdriverai@latest run example.yaml --write --heal
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The `--write` flag tells TestDriver to save any generated commands to the test file, and the `--heal` flag allows TestDriver to recover from unexpected issues during the test run.
|
|
59
|
+
|
|
60
|
+
</Step>
|
|
61
|
+
<Step title="Run a regression test">
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
version: 6.0.0
|
|
65
|
+
steps:
|
|
66
|
+
- prompt: focus chrome
|
|
67
|
+
commands:
|
|
68
|
+
- command: focus-application
|
|
69
|
+
name: Google Chrome
|
|
70
|
+
- prompt: enter a username
|
|
71
|
+
commands:
|
|
72
|
+
- command: hover-text
|
|
73
|
+
text: Username
|
|
74
|
+
description: username input field
|
|
75
|
+
action: click
|
|
76
|
+
- command: type
|
|
77
|
+
text: standard_user
|
|
78
|
+
- prompt: enter a password
|
|
79
|
+
commands:
|
|
80
|
+
- command: hover-text
|
|
81
|
+
text: Password
|
|
82
|
+
description: password input field
|
|
83
|
+
action: click
|
|
84
|
+
- command: type
|
|
85
|
+
text: secret_password
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The `--write` command tells the agent to save the generated commands to the test file, and the `--heal` command gives the agent permission to recover if something goes wrong.
|
|
89
|
+
|
|
90
|
+
</Step>
|
|
91
|
+
</Steps>
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Editing"
|
|
3
|
+
sidebarTitle: "Editing"
|
|
4
|
+
description: "Edit previously generated tests."
|
|
5
|
+
icon: "file-pen"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Test scripts are written in YAML format, making them easy to read and modify manually if you need to.
|
|
9
|
+
|
|
10
|
+
<Card title="Commands Reference" icon="link" href="/commands/assert">
|
|
11
|
+
Explore the available commands and their parameters.
|
|
12
|
+
</Card>
|
|
13
|
+
|
|
14
|
+
## Locate the Test File
|
|
15
|
+
|
|
16
|
+
TestDriver test files are typically stored in the `testdriver/` directory of your project. The default file is `testdriver/testdriver.yaml`.
|
|
17
|
+
|
|
18
|
+
### Open the Test File
|
|
19
|
+
|
|
20
|
+
Use your preferred text editor or IDE (for example, Visual Studio Code) to open the YAML file.
|
|
21
|
+
|
|
22
|
+
### YAML Structure
|
|
23
|
+
|
|
24
|
+
Each test file consists of:
|
|
25
|
+
|
|
26
|
+
- **Version**: Specifies the TestDriver version that was used to generate the test file. This is used to lock the version of TestDriver that is used to run the test.
|
|
27
|
+
- **Session**: A unique identifier for the test session.
|
|
28
|
+
- **Steps**: A list of prompts and commands to execute.
|
|
29
|
+
|
|
30
|
+
```yaml test-file.yaml
|
|
31
|
+
version: 6.0.0
|
|
32
|
+
session: abc1234
|
|
33
|
+
steps:
|
|
34
|
+
- prompt: Open Google Chrome and navigate to Airbnb
|
|
35
|
+
commands:
|
|
36
|
+
- command: focus-application
|
|
37
|
+
name: Google Chrome
|
|
38
|
+
- command: hover-text
|
|
39
|
+
text: Search Google or type a URL
|
|
40
|
+
description: main google search
|
|
41
|
+
action: click
|
|
42
|
+
- command: type
|
|
43
|
+
text: airbnb.com
|
|
44
|
+
- command: press-keys
|
|
45
|
+
keys:
|
|
46
|
+
- enter
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
<Tip>
|
|
50
|
+
The `version` captured when you generate a test file is the version of
|
|
51
|
+
TestDriver you used, and isn't used when running the test. This doesn't affect
|
|
52
|
+
your ability to use newer versions of TestDriver on existing test files nor do
|
|
53
|
+
these need to be updated when migrating to a new version.
|
|
54
|
+
</Tip>
|
|
55
|
+
|
|
56
|
+
### Modify the test steps
|
|
57
|
+
|
|
58
|
+
You can add, edit, or remove steps as needed. Each step contains:
|
|
59
|
+
|
|
60
|
+
- **Prompt**: A description of the action.
|
|
61
|
+
- **Commands**: The specific actions to perform. It is an **optional** field, meaning, if there are no `commands` the AI considers the `prompt` and generates and executes the yaml on-the-go using the [exploratory mode](/interactive/explore)
|
|
62
|
+
|
|
63
|
+
#### Example edits:
|
|
64
|
+
|
|
65
|
+
- **Add a Wait Command**:
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
- command: wait
|
|
69
|
+
timeout: 3000
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
- **Change the URL**:
|
|
73
|
+
Update the `text` field in the [`type`](/commands/type) command:
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
- command: type
|
|
77
|
+
text: booking.com
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Validate the YAML syntax
|
|
81
|
+
|
|
82
|
+
Ensure the YAML file is properly formatted:
|
|
83
|
+
|
|
84
|
+
- Use consistent indentation (2 spaces recommended).
|
|
85
|
+
- Avoid trailing spaces or tabs.
|
|
86
|
+
- TestDriver will validate the yaml syntax and provide suggestions to fix any errors when you run the test.
|
|
87
|
+
|
|
88
|
+
<Tip>
|
|
89
|
+
It is recommended to use our [VS Code extension](/getting-started/vscode)
|
|
90
|
+
while you are editing the yaml. It will provide you with a rich experience
|
|
91
|
+
with auto-completion, syntax highlighting, and validation.
|
|
92
|
+
</Tip>
|
|
93
|
+
|
|
94
|
+
### Test the changes
|
|
95
|
+
|
|
96
|
+
Run the updated test to verify it works as expected:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx testdriverai@latest run path/to/test.yaml
|
|
100
|
+
```
|