@testdriverai/agent 7.8.0-test.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +7 -0
- package/.env.example +4 -0
- package/.prettierignore +4 -0
- package/.prettierrc +1 -0
- package/CHANGELOG.md +953 -0
- package/README.md +81 -0
- package/agent/events.js +135 -0
- package/agent/index.js +2450 -0
- package/agent/interface.js +35 -0
- package/agent/lib/analytics.js +22 -0
- package/agent/lib/censorship.js +75 -0
- package/agent/lib/commander.js +246 -0
- package/agent/lib/commands.js +1684 -0
- package/agent/lib/config.js +60 -0
- package/agent/lib/generator.js +91 -0
- package/agent/lib/http.js +144 -0
- package/agent/lib/logger.js +56 -0
- package/agent/lib/outputs.js +29 -0
- package/agent/lib/parser.js +209 -0
- package/agent/lib/redraw.js +386 -0
- package/agent/lib/resources/cursor-2.png +0 -0
- package/agent/lib/sandbox.js +1104 -0
- package/agent/lib/sdk.js +633 -0
- package/agent/lib/session.js +25 -0
- package/agent/lib/source-mapper.js +342 -0
- package/agent/lib/subimage/index.js +77 -0
- package/agent/lib/subimage/opencv.js +69 -0
- package/agent/lib/system.js +204 -0
- package/agent/lib/theme.js +14 -0
- package/agent/lib/valid-version.js +21 -0
- package/agent/lib/validation.js +169 -0
- package/ai/.claude-plugin/plugin.json +9 -0
- package/ai/agents/testdriver.md +638 -0
- package/ai/skills/testdriver-ai/SKILL.md +204 -0
- package/ai/skills/testdriver-assert/SKILL.md +315 -0
- package/ai/skills/testdriver-aws-setup/SKILL.md +448 -0
- package/ai/skills/testdriver-cache/SKILL.md +221 -0
- package/ai/skills/testdriver-caching/SKILL.md +124 -0
- package/ai/skills/testdriver-captcha/SKILL.md +158 -0
- package/ai/skills/testdriver-ci-cd/SKILL.md +602 -0
- package/ai/skills/testdriver-click/SKILL.md +286 -0
- package/ai/skills/testdriver-client/SKILL.md +477 -0
- package/ai/skills/testdriver-cloud/SKILL.md +119 -0
- package/ai/skills/testdriver-customizing-devices/SKILL.md +319 -0
- package/ai/skills/testdriver-dashcam/SKILL.md +418 -0
- package/ai/skills/testdriver-debugging-with-screenshots/SKILL.md +401 -0
- package/ai/skills/testdriver-device-config/SKILL.md +317 -0
- package/ai/skills/testdriver-double-click/SKILL.md +102 -0
- package/ai/skills/testdriver-elements/SKILL.md +605 -0
- package/ai/skills/testdriver-enterprise/SKILL.md +114 -0
- package/ai/skills/testdriver-errors/SKILL.md +246 -0
- package/ai/skills/testdriver-events/SKILL.md +356 -0
- package/ai/skills/testdriver-examples/SKILL.md +7 -0
- package/ai/skills/testdriver-exec/SKILL.md +317 -0
- package/ai/skills/testdriver-find/SKILL.md +829 -0
- package/ai/skills/testdriver-focus-application/SKILL.md +293 -0
- package/ai/skills/testdriver-generating-tests/SKILL.md +36 -0
- package/ai/skills/testdriver-hover/SKILL.md +278 -0
- package/ai/skills/testdriver-locating-elements/SKILL.md +71 -0
- package/ai/skills/testdriver-making-assertions/SKILL.md +32 -0
- package/ai/skills/testdriver-mcp/SKILL.md +7 -0
- package/ai/skills/testdriver-mcp-workflow/SKILL.md +410 -0
- package/ai/skills/testdriver-mouse-down/SKILL.md +161 -0
- package/ai/skills/testdriver-mouse-up/SKILL.md +164 -0
- package/ai/skills/testdriver-parse/SKILL.md +236 -0
- package/ai/skills/testdriver-performing-actions/SKILL.md +54 -0
- package/ai/skills/testdriver-press-keys/SKILL.md +348 -0
- package/ai/skills/testdriver-provision/SKILL.md +331 -0
- package/ai/skills/testdriver-quickstart/SKILL.md +144 -0
- package/ai/skills/testdriver-redraw/SKILL.md +214 -0
- package/ai/skills/testdriver-reusable-code/SKILL.md +249 -0
- package/ai/skills/testdriver-right-click/SKILL.md +123 -0
- package/ai/skills/testdriver-running-tests/SKILL.md +185 -0
- package/ai/skills/testdriver-screenshot/SKILL.md +248 -0
- package/ai/skills/testdriver-screenshots/SKILL.md +184 -0
- package/ai/skills/testdriver-scroll/SKILL.md +335 -0
- package/ai/skills/testdriver-secrets/SKILL.md +115 -0
- package/ai/skills/testdriver-self-hosted/SKILL.md +65 -0
- package/ai/skills/testdriver-test-writer/SKILL.md +448 -0
- package/ai/skills/testdriver-testdriver/SKILL.md +628 -0
- package/ai/skills/testdriver-testdriver-mechanic/SKILL.md +165 -0
- package/ai/skills/testdriver-type/SKILL.md +357 -0
- package/ai/skills/testdriver-variables/SKILL.md +111 -0
- package/ai/skills/testdriver-wait/SKILL.md +50 -0
- package/ai/skills/testdriver-waiting-for-elements/SKILL.md +90 -0
- package/ai/skills/testdriver-what-is-testdriver/SKILL.md +54 -0
- package/bin/testdriverai.js +22 -0
- package/debugger/bg.png +0 -0
- package/debugger/icon.png +0 -0
- package/debugger/index.html +469 -0
- package/debugger/td.png +0 -0
- package/debugger/tray-buffered.png +0 -0
- package/debugger/tray.png +0 -0
- package/docs/GITHUB_COMMENTS.md +330 -0
- package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +167 -0
- package/docs/QUICK-START-GITHUB-COMMENTS.md +84 -0
- package/docs/TEST-GITHUB-COMMENTS.md +129 -0
- package/docs/_data/examples-manifest.json +177 -0
- package/docs/_data/examples-manifest.schema.json +41 -0
- package/docs/_scripts/extract-example-urls.js +165 -0
- package/docs/_scripts/generate-examples.js +560 -0
- package/docs/_scripts/generate-skills.js +154 -0
- package/docs/_scripts/link-replacer.js +164 -0
- package/docs/_scripts/upload-docs-to-openai.js +284 -0
- package/docs/changelog.mdx +161 -0
- package/docs/claude-mcp-plugin.mdx +160 -0
- package/docs/docs.json +442 -0
- package/docs/github-integration-setup.md +266 -0
- package/docs/guide/best-practices-polling.mdx +174 -0
- package/docs/images/content/account/newprojectsettings.png +0 -0
- package/docs/images/content/account/projectpage.png +0 -0
- package/docs/images/content/account/projectreplays.png +0 -0
- package/docs/images/content/account/team-manage.png +0 -0
- package/docs/images/content/account/teampage.png +0 -0
- package/docs/images/content/extension/cursor.svg +1 -0
- package/docs/images/content/extension/vscode.svg +57 -0
- package/docs/images/content/extension/windsurf.svg +3 -0
- package/docs/images/content/parse/output.png +0 -0
- package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
- package/docs/images/content/side-by-side.png +0 -0
- package/docs/images/content/vscode/ide-full.png +0 -0
- package/docs/images/content/vscode/running.png +0 -0
- package/docs/images/content/vscode/v7-chat.png +0 -0
- package/docs/images/content/vscode/v7-choose-agent.png +0 -0
- package/docs/images/content/vscode/v7-full.png +0 -0
- package/docs/images/content/vscode/v7-onboarding.png +0 -0
- package/docs/images/content/vscode/vscode-2-assert.png +0 -0
- package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
- package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
- package/docs/images/content/vscode/vscode-file-creation.png +0 -0
- package/docs/images/content/vscode/vscode-install.png +0 -0
- package/docs/images/content/vscode/vscode-overview.png +0 -0
- package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
- package/docs/images/content/vscode/vscode-stopchat.png +0 -0
- package/docs/images/content/vscode/vscode-stoptest.png +0 -0
- package/docs/images/content/vscode/vscode-tdservice.png +0 -0
- package/docs/images/content/vscode/vscode-test-output.png +0 -0
- package/docs/images/content/vscode/vscode-testhistory.png +0 -0
- package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
- package/docs/images/content/vscode/vscode-testpane.png +0 -0
- package/docs/images/template/dark.png +0 -0
- package/docs/images/template/icon.png +0 -0
- package/docs/images/template/light.png +0 -0
- package/docs/snippets/calendar-link.mdx +4 -0
- package/docs/snippets/gitignore-warning.mdx +7 -0
- package/docs/snippets/lifecycle-warning.mdx +6 -0
- package/docs/snippets/test-prereqs.mdx +12 -0
- package/docs/snippets/tests/assert-replay.mdx +7 -0
- package/docs/snippets/tests/assert-yaml.mdx +8 -0
- package/docs/snippets/tests/exec-js-replay.mdx +7 -0
- package/docs/snippets/tests/exec-js-yaml.mdx +32 -0
- package/docs/snippets/tests/exec-shell-replay.mdx +7 -0
- package/docs/snippets/tests/exec-shell-yaml.mdx +15 -0
- package/docs/snippets/tests/hover-image-replay.mdx +7 -0
- package/docs/snippets/tests/hover-image-yaml.mdx +17 -0
- package/docs/snippets/tests/hover-text-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-yaml.mdx +24 -0
- package/docs/snippets/tests/hover-text-yaml.mdx +14 -0
- package/docs/snippets/tests/match-image-replay.mdx +7 -0
- package/docs/snippets/tests/match-image-yaml.mdx +17 -0
- package/docs/snippets/tests/press-keys-replay.mdx +7 -0
- package/docs/snippets/tests/press-keys-yaml.mdx +36 -0
- package/docs/snippets/tests/remember-replay.mdx +7 -0
- package/docs/snippets/tests/remember-yaml.mdx +28 -0
- package/docs/snippets/tests/scroll-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-yaml.mdx +14 -0
- package/docs/snippets/tests/scroll-until-text-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-text-yaml.mdx +17 -0
- package/docs/snippets/tests/scroll-yaml.mdx +30 -0
- package/docs/snippets/tests/type-repeated-replay.mdx +7 -0
- package/docs/snippets/tests/type-repeated-yaml.mdx +22 -0
- package/docs/snippets/tests/type-replay.mdx +7 -0
- package/docs/snippets/tests/type-yaml.mdx +28 -0
- package/docs/snippets/tests/wait-for-image-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-image-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-for-text-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-text-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-replay.mdx +7 -0
- package/docs/snippets/tests/wait-yaml.mdx +13 -0
- package/docs/styles.css +65 -0
- package/docs/v6/account/dashboard.mdx +16 -0
- package/docs/v6/account/enterprise.mdx +110 -0
- package/docs/v6/account/pricing.mdx +33 -0
- package/docs/v6/account/projects.mdx +33 -0
- package/docs/v6/account/team.mdx +35 -0
- package/docs/v6/action/ami.mdx +109 -0
- package/docs/v6/action/performance.mdx +105 -0
- package/docs/v6/action/secrets.mdx +93 -0
- package/docs/v6/apps/chrome-extensions.mdx +48 -0
- package/docs/v6/apps/desktop-apps.mdx +93 -0
- package/docs/v6/apps/mobile-apps.mdx +26 -0
- package/docs/v6/apps/static-websites.mdx +54 -0
- package/docs/v6/apps/tauri-apps.mdx +361 -0
- package/docs/v6/bugs/jira.mdx +232 -0
- package/docs/v6/cli/overview.mdx +66 -0
- package/docs/v6/commands/assert.mdx +45 -0
- package/docs/v6/commands/exec.mdx +276 -0
- package/docs/v6/commands/focus-application.mdx +44 -0
- package/docs/v6/commands/hover-image.mdx +69 -0
- package/docs/v6/commands/hover-text.mdx +47 -0
- package/docs/v6/commands/if.mdx +53 -0
- package/docs/v6/commands/match-image.mdx +67 -0
- package/docs/v6/commands/press-keys.mdx +87 -0
- package/docs/v6/commands/remember.mdx +49 -0
- package/docs/v6/commands/run.mdx +44 -0
- package/docs/v6/commands/scroll-until-image.mdx +66 -0
- package/docs/v6/commands/scroll-until-text.mdx +60 -0
- package/docs/v6/commands/scroll.mdx +69 -0
- package/docs/v6/commands/type.mdx +45 -0
- package/docs/v6/commands/wait-for-image.mdx +54 -0
- package/docs/v6/commands/wait-for-text.mdx +48 -0
- package/docs/v6/commands/wait.mdx +45 -0
- package/docs/v6/exporting/junit.mdx +218 -0
- package/docs/v6/exporting/playwright.mdx +197 -0
- package/docs/v6/features/auto-healing.mdx +144 -0
- package/docs/v6/features/generation.mdx +116 -0
- package/docs/v6/features/parallel-testing.mdx +151 -0
- package/docs/v6/features/reusable-snippets.mdx +131 -0
- package/docs/v6/features/selectorless.mdx +80 -0
- package/docs/v6/features/visual-assertions.mdx +139 -0
- package/docs/v6/getting-started/ci.mdx +146 -0
- package/docs/v6/getting-started/cli.mdx +91 -0
- package/docs/v6/getting-started/editing.mdx +100 -0
- package/docs/v6/getting-started/playwright.mdx +342 -0
- package/docs/v6/getting-started/running.mdx +48 -0
- package/docs/v6/getting-started/self-hosting.mdx +408 -0
- package/docs/v6/getting-started/vscode.mdx +88 -0
- package/docs/v6/guide/assertions.mdx +189 -0
- package/docs/v6/guide/authentication.mdx +136 -0
- package/docs/v6/guide/code.mdx +65 -0
- package/docs/v6/guide/dashcam.mdx +118 -0
- package/docs/v6/guide/environment-variables.mdx +26 -0
- package/docs/v6/guide/lifecycle.mdx +242 -0
- package/docs/v6/guide/locating.mdx +141 -0
- package/docs/v6/guide/protips.mdx +43 -0
- package/docs/v6/guide/variables.mdx +143 -0
- package/docs/v6/guide/waiting.mdx +130 -0
- package/docs/v6/importing/csv.mdx +196 -0
- package/docs/v6/importing/gherkin.mdx +143 -0
- package/docs/v6/importing/jira.mdx +164 -0
- package/docs/v6/importing/testrail.mdx +162 -0
- package/docs/v6/integrations/electron.mdx +146 -0
- package/docs/v6/integrations/netlify.mdx +100 -0
- package/docs/v6/integrations/vercel.mdx +125 -0
- package/docs/v6/interactive/explore.mdx +99 -0
- package/docs/v6/interactive/run.mdx +52 -0
- package/docs/v6/interactive/save.mdx +63 -0
- package/docs/v6/overview/comparison.mdx +101 -0
- package/docs/v6/overview/faq.mdx +162 -0
- package/docs/v6/overview/performance.mdx +52 -0
- package/docs/v6/overview/quickstart.mdx +137 -0
- package/docs/v6/overview/what-is-testdriver.mdx +85 -0
- package/docs/v6/scenarios/ai-chatbot.mdx +28 -0
- package/docs/v6/scenarios/cookie-banner.mdx +32 -0
- package/docs/v6/scenarios/file-upload.mdx +33 -0
- package/docs/v6/scenarios/form-filling.mdx +32 -0
- package/docs/v6/scenarios/log-in.mdx +75 -0
- package/docs/v6/scenarios/pdf-generation.mdx +25 -0
- package/docs/v6/scenarios/spell-check.mdx +22 -0
- package/docs/v6/security/action.mdx +84 -0
- package/docs/v6/security/agent.mdx +73 -0
- package/docs/v6/security/platform.mdx +77 -0
- package/docs/v6/tutorials/advanced-test.mdx +81 -0
- package/docs/v6/tutorials/basic-test.mdx +45 -0
- package/docs/v7/_drafts/agents.mdx +843 -0
- package/docs/v7/_drafts/architecture.mdx +399 -0
- package/docs/v7/_drafts/auto-cache-key.mdx +167 -0
- package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +100 -0
- package/docs/v7/_drafts/best-practices.mdx +486 -0
- package/docs/v7/_drafts/caching-ai.mdx +215 -0
- package/docs/v7/_drafts/caching-selectors.mdx +424 -0
- package/docs/v7/_drafts/caching.mdx +366 -0
- package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
- package/docs/v7/_drafts/commands/assert.mdx +45 -0
- package/docs/v7/_drafts/commands/exec.mdx +276 -0
- package/docs/v7/_drafts/commands/focus-application.mdx +44 -0
- package/docs/v7/_drafts/commands/hover-image.mdx +69 -0
- package/docs/v7/_drafts/commands/hover-text.mdx +47 -0
- package/docs/v7/_drafts/commands/if.mdx +53 -0
- package/docs/v7/_drafts/commands/match-image.mdx +67 -0
- package/docs/v7/_drafts/commands/press-keys.mdx +87 -0
- package/docs/v7/_drafts/commands/remember.mdx +49 -0
- package/docs/v7/_drafts/commands/run.mdx +44 -0
- package/docs/v7/_drafts/commands/scroll-until-image.mdx +66 -0
- package/docs/v7/_drafts/commands/scroll-until-text.mdx +60 -0
- package/docs/v7/_drafts/commands/scroll.mdx +69 -0
- package/docs/v7/_drafts/commands/type.mdx +45 -0
- package/docs/v7/_drafts/commands/wait-for-image.mdx +54 -0
- package/docs/v7/_drafts/commands/wait-for-text.mdx +48 -0
- package/docs/v7/_drafts/commands/wait.mdx +45 -0
- package/docs/v7/_drafts/configuration.mdx +378 -0
- package/docs/v7/_drafts/contributing.mdx +174 -0
- package/docs/v7/_drafts/core.mdx +458 -0
- package/docs/v7/_drafts/dashcam-title-feature.mdx +89 -0
- package/docs/v7/_drafts/debugging.mdx +349 -0
- package/docs/v7/_drafts/error-handling.mdx +501 -0
- package/docs/v7/_drafts/faq.mdx +393 -0
- package/docs/v7/_drafts/hooks.mdx +360 -0
- package/docs/v7/_drafts/init-command.mdx +95 -0
- package/docs/v7/_drafts/installation.mdx +420 -0
- package/docs/v7/_drafts/migration.mdx +562 -0
- package/docs/v7/_drafts/observable.mdx +604 -0
- package/docs/v7/_drafts/playwright.mdx +342 -0
- package/docs/v7/_drafts/plugin-migration.mdx +220 -0
- package/docs/v7/_drafts/powerful.mdx +419 -0
- package/docs/v7/_drafts/presets.mdx +210 -0
- package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
- package/docs/v7/_drafts/prompt-cache.mdx +200 -0
- package/docs/v7/_drafts/provision.mdx +390 -0
- package/docs/v7/_drafts/quick-start-test-recording.mdx +214 -0
- package/docs/v7/_drafts/readme.mdx +135 -0
- package/docs/v7/_drafts/reports.mdx +414 -0
- package/docs/v7/_drafts/scalable.mdx +763 -0
- package/docs/v7/_drafts/screenshot.mdx +155 -0
- package/docs/v7/_drafts/sdk-awesome-logs.mdx +468 -0
- package/docs/v7/_drafts/sdk-browser-rendering.mdx +167 -0
- package/docs/v7/_drafts/sdk-migration.mdx +474 -0
- package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
- package/docs/v7/_drafts/self-hosting.mdx +369 -0
- package/docs/v7/_drafts/test-recording.mdx +382 -0
- package/docs/v7/_drafts/troubleshooting.mdx +526 -0
- package/docs/v7/_drafts/vitest-plugin.mdx +477 -0
- package/docs/v7/_drafts/vitest.mdx +535 -0
- package/docs/v7/_drafts/writing-tests.mdx +25 -0
- package/docs/v7/ai.mdx +205 -0
- package/docs/v7/assert.mdx +316 -0
- package/docs/v7/aws-setup.mdx +449 -0
- package/docs/v7/cache.mdx +223 -0
- package/docs/v7/caching.mdx +128 -0
- package/docs/v7/captcha.mdx +159 -0
- package/docs/v7/ci-cd.mdx +603 -0
- package/docs/v7/click.mdx +287 -0
- package/docs/v7/client.mdx +478 -0
- package/docs/v7/copilot/auto-healing.mdx +265 -0
- package/docs/v7/copilot/creating-tests.mdx +156 -0
- package/docs/v7/copilot/github.mdx +143 -0
- package/docs/v7/copilot/running-tests.mdx +149 -0
- package/docs/v7/copilot/setup.mdx +143 -0
- package/docs/v7/customizing-devices.mdx +319 -0
- package/docs/v7/dashcam.mdx +419 -0
- package/docs/v7/debugging-with-screenshots.mdx +402 -0
- package/docs/v7/device-config.mdx +317 -0
- package/docs/v7/double-click.mdx +102 -0
- package/docs/v7/elements.mdx +606 -0
- package/docs/v7/enterprise.mdx +9 -0
- package/docs/v7/errors.mdx +248 -0
- package/docs/v7/events.mdx +358 -0
- package/docs/v7/examples/ai.mdx +72 -0
- package/docs/v7/examples/assert.mdx +72 -0
- package/docs/v7/examples/captcha-api.mdx +92 -0
- package/docs/v7/examples/chrome-extension.mdx +132 -0
- package/docs/v7/examples/drag-and-drop.mdx +100 -0
- package/docs/v7/examples/element-not-found.mdx +67 -0
- package/docs/v7/examples/exec-output.mdx +85 -0
- package/docs/v7/examples/exec-pwsh.mdx +83 -0
- package/docs/v7/examples/focus-window.mdx +62 -0
- package/docs/v7/examples/hover-image.mdx +94 -0
- package/docs/v7/examples/hover-text.mdx +69 -0
- package/docs/v7/examples/installer.mdx +91 -0
- package/docs/v7/examples/launch-vscode-linux.mdx +101 -0
- package/docs/v7/examples/match-image.mdx +96 -0
- package/docs/v7/examples/press-keys.mdx +92 -0
- package/docs/v7/examples/scroll-keyboard.mdx +79 -0
- package/docs/v7/examples/scroll-until-image.mdx +81 -0
- package/docs/v7/examples/scroll-until-text.mdx +109 -0
- package/docs/v7/examples/scroll.mdx +81 -0
- package/docs/v7/examples/type.mdx +92 -0
- package/docs/v7/examples/windows-installer.mdx +89 -0
- package/docs/v7/exec.mdx +318 -0
- package/docs/v7/find.mdx +830 -0
- package/docs/v7/focus-application.mdx +294 -0
- package/docs/v7/generating-tests.mdx +36 -0
- package/docs/v7/hosted.mdx +158 -0
- package/docs/v7/hover.mdx +279 -0
- package/docs/v7/locating-elements.mdx +71 -0
- package/docs/v7/making-assertions.mdx +32 -0
- package/docs/v7/mcp.mdx +9 -0
- package/docs/v7/mouse-down.mdx +161 -0
- package/docs/v7/mouse-up.mdx +164 -0
- package/docs/v7/parse.mdx +237 -0
- package/docs/v7/performing-actions.mdx +54 -0
- package/docs/v7/press-keys.mdx +349 -0
- package/docs/v7/provision.mdx +333 -0
- package/docs/v7/quickstart.mdx +173 -0
- package/docs/v7/redraw.mdx +216 -0
- package/docs/v7/reusable-code.mdx +249 -0
- package/docs/v7/right-click.mdx +123 -0
- package/docs/v7/running-tests.mdx +185 -0
- package/docs/v7/screenshot.mdx +249 -0
- package/docs/v7/screenshots.mdx +186 -0
- package/docs/v7/scroll.mdx +336 -0
- package/docs/v7/secrets.mdx +115 -0
- package/docs/v7/self-hosted.mdx +149 -0
- package/docs/v7/type.mdx +358 -0
- package/docs/v7/variables.mdx +111 -0
- package/docs/v7/wait.mdx +52 -0
- package/docs/v7/waiting-for-elements.mdx +90 -0
- package/docs/v7/what-is-testdriver.mdx +54 -0
- package/eslint.config.js +67 -0
- package/examples/ai.test.mjs +31 -0
- package/examples/assert.test.mjs +47 -0
- package/examples/chrome-extension.test.mjs +97 -0
- package/examples/config.mjs +5 -0
- package/examples/element-not-found.test.mjs +27 -0
- package/examples/exec-output.test.mjs +60 -0
- package/examples/exec-pwsh.test.mjs +58 -0
- package/examples/findall-coffee-icons.test.mjs +42 -0
- package/examples/focus-window.test.mjs +37 -0
- package/examples/formatted-logging.test.mjs +27 -0
- package/examples/hover-image.test.mjs +53 -0
- package/examples/hover-text-with-description.test.mjs +57 -0
- package/examples/hover-text.test.mjs +28 -0
- package/examples/installer.test.mjs +50 -0
- package/examples/launch-vscode-linux.test.mjs +55 -0
- package/examples/match-image.test.mjs +55 -0
- package/examples/parse.test.mjs +19 -0
- package/examples/press-keys.test.mjs +44 -0
- package/examples/prompt.test.mjs +34 -0
- package/examples/scroll-keyboard.test.mjs +38 -0
- package/examples/scroll-until-image.test.mjs +40 -0
- package/examples/scroll.test.mjs +42 -0
- package/examples/type.test.mjs +46 -0
- package/examples/windows-installer.test.mjs +54 -0
- package/index.js +2 -0
- package/interfaces/cli/commands/init.js +438 -0
- package/interfaces/cli/commands/setup.js +382 -0
- package/interfaces/cli/lib/base.js +285 -0
- package/interfaces/cli.js +20 -0
- package/interfaces/junit-reporter.js +290 -0
- package/interfaces/logger.js +388 -0
- package/interfaces/readline.js +234 -0
- package/interfaces/shared-test-state.mjs +64 -0
- package/interfaces/vitest-plugin.d.ts +115 -0
- package/interfaces/vitest-plugin.mjs +1698 -0
- package/lib/captcha/solver.js +358 -0
- package/lib/core/Dashcam.js +533 -0
- package/lib/core/index.d.ts +172 -0
- package/lib/core/index.js +12 -0
- package/lib/environments.json +18 -0
- package/lib/github-comment-formatter.js +263 -0
- package/lib/github-comment.mjs +452 -0
- package/lib/init-project.js +575 -0
- package/lib/presets/index.mjs +331 -0
- package/lib/resolve-channel.js +46 -0
- package/lib/sentry.js +417 -0
- package/lib/vitest/hooks.d.ts +57 -0
- package/lib/vitest/hooks.mjs +674 -0
- package/lib/vitest/setup-aws.mjs +247 -0
- package/lib/vitest/setup-self-hosted.mjs +151 -0
- package/lib/vitest/setup.mjs +46 -0
- package/manual/captcha-api.test.mjs +51 -0
- package/manual/drag-and-drop.test.mjs +59 -0
- package/manual/flake-diffthreshold-001.test.mjs +9 -0
- package/manual/flake-diffthreshold-01.test.mjs +9 -0
- package/manual/flake-diffthreshold-05.test.mjs +9 -0
- package/manual/flake-noredraw-cache.test.mjs +9 -0
- package/manual/flake-noredraw-nocache.test.mjs +9 -0
- package/manual/flake-redraw-cache.test.mjs +9 -0
- package/manual/flake-redraw-nocache.test.mjs +9 -0
- package/manual/flake-rocket-match.test.mjs +30 -0
- package/manual/flake-shared.mjs +51 -0
- package/manual/no-provision.test.mjs +31 -0
- package/manual/packer-hover-image.test.mjs +176 -0
- package/manual/scroll-until-text.test.mjs +68 -0
- package/manual/test-init-command.js +223 -0
- package/mcp-server/README.md +322 -0
- package/mcp-server/dist/codegen.d.ts +9 -0
- package/mcp-server/dist/codegen.js +165 -0
- package/mcp-server/dist/mcp-app.html +114 -0
- package/mcp-server/dist/package.json +1 -0
- package/mcp-server/dist/provision-types.d.ts +290 -0
- package/mcp-server/dist/provision-types.js +174 -0
- package/mcp-server/dist/server.d.ts +6 -0
- package/mcp-server/dist/server.mjs +1925 -0
- package/mcp-server/dist/session.d.ts +85 -0
- package/mcp-server/dist/session.js +152 -0
- package/mcp-server/mcp-app.html +28 -0
- package/mcp-server/mcp-config.example.json +19 -0
- package/mcp-server/package-lock.json +4027 -0
- package/mcp-server/package.json +31 -0
- package/mcp-server/src/codegen.ts +189 -0
- package/mcp-server/src/mcp-app.css +360 -0
- package/mcp-server/src/mcp-app.ts +547 -0
- package/mcp-server/src/provision-types.ts +209 -0
- package/mcp-server/src/server.ts +2391 -0
- package/mcp-server/src/session.ts +194 -0
- package/mcp-server/tsconfig.json +16 -0
- package/mcp-server/vite.config.ts +23 -0
- package/package.json +158 -0
- package/schema.json +1046 -0
- package/scripts/generate-skills.js +94 -0
- package/sdk-log-formatter.js +1157 -0
- package/sdk.d.ts +1486 -0
- package/sdk.js +4336 -0
- package/setup/aws/cloudformation.yaml +463 -0
- package/setup/aws/disable-defender.sh +42 -0
- package/setup/aws/install-dev-runner.sh +79 -0
- package/setup/aws/spawn-runner.sh +289 -0
- package/test/captcha-solver.test.mjs +152 -0
- package/test/chrome-remote-debugging.test.mjs +66 -0
- package/test/duckduckgo/experiment.test.mjs +28 -0
- package/test/duckduckgo/setup.test.mjs +29 -0
- package/test/manual/debug-locate-response.js +82 -0
- package/test/manual/reconnect-provision.test.mjs +49 -0
- package/test/manual/test-console-logs.test.mjs +42 -0
- package/test/manual/test-find-api.js +73 -0
- package/test/manual/test-init.sh +54 -0
- package/test/manual/test-prompt-cache.js +97 -0
- package/test/manual/test-provision-auth.mjs +22 -0
- package/test/manual/test-sandbox-render.js +29 -0
- package/test/manual/test-sdk-methods.js +15 -0
- package/test/manual/test-sdk-refactor.js +53 -0
- package/test/manual/test-stack-trace.mjs +57 -0
- package/test/manual/verify-element-api.js +89 -0
- package/test/manual/verify-types.js +0 -0
- package/test/manual-unawaited-promise.test.mjs +31 -0
- package/vitest.config.mjs +58 -0
- package/vitest.runner.config.mjs +33 -0
- package/vscode-extension/.vscodeignore +12 -0
- package/vscode-extension/README.md +94 -0
- package/vscode-extension/media/icon.png +0 -0
- package/vscode-extension/package-lock.json +4126 -0
- package/vscode-extension/package.json +86 -0
- package/vscode-extension/src/extension.ts +829 -0
- package/vscode-extension/testdriverai-0.1.0.vsix +0 -0
- package/vscode-extension/tsconfig.json +16 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Spell Check"
|
|
3
|
+
sidebarTitle: "Spell Check"
|
|
4
|
+
description: "Test spell check functionality with TestDriver"
|
|
5
|
+
icon: "spell-check"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
import TestPrereqs from "/snippets/test-prereqs.mdx";
|
|
9
|
+
|
|
10
|
+
# Testing Spell Check with TestDriver
|
|
11
|
+
|
|
12
|
+
This scenario demonstrates how to automate testing the spell check functionality of a web application using TestDriver's capabilities. The test will check if the spell checker correctly identifies and suggests corrections for misspelled words in a text input field.
|
|
13
|
+
|
|
14
|
+
<TestPrereqs />
|
|
15
|
+
|
|
16
|
+
## Scenario overview
|
|
17
|
+
|
|
18
|
+
1. Open up a webpage that has text input and a spell check function.
|
|
19
|
+
2. Enter a misspelled word into the text input field.
|
|
20
|
+
3. Trigger the spell check function (for example, by clicking a button or losing focus on the input field).
|
|
21
|
+
4. Verify that the spell checker identifies the misspelled word and provides suggestions for correction.
|
|
22
|
+
5. Optionally, select a suggestion and apply it to the text input field.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Security Features of the TestDriver Action"
|
|
3
|
+
sidebarTitle: "GitHub Action"
|
|
4
|
+
description: "Understand the ephemeral VM runners, secrets handling, and environment-specific security for the TestDriver Action."
|
|
5
|
+
icon: shield-check
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
import GitignoreWarning from "/snippets/gitignore-warning.mdx";
|
|
9
|
+
|
|
10
|
+
## Open source
|
|
11
|
+
|
|
12
|
+
TestDriver CLI is open source, and its source code is available for review. You can find the repository here:
|
|
13
|
+
|
|
14
|
+
<Card horizontal="true" icon="github">
|
|
15
|
+
{" "}
|
|
16
|
+
[GitHub - testdriverai/cli](https://github.com/testdriverai/cli){" "}
|
|
17
|
+
</Card>
|
|
18
|
+
|
|
19
|
+
## Ephemeral virtual machine runners
|
|
20
|
+
|
|
21
|
+
TestDriver tests are executed on private virtual machines (VMs) managed by Amazon EC2. These VMs are ephemeral, meaning they only exist for the duration of the test execution. Once the test is complete:
|
|
22
|
+
|
|
23
|
+
- The VM is destroyed.
|
|
24
|
+
- The hard disk is wiped to ensure no residual data remains.
|
|
25
|
+
|
|
26
|
+
## Secrets
|
|
27
|
+
|
|
28
|
+
To securely manage private information, we recommend storing sensitive data as secrets in your GitHub repository. Learn more about [storing secrets in GitHub](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
|
|
29
|
+
|
|
30
|
+
### Handling secrets
|
|
31
|
+
|
|
32
|
+
- **Prerun Scripts**: Any secrets supplied within prerun scripts or prompts are transmitted over SSL to the TestDriver API. Prerun scripts are **not persisted**.
|
|
33
|
+
- **Agent Prompts**: Secrets supplied to agent prompts are persisted (see [Agent Security](/security/agent)).
|
|
34
|
+
- **Secure Workflows**: If your workflow requires secret sharing and you encounter issues, please contact us for assistance.
|
|
35
|
+
|
|
36
|
+
### Common use case
|
|
37
|
+
|
|
38
|
+
A common workflow involves using prerun scripts to securely access a private staging website via basic authentication. This allows you to log into staging environments without persisting sensitive data on TestDriver servers.
|
|
39
|
+
|
|
40
|
+
## Environment-specific security
|
|
41
|
+
|
|
42
|
+
<GitignoreeWarning />
|
|
43
|
+
|
|
44
|
+
### Production
|
|
45
|
+
|
|
46
|
+
Testing production environments is the simplest and most secure starting point.
|
|
47
|
+
|
|
48
|
+
- Production testing doesn't require any private information from your team.
|
|
49
|
+
- Simply provide the tests to TestDriver and point them toward publicly available endpoints.
|
|
50
|
+
- TestDriver doesn't need access to any private or sensitive information for production testing.
|
|
51
|
+
|
|
52
|
+
### Staging
|
|
53
|
+
|
|
54
|
+
Testing staging environments may require secure information, such as credentials or tokens.
|
|
55
|
+
|
|
56
|
+
- Use GitHub secrets to securely store and manage this information.
|
|
57
|
+
- Refer to the **Secrets** section above for guidance on securely implementing tests for staging environments.
|
|
58
|
+
|
|
59
|
+
### Development
|
|
60
|
+
|
|
61
|
+
TestDriver can clone feature branches and build code on its virtual machines using workflows similar to GitHub Actions.
|
|
62
|
+
|
|
63
|
+
#### GitHub token for development
|
|
64
|
+
|
|
65
|
+
To test development branches of private codebases, you must supply a GitHub personal access token within the GitHub Action. This token is used to:
|
|
66
|
+
|
|
67
|
+
- Clone the codebase onto the VM.
|
|
68
|
+
- Build and test the code in an isolated environment.
|
|
69
|
+
|
|
70
|
+
Example configuration:
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
env:
|
|
74
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- The token is transmitted over SSL and is **not persisted**.
|
|
78
|
+
- Learn more about managing the privacy of GitHub access tokens [here](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
|
|
79
|
+
|
|
80
|
+
## Notes
|
|
81
|
+
|
|
82
|
+
- TestDriver's ephemeral VMs ensure that no data persists beyond the test execution.
|
|
83
|
+
- For maximum security, always use GitHub secrets to manage sensitive information.
|
|
84
|
+
- If you have specific security concerns or requirements, feel free to contact us for support.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Security Features of the TestDriver Agent"
|
|
3
|
+
sidebarTitle: "TestDriver Agent "
|
|
4
|
+
description: "Explore the data collected, persistence, and privacy practices of the TestDriver Agent."
|
|
5
|
+
icon: lock-keyhole
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Source
|
|
9
|
+
|
|
10
|
+
The TestDriver Agent is open-source and available on NPM. You can browse the source code to see all the data collected and understand how everything works.
|
|
11
|
+
|
|
12
|
+
## API
|
|
13
|
+
|
|
14
|
+
The TestDriver Agent doesn't contain any AI models within it. Instead, it uploads desktop context to the TestDriver API, which uses that context to make decisions about what actions to perform.
|
|
15
|
+
|
|
16
|
+
The TestDriver API leverages OpenAI models behind the scenes. For more information about OpenAI and its privacy practices, visit their [privacy center](https://openai.com/privacy).
|
|
17
|
+
|
|
18
|
+
## Desktop context collected
|
|
19
|
+
|
|
20
|
+
During execution, the TestDriver Agent uploads the following information to the API:
|
|
21
|
+
|
|
22
|
+
- **User Input Prompts**: The commands and prompts you provide to TestDriver.
|
|
23
|
+
- **Active Window and Other Windows**: Information about the active window and other open windows, including application and window titles.
|
|
24
|
+
- **System Information**: Details about the computer system running TestDriver.
|
|
25
|
+
- **Mouse Position**: The current position of the mouse pointer.
|
|
26
|
+
- **Desktop Screenshots**: Screenshots of the primary display.
|
|
27
|
+
|
|
28
|
+
### Data persistence
|
|
29
|
+
|
|
30
|
+
- **Desktop Context**: All collected desktop context, except for screenshots, is persisted in the TestDriver database.
|
|
31
|
+
- **Desktop Screenshots**: Screenshots are uploaded to the server for processing but aren't stored in the database.
|
|
32
|
+
|
|
33
|
+
### Desktop screenshots
|
|
34
|
+
|
|
35
|
+
TestDriver frequently captures screenshots of the desktop to provide the AI with decision-making context. These screenshots are uploaded to the API but aren't persisted in the database.
|
|
36
|
+
|
|
37
|
+
- **Primary Display Only**: Screenshots are limited to the primary display.
|
|
38
|
+
- **Privacy Recommendation**: For complete privacy, it's recommended to run TestDriver within a virtual machine on your desktop.
|
|
39
|
+
|
|
40
|
+
**Important**: TestDriver can't operate without visual context. don't install TestDriver if you are uncomfortable with capturing images of the desktop.
|
|
41
|
+
|
|
42
|
+
## Collected data details
|
|
43
|
+
|
|
44
|
+
### Active window
|
|
45
|
+
|
|
46
|
+
Information about the open windows on the desktop is reported using the `active-window` module. This includes details such as the application name and window titles.
|
|
47
|
+
|
|
48
|
+
### System information
|
|
49
|
+
|
|
50
|
+
System details, such as operating system, CPU, and memory, are reported using the `systeminformation` module.
|
|
51
|
+
|
|
52
|
+
### User prompts
|
|
53
|
+
|
|
54
|
+
The prompts you input into TestDriver are uploaded to the API and stored in a database. This data is used to provide the AI with a history of context for better decision-making.
|
|
55
|
+
|
|
56
|
+
## Additional analytics
|
|
57
|
+
|
|
58
|
+
When running `testdriver init`, you will be asked if you would like to share additional analytics. Sharing usage analytics is **opt-in**, and no extra data will be collected unless explicitly enabled.
|
|
59
|
+
|
|
60
|
+
To disable additional analytics, set the `TD_ANALYTICS` environment variable to `false`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
TD_ANALYTICS=false
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Rate limiting and restrictions
|
|
67
|
+
|
|
68
|
+
While the TestDriver Agent is free to use, TestDriver reserves the right to rate limit or restrict usage by IP address for any reason.
|
|
69
|
+
|
|
70
|
+
## Notes
|
|
71
|
+
|
|
72
|
+
- The TestDriver Agent is essential for providing the AI with the necessary context to operate effectively.
|
|
73
|
+
- For privacy-conscious users, running TestDriver in a virtual machine is recommended to limit exposure of sensitive desktop information.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Security Features of the Dashboard"
|
|
3
|
+
sidebarTitle: "TestDriver Platform"
|
|
4
|
+
description: "Learn about the security features of the TestDriver web dashboard, including SSL, OAuth, RBAC, and more."
|
|
5
|
+
icon: layer-group
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
import GitignoreWarning from "/snippets/gitignore-warning.mdx";
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
The TestDriver web dashboard provides a secure interface for managing and reviewing your tests. Tests executed via the GitHub Action are recorded and reported through Dashcam, another application developed by TestDriver. For more details, refer to the [Dashcam documentation](https://dashcam.docs.testdriver.ai).
|
|
13
|
+
|
|
14
|
+
Dashcam and TestDriver share the same API and web application back end, which includes robust privacy and security features.
|
|
15
|
+
|
|
16
|
+
## Security features
|
|
17
|
+
|
|
18
|
+
### SSL
|
|
19
|
+
|
|
20
|
+
- All data transmitted between your browser and the TestDriver web application is encrypted using HTTPS.
|
|
21
|
+
|
|
22
|
+
### Authentication
|
|
23
|
+
|
|
24
|
+
- Users can only authenticate via OAuth, provided by Auth0, ensuring secure and reliable user authentication.
|
|
25
|
+
|
|
26
|
+
### Team management
|
|
27
|
+
|
|
28
|
+
- Administrators can add or remove individual team members.
|
|
29
|
+
- Only administrators have the ability to manage team settings.
|
|
30
|
+
- Everyone in the team gets their own API key
|
|
31
|
+
- The team also gets a shared API key which can be used for CI/CD workflows.
|
|
32
|
+
|
|
33
|
+
### Role-based access control (RBAC)
|
|
34
|
+
|
|
35
|
+
- The first user to create a team is designated as the administrator.
|
|
36
|
+
- Administrators:
|
|
37
|
+
- Can manage team settings.
|
|
38
|
+
- Can't be removed from the team.
|
|
39
|
+
- All other users are normal members with limited access.
|
|
40
|
+
|
|
41
|
+
### API key rotation
|
|
42
|
+
|
|
43
|
+
- Teams can rotate their API key for enhanced security.
|
|
44
|
+
- It's recommended to rotate the API key every 90 days to minimize risk.
|
|
45
|
+
- Only the administrators can rotate the shared API key.
|
|
46
|
+
|
|
47
|
+
<Check>
|
|
48
|
+
For more details on **Team Management** see the [Team
|
|
49
|
+
documentation](/account/team).
|
|
50
|
+
</Check>
|
|
51
|
+
|
|
52
|
+
<GitignoreWarning />
|
|
53
|
+
|
|
54
|
+
### Secret masking
|
|
55
|
+
|
|
56
|
+
- Test replay logs and network requests are automatically scanned for sensitive information, such as:
|
|
57
|
+
- Credit card numbers
|
|
58
|
+
- Emails
|
|
59
|
+
- Passwords
|
|
60
|
+
- API keys
|
|
61
|
+
- Detected secrets are masked with asterisks (`****`) to prevent exposure.
|
|
62
|
+
|
|
63
|
+
### Encrypted at rest
|
|
64
|
+
|
|
65
|
+
- Test replays and logs are securely stored on Amazon S3 and encrypted at rest.
|
|
66
|
+
- Test results are only accessible via temporary signed URLs.
|
|
67
|
+
- Signed URLs are generated exclusively for team users and expire after a set duration.
|
|
68
|
+
|
|
69
|
+
## Notes
|
|
70
|
+
|
|
71
|
+
- The TestDriver web dashboard is designed with privacy and security as top priorities.
|
|
72
|
+
- For additional security, ensure your team rotates API keys regularly and reviews team member access permissions.
|
|
73
|
+
- If you have specific security concerns or questions, please contact TestDriver support.
|
|
74
|
+
|
|
75
|
+
<Tip>
|
|
76
|
+
See complete docs about the dashboard features [here](/account/dashboard)
|
|
77
|
+
</Tip>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Tutorial: Advanced test"
|
|
3
|
+
description: "Explore advanced testing techniques and features in TestDriver."
|
|
4
|
+
sidebarTitle: "Advanced test"
|
|
5
|
+
icon: "flask-round"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Advanced test tutorial
|
|
9
|
+
|
|
10
|
+
Welcome to the Advanced Test Tutorial. In this guide, we will explore advanced testing techniques and features available in TestDriver. This tutorial assumes you have a basic understanding of TestDriver and its functionalities.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Before starting, ensure you have completed the basic TestDriver tutorial and have the following:
|
|
15
|
+
|
|
16
|
+
- TestDriver installed and configured.
|
|
17
|
+
- A sample project to test.
|
|
18
|
+
|
|
19
|
+
## Advanced features overview
|
|
20
|
+
|
|
21
|
+
TestDriver provides several advanced features to enhance your testing capabilities:
|
|
22
|
+
|
|
23
|
+
1. **Custom Assertions**: Create custom assertions to validate specific conditions.
|
|
24
|
+
2. **Parameterized Tests**: Run tests with different sets of input data.
|
|
25
|
+
3. **Test Hooks**: Use hooks to execute code before or after tests.
|
|
26
|
+
4. **Parallel Execution**: Speed up testing by running tests in parallel.
|
|
27
|
+
|
|
28
|
+
## Step-by-step guide
|
|
29
|
+
|
|
30
|
+
### Step 1: Setting up custom assertions
|
|
31
|
+
|
|
32
|
+
Custom assertions allow you to define specific conditions for your tests. Here's an example:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
def assert_custom_condition(value):
|
|
36
|
+
assert value > 0, "Value must be greater than 0"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 2: Using parameterized tests
|
|
40
|
+
|
|
41
|
+
Parameterized tests enable you to test multiple scenarios with different inputs. Example:
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
import pytest
|
|
45
|
+
|
|
46
|
+
@pytest.mark.parametrize("input,expected", [(1, True), (0, False)])
|
|
47
|
+
def test_is_positive(input, expected):
|
|
48
|
+
assert (input > 0) == expected
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 3: Implementing test hooks
|
|
52
|
+
|
|
53
|
+
Test hooks let you execute code before or after tests. Example:
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
def setup_function():
|
|
57
|
+
print("Setting up test environment")
|
|
58
|
+
|
|
59
|
+
def teardown_function():
|
|
60
|
+
print("Cleaning up test environment")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Step 4: Running tests in parallel
|
|
64
|
+
|
|
65
|
+
Parallel execution can be achieved using pytest-xdist. Install it with:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pip install pytest-xdist
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Run tests in parallel using:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pytest -n 4
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Conclusion
|
|
78
|
+
|
|
79
|
+
By leveraging these advanced features, you can create more robust and efficient tests for your projects. Experiment with these techniques to find the best fit for your testing needs.
|
|
80
|
+
|
|
81
|
+
Happy testing!
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Tutorial: Basic Test"
|
|
3
|
+
description: "Learn how to create and run a basic test using TestDriver."
|
|
4
|
+
sidebarTitle: "Basic Test"
|
|
5
|
+
icon: "test-tube"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Basic test tutorial
|
|
9
|
+
|
|
10
|
+
This tutorial will guide you through the process of creating and running a basic test using TestDriver.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
Before you begin, ensure you have the following:
|
|
15
|
+
|
|
16
|
+
- TestDriver installed on your system.
|
|
17
|
+
- Basic understanding of how TestDriver works.
|
|
18
|
+
|
|
19
|
+
## Step 1: Create a test
|
|
20
|
+
|
|
21
|
+
To create a test, follow these steps:
|
|
22
|
+
|
|
23
|
+
1. Open your code editor.
|
|
24
|
+
2. Write the test script using TestDriver's syntax.
|
|
25
|
+
3. Save the test script with a `.yaml` extension.
|
|
26
|
+
|
|
27
|
+
Example:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Step 2: Run the test
|
|
34
|
+
|
|
35
|
+
To run the test, use the following command:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx testdriverai@latest run example-test.yaml
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This will execute the test and display the results in the console.
|
|
42
|
+
|
|
43
|
+
## Conclusion
|
|
44
|
+
|
|
45
|
+
You have successfully created and run a basic test using TestDriver. Explore more advanced features to enhance your testing capabilities.
|