testdriverai 7.2.64 → 7.2.65
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/agent/index.js +4 -3
- package/agent/interface.js +11 -251
- package/agent/lib/debugger-server.js +2 -1
- package/agent/lib/logger.js +56 -0
- package/agent/lib/sandbox.js +6 -7
- package/ai/agents/test-writer.md +457 -0
- package/{docs/v7/ai.mdx → ai/skills/testdriver:ai/SKILL.md} +3 -5
- package/{docs/v7/assert.mdx → ai/skills/testdriver:assert/SKILL.md} +3 -4
- package/{docs/v7/aws-setup.mdx → ai/skills/testdriver:aws-setup/SKILL.md} +3 -4
- package/{docs/v7/caching.mdx → ai/skills/testdriver:caching/SKILL.md} +3 -7
- package/{docs/v7/captcha.mdx → ai/skills/testdriver:captcha/SKILL.md} +4 -5
- package/{docs/v7/ci-cd.mdx → ai/skills/testdriver:ci-cd/SKILL.md} +3 -4
- package/{docs/v7/click.mdx → ai/skills/testdriver:click/SKILL.md} +3 -4
- package/{docs/v7/client.mdx → ai/skills/testdriver:client/SKILL.md} +11 -5
- package/{docs/v7/cloud.mdx → ai/skills/testdriver:cloud/SKILL.md} +3 -4
- package/{docs/v7/customizing-devices.mdx → ai/skills/testdriver:customizing-devices/SKILL.md} +36 -26
- package/{docs/v7/dashcam.mdx → ai/skills/testdriver:dashcam/SKILL.md} +3 -4
- package/{docs/v7/device-config.mdx → ai/skills/testdriver:device-config/SKILL.md} +3 -3
- package/{docs/v7/double-click.mdx → ai/skills/testdriver:double-click/SKILL.md} +3 -3
- package/{docs/v7/elements.mdx → ai/skills/testdriver:elements/SKILL.md} +3 -4
- package/{docs/v7/enterprise.mdx → ai/skills/testdriver:enterprise/SKILL.md} +3 -5
- package/ai/skills/testdriver:examples/SKILL.md +7 -0
- package/{docs/v7/exec.mdx → ai/skills/testdriver:exec/SKILL.md} +3 -4
- package/{docs/v7/find.mdx → ai/skills/testdriver:find/SKILL.md} +81 -4
- package/{docs/v7/focus-application.mdx → ai/skills/testdriver:focus-application/SKILL.md} +3 -4
- package/{docs/v7/generating-tests.mdx → ai/skills/testdriver:generating-tests/SKILL.md} +3 -3
- package/{docs/v7/hover.mdx → ai/skills/testdriver:hover/SKILL.md} +3 -4
- package/{docs/v7/locating-elements.mdx → ai/skills/testdriver:locating-elements/SKILL.md} +3 -3
- package/{docs/v7/making-assertions.mdx → ai/skills/testdriver:making-assertions/SKILL.md} +3 -3
- package/ai/skills/testdriver:mcp-workflow/SKILL.md +410 -0
- package/{docs/v7/mouse-down.mdx → ai/skills/testdriver:mouse-down/SKILL.md} +3 -3
- package/{docs/v7/mouse-up.mdx → ai/skills/testdriver:mouse-up/SKILL.md} +3 -3
- package/{docs/v7/performing-actions.mdx → ai/skills/testdriver:performing-actions/SKILL.md} +3 -3
- package/{docs/v7/press-keys.mdx → ai/skills/testdriver:press-keys/SKILL.md} +3 -4
- package/{docs/v7/quickstart.mdx → ai/skills/testdriver:quickstart/SKILL.md} +3 -4
- package/{docs/v7/reusable-code.mdx → ai/skills/testdriver:reusable-code/SKILL.md} +3 -3
- package/{docs/v7/right-click.mdx → ai/skills/testdriver:right-click/SKILL.md} +3 -3
- package/{docs/v7/running-tests.mdx → ai/skills/testdriver:running-tests/SKILL.md} +3 -3
- package/{docs/v7/screenshot.mdx → ai/skills/testdriver:screenshot/SKILL.md} +3 -4
- package/{docs/v7/scroll.mdx → ai/skills/testdriver:scroll/SKILL.md} +3 -4
- package/{docs/v7/secrets.mdx → ai/skills/testdriver:secrets/SKILL.md} +3 -3
- package/{docs/v7/self-hosted.mdx → ai/skills/testdriver:self-hosted/SKILL.md} +3 -4
- package/ai/skills/testdriver:testdriver/SKILL.md +31 -0
- package/{docs/v7/type.mdx → ai/skills/testdriver:type/SKILL.md} +3 -4
- package/{docs/v7/variables.mdx → ai/skills/testdriver:variables/SKILL.md} +3 -3
- package/{docs/v7/waiting-for-elements.mdx → ai/skills/testdriver:waiting-for-elements/SKILL.md} +3 -3
- package/{docs/v7/what-is-testdriver.mdx → ai/skills/testdriver:what-is-testdriver/SKILL.md} +3 -3
- package/interfaces/cli/commands/init.js +278 -1
- package/interfaces/cli/commands/setup.js +382 -0
- package/interfaces/vitest-plugin.mjs +190 -122
- package/lib/sentry.js +4 -3
- package/lib/vitest/hooks.mjs +70 -16
- package/package.json +29 -9
- package/sdk.d.ts +29 -2
- package/sdk.js +1 -0
- package/.env.example +0 -4
- package/.github/workflows/acceptance-linux-scheduled.yaml +0 -45
- package/.github/workflows/acceptance-windows-scheduled.yaml +0 -54
- package/.github/workflows/acceptance.yaml +0 -87
- package/.github/workflows/publish.yaml +0 -68
- package/.github/workflows/test-init.yml +0 -145
- package/.github/workflows/testdriver.yml +0 -170
- package/.github/workflows/windows-self-hosted.yaml +0 -82
- package/.prettierignore +0 -4
- package/.prettierrc +0 -1
- package/CHANGELOG.md +0 -34
- package/agents.md +0 -455
- package/debugger/bg.png +0 -0
- package/debugger/icon.png +0 -0
- package/debugger/index.html +0 -797
- package/debugger/td.png +0 -0
- package/debugger/tray-buffered.png +0 -0
- package/debugger/tray.png +0 -0
- package/docs/GITHUB_COMMENTS.md +0 -330
- package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +0 -167
- package/docs/QUICK-START-GITHUB-COMMENTS.md +0 -84
- package/docs/TEST-GITHUB-COMMENTS.md +0 -129
- package/docs/_scripts/link-replacer.js +0 -164
- package/docs/_scripts/upload-docs-to-openai.js +0 -284
- package/docs/docs.json +0 -393
- package/docs/github-integration-setup.md +0 -266
- package/docs/guide/best-practices-polling.mdx +0 -154
- 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 +0 -1
- package/docs/images/content/extension/vscode.svg +0 -57
- package/docs/images/content/extension/windsurf.svg +0 -3
- 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/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 +0 -4
- package/docs/snippets/gitignore-warning.mdx +0 -7
- package/docs/snippets/lifecycle-warning.mdx +0 -6
- package/docs/snippets/test-prereqs.mdx +0 -12
- package/docs/snippets/tests/assert-replay.mdx +0 -7
- package/docs/snippets/tests/assert-yaml.mdx +0 -8
- package/docs/snippets/tests/exec-js-replay.mdx +0 -7
- package/docs/snippets/tests/exec-js-yaml.mdx +0 -32
- package/docs/snippets/tests/exec-shell-replay.mdx +0 -7
- package/docs/snippets/tests/exec-shell-yaml.mdx +0 -15
- package/docs/snippets/tests/hover-image-replay.mdx +0 -7
- package/docs/snippets/tests/hover-image-yaml.mdx +0 -17
- package/docs/snippets/tests/hover-text-replay.mdx +0 -7
- package/docs/snippets/tests/hover-text-with-description-replay.mdx +0 -7
- package/docs/snippets/tests/hover-text-with-description-yaml.mdx +0 -24
- package/docs/snippets/tests/hover-text-yaml.mdx +0 -14
- package/docs/snippets/tests/match-image-replay.mdx +0 -7
- package/docs/snippets/tests/match-image-yaml.mdx +0 -17
- package/docs/snippets/tests/press-keys-replay.mdx +0 -7
- package/docs/snippets/tests/press-keys-yaml.mdx +0 -36
- package/docs/snippets/tests/remember-replay.mdx +0 -7
- package/docs/snippets/tests/remember-yaml.mdx +0 -28
- package/docs/snippets/tests/scroll-replay.mdx +0 -7
- package/docs/snippets/tests/scroll-until-image-replay.mdx +0 -7
- package/docs/snippets/tests/scroll-until-image-yaml.mdx +0 -14
- package/docs/snippets/tests/scroll-until-text-replay.mdx +0 -7
- package/docs/snippets/tests/scroll-until-text-yaml.mdx +0 -17
- package/docs/snippets/tests/scroll-yaml.mdx +0 -30
- package/docs/snippets/tests/type-repeated-replay.mdx +0 -7
- package/docs/snippets/tests/type-repeated-yaml.mdx +0 -22
- package/docs/snippets/tests/type-replay.mdx +0 -7
- package/docs/snippets/tests/type-yaml.mdx +0 -28
- package/docs/snippets/tests/wait-for-image-replay.mdx +0 -7
- package/docs/snippets/tests/wait-for-image-yaml.mdx +0 -18
- package/docs/snippets/tests/wait-for-text-replay.mdx +0 -7
- package/docs/snippets/tests/wait-for-text-yaml.mdx +0 -18
- package/docs/snippets/tests/wait-replay.mdx +0 -7
- package/docs/snippets/tests/wait-yaml.mdx +0 -13
- package/docs/styles.css +0 -65
- package/docs/v6/account/dashboard.mdx +0 -16
- package/docs/v6/account/enterprise.mdx +0 -110
- package/docs/v6/account/pricing.mdx +0 -33
- package/docs/v6/account/projects.mdx +0 -33
- package/docs/v6/account/team.mdx +0 -35
- package/docs/v6/action/ami.mdx +0 -109
- package/docs/v6/action/performance.mdx +0 -105
- package/docs/v6/action/secrets.mdx +0 -93
- package/docs/v6/apps/chrome-extensions.mdx +0 -48
- package/docs/v6/apps/desktop-apps.mdx +0 -93
- package/docs/v6/apps/mobile-apps.mdx +0 -26
- package/docs/v6/apps/static-websites.mdx +0 -54
- package/docs/v6/apps/tauri-apps.mdx +0 -361
- package/docs/v6/bugs/jira.mdx +0 -232
- package/docs/v6/cli/overview.mdx +0 -66
- package/docs/v6/commands/assert.mdx +0 -45
- package/docs/v6/commands/exec.mdx +0 -282
- package/docs/v6/commands/focus-application.mdx +0 -44
- package/docs/v6/commands/hover-image.mdx +0 -69
- package/docs/v6/commands/hover-text.mdx +0 -47
- package/docs/v6/commands/if.mdx +0 -53
- package/docs/v6/commands/match-image.mdx +0 -67
- package/docs/v6/commands/press-keys.mdx +0 -87
- package/docs/v6/commands/remember.mdx +0 -49
- package/docs/v6/commands/run.mdx +0 -44
- package/docs/v6/commands/scroll-until-image.mdx +0 -66
- package/docs/v6/commands/scroll-until-text.mdx +0 -60
- package/docs/v6/commands/scroll.mdx +0 -69
- package/docs/v6/commands/type.mdx +0 -45
- package/docs/v6/commands/wait-for-image.mdx +0 -54
- package/docs/v6/commands/wait-for-text.mdx +0 -48
- package/docs/v6/commands/wait.mdx +0 -45
- package/docs/v6/exporting/junit.mdx +0 -218
- package/docs/v6/exporting/playwright.mdx +0 -197
- package/docs/v6/features/auto-healing.mdx +0 -144
- package/docs/v6/features/generation.mdx +0 -116
- package/docs/v6/features/parallel-testing.mdx +0 -151
- package/docs/v6/features/reusable-snippets.mdx +0 -131
- package/docs/v6/features/selectorless.mdx +0 -80
- package/docs/v6/features/visual-assertions.mdx +0 -139
- package/docs/v6/getting-started/ci.mdx +0 -146
- package/docs/v6/getting-started/cli.mdx +0 -91
- package/docs/v6/getting-started/editing.mdx +0 -100
- package/docs/v6/getting-started/playwright.mdx +0 -342
- package/docs/v6/getting-started/running.mdx +0 -48
- package/docs/v6/getting-started/self-hosting.mdx +0 -408
- package/docs/v6/getting-started/vscode.mdx +0 -89
- package/docs/v6/guide/assertions.mdx +0 -189
- package/docs/v6/guide/authentication.mdx +0 -136
- package/docs/v6/guide/code.mdx +0 -65
- package/docs/v6/guide/dashcam.mdx +0 -118
- package/docs/v6/guide/environment-variables.mdx +0 -26
- package/docs/v6/guide/lifecycle.mdx +0 -242
- package/docs/v6/guide/locating.mdx +0 -141
- package/docs/v6/guide/protips.mdx +0 -43
- package/docs/v6/guide/variables.mdx +0 -143
- package/docs/v6/guide/waiting.mdx +0 -130
- package/docs/v6/importing/csv.mdx +0 -196
- package/docs/v6/importing/gherkin.mdx +0 -143
- package/docs/v6/importing/jira.mdx +0 -164
- package/docs/v6/importing/testrail.mdx +0 -162
- package/docs/v6/integrations/electron.mdx +0 -146
- package/docs/v6/integrations/netlify.mdx +0 -100
- package/docs/v6/integrations/vercel.mdx +0 -125
- package/docs/v6/interactive/explore.mdx +0 -99
- package/docs/v6/interactive/run.mdx +0 -52
- package/docs/v6/interactive/save.mdx +0 -63
- package/docs/v6/overview/comparison.mdx +0 -101
- package/docs/v6/overview/faq.mdx +0 -162
- package/docs/v6/overview/performance.mdx +0 -52
- package/docs/v6/overview/quickstart.mdx +0 -137
- package/docs/v6/overview/what-is-testdriver.mdx +0 -85
- package/docs/v6/scenarios/ai-chatbot.mdx +0 -28
- package/docs/v6/scenarios/cookie-banner.mdx +0 -32
- package/docs/v6/scenarios/file-upload.mdx +0 -33
- package/docs/v6/scenarios/form-filling.mdx +0 -32
- package/docs/v6/scenarios/log-in.mdx +0 -75
- package/docs/v6/scenarios/pdf-generation.mdx +0 -25
- package/docs/v6/scenarios/spell-check.mdx +0 -22
- package/docs/v6/security/action.mdx +0 -84
- package/docs/v6/security/agent.mdx +0 -73
- package/docs/v6/security/platform.mdx +0 -77
- package/docs/v6/tutorials/advanced-test.mdx +0 -81
- package/docs/v6/tutorials/basic-test.mdx +0 -45
- package/docs/v7/_drafts/agents.mdx +0 -852
- package/docs/v7/_drafts/architecture.mdx +0 -399
- package/docs/v7/_drafts/auto-cache-key.mdx +0 -167
- package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +0 -100
- package/docs/v7/_drafts/best-practices.mdx +0 -486
- package/docs/v7/_drafts/caching-ai.mdx +0 -215
- package/docs/v7/_drafts/caching-selectors.mdx +0 -424
- package/docs/v7/_drafts/caching.mdx +0 -366
- package/docs/v7/_drafts/cli-to-sdk-migration.mdx +0 -425
- package/docs/v7/_drafts/commands/assert.mdx +0 -45
- package/docs/v7/_drafts/commands/exec.mdx +0 -282
- package/docs/v7/_drafts/commands/focus-application.mdx +0 -44
- package/docs/v7/_drafts/commands/hover-image.mdx +0 -69
- package/docs/v7/_drafts/commands/hover-text.mdx +0 -47
- package/docs/v7/_drafts/commands/if.mdx +0 -53
- package/docs/v7/_drafts/commands/match-image.mdx +0 -67
- package/docs/v7/_drafts/commands/press-keys.mdx +0 -87
- package/docs/v7/_drafts/commands/remember.mdx +0 -49
- package/docs/v7/_drafts/commands/run.mdx +0 -44
- package/docs/v7/_drafts/commands/scroll-until-image.mdx +0 -66
- package/docs/v7/_drafts/commands/scroll-until-text.mdx +0 -60
- package/docs/v7/_drafts/commands/scroll.mdx +0 -69
- package/docs/v7/_drafts/commands/type.mdx +0 -45
- package/docs/v7/_drafts/commands/wait-for-image.mdx +0 -54
- package/docs/v7/_drafts/commands/wait-for-text.mdx +0 -48
- package/docs/v7/_drafts/commands/wait.mdx +0 -45
- package/docs/v7/_drafts/configuration.mdx +0 -378
- package/docs/v7/_drafts/contributing.mdx +0 -174
- package/docs/v7/_drafts/core.mdx +0 -458
- package/docs/v7/_drafts/dashcam-title-feature.mdx +0 -89
- package/docs/v7/_drafts/debugging.mdx +0 -349
- package/docs/v7/_drafts/error-handling.mdx +0 -501
- package/docs/v7/_drafts/faq.mdx +0 -393
- package/docs/v7/_drafts/hooks.mdx +0 -360
- package/docs/v7/_drafts/init-command.mdx +0 -95
- package/docs/v7/_drafts/installation.mdx +0 -420
- package/docs/v7/_drafts/migration.mdx +0 -562
- package/docs/v7/_drafts/observable.mdx +0 -604
- package/docs/v7/_drafts/playwright.mdx +0 -342
- package/docs/v7/_drafts/plugin-migration.mdx +0 -220
- package/docs/v7/_drafts/powerful.mdx +0 -419
- package/docs/v7/_drafts/presets.mdx +0 -210
- package/docs/v7/_drafts/progressive-disclosure.mdx +0 -230
- package/docs/v7/_drafts/prompt-cache.mdx +0 -200
- package/docs/v7/_drafts/provision.mdx +0 -390
- package/docs/v7/_drafts/quick-start-test-recording.mdx +0 -214
- package/docs/v7/_drafts/readme.mdx +0 -135
- package/docs/v7/_drafts/reports.mdx +0 -414
- package/docs/v7/_drafts/scalable.mdx +0 -754
- package/docs/v7/_drafts/screenshot.mdx +0 -155
- package/docs/v7/_drafts/sdk-awesome-logs.mdx +0 -468
- package/docs/v7/_drafts/sdk-browser-rendering.mdx +0 -167
- package/docs/v7/_drafts/sdk-migration.mdx +0 -474
- package/docs/v7/_drafts/sdk-v7-complete.mdx +0 -345
- package/docs/v7/_drafts/self-hosting.mdx +0 -369
- package/docs/v7/_drafts/test-recording.mdx +0 -382
- package/docs/v7/_drafts/troubleshooting.mdx +0 -526
- package/docs/v7/_drafts/vitest-plugin.mdx +0 -477
- package/docs/v7/_drafts/vitest.mdx +0 -535
- package/docs/v7/_drafts/writing-tests.mdx +0 -25
- package/docs/v7/examples.mdx +0 -5
- package/eslint.config.js +0 -67
- package/examples/ai.test.mjs +0 -30
- package/examples/assert.test.mjs +0 -46
- package/examples/captcha-api.test.mjs +0 -50
- package/examples/chrome-extension.test.mjs +0 -94
- package/examples/drag-and-drop.test.mjs +0 -58
- package/examples/element-not-found.test.mjs +0 -26
- package/examples/exec-output.test.mjs +0 -59
- package/examples/exec-pwsh.test.mjs +0 -57
- package/examples/focus-window.test.mjs +0 -36
- package/examples/formatted-logging.test.mjs +0 -26
- package/examples/hover-image.test.mjs +0 -52
- package/examples/hover-text-with-description.test.mjs +0 -56
- package/examples/hover-text.test.mjs +0 -27
- package/examples/installer.test.mjs +0 -49
- package/examples/launch-vscode-linux.test.mjs +0 -54
- package/examples/match-image.test.mjs +0 -54
- package/examples/no-provision.test.mjs +0 -23
- package/examples/press-keys.test.mjs +0 -50
- package/examples/prompt.test.mjs +0 -33
- package/examples/scroll-keyboard.test.mjs +0 -37
- package/examples/scroll-until-image.test.mjs +0 -39
- package/examples/scroll-until-text.test.mjs +0 -67
- package/examples/scroll.test.mjs +0 -41
- package/examples/type.test.mjs +0 -45
- package/examples/windows-installer.test.mjs +0 -53
- package/interfaces/cli/commands/edit.js +0 -3
- package/interfaces/cli/commands/generate.js +0 -3
- package/interfaces/cli/commands/run.js +0 -3
- package/interfaces/cli/utils/factory.js +0 -71
- package/jsconfig.json +0 -26
- package/manual/test-init-command.js +0 -223
- package/sdk-log-formatter.js +0 -930
- package/setup/aws/cloudformation.yaml +0 -470
- package/setup/aws/spawn-runner.sh +0 -190
- package/test/api-resilience.test.mjs +0 -0
- package/test/captcha-solver.test.mjs +0 -70
- package/test/chrome-remote-debugging.test.mjs +0 -66
- package/test/manual/debug-locate-response.js +0 -82
- package/test/manual/reconnect-provision.test.mjs +0 -49
- package/test/manual/test-console-logs.test.mjs +0 -42
- package/test/manual/test-find-api.js +0 -73
- package/test/manual/test-init.sh +0 -54
- package/test/manual/test-prompt-cache.js +0 -96
- package/test/manual/test-provision-auth.mjs +0 -22
- package/test/manual/test-sandbox-render.js +0 -28
- package/test/manual/test-sdk-methods.js +0 -15
- package/test/manual/test-sdk-refactor.js +0 -53
- package/test/manual/test-stack-trace.mjs +0 -57
- package/test/manual/verify-element-api.js +0 -89
- package/test/manual/verify-types.js +0 -0
- package/test/manual-unawaited-promise.test.mjs +0 -31
- package/testdriver-plugin/skills/actions/SKILL.md +0 -93
- package/testdriver-plugin/skills/assertions/SKILL.md +0 -77
- package/testdriver-plugin/skills/caching/SKILL.md +0 -66
- package/testdriver-plugin/skills/creating-tests/SKILL.md +0 -104
- package/testdriver-plugin/skills/finding-elements/SKILL.md +0 -77
- package/testdriver-plugin/skills/github-actions/SKILL.md +0 -100
- package/testdriver-plugin/skills/running-tests/SKILL.md +0 -77
- package/testdriver-plugin/skills/secrets/SKILL.md +0 -87
- package/testdriver-plugin/skills/self-hosting/SKILL.md +0 -89
- package/testdriver-plugin/skills/setup/SKILL.md +0 -76
- package/testdriver-plugin/skills/variables/SKILL.md +0 -88
- package/testdriver-plugin/skills/waiting/SKILL.md +0 -72
- package/vitest.config.mjs +0 -29
package/lib/sentry.js
CHANGED
|
@@ -14,6 +14,7 @@ const Sentry = require("@sentry/node");
|
|
|
14
14
|
const crypto = require("crypto");
|
|
15
15
|
const os = require("os");
|
|
16
16
|
const { version } = require("../package.json");
|
|
17
|
+
const logger = require("../agent/lib/logger");
|
|
17
18
|
|
|
18
19
|
// Store the current session's trace context
|
|
19
20
|
let currentTraceId = null;
|
|
@@ -31,7 +32,7 @@ const isEnabled = () => {
|
|
|
31
32
|
};
|
|
32
33
|
|
|
33
34
|
if (isEnabled()) {
|
|
34
|
-
|
|
35
|
+
logger.log("Analytics enabled. Set TD_TELEMETRY=false to disable.");
|
|
35
36
|
Sentry.init({
|
|
36
37
|
dsn:
|
|
37
38
|
process.env.SENTRY_DSN ||
|
|
@@ -174,7 +175,7 @@ function setSessionTraceContext(sessionId) {
|
|
|
174
175
|
}
|
|
175
176
|
} catch (e) {
|
|
176
177
|
// Ignore errors - propagation context may not be supported
|
|
177
|
-
|
|
178
|
+
logger.log("Could not set propagation context:", e.message);
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
181
|
|
|
@@ -203,7 +204,7 @@ function attachLogListeners(emitter) {
|
|
|
203
204
|
|
|
204
205
|
// Check if Sentry.logger is available
|
|
205
206
|
if (!Sentry.logger) {
|
|
206
|
-
|
|
207
|
+
logger.log("Sentry.logger not available, skipping log listeners");
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
209
210
|
|
package/lib/vitest/hooks.mjs
CHANGED
|
@@ -248,6 +248,7 @@ export function TestDriver(context, options = {}) {
|
|
|
248
248
|
|
|
249
249
|
const testdriver = new TestDriverSDK(apiKey, config);
|
|
250
250
|
testdriver.__vitestContext = context.task;
|
|
251
|
+
testdriver._debugOnFailure = mergedOptions.debugOnFailure || false;
|
|
251
252
|
testDriverInstances.set(context.task, testdriver);
|
|
252
253
|
|
|
253
254
|
// Set platform metadata early so the reporter can show the correct OS from the start
|
|
@@ -298,29 +299,29 @@ export function TestDriver(context, options = {}) {
|
|
|
298
299
|
);
|
|
299
300
|
}
|
|
300
301
|
|
|
301
|
-
//
|
|
302
|
-
|
|
302
|
+
// Only set up dashcam-related infrastructure if enabled (default: true)
|
|
303
|
+
if (testdriver.dashcamEnabled) {
|
|
304
|
+
// Set up console spy for dashcam visibility
|
|
305
|
+
setupConsoleSpy(testdriver, context.task.id);
|
|
303
306
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
307
|
+
// Create the log file on the remote machine
|
|
308
|
+
const shell = testdriver.os === "windows" ? "pwsh" : "sh";
|
|
309
|
+
const logPath =
|
|
310
|
+
testdriver.os === "windows"
|
|
311
|
+
? "C:\\Users\\testdriver\\Documents\\testdriver.log"
|
|
312
|
+
: "/tmp/testdriver.log";
|
|
310
313
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
314
|
+
const createLogCmd =
|
|
315
|
+
testdriver.os === "windows"
|
|
316
|
+
? `New-Item -ItemType File -Path "${logPath}" -Force | Out-Null`
|
|
317
|
+
: `touch ${logPath}`;
|
|
315
318
|
|
|
316
|
-
|
|
319
|
+
await testdriver.exec(shell, createLogCmd, 10000, true);
|
|
317
320
|
|
|
318
|
-
// Only set up dashcam if enabled (default: true)
|
|
319
|
-
if (testdriver.dashcamEnabled) {
|
|
320
321
|
// Add testdriver log to dashcam tracking
|
|
321
322
|
await testdriver.dashcam.addFileLog(logPath, "TestDriver Log");
|
|
322
323
|
|
|
323
|
-
// Start dashcam recording
|
|
324
|
+
// Start dashcam recording
|
|
324
325
|
await testdriver.dashcam.start();
|
|
325
326
|
}
|
|
326
327
|
})();
|
|
@@ -335,6 +336,59 @@ export function TestDriver(context, options = {}) {
|
|
|
335
336
|
return; // Already cleaned up
|
|
336
337
|
}
|
|
337
338
|
|
|
339
|
+
// Check if debug-on-failure mode is enabled and test failed
|
|
340
|
+
const debugOnFailure = currentInstance._debugOnFailure;
|
|
341
|
+
const testFailed = context.task.result?.state === "fail";
|
|
342
|
+
|
|
343
|
+
if (debugOnFailure && testFailed) {
|
|
344
|
+
// Get sandbox ID before we skip cleanup
|
|
345
|
+
const instance = currentInstance.getInstance?.();
|
|
346
|
+
const sandboxId = instance?.sandboxId || instance?.instanceId;
|
|
347
|
+
|
|
348
|
+
console.log("");
|
|
349
|
+
console.log(
|
|
350
|
+
chalk.yellow(
|
|
351
|
+
"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
|
|
352
|
+
),
|
|
353
|
+
);
|
|
354
|
+
console.log(
|
|
355
|
+
chalk.yellow(" DEBUG MODE: Sandbox kept alive for debugging"),
|
|
356
|
+
);
|
|
357
|
+
console.log(
|
|
358
|
+
chalk.yellow(
|
|
359
|
+
"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
|
|
360
|
+
),
|
|
361
|
+
);
|
|
362
|
+
console.log("");
|
|
363
|
+
console.log(" To connect via MCP:");
|
|
364
|
+
console.log(
|
|
365
|
+
chalk.cyan(` session_start({ sandboxId: "${sandboxId}" })`),
|
|
366
|
+
);
|
|
367
|
+
console.log("");
|
|
368
|
+
console.log(chalk.dim(" Sandbox will expire in 5 minutes."));
|
|
369
|
+
console.log(
|
|
370
|
+
chalk.yellow(
|
|
371
|
+
"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
|
|
372
|
+
),
|
|
373
|
+
);
|
|
374
|
+
console.log("");
|
|
375
|
+
|
|
376
|
+
// Still stop dashcam to save the recording
|
|
377
|
+
if (currentInstance._dashcam && currentInstance._dashcam.recording) {
|
|
378
|
+
try {
|
|
379
|
+
await currentInstance.dashcam.stop();
|
|
380
|
+
} catch {
|
|
381
|
+
// Ignore dashcam stop errors in debug mode
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Clean up console spies
|
|
386
|
+
cleanupConsoleSpy(currentInstance);
|
|
387
|
+
|
|
388
|
+
// DO NOT disconnect or terminate - keep sandbox alive for debugging
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
|
|
338
392
|
try {
|
|
339
393
|
// Ensure meta object exists
|
|
340
394
|
if (!context.task.meta) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testdriverai",
|
|
3
|
-
"version": "7.2.
|
|
3
|
+
"version": "7.2.65",
|
|
4
4
|
"description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
|
|
5
5
|
"main": "sdk.js",
|
|
6
6
|
"types": "sdk.d.ts",
|
|
@@ -30,16 +30,18 @@
|
|
|
30
30
|
"./presets": "./lib/presets/index.mjs"
|
|
31
31
|
},
|
|
32
32
|
"bin": {
|
|
33
|
-
"testdriverai": "bin/testdriverai.js"
|
|
33
|
+
"testdriverai": "bin/testdriverai.js",
|
|
34
|
+
"testdriverai-mcp": "mcp-server/dist/server.js"
|
|
34
35
|
},
|
|
35
36
|
"scripts": {
|
|
36
37
|
"start": "node bin/testdriverai.js",
|
|
37
38
|
"dev": "DEV=true node bin/testdriverai.js",
|
|
38
39
|
"debug": "DEV=true VERBOSE=true node bin/testdriverai.js",
|
|
39
|
-
"docs": "cd docs && npx mint@latest dev",
|
|
40
|
+
"docs": "npm run docs:skills && cd docs && npx mint@latest dev",
|
|
40
41
|
"docs:dev": "cd docs && npx mint dev",
|
|
41
|
-
"docs:build": "cd docs && npx mint@latest build",
|
|
42
|
+
"docs:build": "npm run docs:skills && cd docs && npx mint@latest build",
|
|
42
43
|
"docs:links": "node docs/_scripts/link-replacer.js",
|
|
44
|
+
"docs:skills": "node docs/_scripts/generate-skills.js",
|
|
43
45
|
"bundle": "node build.mjs",
|
|
44
46
|
"test": "mocha test/*",
|
|
45
47
|
"test:sdk": "vitest run",
|
|
@@ -58,11 +60,14 @@
|
|
|
58
60
|
"test-assert": "node index.js run --path=testdriver/acceptance/assert.yaml",
|
|
59
61
|
"generate-report": "junit-viewer --results=out.xml --save=report.html",
|
|
60
62
|
"serve-report": "npx http-server . -p 8080 -o report.html",
|
|
61
|
-
"report": "npm run generate-report && npm run serve-report"
|
|
63
|
+
"report": "npm run generate-report && npm run serve-report",
|
|
64
|
+
"generate:skills": "node scripts/generate-skills.js"
|
|
62
65
|
},
|
|
63
66
|
"author": "",
|
|
64
67
|
"license": "ISC",
|
|
65
68
|
"dependencies": {
|
|
69
|
+
"@modelcontextprotocol/ext-apps": "^1.0.0",
|
|
70
|
+
"@modelcontextprotocol/sdk": "^1.24.0",
|
|
66
71
|
"@npmcli/redact": "^3.2.2",
|
|
67
72
|
"@oclif/core": "^4.5.0",
|
|
68
73
|
"@oclif/plugin-commands": "^4.1.28",
|
|
@@ -96,7 +101,8 @@
|
|
|
96
101
|
"tmp": "^0.2.3",
|
|
97
102
|
"winston": "^3.13.0",
|
|
98
103
|
"winston-transport": "^4.9.0",
|
|
99
|
-
"ws": "^8.18.1"
|
|
104
|
+
"ws": "^8.18.1",
|
|
105
|
+
"zod": "^3.24.0"
|
|
100
106
|
},
|
|
101
107
|
"overrides": {
|
|
102
108
|
"glob": "^11.0.1",
|
|
@@ -124,7 +130,8 @@
|
|
|
124
130
|
"mocha": "^10.8.2",
|
|
125
131
|
"node-addon-api": "^8.0.0",
|
|
126
132
|
"prettier": "3.3.3",
|
|
127
|
-
"
|
|
133
|
+
"testdriverai": "^7.2.60",
|
|
134
|
+
"vitest": "^4.0.18"
|
|
128
135
|
},
|
|
129
136
|
"optionalDependencies": {
|
|
130
137
|
"@esbuild/linux-x64": "^0.21.5"
|
|
@@ -137,6 +144,19 @@
|
|
|
137
144
|
"@oclif/plugin-*"
|
|
138
145
|
],
|
|
139
146
|
"topicSeparator": " ",
|
|
140
|
-
"default": "
|
|
141
|
-
}
|
|
147
|
+
"default": "init"
|
|
148
|
+
},
|
|
149
|
+
"files": [
|
|
150
|
+
"agent/",
|
|
151
|
+
"bin/",
|
|
152
|
+
"ai/skills/",
|
|
153
|
+
"ai/agents/",
|
|
154
|
+
"interfaces/",
|
|
155
|
+
"lib/",
|
|
156
|
+
"mcp-server/dist/",
|
|
157
|
+
"sdk.js",
|
|
158
|
+
"sdk.d.ts",
|
|
159
|
+
"index.js",
|
|
160
|
+
"schema.json"
|
|
161
|
+
]
|
|
142
162
|
}
|
package/sdk.d.ts
CHANGED
|
@@ -14,6 +14,13 @@ export type ScrollDirection = "up" | "down" | "left" | "right";
|
|
|
14
14
|
export type ScrollMethod = "keyboard" | "mouse";
|
|
15
15
|
export type TextMatchMethod = "ai" | "turbo";
|
|
16
16
|
export type ExecLanguage = "js" | "pwsh" | "sh";
|
|
17
|
+
/**
|
|
18
|
+
* Preview mode for live test visualization
|
|
19
|
+
* - "browser": Opens debugger in default browser (default)
|
|
20
|
+
* - "ide": Opens preview in IDE panel (VSCode, Cursor, etc.)
|
|
21
|
+
* - "none": Headless mode, no visual preview
|
|
22
|
+
*/
|
|
23
|
+
export type PreviewMode = "browser" | "ide" | "none";
|
|
17
24
|
export type KeyboardKey =
|
|
18
25
|
| "\t"
|
|
19
26
|
| "\n"
|
|
@@ -232,7 +239,17 @@ export interface TestDriverOptions {
|
|
|
232
239
|
};
|
|
233
240
|
/** Force creation of a new sandbox (default: true) */
|
|
234
241
|
newSandbox?: boolean;
|
|
235
|
-
/**
|
|
242
|
+
/**
|
|
243
|
+
* Preview mode for live test visualization (default: "browser")
|
|
244
|
+
* - "browser": Opens debugger in default browser
|
|
245
|
+
* - "ide": Opens preview in IDE panel (VSCode, Cursor, etc.)
|
|
246
|
+
* - "none": Headless mode, no visual preview
|
|
247
|
+
*/
|
|
248
|
+
preview?: PreviewMode;
|
|
249
|
+
/**
|
|
250
|
+
* @deprecated Use `preview: "none"` instead. Run in headless mode (default: false)
|
|
251
|
+
* For backward compatibility: headless: true maps to preview: "none"
|
|
252
|
+
*/
|
|
236
253
|
headless?: boolean;
|
|
237
254
|
/** Direct IP address to connect to a running sandbox instance */
|
|
238
255
|
ip?: string;
|
|
@@ -280,7 +297,17 @@ export interface ConnectOptions {
|
|
|
280
297
|
sandboxInstance?: string;
|
|
281
298
|
/** Operating system for the sandbox (default: 'linux') */
|
|
282
299
|
os?: "windows" | "linux";
|
|
283
|
-
/**
|
|
300
|
+
/**
|
|
301
|
+
* Preview mode for live test visualization (default: "browser")
|
|
302
|
+
* - "browser": Opens debugger in default browser
|
|
303
|
+
* - "ide": Opens preview in IDE panel (VSCode, Cursor, etc.)
|
|
304
|
+
* - "none": Headless mode, no visual preview
|
|
305
|
+
*/
|
|
306
|
+
preview?: PreviewMode;
|
|
307
|
+
/**
|
|
308
|
+
* @deprecated Use `preview: "none"` instead. Run in headless mode (default: false)
|
|
309
|
+
* For backward compatibility: headless: true maps to preview: "none"
|
|
310
|
+
*/
|
|
284
311
|
headless?: boolean;
|
|
285
312
|
/** Reuse recent connection if available (default: true) */
|
|
286
313
|
reuseConnection?: boolean;
|
package/sdk.js
CHANGED
|
@@ -3,6 +3,7 @@ const path = require("path");
|
|
|
3
3
|
const os = require("os");
|
|
4
4
|
const crypto = require("crypto");
|
|
5
5
|
const { formatter } = require("./sdk-log-formatter");
|
|
6
|
+
const logger = require("./agent/lib/logger");
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Get the file path of the caller (the file that called TestDriver)
|
package/.env.example
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
name: Scheduled Acceptance Tests (Linux)
|
|
2
|
-
|
|
3
|
-
permissions:
|
|
4
|
-
id-token: write
|
|
5
|
-
contents: read
|
|
6
|
-
|
|
7
|
-
on:
|
|
8
|
-
schedule:
|
|
9
|
-
# Every 6 hours
|
|
10
|
-
- cron: "0 */6 * * *"
|
|
11
|
-
workflow_dispatch: # Allow manual trigger
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
test-linux:
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
|
|
20
|
-
- name: Setup Node.js
|
|
21
|
-
uses: actions/setup-node@v4
|
|
22
|
-
with:
|
|
23
|
-
node-version: "20"
|
|
24
|
-
cache: "npm"
|
|
25
|
-
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: npm ci
|
|
28
|
-
|
|
29
|
-
- name: Install Sentry CLI
|
|
30
|
-
run: npm install -g @sentry/cli
|
|
31
|
-
|
|
32
|
-
- name: Run Linux tests with Sentry Cron monitoring
|
|
33
|
-
run: |
|
|
34
|
-
sentry-cli monitors run testdriver-linux-acceptance -- npx vitest run examples/*.test.mjs
|
|
35
|
-
env:
|
|
36
|
-
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
|
37
|
-
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
38
|
-
TD_OS: linux
|
|
39
|
-
TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
|
|
40
|
-
|
|
41
|
-
- name: Upload test results to Sentry Prevent
|
|
42
|
-
if: ${{ !cancelled() }}
|
|
43
|
-
uses: getsentry/prevent-action@v0
|
|
44
|
-
with:
|
|
45
|
-
token: ${{ secrets.SENTRY_PREVENT_TOKEN }}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
name: Scheduled Acceptance Tests (Windows)
|
|
2
|
-
|
|
3
|
-
permissions:
|
|
4
|
-
id-token: write
|
|
5
|
-
contents: read
|
|
6
|
-
|
|
7
|
-
on:
|
|
8
|
-
schedule:
|
|
9
|
-
# Every day at midnight UTC
|
|
10
|
-
- cron: "0 0 * * *"
|
|
11
|
-
workflow_dispatch: # Allow manual trigger
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
test-windows:
|
|
15
|
-
uses: ./.github/workflows/windows-self-hosted.yaml
|
|
16
|
-
secrets:
|
|
17
|
-
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
18
|
-
TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
|
|
19
|
-
TD_WEBSITE: ${{ secrets.TD_WEBSITE }}
|
|
20
|
-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
21
|
-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
22
|
-
|
|
23
|
-
sentry-and-publish:
|
|
24
|
-
needs: test-windows
|
|
25
|
-
runs-on: ubuntu-latest
|
|
26
|
-
if: always()
|
|
27
|
-
|
|
28
|
-
steps:
|
|
29
|
-
- name: Install Sentry CLI
|
|
30
|
-
run: npm install -g @sentry/cli
|
|
31
|
-
|
|
32
|
-
- name: Report to Sentry Cron
|
|
33
|
-
run: |
|
|
34
|
-
sentry-cli monitors run testdriver-windows-acceptance -- echo "Windows tests completed"
|
|
35
|
-
env:
|
|
36
|
-
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
|
37
|
-
|
|
38
|
-
- name: Download test results
|
|
39
|
-
uses: actions/download-artifact@v4
|
|
40
|
-
with:
|
|
41
|
-
name: test-results-windows
|
|
42
|
-
|
|
43
|
-
- name: Upload test results to Sentry Prevent
|
|
44
|
-
if: ${{ !cancelled() }}
|
|
45
|
-
uses: getsentry/prevent-action@v0
|
|
46
|
-
with:
|
|
47
|
-
token: ${{ secrets.SENTRY_PREVENT_TOKEN }}
|
|
48
|
-
|
|
49
|
-
- name: Publish Test Results
|
|
50
|
-
uses: EnricoMi/publish-unit-test-result-action@v2
|
|
51
|
-
if: always()
|
|
52
|
-
with:
|
|
53
|
-
files: test-report.junit.xml
|
|
54
|
-
check_name: Test Results (Windows Scheduled)
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
name: Acceptance Tests
|
|
2
|
-
permissions:
|
|
3
|
-
id-token: write
|
|
4
|
-
contents: write
|
|
5
|
-
pull-requests: write
|
|
6
|
-
checks: write
|
|
7
|
-
on:
|
|
8
|
-
pull_request:
|
|
9
|
-
branches: [main]
|
|
10
|
-
|
|
11
|
-
concurrency:
|
|
12
|
-
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
13
|
-
cancel-in-progress: true
|
|
14
|
-
|
|
15
|
-
jobs:
|
|
16
|
-
test-linux:
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- uses: actions/checkout@v4
|
|
21
|
-
|
|
22
|
-
- name: Setup Node.js
|
|
23
|
-
uses: actions/setup-node@v4
|
|
24
|
-
with:
|
|
25
|
-
node-version: "20"
|
|
26
|
-
cache: "npm"
|
|
27
|
-
|
|
28
|
-
- name: Install dependencies
|
|
29
|
-
run: npm ci
|
|
30
|
-
|
|
31
|
-
- name: Run Linux tests
|
|
32
|
-
run: npx vitest run examples/*.test.mjs
|
|
33
|
-
env:
|
|
34
|
-
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
35
|
-
TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
|
|
36
|
-
TD_OS: linux
|
|
37
|
-
|
|
38
|
-
- name: Upload test results to Sentry Prevent
|
|
39
|
-
if: ${{ !cancelled() }}
|
|
40
|
-
uses: getsentry/prevent-action@v0
|
|
41
|
-
with:
|
|
42
|
-
token: ${{ secrets.SENTRY_PREVENT_TOKEN }}
|
|
43
|
-
|
|
44
|
-
- name: Publish Test Results
|
|
45
|
-
uses: EnricoMi/publish-unit-test-result-action@v2
|
|
46
|
-
if: always()
|
|
47
|
-
with:
|
|
48
|
-
files: test-report.junit.xml
|
|
49
|
-
comment_mode: always
|
|
50
|
-
check_name: Test Results (Linux)
|
|
51
|
-
|
|
52
|
-
test-windows:
|
|
53
|
-
if: contains(github.event.pull_request.labels.*.name, 'test-windows')
|
|
54
|
-
uses: ./.github/workflows/windows-self-hosted.yaml
|
|
55
|
-
with:
|
|
56
|
-
test_pattern: "examples/*.test.mjs"
|
|
57
|
-
secrets:
|
|
58
|
-
TD_API_KEY: ${{ secrets.TD_API_KEY }}
|
|
59
|
-
TWOCAPTCHA_API_KEY: ${{ secrets.TWOCAPTCHA_API_KEY }}
|
|
60
|
-
TD_WEBSITE: ${{ secrets.TD_WEBSITE }}
|
|
61
|
-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
62
|
-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
63
|
-
|
|
64
|
-
publish-windows-results:
|
|
65
|
-
needs: test-windows
|
|
66
|
-
runs-on: ubuntu-latest
|
|
67
|
-
if: always() && contains(github.event.pull_request.labels.*.name, 'test-windows')
|
|
68
|
-
|
|
69
|
-
steps:
|
|
70
|
-
- name: Download test results
|
|
71
|
-
uses: actions/download-artifact@v4
|
|
72
|
-
with:
|
|
73
|
-
name: test-results-windows
|
|
74
|
-
|
|
75
|
-
- name: Upload test results to Sentry Prevent
|
|
76
|
-
if: ${{ !cancelled() }}
|
|
77
|
-
uses: getsentry/prevent-action@v0
|
|
78
|
-
with:
|
|
79
|
-
token: ${{ secrets.SENTRY_PREVENT_TOKEN }}
|
|
80
|
-
|
|
81
|
-
- name: Publish Test Results
|
|
82
|
-
uses: EnricoMi/publish-unit-test-result-action@v2
|
|
83
|
-
if: always()
|
|
84
|
-
with:
|
|
85
|
-
files: test-report.junit.xml
|
|
86
|
-
comment_mode: always
|
|
87
|
-
check_name: Test Results (Windows)
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
name: Publish
|
|
2
|
-
permissions:
|
|
3
|
-
contents: write
|
|
4
|
-
id-token: write # Required for OIDC
|
|
5
|
-
on:
|
|
6
|
-
push:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
publish:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
with:
|
|
16
|
-
fetch-depth: 0
|
|
17
|
-
token: ${{ secrets.GITHUB_TOKEN }}
|
|
18
|
-
|
|
19
|
-
- name: Setup Node.js
|
|
20
|
-
uses: actions/setup-node@v4
|
|
21
|
-
with:
|
|
22
|
-
node-version: "20"
|
|
23
|
-
registry-url: "https://registry.npmjs.org/"
|
|
24
|
-
|
|
25
|
-
- name: Configure Git
|
|
26
|
-
run: |
|
|
27
|
-
git config user.name "github-actions[bot]"
|
|
28
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
29
|
-
|
|
30
|
-
- name: Install dependencies
|
|
31
|
-
run: npm ci
|
|
32
|
-
|
|
33
|
-
- name: Bump version (patch)
|
|
34
|
-
run: npm version patch --no-git-tag-version
|
|
35
|
-
|
|
36
|
-
- name: Generate Changelog
|
|
37
|
-
run: |
|
|
38
|
-
npx conventional-changelog-cli -p angular -i CHANGELOG.md -s
|
|
39
|
-
git add CHANGELOG.md
|
|
40
|
-
|
|
41
|
-
- name: Commit and push version bump
|
|
42
|
-
run: |
|
|
43
|
-
git add package.json package-lock.json
|
|
44
|
-
VERSION=$(node -p "require('./package.json').version")
|
|
45
|
-
git commit -m "chore(release): ${VERSION}"
|
|
46
|
-
git tag "v${VERSION}"
|
|
47
|
-
git push origin main
|
|
48
|
-
git push origin "v${VERSION}"
|
|
49
|
-
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
|
50
|
-
|
|
51
|
-
- name: Create GitHub Release
|
|
52
|
-
uses: softprops/action-gh-release@v1
|
|
53
|
-
with:
|
|
54
|
-
tag_name: v${{ env.VERSION }}
|
|
55
|
-
generate_release_notes: true
|
|
56
|
-
prerelease: false
|
|
57
|
-
|
|
58
|
-
- name: Debug NPM Token
|
|
59
|
-
run: |
|
|
60
|
-
echo "NPM_TOKEN is set: ${{ secrets.NPM_TOKEN != '' }}"
|
|
61
|
-
echo "NPM_TOKEN first 4 chars: ${NPM_TOKEN:0:4}..."
|
|
62
|
-
env:
|
|
63
|
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
64
|
-
|
|
65
|
-
- name: Publish to npm
|
|
66
|
-
run: npm publish --tag beta
|
|
67
|
-
env:
|
|
68
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|