@testdriverai/agent 7.8.0-canary.10
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,18 @@
|
|
|
1
|
+
```yaml highlight={14-17}
|
|
2
|
+
version: 6.0.0
|
|
3
|
+
steps:
|
|
4
|
+
- prompt: go to testdriver.ai and wait for the hero image to load
|
|
5
|
+
commands:
|
|
6
|
+
- command: press-keys
|
|
7
|
+
keys:
|
|
8
|
+
- ctrl
|
|
9
|
+
- l
|
|
10
|
+
- command: type
|
|
11
|
+
text: testdriver.ai
|
|
12
|
+
- command: press-keys
|
|
13
|
+
keys:
|
|
14
|
+
- enter
|
|
15
|
+
- command: wait-for-image
|
|
16
|
+
description: the hero section image
|
|
17
|
+
timeout: 10000 # 10 seconds
|
|
18
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
```yaml highlight={14-17}
|
|
2
|
+
version: 6.0.0
|
|
3
|
+
steps:
|
|
4
|
+
- prompt: go to testdriver.ai and verify the page loads
|
|
5
|
+
commands:
|
|
6
|
+
- command: press-keys
|
|
7
|
+
keys:
|
|
8
|
+
- ctrl
|
|
9
|
+
- l
|
|
10
|
+
- command: type
|
|
11
|
+
text: testdriver.ai
|
|
12
|
+
- command: press-keys
|
|
13
|
+
keys:
|
|
14
|
+
- enter
|
|
15
|
+
- command: wait-for-text
|
|
16
|
+
text: Book a Demo
|
|
17
|
+
timeout: 10000 # 10 seconds
|
|
18
|
+
```
|
package/docs/styles.css
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.comparison-table th {
|
|
2
|
+
font-size: 18px;
|
|
3
|
+
padding: 12px 30px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.comparison-table td {
|
|
7
|
+
padding: 12px 30px;
|
|
8
|
+
font-size: 16px;
|
|
9
|
+
line-height: 1.2;
|
|
10
|
+
text-align: start;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.comparison-table code {
|
|
14
|
+
font-size: 1em;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.env-vars-table table {
|
|
18
|
+
width: 120%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.env-vars-table th {
|
|
22
|
+
font-size: 18px;
|
|
23
|
+
padding: 12px 30px;
|
|
24
|
+
border: 1.5px solid #05f1d9;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.env-vars-table td {
|
|
28
|
+
padding: 12px 30px;
|
|
29
|
+
font-size: 16px;
|
|
30
|
+
line-height: 1.5;
|
|
31
|
+
border: 1.5px solid #05f1d9;
|
|
32
|
+
vertical-align: middle;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.env-vars-table code {
|
|
36
|
+
font-size: 0.9em;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.prose
|
|
40
|
+
:where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
|
|
41
|
+
border-bottom: none !important;
|
|
42
|
+
padding-bottom: 0 !important;
|
|
43
|
+
text-decoration: none !important;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.card img {
|
|
47
|
+
background-color: transparent !important;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.replay-block {
|
|
51
|
+
width: 100vw;
|
|
52
|
+
margin-left: 50%;
|
|
53
|
+
transform: translateX(-50%);
|
|
54
|
+
justify-content: center;
|
|
55
|
+
display: flex;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
img[src$=".svg"] {
|
|
59
|
+
background: transparent !important;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
img[src$="https://tauri.app/favicon.svg"]
|
|
63
|
+
{
|
|
64
|
+
opacity: 0.3;
|
|
65
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Dashboard"
|
|
3
|
+
sidebarTitle: "Dashboard"
|
|
4
|
+
description: "Explore your TestDriver dashboard and its features."
|
|
5
|
+
icon: "gauge"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Welcome to your TestDriver dashboard
|
|
9
|
+
|
|
10
|
+
Your dashboard is your command center for managing your TestDriver experience. Here, you can view your projects, monitor usage, and access various features to enhance your testing workflow.
|
|
11
|
+
|
|
12
|
+
## Key features
|
|
13
|
+
|
|
14
|
+
- **Projects**: Get a quick snapshot of your projects, with all Dashcam replays.
|
|
15
|
+
- **Team**: Manage your API key, and add/remove team members.
|
|
16
|
+
- **Usage & Billing**: Monitor your usage and credits in real-time.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Enterprise"
|
|
3
|
+
sidebarTitle: "For Enterprise"
|
|
4
|
+
description: "The TestDriver 4x4 Guarantee!"
|
|
5
|
+
icon: gem
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
import { calendar } from "/snippets/calendar-link.mdx";
|
|
9
|
+
|
|
10
|
+
TestDriver Enterprise is designed for fast-moving teams that need comprehensive QA coverage for complex applications. Our **4x4 Guarantee** ensures you get 4 custom tests created specifically for your application within your first 4 weeks.
|
|
11
|
+
|
|
12
|
+
We specialize in testing scenarios that other tools can't handle - desktop applications, browser extensions, multi-platform workflows, and complex integrations that require custom infrastructure and expert support.
|
|
13
|
+
|
|
14
|
+
<Card
|
|
15
|
+
title="Schedule a Consultation"
|
|
16
|
+
icon="calendar"
|
|
17
|
+
href="https://calendly.com/d/cq23-qyn-3v6/testdriver-ai-demo"
|
|
18
|
+
link
|
|
19
|
+
>
|
|
20
|
+
Discuss your testing requirements and custom infrastructure needs.
|
|
21
|
+
</Card>
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Enterprise Plans
|
|
26
|
+
|
|
27
|
+
TestDriver Enterprise plans start at **$2,000/month** and include:
|
|
28
|
+
|
|
29
|
+
- A pilot program with our expert team to create 4 custom tests within your first 4 weeks (4x4 Guarantee).
|
|
30
|
+
- 4 parallel tests
|
|
31
|
+
- **12,500 runner minutes per month**: Sufficient capacity for continuous testing of your custom test suite.
|
|
32
|
+
- Full CI/CD pipeline integration with custom configurations.
|
|
33
|
+
- Dedicated infrastructure and ongoing support for complex testing scenarios.
|
|
34
|
+
|
|
35
|
+
For detailed pricing and contract information our [Pricing](/account/pricing) page. Want unlimited minutes or enhanced security? We also support self-hosted options with 16 parallel tests starting at $2,000/month. See our [Self Hosting](/getting-started/self-hosting) docs for more info.
|
|
36
|
+
|
|
37
|
+
<CardGroup cols={3}>
|
|
38
|
+
<Card title="Custom Desktop & Extension Testing">
|
|
39
|
+
Test complex desktop applications and browser extensions that other tools
|
|
40
|
+
can't handle.
|
|
41
|
+
</Card>
|
|
42
|
+
<Card title="Multi-App Workflow Testing">
|
|
43
|
+
Test sophisticated workflows that span multiple applications and platforms.
|
|
44
|
+
</Card>
|
|
45
|
+
<Card title="Enterprise Infrastructure & Support">
|
|
46
|
+
Get dedicated infrastructure and expert support for your unique testing
|
|
47
|
+
challenges.
|
|
48
|
+
</Card>
|
|
49
|
+
</CardGroup>
|
|
50
|
+
|
|
51
|
+
## Enterprise Features
|
|
52
|
+
|
|
53
|
+
TestDriver Enterprise provides comprehensive support for fast-moving teams with complex testing requirements:
|
|
54
|
+
|
|
55
|
+
- **Complex Application Support**: Full testing capabilities for desktop applications, Chrome extensions, mobile apps, and web applications that require specialized infrastructure.
|
|
56
|
+
- **4x4 Custom Test Creation**: Our expert team creates 4 fully customized tests tailored to your specific application and workflows within the first 4 weeks.
|
|
57
|
+
- **Multi-Platform Workflows**: Test complex scenarios spanning multiple applications, browsers, and operating systems.
|
|
58
|
+
- **Unlimited Parallel Testing**: Scale your testing across custom infrastructure without limitations.
|
|
59
|
+
- **Continuous Test Execution**: Automated test runs integrated with your development and deployment cycles.
|
|
60
|
+
- **Intelligent Reporting**: Detailed analytics and quality reports delivered to your team.
|
|
61
|
+
- **Self-Healing Test Maintenance**: AI-powered test maintenance that adapts to application changes.
|
|
62
|
+
- **Custom CI/CD Integration**: Tailored integration with your existing development pipeline.
|
|
63
|
+
- **Enterprise Dashboards**: Advanced analytics and monitoring with custom metrics and insights.
|
|
64
|
+
- **Dedicated Infrastructure**: Specialized testing environments configured for your application stack.
|
|
65
|
+
- **Expert Support**: Ongoing technical support and consultation from our testing specialists.
|
|
66
|
+
|
|
67
|
+
Testing complex applications requires more than standard automation tools. Desktop applications, browser extensions, and multi-platform workflows demand specialized infrastructure, custom integrations, and deep technical expertise. TestDriver Enterprise provides the complete solution - from initial setup through ongoing maintenance and support.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Implementation Process
|
|
72
|
+
|
|
73
|
+
1. **Initial Consultation**: Discuss your specific testing challenges, application architecture, and infrastructure requirements.
|
|
74
|
+
2. **Expert Test Development**: Our team develops 4 custom tests designed specifically for your application's critical user flows and business logic.
|
|
75
|
+
3. **Integration & Deployment**: Implement tests within your CI/CD pipeline with custom monitoring and reporting configurations.
|
|
76
|
+
4. **Team Training & Ongoing Support**: Comprehensive training for your team plus ongoing technical support and consultation.
|
|
77
|
+
|
|
78
|
+
Complex applications - particularly desktop software, browser extensions, and multi-platform workflows - present unique testing challenges that require specialized infrastructure and deep technical expertise. TestDriver Enterprise addresses these challenges with custom solutions designed specifically for your application and development process.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Implementation Timeline
|
|
83
|
+
|
|
84
|
+
| Service | Timeline | Description |
|
|
85
|
+
| --------------------------------- | ------------- | ------------------------------------------------------------------------------------------------ |
|
|
86
|
+
| **Requirements Analysis** | First 7 Days | Comprehensive review of testing requirements and technical specifications. |
|
|
87
|
+
| **Custom Test Development** | First 4 Weeks | Expert creation of 4 fully customized tests (4x4 Guarantee) tailored to your critical workflows. |
|
|
88
|
+
| **Training & Knowledge Transfer** | First 30 Days | Technical training for your team and establishment of ongoing support processes. |
|
|
89
|
+
| **Continuous Execution** | Ongoing | Automated test execution with specialized monitoring, reporting, and maintenance. |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Contract Information
|
|
94
|
+
|
|
95
|
+
- **4x4 Guarantee**: 4 custom tests delivered within your first 4 weeks of service.
|
|
96
|
+
- **Test Ownership**: Complete ownership of all tests - modify, duplicate, or distribute as needed.
|
|
97
|
+
- **Payment Terms**: Monthly or annual billing options available.
|
|
98
|
+
- **Contract Term**: Annual contracts with flexible payment schedules.
|
|
99
|
+
- **Service Level**: Dedicated support team and technical consultation included.
|
|
100
|
+
- **Usage Tracking**: Monthly runner minute allocation with standard overage rates.
|
|
101
|
+
- **Custom Infrastructure**: Specialized testing environments included for complex applications.
|
|
102
|
+
- **Enterprise Options**: [Self hosting](/getting-started/self-hosting) configurations available.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Get Started
|
|
107
|
+
|
|
108
|
+
<a href={calendar}>**Schedule a consultation**</a> to discuss your testing
|
|
109
|
+
requirements and learn how TestDriver Enterprise can support your team's
|
|
110
|
+
development process.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Pricing"
|
|
3
|
+
sidebarTitle: "Pricing"
|
|
4
|
+
description: "Explore TestDriver's pricing plans and features."
|
|
5
|
+
icon: "dollar-sign"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## TestDriver pricing plans
|
|
9
|
+
|
|
10
|
+
TestDriver offers a range of pricing plans to suit different needs, from individual developers to large enterprises. Our plans are designed to provide flexibility and scalability, ensuring you can choose the right option for your testing requirements.
|
|
11
|
+
|
|
12
|
+
<CardGroup cols={3}>
|
|
13
|
+
<Card title="Hobby" icon="check">
|
|
14
|
+
Local agent testing. Always free.
|
|
15
|
+
</Card>
|
|
16
|
+
<Card title="Pro" icon="briefcase">
|
|
17
|
+
Use local or hosted runners on demand or integrated with CI for as low as
|
|
18
|
+
$0.05/minute.
|
|
19
|
+
</Card>
|
|
20
|
+
<Card title="Enterprise" icon="shield">
|
|
21
|
+
Need advanced features? Contact us for tailored solutions. Starting at
|
|
22
|
+
$2,000/month.
|
|
23
|
+
</Card>
|
|
24
|
+
</CardGroup>
|
|
25
|
+
|
|
26
|
+
<Tip>
|
|
27
|
+
Every plan comes with access to the Playwright SDK to get you off the starting
|
|
28
|
+
line!
|
|
29
|
+
</Tip>
|
|
30
|
+
|
|
31
|
+
## Compare plans
|
|
32
|
+
|
|
33
|
+
To view the latest pricing and features, please visit our [Pricing Page](https://testdriver.ai/pricing).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "TestDriver Projects"
|
|
3
|
+
sidebarTitle: "Projects"
|
|
4
|
+
description: "Manage your projects and workflows with TestDriver."
|
|
5
|
+
icon: "folder"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Dashboard project view
|
|
9
|
+
|
|
10
|
+
In the Project tab, select a Project to see the replays for that project.
|
|
11
|
+
|
|
12
|
+
<Frame caption="Click a Project to view its replays">
|
|
13
|
+
<img src="/images/content/account/projectpage.png" />
|
|
14
|
+
</Frame>
|
|
15
|
+
|
|
16
|
+
From the Project view, you can see all the replays (Dashes) stored for that project. Click one to see it. These will also be linked in CI for any pull requests or branches that have been tested with TestDriver.
|
|
17
|
+
|
|
18
|
+
<Frame caption="Click a Replay to view, comment or share ">
|
|
19
|
+
<img src="/images/content/account/projectreplays.png" />
|
|
20
|
+
</Frame>
|
|
21
|
+
|
|
22
|
+
## New project
|
|
23
|
+
|
|
24
|
+
When you create a new Project, you can also enable the <Icon icon="jira" /> Jira integration to create issues automatically each time a replay (Dash) is created.
|
|
25
|
+
|
|
26
|
+
<Info>
|
|
27
|
+
The project ID can be used in conjunction with your `lifecycle/postrun.yaml`
|
|
28
|
+
script to automatically assign a replay to a project. For more info see the
|
|
29
|
+
(Dashcam section)[/guide/dashcam].
|
|
30
|
+
</Info>
|
|
31
|
+
<Frame caption="Click a Project to view its replays">
|
|
32
|
+
<img src="/images/content/account/newprojectsettings.png" />
|
|
33
|
+
</Frame>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Team"
|
|
3
|
+
sidebarTitle: "Team"
|
|
4
|
+
description: "Manage your team and collaborate with TestDriver."
|
|
5
|
+
icon: "users"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Important settings in one place
|
|
9
|
+
|
|
10
|
+
In the Team tab, you can manage your team name, team members, API key, and subscription.
|
|
11
|
+
|
|
12
|
+
### Let's take a look at the team settings.
|
|
13
|
+
|
|
14
|
+
<Frame caption="Team Settings">
|
|
15
|
+
<img src="/images/content/account/teampage.png" />
|
|
16
|
+
</Frame>
|
|
17
|
+
|
|
18
|
+
1. **Team Name**: The name of your team. This is used to identify your team in TestDriver.
|
|
19
|
+
2. **API Key**: Your API key is used to authenticate your requests to the TestDriver API. You can regenerate it if you suspect it has been compromised.
|
|
20
|
+
3. **Usage & Billing**: Monitor your usage and billing information. This includes your current plan, usage limits, and billing history.
|
|
21
|
+
<Tip>
|
|
22
|
+
Note: this button is where you 'Upgrade to Pro' to start your free trial.
|
|
23
|
+
</Tip>
|
|
24
|
+
4. **Replay Visibility**: Toggle whether your replays are public or private by default. This defaults to **private**.
|
|
25
|
+
5. **Don't forget to save your changes!**: After making any changes, be sure to click the **Update** button to apply them.
|
|
26
|
+
|
|
27
|
+
### Team members
|
|
28
|
+
|
|
29
|
+
<Frame caption="Team Members">
|
|
30
|
+
<img src="/images/content/account/team-manage.png" />
|
|
31
|
+
</Frame>
|
|
32
|
+
|
|
33
|
+
1. **Email Invite**: Invite new team members by entering their email address and clicking the **Invite** button. They will receive an email invitation to join your team. You can also copy the link above this option to send to everyone at once.
|
|
34
|
+
2. **Removing Team Members**: To remove a team member, click the **Remove** button next to their name. This will revoke their access to your TestDriver account.
|
|
35
|
+
3. **Invite Status**: The status of the invite will be shown here. If it says **Invited**, the invite hasn't been accepted yet. To resend it, click here.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Customizing the VM Image"
|
|
3
|
+
sidebarTitle: "Custom VM Image"
|
|
4
|
+
description: "How customize the TestDriver VM Image for robust test execution."
|
|
5
|
+
icon: "image"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<Tip>
|
|
9
|
+
This guide is specifically for [Enterprise Plan
|
|
10
|
+
customers](/account/enterprise) who have access to the shared TestDriver AMI.
|
|
11
|
+
If you are on a different plan, please contact your account manager for more
|
|
12
|
+
information.
|
|
13
|
+
</Tip>
|
|
14
|
+
|
|
15
|
+
<Steps>
|
|
16
|
+
<Step title="Send Us Your AWS Account ID">
|
|
17
|
+
To begin, send your **12-digit AWS account ID** to your **TestDriver account manager**. We'll share the AMI directly with your AWS account using [Amazon's explicit AMI sharing process](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html).
|
|
18
|
+
</Step>
|
|
19
|
+
<Step title="Wait for Confirmation">
|
|
20
|
+
Your account manager will notify you when the AMI has been shared with your
|
|
21
|
+
account. You will receive the **AMI ID** (e.g., `ami-0abcd1234efgh5678`) and your **RDP Username \+ Password**.
|
|
22
|
+
</Step>
|
|
23
|
+
<Step title="Launch and Connect with RDP">
|
|
24
|
+
Once you have the AMI ID & RDP credentials from the previous step, launch an EC2 instance and connect via RDP:
|
|
25
|
+
|
|
26
|
+
1. Ensure your **security group allows RDP (TCP port 3389)**.
|
|
27
|
+
2. In the EC2 Console, select your instance → **Connect \> RDP Client**.
|
|
28
|
+
3. Download the `.rdp` file and launch it with the [Windows App](https://adoption.microsoft.com/en-us/windows-app/)\
|
|
29
|
+
Alternatively, copy the public IP and paste it into your RDP client.
|
|
30
|
+
4. Login using your **RDP Username \+ Password** (e.g. `testdriver` \+ `•••••••••`) provided by your account manager.
|
|
31
|
+
|
|
32
|
+
<Note>
|
|
33
|
+
You will access a full Windows desktop where TestDriver is pre-installed and ready for customization.
|
|
34
|
+
</Note>
|
|
35
|
+
|
|
36
|
+
</Step>
|
|
37
|
+
|
|
38
|
+
<Step title="Change the Windows password">
|
|
39
|
+
Inside the Windows desktop environment:
|
|
40
|
+
|
|
41
|
+
1. Open up Powershell
|
|
42
|
+
2. Run `C:\testdriver\RotateLocalPasswords.ps1`
|
|
43
|
+
3. Copy the password presented in the output to a safe place. This is the only chance to copy the password.
|
|
44
|
+
4. Restart the instance and double check you can log in before continuing.
|
|
45
|
+
|
|
46
|
+
Note that this will change the password for the testdriver and rdp_local accounts, but Administrator will remain as a password you can only retreive through the AWS EC2 UI ((Instructions Here)[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-rdp.html#retrieve-initial-admin-password]).
|
|
47
|
+
|
|
48
|
+
</Step>
|
|
49
|
+
|
|
50
|
+
<Step title="Customize the Instance">
|
|
51
|
+
Inside the Windows desktop environment:
|
|
52
|
+
|
|
53
|
+
1. **Download and install your application** using a browser, Git, PowerShell, or other tools.
|
|
54
|
+
2. Add any required system configuration, environment variables, or startup scripts.
|
|
55
|
+
3. Verify the full setup works correctly in the sandbox.
|
|
56
|
+
|
|
57
|
+
Common use cases:
|
|
58
|
+
- Pull from GitHub or your artifact store
|
|
59
|
+
- Configure your app with test credentials or environment variables
|
|
60
|
+
- Enable logging or install monitoring tools
|
|
61
|
+
|
|
62
|
+
</Step>
|
|
63
|
+
|
|
64
|
+
<Step title="Create Your Custom AMI">
|
|
65
|
+
Once your customizations are complete, create an AMI from your instance:
|
|
66
|
+
|
|
67
|
+
1. In the EC2 Console, select your customized instance.
|
|
68
|
+
2. Go to **Actions** → **Image and templates** → **Create image**.
|
|
69
|
+
3. Provide a descriptive **Image name** and **Description**.
|
|
70
|
+
4. Click **Create image** to start the AMI creation process.
|
|
71
|
+
5. Wait for the AMI status to change from "pending" to "available".
|
|
72
|
+
|
|
73
|
+
<Note>The AMI creation process may take several minutes depending on the instance size and customizations.</Note>
|
|
74
|
+
|
|
75
|
+
</Step>
|
|
76
|
+
|
|
77
|
+
<Step title="Share Your AMI and Use with TestDriver CLI">
|
|
78
|
+
After creating your custom AMI:
|
|
79
|
+
|
|
80
|
+
1. **Share the AMI ID** with your **TestDriver account manager** so we can launch it in our infrastructure. Follow [Amazon's explicit AMI sharing process](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) if needed.
|
|
81
|
+
2. Once confirmed, you can reference the AMI directly from your machine using the TestDriver CLI:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
testdriverai --sandbox-ami=ami-0abcd1234efgh5678
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This instructs the CLI to launch a sandbox using **your customized AMI**, enabling test execution in your environment.
|
|
88
|
+
|
|
89
|
+
</Step>
|
|
90
|
+
</Steps>
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🔐 Best Practices & Security
|
|
95
|
+
|
|
96
|
+
- Always use **strong RDP passwords** and keep your key pairs secure.
|
|
97
|
+
- Apply **Windows Updates** to stay current with patches.
|
|
98
|
+
- Use **IAM roles with least privilege** to access other AWS resources.
|
|
99
|
+
- Consider **encrypting your volumes and AMI** if handling sensitive data.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### 🤝 Need Help?
|
|
104
|
+
|
|
105
|
+
Your TestDriver account manager is available to support you with:
|
|
106
|
+
|
|
107
|
+
- AMI access and customization
|
|
108
|
+
- CLI configuration
|
|
109
|
+
- Troubleshooting sandbox execution
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Optimizing Performance in TestDriver"
|
|
3
|
+
sidebarTitle: "Performance Optimization"
|
|
4
|
+
description: "Optimizing Performance in TestDriver"
|
|
5
|
+
icon: "rabbit-running"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Optimizing your TestDriver tests can significantly reduce execution time, ensuring faster feedback for developers and smoother CI/CD workflows. While TestDriver's AI-powered capabilities are robust, using them efficiently is key to achieving the best performance.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Tips for improving performance
|
|
15
|
+
|
|
16
|
+
### 1. Use parallel testing
|
|
17
|
+
|
|
18
|
+
Parallel testing allows you to split your test actions into multiple files and run them simultaneously. This can drastically reduce the total runtime of your test suite.
|
|
19
|
+
|
|
20
|
+
#### How to implement parallel testing
|
|
21
|
+
|
|
22
|
+
- Divide your test steps into smaller, independent YAML files.
|
|
23
|
+
- Use a test matrix strategy to execute these files in parallel.
|
|
24
|
+
|
|
25
|
+
<Warning>
|
|
26
|
+
The [`run`](/commands/run) command is used in your test files to run other
|
|
27
|
+
test files. This is useful for breaking down large tests into smaller, more
|
|
28
|
+
manageable pieces. To run multiple separate tests, use a test matrix strategy.
|
|
29
|
+
</Warning>
|
|
30
|
+
|
|
31
|
+
#### Example
|
|
32
|
+
|
|
33
|
+
```yaml .github/workflows/testdriver.yaml focus={3-9, 14}
|
|
34
|
+
run tests:
|
|
35
|
+
name: Run tests in parallel
|
|
36
|
+
strategy:
|
|
37
|
+
matrix:
|
|
38
|
+
test_file:
|
|
39
|
+
- tests/login.yaml
|
|
40
|
+
- tests/search.yaml
|
|
41
|
+
- tests/cart.yaml
|
|
42
|
+
steps:
|
|
43
|
+
- name: Checkout repository
|
|
44
|
+
uses: actions/checkout@v4
|
|
45
|
+
|
|
46
|
+
- name: Run the tests
|
|
47
|
+
run: npx testdriverai@latest run testdriver/${{ matrix.test_file }}
|
|
48
|
+
env:
|
|
49
|
+
FORCE_COLOR: 3
|
|
50
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
51
|
+
TD_WEBSITE: https://testdriver-sandbox.vercel.app
|
|
52
|
+
TD_THIS_FILE: ${{ matrix.test }}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### 2. Use optimized matching methods
|
|
58
|
+
|
|
59
|
+
For actions like [`hover-text`](/commands/hover-text), [`wait-for-text`](/commands/wait-for-text), and [`scroll-until-text`](/commands/scroll-until-text), use the `turbo` matching method instead of `ai`. The `turbo` method uses text similarity to quickly compute the most relevant match, making it about 40% faster than the `ai` method.
|
|
60
|
+
|
|
61
|
+
#### Example
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
command: [`hover-text`](/commands/hover-text)
|
|
65
|
+
text: Sign In
|
|
66
|
+
description: login button
|
|
67
|
+
action: click
|
|
68
|
+
method: turbo
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
<Note>
|
|
72
|
+
`turbo` is the default method that is currently implemented. The other method
|
|
73
|
+
being `ai`
|
|
74
|
+
</Note>
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### 3. Use `async` asserts
|
|
79
|
+
|
|
80
|
+
The [`assert`](/commands/assert) command supports the `async: true` property, allowing you to create non-blocking assertions. This means your tests can continue running while the assertion is being validated, saving valuable time.
|
|
81
|
+
|
|
82
|
+
#### Example
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
command: [`assert`](/commands/assert)
|
|
86
|
+
expect: The user is logged in
|
|
87
|
+
async: true
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Best practices
|
|
93
|
+
|
|
94
|
+
- **Minimize AI Matching**: Use AI-powered matching methods only when necessary. For common actions, rely on optimized methods like `turbo`.
|
|
95
|
+
- **Break Down Tests**: Split large, monolithic test files into smaller, focused tests to enable parallel execution.
|
|
96
|
+
- **Leverage Asynchronous Features**: Use `async` properties wherever possible to avoid blocking test execution.
|
|
97
|
+
- **Monitor Performance**: Regularly review test execution times and identify bottlenecks.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Notes
|
|
102
|
+
|
|
103
|
+
- Optimizing performance not only saves time but also reduces resource usage, making your CI/CD pipelines more efficient.
|
|
104
|
+
- For large test suites, combining parallel testing with optimized matching methods can lead to significant time savings.
|
|
105
|
+
- Always balance performance optimizations with test reliability to ensure accurate results.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Managing Secrets"
|
|
3
|
+
sidebarTitle: "Secrets Management"
|
|
4
|
+
description: "Discover how to securely configure and optimize your TestDriver CLI environment for seamless CI/CD workflows."
|
|
5
|
+
icon: "asterisk"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
When using TestDriver to test your application, you may need to securely store and use sensitive information such as usernames, passwords, API keys, or other secrets. Every DevOps platform provides a secure way to manage these secrets, ensuring they aren't exposed in your test files or logs.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Why use secrets?
|
|
15
|
+
|
|
16
|
+
- **Security**: Secrets are encrypted and stored securely in your DevOps platform.
|
|
17
|
+
- **Masking**: TestDriver automatically masks secrets in all test output, including debugging logs.
|
|
18
|
+
- **Reusability**: Secrets can be reused across multiple workflows and test files.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Step 1: Replace hardcoded secrets in test files
|
|
23
|
+
|
|
24
|
+
To securely use secrets in your TestDriver test files, replace hardcoded values with placeholders in the format `${TD_YOUR_SECRET}`. TestDriver will parse and mask any secrets that begin with `TD_`.
|
|
25
|
+
|
|
26
|
+
### Example test file
|
|
27
|
+
|
|
28
|
+
```yaml login.yaml highlight={11, 12, 21, 22}
|
|
29
|
+
version: 6.0.0
|
|
30
|
+
steps:
|
|
31
|
+
- prompt: sign in with username and password
|
|
32
|
+
commands:
|
|
33
|
+
- command: focus-application
|
|
34
|
+
name: Google Chrome
|
|
35
|
+
- command: hover-text
|
|
36
|
+
text: Email or phone
|
|
37
|
+
description: email input field
|
|
38
|
+
action: click
|
|
39
|
+
- command: type
|
|
40
|
+
text: ${TD_USERNAME}
|
|
41
|
+
- command: hover-text
|
|
42
|
+
text: Next
|
|
43
|
+
description: next button after entering email
|
|
44
|
+
action: click
|
|
45
|
+
- command: hover-text
|
|
46
|
+
text: Password
|
|
47
|
+
description: password input field
|
|
48
|
+
action: click
|
|
49
|
+
- command: type
|
|
50
|
+
text: ${TD_PASSWORD}
|
|
51
|
+
- command: hover-text
|
|
52
|
+
text: Log In
|
|
53
|
+
description: log in button
|
|
54
|
+
action: click
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Step 2: Add secrets to DevOps platform
|
|
60
|
+
|
|
61
|
+
In this example we'll use GitHub Actions, but the process is similar for other platforms like GitLab CI/CD, CircleCI, or Jenkins.
|
|
62
|
+
|
|
63
|
+
1. Navigate to your GitHub repository.
|
|
64
|
+
2. Go to **Settings** > **Secrets and variables** > **Actions**.
|
|
65
|
+
3. Click **New repository secret**.
|
|
66
|
+
4. Add your secrets (for example, `TD_USERNAME`, `TD_PASSWORD`, `TD_API_KEY`).
|
|
67
|
+
|
|
68
|
+
For detailed instructions, refer to the [GitHub Docs on using secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Step 3: Supply secrets to TestDriver CLI
|
|
73
|
+
|
|
74
|
+
When running TestDriver tests via the CLI in GitHub Actions, supply your secrets in the `env` section of the workflow step.
|
|
75
|
+
|
|
76
|
+
<Card title="Adding secrets to CI" icon="link" href="/guide/authentication">
|
|
77
|
+
Check out our authentication page to see how to add secrets in your CI
|
|
78
|
+
workflow.
|
|
79
|
+
</Card>
|
|
80
|
+
|
|
81
|
+
## Best practices
|
|
82
|
+
|
|
83
|
+
- **Use Descriptive Names**: Name your secrets clearly (for example, `TD_USERNAME`, `TD_PASSWORD`) to make them easy to identify.
|
|
84
|
+
- **Rotate Secrets Regularly**: Update your secrets periodically to enhance security.
|
|
85
|
+
- **Limit Access**: Only provide access to secrets for workflows and team members that require them.
|
|
86
|
+
|
|
87
|
+
## <Note>To ensure all secrets are masked in logs, use the `TD_` prefix.</Note>
|
|
88
|
+
|
|
89
|
+
## Notes
|
|
90
|
+
|
|
91
|
+
- Secrets are encrypted and only accessible during the workflow run.
|
|
92
|
+
- TestDriver automatically masks secrets in test output to prevent accidental exposure.
|
|
93
|
+
- For additional security, avoid hardcoding sensitive information in your test files or workflows.
|