@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,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Netlify"
|
|
3
|
+
sidebarTitle: "Netlify"
|
|
4
|
+
description: "Integrate TestDriver with Netlify deployments using GitHub Actions."
|
|
5
|
+
icon: "cloud"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This guide explains how to integrate **TestDriver** with **Netlify deployments** using the **GitHub Actions workflow**. By combining these tools, you can automatically test your Netlify preview deployments or production builds to ensure they meet your quality standards before merging or releasing.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Workflow overview
|
|
13
|
+
|
|
14
|
+
1. **Trigger Netlify Deployment**: Use Netlify's GitHub integration to deploy your application on every pull request or push to the main branch.
|
|
15
|
+
2. **Run Tests on the Deployment URL**: Use the TestDriver GitHub Action to test the deployed application using the Netlify deployment URL.
|
|
16
|
+
3. **Report Results**: View test results in the GitHub Actions dashboard or as comments on the pull request.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
1. **Netlify GitHub Integration**: Ensure your repository is connected to Netlify for automatic deployments.
|
|
23
|
+
2. **TestDriver API Key**: Store your API key as a GitHub secret (for example, `TD_API_KEY`).
|
|
24
|
+
3. **Netlify Deployment URL**: Use the `DEPLOY_URL` environment variable provided by Netlify to access the deployment.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## CI/CD workflow
|
|
29
|
+
|
|
30
|
+
Here's a complete workflow to test Netlify deployments with TestDriver CLI (adapt for your CI/CD platform):
|
|
31
|
+
|
|
32
|
+
```yaml .github/workflows/testdriver-netlify.yaml
|
|
33
|
+
name: Test Netlify Deployment with TestDriver
|
|
34
|
+
|
|
35
|
+
on:
|
|
36
|
+
pull_request:
|
|
37
|
+
push:
|
|
38
|
+
branches:
|
|
39
|
+
- main
|
|
40
|
+
workflow_dispatch:
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
test-netlify:
|
|
44
|
+
name: Test Netlify Deployment
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- name: Check out repository
|
|
48
|
+
uses: actions/checkout@v4
|
|
49
|
+
|
|
50
|
+
- name: Wait for Netlify Deployment
|
|
51
|
+
id: netlify
|
|
52
|
+
run: |
|
|
53
|
+
echo "Waiting for Netlify deployment..."
|
|
54
|
+
echo "Deployment URL: $DEPLOY_URL"
|
|
55
|
+
if [ -z "$DEPLOY_URL" ]; then
|
|
56
|
+
echo "Netlify deployment URL not found. Exiting."
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
- name: Run Tests with TestDriver CLI
|
|
61
|
+
run: |
|
|
62
|
+
npx testdriverai@latest run testdriver/test.yaml
|
|
63
|
+
env:
|
|
64
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
65
|
+
DEPLOY_URL: ${{ env.DEPLOY_URL }}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Workflow steps explained
|
|
71
|
+
|
|
72
|
+
### 1. **Wait for Netlify deployment**
|
|
73
|
+
|
|
74
|
+
Netlify automatically sets the `DEPLOY_URL` environment variable for each deployment. This step ensures the deployment URL is available before running tests.
|
|
75
|
+
|
|
76
|
+
```yaml .github/workflows/testdriver-netlify.yaml
|
|
77
|
+
- name: Wait for Netlify Deployment
|
|
78
|
+
id: netlify
|
|
79
|
+
run: |
|
|
80
|
+
echo "Waiting for Netlify deployment..."
|
|
81
|
+
echo "Deployment URL: $DEPLOY_URL"
|
|
82
|
+
if [ -z "$DEPLOY_URL" ]; then
|
|
83
|
+
echo "Netlify deployment URL not found. Exiting."
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### 2. **Run tests with TestDriver CLI**
|
|
91
|
+
|
|
92
|
+
The TestDriver CLI runs tests on the deployed application using the deployment URL.
|
|
93
|
+
|
|
94
|
+
```yaml .github/workflows/testdriver-netlify.yaml
|
|
95
|
+
- name: Run Tests with TestDriver CLI
|
|
96
|
+
run: npx testdriverai@latest run testdriver/test.yaml
|
|
97
|
+
env:
|
|
98
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
99
|
+
DEPLOY_URL: ${{ env.DEPLOY_URL }}
|
|
100
|
+
```
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Vercel"
|
|
3
|
+
sidebarTitle: "Vercel"
|
|
4
|
+
description: "Integrate TestDriver with Vercel deployments using GitHub Actions."
|
|
5
|
+
icon: "triangle"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This guide explains how to integrate **TestDriver** with **Vercel deployments** using the **GitHub Actions workflow**. By combining these tools, you can automatically test your Vercel preview deployments or production builds to ensure they meet your quality standards before merging or releasing.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Workflow overview
|
|
13
|
+
|
|
14
|
+
1. **Trigger Vercel Deployment**: Use Vercel's GitHub integration to deploy your application on every pull request or push to the main branch.
|
|
15
|
+
2. **Run Tests on the Deployment URL**: Use the TestDriver GitHub Action to test the deployed application using the Vercel deployment URL.
|
|
16
|
+
3. **Report Results**: View test results in the GitHub Actions dashboard or as comments on the pull request.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
1. **Vercel GitHub Integration**: Ensure your repository is connected to Vercel for automatic deployments.
|
|
23
|
+
2. **TestDriver API Key**: Store your API key as a GitHub secret (for example, `TD_API_KEY`).
|
|
24
|
+
3. **Vercel Deployment URL**: Use the `VERCEL_URL` environment variable provided by Vercel to access the deployment.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## CI/CD workflow
|
|
29
|
+
|
|
30
|
+
Here's a complete workflow to test Vercel deployments with TestDriver CLI (adapt for your CI/CD platform):
|
|
31
|
+
|
|
32
|
+
```yaml .github/workflows/testdriver-vercel.yaml
|
|
33
|
+
name: Test Vercel Deployment with TestDriver
|
|
34
|
+
|
|
35
|
+
on:
|
|
36
|
+
pull_request:
|
|
37
|
+
push:
|
|
38
|
+
branches:
|
|
39
|
+
- main
|
|
40
|
+
workflow_dispatch:
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
test-vercel:
|
|
44
|
+
name: Test Vercel Deployment
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
steps:
|
|
47
|
+
- name: Check out repository
|
|
48
|
+
uses: actions/checkout@v4
|
|
49
|
+
|
|
50
|
+
- name: Wait for Vercel Deployment
|
|
51
|
+
id: vercel
|
|
52
|
+
uses: amondnet/vercel-action@v20
|
|
53
|
+
with:
|
|
54
|
+
vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
55
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
56
|
+
vercel-args: "--prod" # Optional: Use '--prod' for production builds
|
|
57
|
+
env:
|
|
58
|
+
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
59
|
+
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
60
|
+
|
|
61
|
+
- name: Run Tests with TestDriver CLI
|
|
62
|
+
run: npx testdriverai@latest run testdriver/test.yaml
|
|
63
|
+
env:
|
|
64
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
65
|
+
DEPLOYMENT_URL: ${{ steps.vercel.outputs.url }}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Workflow steps explained
|
|
71
|
+
|
|
72
|
+
### 1. **Wait for Vercel deployment**
|
|
73
|
+
|
|
74
|
+
The `amondnet/vercel-action` waits for the Vercel deployment to complete and retrieves the deployment URL. This URL is stored in the `steps.vercel.outputs.url` variable.
|
|
75
|
+
|
|
76
|
+
```yaml .github/workflows/testdriver-vercel.yaml
|
|
77
|
+
- name: Wait for Vercel Deployment
|
|
78
|
+
id: vercel
|
|
79
|
+
uses: amondnet/vercel-action@v20
|
|
80
|
+
with:
|
|
81
|
+
vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
|
82
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
83
|
+
vercel-args: "--prod"
|
|
84
|
+
env:
|
|
85
|
+
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
86
|
+
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### 2. **Run tests with TestDriver CLI**
|
|
92
|
+
|
|
93
|
+
The TestDriver CLI runs tests on the deployed application using the deployment URL.
|
|
94
|
+
|
|
95
|
+
```yaml .github/workflows/testdriver-vercel.yaml
|
|
96
|
+
- name: Run Tests with TestDriver CLI
|
|
97
|
+
run: npx testdriverai@latest run testdriver/test.yaml
|
|
98
|
+
env:
|
|
99
|
+
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
100
|
+
DEPLOYMENT_URL: ${{ steps.vercel.outputs.url }}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Secrets configuration
|
|
106
|
+
|
|
107
|
+
Add the following secrets to your GitHub repository:
|
|
108
|
+
|
|
109
|
+
1. **`TD_API_KEY`**: Your TestDriver API key.
|
|
110
|
+
2. **`VERCEL_TOKEN`**: Your Vercel API token.
|
|
111
|
+
3. **`VERCEL_ORG_ID`**: Your Vercel organization ID.
|
|
112
|
+
4. **`VERCEL_PROJECT_ID`**: Your Vercel project ID.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Benefits of this workflow
|
|
117
|
+
|
|
118
|
+
1. **Automated Deployment Testing**: Automatically test every Vercel deployment, including preview and production builds.
|
|
119
|
+
2. **Early Issue Detection**: Catch issues in pull requests before merging.
|
|
120
|
+
3. **Detailed Feedback**: View test results directly in the GitHub Actions dashboard.
|
|
121
|
+
4. **Seamless Integration**: Combine Vercel's deployment capabilities with TestDriver's testing power.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
By integrating TestDriver with Vercel deployments, you can ensure that every deployment is thoroughly tested, reducing the risk of bugs reaching production and improving the overall quality of your application.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "/explore"
|
|
3
|
+
sidebarTitle: "/explore"
|
|
4
|
+
description: "Create and execute a test file"
|
|
5
|
+
icon: "play-pause"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
The `/explore` command is used to execute a single step in a test file and add it to a specified file. This command generates and performs steps in an interactive way while creating a test file.
|
|
11
|
+
|
|
12
|
+
<Check>
|
|
13
|
+
`/explore` is the default command sent to TestDriver when no command is
|
|
14
|
+
provided.
|
|
15
|
+
</Check>
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
testdriverai edit <filename.yaml>
|
|
21
|
+
/explore prompt
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Example usage
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
> /explore add an item to the shopping cart
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This command creates the command step(s) necessary to add an item to the shopping cart in the specified test file, executing the generated command(s) after writing them into the test file. If there are intermediate steps to be taken, they're added to the test file as well.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
thinking...
|
|
34
|
+
|
|
35
|
+
To add an item to the shopping cart, we need to identify
|
|
36
|
+
the "Add to Cart" button from the screenshot. However,
|
|
37
|
+
since the screenshot shows a code editor, we need to
|
|
38
|
+
assume the button isn't visible here. Let's proceed with
|
|
39
|
+
a generic approach:
|
|
40
|
+
|
|
41
|
+
commands:
|
|
42
|
+
- command: focus-application
|
|
43
|
+
name: Google Chrome
|
|
44
|
+
- command: hover-text
|
|
45
|
+
text: Add to Cart
|
|
46
|
+
description: add to cart button on the shopping page
|
|
47
|
+
action: click
|
|
48
|
+
|
|
49
|
+
### Explanation:
|
|
50
|
+
|
|
51
|
+
1. Focus Google Chrome: Ensure the browser is active to interact with the shopping page.
|
|
52
|
+
2. Click 'Add to Cart': Use hover-text to find and click the "Add to Cart" button, assuming it's present on the shopping page.
|
|
53
|
+
|
|
54
|
+
command='focus-application' name='Google Chrome'
|
|
55
|
+
command='hover-text' text='Add to Cart' description='add to cart button on the shopping page' action='click'
|
|
56
|
+
|
|
57
|
+
thinking...
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**In this case, the user wasn't logged in, so the AI will 'undo' the steps it thought it should take, and add steps to log in first.**
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
undoing...
|
|
64
|
+
thinking...
|
|
65
|
+
|
|
66
|
+
The screenshot shows a "Sign In" button on the webpage.
|
|
67
|
+
Let's try clicking that instead, as it might be necessary
|
|
68
|
+
before adding items to the cart.
|
|
69
|
+
|
|
70
|
+
commands:
|
|
71
|
+
- command: hover-text
|
|
72
|
+
text: Sign In
|
|
73
|
+
description: sign in button on the webpage
|
|
74
|
+
action: click
|
|
75
|
+
|
|
76
|
+
command='hover-text' text='Sign In' description='sign in button on the webpage' action='click'
|
|
77
|
+
|
|
78
|
+
thinking...
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Behavior
|
|
82
|
+
|
|
83
|
+
- TestDriver will generate an idea to complete the task, try to execute it, and add the steps to the test file.
|
|
84
|
+
- The steps will be executed in the order generated.
|
|
85
|
+
- If the steps are successful, they're added to the test file.
|
|
86
|
+
- If the steps fail, TestDriver will attempt to fall back to AI, undo the last step and provide an explanation of what went wrong. The AI will retry the step with new commands.
|
|
87
|
+
- If the commands are successful, the program will output the results and exit with code `0`.
|
|
88
|
+
- If any failures occur during the test, the program will output the errors and exit with code `1`.
|
|
89
|
+
|
|
90
|
+
## Protips
|
|
91
|
+
|
|
92
|
+
- Use descriptive prompts for higher success with generating test steps with `/explore`.
|
|
93
|
+
- Use `/explore` multiple times in succession to build a comprehensive test file.
|
|
94
|
+
|
|
95
|
+
<Note>The AI will retry 3 times if it can't complete the task.</Note>
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
The `/explore` command is ideal for creating test files in an interactive session.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "/run"
|
|
3
|
+
sidebarTitle: "/run"
|
|
4
|
+
description: "Run a test file from a file."
|
|
5
|
+
icon: "play"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
The `/run` command is used to execute a test file from a specified file. This command performs each step defined in the test file and outputs the results.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx testdriverai@latest edit <filename.yaml>
|
|
16
|
+
/run [other-filename.yaml] # if no path is present it will run the `filename.yaml`
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Example usage
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
testdriverai edit
|
|
23
|
+
> /run helloworld.yaml
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This command runs the `helloworld.yaml` test file, executing each command in the file sequentially.
|
|
27
|
+
|
|
28
|
+
<Warning>
|
|
29
|
+
The `helloworld.yaml` file needs to be present in the present directory. If
|
|
30
|
+
its present outside, need to specify the relative path like
|
|
31
|
+
`../snippets/helloworld.yaml`
|
|
32
|
+
</Warning>
|
|
33
|
+
|
|
34
|
+
## Behavior
|
|
35
|
+
|
|
36
|
+
- TestDriver will execute the test file, performing each command as defined in the file.
|
|
37
|
+
- If the test completes successfully, the program will exit with code `0`.
|
|
38
|
+
- If any failures occur during the test, the program will output the errors and exit with code `1`.
|
|
39
|
+
|
|
40
|
+
## Protips
|
|
41
|
+
|
|
42
|
+
- Ensure the test file path is correct and accessible before running the command.
|
|
43
|
+
- Use descriptive filenames for your test files to make them easier to identify.
|
|
44
|
+
|
|
45
|
+
## Gotchas
|
|
46
|
+
|
|
47
|
+
- Any errors in the test file (for example, invalid commands or missing arguments) will cause the test to fail.
|
|
48
|
+
|
|
49
|
+
## Notes
|
|
50
|
+
|
|
51
|
+
- The `/run` command is ideal for executing pre-created test files in an interactive session.
|
|
52
|
+
- Use this command to validate and debug your test files during development.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "/save"
|
|
3
|
+
sidebarTitle: "/save"
|
|
4
|
+
description: "Save the current test script to a file."
|
|
5
|
+
icon: "floppy-disk"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
The `/save` command saves the current state of the test script to a file. This command generates a YAML file containing the history of executed commands and tasks, allowing you to reuse or modify the test script later.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
/save
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example usage
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
testdriverai edit
|
|
22
|
+
> /save
|
|
23
|
+
|
|
24
|
+
saving...
|
|
25
|
+
|
|
26
|
+
Current test script:
|
|
27
|
+
|
|
28
|
+
version: 6.0.0
|
|
29
|
+
steps:
|
|
30
|
+
- prompt: navigate to fiber.google.com
|
|
31
|
+
commands:
|
|
32
|
+
- command: focus-application
|
|
33
|
+
name: Google Chrome
|
|
34
|
+
- command: hover-text
|
|
35
|
+
text: Search Google or type a URL
|
|
36
|
+
description: main google search
|
|
37
|
+
action: click
|
|
38
|
+
- command: type
|
|
39
|
+
text: fiber.google.com
|
|
40
|
+
- command: press-keys
|
|
41
|
+
keys:
|
|
42
|
+
- enter
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Behavior
|
|
46
|
+
|
|
47
|
+
- The `/save` command generates a YAML file with the current test script, including all executed steps and commands.
|
|
48
|
+
- The file can be used as a reusable test file for future executions.
|
|
49
|
+
|
|
50
|
+
## Protips
|
|
51
|
+
|
|
52
|
+
- Use `/save` frequently during interactive sessions to preserve your progress and avoid losing work.
|
|
53
|
+
- Combine `/save` with `/run` to quickly test and iterate on your scripts.
|
|
54
|
+
|
|
55
|
+
## Gotchas
|
|
56
|
+
|
|
57
|
+
- Ensure you have write permissions in the directory where the file will be saved.
|
|
58
|
+
- The saved script reflects the current state of the session. Any unexecuted commands won't be included.
|
|
59
|
+
|
|
60
|
+
## Notes
|
|
61
|
+
|
|
62
|
+
- The `/save` command is ideal for creating reusable test scripts from interactive sessions.
|
|
63
|
+
- Use this command to document and share your test workflows with your team.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Comparison
|
|
3
|
+
sidebarTitle: "Comparison"
|
|
4
|
+
description: "TestDriver vs Playwright vs Selenium"
|
|
5
|
+
icon: boxing-glove
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Application support
|
|
9
|
+
|
|
10
|
+
TestDriver operates a full desktop environment, so it can run any application.
|
|
11
|
+
|
|
12
|
+
<div className="comparison-table">
|
|
13
|
+
| Application | TestDriver | Playwright | Selenium |
|
|
14
|
+
|:-----------------:|:---------:|:-----------:|:--------:|
|
|
15
|
+
| Web Apps | ✅ | ✅ | ✅ |
|
|
16
|
+
| Mobile Apps | ✅ | ✅ | ✅ |
|
|
17
|
+
| VS Code Plugins | ✅ | | |
|
|
18
|
+
| Desktop Apps | ✅ | | |
|
|
19
|
+
| Chrome Extensions | ✅ | | |
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
## Testing features
|
|
23
|
+
|
|
24
|
+
TestDriver is AI first.
|
|
25
|
+
|
|
26
|
+
<div className="comparison-table">
|
|
27
|
+
| Feature | TestDriver | Playwright | Selenium |
|
|
28
|
+
|:--------------------:|:----------:|:----------:|:--------:|
|
|
29
|
+
| Test Generation | ✅ | | |
|
|
30
|
+
| Adaptive Testing | ✅ | | |
|
|
31
|
+
| Visual Assertions | ✅ | | |
|
|
32
|
+
| Self Healing | ✅ | | |
|
|
33
|
+
| Application Switching| ✅ | | |
|
|
34
|
+
| GitHub Actions | ✅ | ✅ | |
|
|
35
|
+
| Team Dashboard | ✅ | | |
|
|
36
|
+
| Team Collaboration | ✅ | | |
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
## Test coverage
|
|
40
|
+
|
|
41
|
+
TestDriver has more coverage than selector-based frameworks.
|
|
42
|
+
|
|
43
|
+
<div className="comparison-table">
|
|
44
|
+
| Feature | TestDriver | Playwright | Selenium |
|
|
45
|
+
|:------------------:|:----------:|:----------:|:--------:|
|
|
46
|
+
| Browser Viewport | ✅ | ✅ | ✅ |
|
|
47
|
+
| Browser App | ✅ | | |
|
|
48
|
+
| Operating System | ✅ | | |
|
|
49
|
+
| PDFs | ✅ | | |
|
|
50
|
+
| File System | ✅ | | |
|
|
51
|
+
| Push Notifications | ✅ | | |
|
|
52
|
+
| Image Content | ✅ | | |
|
|
53
|
+
| Video Content | ✅ | | |
|
|
54
|
+
| `<iframe>` | ✅ | | |
|
|
55
|
+
| `<canvas>` | ✅ | | |
|
|
56
|
+
| `<video>` | ✅ | | |
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
## Debugging features
|
|
60
|
+
|
|
61
|
+
Debugging features are powered by [Dashcam.io](https://dashcam.io).
|
|
62
|
+
|
|
63
|
+
<div className="comparison-table">
|
|
64
|
+
| Feature | TestDriver | Playwright | Selenium |
|
|
65
|
+
|:--------------------:|:----------:|:----------:|:--------:|
|
|
66
|
+
| AI Summary | ✅ | | |
|
|
67
|
+
| Video Replay | ✅ | ✅ | |
|
|
68
|
+
| Browser Logs | ✅ | ✅ | |
|
|
69
|
+
| Desktop Logs | ✅ | | |
|
|
70
|
+
| Network Requests | ✅ | ✅ | |
|
|
71
|
+
| Team Dashboard | ✅ | | |
|
|
72
|
+
| Team Collaboration | ✅ | | |
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
## Web browser support
|
|
76
|
+
|
|
77
|
+
TestDriver is browser agnostic and supports any version of any browser.
|
|
78
|
+
|
|
79
|
+
<div className="comparison-table">
|
|
80
|
+
| Feature | TestDriver | Playwright | Selenium |
|
|
81
|
+
|:--------:|:----------:|:----------:|:--------:|
|
|
82
|
+
| Chrome | ✅ | ✅ | ✅ |
|
|
83
|
+
| Firefox | ✅ | ✅ | ✅ |
|
|
84
|
+
| Webkit | ✅ | ✅ | ✅ |
|
|
85
|
+
| IE | ✅ | | ✅ |
|
|
86
|
+
| Edge | ✅ | ✅ | ✅ |
|
|
87
|
+
| Opera | ✅ | | ✅ |
|
|
88
|
+
| Safari | ✅ | | ✅ |
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
## Operating system support
|
|
92
|
+
|
|
93
|
+
TestDriver currently supports all the three major operating systems!
|
|
94
|
+
|
|
95
|
+
<div className="comparison-table">
|
|
96
|
+
| Feature | TestDriver | Playwright | Selenium |
|
|
97
|
+
|:--------:|:----------:|:----------:|:--------:|
|
|
98
|
+
| Windows | ✅ | ✅ | ✅ |
|
|
99
|
+
| Mac | ✅ | ✅ | ✅ |
|
|
100
|
+
| Linux | ✅ | ✅ | ✅ |
|
|
101
|
+
</div>
|