testdriverai 6.2.2 → 7.1.0
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/.github/workflows/acceptance-linux.yml +75 -0
- package/.github/workflows/acceptance-sdk-tests.yml +133 -0
- package/.vscode/settings.json +5 -1
- package/AGENTS.md +550 -0
- package/CODEOWNERS +0 -1
- package/README.md +126 -0
- package/{testdriver → _testdriver}/acceptance/drag-and-drop.yaml +2 -2
- package/{testdriver → _testdriver}/acceptance/snippets/login.yaml +1 -1
- package/_testdriver/examples/desktop/lifecycle/prerun.yaml +0 -0
- package/{testdriver → _testdriver}/examples/web/lifecycle/prerun.yaml +6 -1
- package/{testdriver → _testdriver}/lifecycle/postrun.yaml +3 -2
- package/_testdriver/lifecycle/prerun.yaml +15 -0
- package/{testdriver → _testdriver}/lifecycle/provision.yaml +7 -2
- package/agent/index.js +300 -85
- package/agent/interface.js +15 -0
- package/agent/lib/cache.js +142 -0
- package/agent/lib/commander.js +1 -39
- package/agent/lib/commands.js +910 -296
- package/agent/lib/redraw.js +129 -41
- package/agent/lib/sandbox.js +29 -6
- package/agent/lib/sdk.js +22 -0
- package/agent/lib/system.js +0 -3
- package/agent/lib/validation.js +1 -7
- package/debug-locate-response.js +82 -0
- package/debugger/index.html +15 -4
- package/docs/ARCHITECTURE.md +424 -0
- package/docs/AWESOME_LOGS_QUICK_REF.md +100 -0
- package/docs/MIGRATION.md +425 -0
- package/docs/PRESETS.md +210 -0
- package/docs/QUICK_START_TEST_RECORDING.md +215 -0
- package/docs/SDK_AWESOME_LOGS.md +468 -0
- package/docs/TEST_RECORDING.md +388 -0
- package/docs/docs.json +286 -152
- package/docs/guide/best-practices-polling.mdx +154 -0
- package/docs/sdk-browser-rendering.md +167 -0
- package/docs/v6/getting-started/self-hosting.mdx +407 -0
- package/docs/{guide → v6/guide}/dashcam.mdx +1 -1
- package/docs/{guide → v6/guide}/environment-variables.mdx +4 -5
- package/docs/{guide → v6/guide}/lifecycle.mdx +1 -1
- package/docs/v6/overview/comparison.mdx +101 -0
- package/docs/v7/README.md +135 -0
- package/docs/v7/api/ai.mdx +205 -0
- package/docs/v7/api/assert.mdx +285 -0
- package/docs/v7/api/assertions.mdx +403 -0
- package/docs/v7/api/click.mdx +287 -0
- package/docs/v7/api/client.mdx +322 -0
- package/docs/v7/api/dashcam.mdx +497 -0
- package/docs/v7/api/doubleClick.mdx +102 -0
- package/docs/v7/api/elements.mdx +479 -0
- package/docs/v7/api/exec.mdx +346 -0
- package/docs/v7/api/find.mdx +316 -0
- package/docs/v7/api/focusApplication.mdx +294 -0
- package/docs/v7/api/hover.mdx +279 -0
- package/docs/v7/api/mouseDown.mdx +161 -0
- package/docs/v7/api/mouseUp.mdx +164 -0
- package/docs/v7/api/pressKeys.mdx +349 -0
- package/docs/v7/api/rightClick.mdx +123 -0
- package/docs/v7/api/sandbox.mdx +404 -0
- package/docs/v7/api/scroll.mdx +300 -0
- package/docs/v7/api/type.mdx +314 -0
- package/docs/v7/commands/assert.mdx +45 -0
- package/docs/v7/commands/exec.mdx +282 -0
- package/docs/v7/commands/focus-application.mdx +44 -0
- package/docs/v7/commands/hover-image.mdx +69 -0
- package/docs/v7/commands/hover-text.mdx +47 -0
- package/docs/v7/commands/if.mdx +53 -0
- package/docs/v7/commands/match-image.mdx +67 -0
- package/docs/v7/commands/press-keys.mdx +87 -0
- package/docs/v7/commands/remember.mdx +49 -0
- package/docs/v7/commands/run.mdx +44 -0
- package/docs/v7/commands/scroll-until-image.mdx +66 -0
- package/docs/v7/commands/scroll-until-text.mdx +60 -0
- package/docs/v7/commands/scroll.mdx +69 -0
- package/docs/v7/commands/type.mdx +45 -0
- package/docs/v7/commands/wait-for-image.mdx +54 -0
- package/docs/v7/commands/wait-for-text.mdx +48 -0
- package/docs/v7/commands/wait.mdx +45 -0
- package/docs/v7/getting-started/configuration.mdx +380 -0
- package/docs/v7/getting-started/quickstart.mdx +332 -0
- package/docs/v7/guides/best-practices.mdx +486 -0
- package/docs/v7/guides/caching-ai.mdx +215 -0
- package/docs/v7/guides/caching-selectors.mdx +292 -0
- package/docs/v7/guides/caching.mdx +366 -0
- package/docs/v7/guides/ci-cd/azure.mdx +587 -0
- package/docs/v7/guides/ci-cd/circleci.mdx +523 -0
- package/docs/v7/guides/ci-cd/github-actions.mdx +457 -0
- package/docs/v7/guides/ci-cd/gitlab.mdx +498 -0
- package/docs/v7/guides/ci-cd/jenkins.mdx +664 -0
- package/docs/v7/guides/ci-cd/travis.mdx +438 -0
- package/docs/v7/guides/debugging.mdx +349 -0
- package/docs/v7/guides/faq.mdx +393 -0
- package/docs/v7/guides/migration.mdx +562 -0
- package/docs/v7/guides/performance.mdx +517 -0
- package/docs/{getting-started → v7/guides}/self-hosting.mdx +11 -12
- package/docs/v7/guides/troubleshooting.mdx +526 -0
- package/docs/v7/guides/vitest-plugin.mdx +477 -0
- package/docs/v7/guides/vitest.mdx +535 -0
- package/docs/v7/platforms/linux.mdx +308 -0
- package/docs/v7/platforms/macos.mdx +433 -0
- package/docs/v7/platforms/windows.mdx +430 -0
- package/docs/v7/playwright.mdx +342 -0
- package/docs/v7/presets/chrome-extension.mdx +223 -0
- package/docs/v7/presets/chrome.mdx +287 -0
- package/docs/v7/presets/electron.mdx +435 -0
- package/docs/v7/presets/vscode.mdx +398 -0
- package/docs/v7/presets/webapp.mdx +396 -0
- package/docs/v7/progressive-apis/CORE.md +459 -0
- package/docs/v7/progressive-apis/HOOKS.md +360 -0
- package/docs/v7/progressive-apis/PROGRESSIVE_DISCLOSURE.md +230 -0
- package/docs/v7/progressive-apis/PROVISION.md +266 -0
- package/eslint.config.js +19 -1
- package/interfaces/cli/lib/base.js +10 -4
- package/interfaces/logger.js +2 -1
- package/interfaces/shared-test-state.mjs +69 -0
- package/interfaces/vitest-plugin.mjs +830 -0
- package/package.json +29 -5
- package/schema.json +8 -29
- package/scripts/view-test-results.mjs +96 -0
- package/sdk-log-formatter.js +714 -0
- package/sdk.d.ts +1028 -0
- package/sdk.js +2567 -0
- package/{.github/workflows/self-hosted.yml → self-hosted.yml} +13 -4
- package/setup/aws/cloudformation.yaml +9 -2
- package/src/core/Dashcam.js +469 -0
- package/src/core/index.d.ts +150 -0
- package/src/core/index.js +12 -0
- package/src/presets/index.mjs +331 -0
- package/src/vitest/extended.mjs +108 -0
- package/src/vitest/hooks.d.ts +119 -0
- package/src/vitest/hooks.mjs +298 -0
- package/src/vitest/index.mjs +64 -0
- package/src/vitest/lifecycle.mjs +277 -0
- package/src/vitest/utils.mjs +150 -0
- package/test/dashcam.test.js +137 -0
- package/test/mcp-example-test.yaml +27 -0
- package/testdriver/acceptance-sdk/QUICK_REFERENCE.md +61 -0
- package/testdriver/acceptance-sdk/README.md +128 -0
- package/testdriver/acceptance-sdk/TEST_REPORTING.md +245 -0
- package/testdriver/acceptance-sdk/assert.test.mjs +26 -0
- package/testdriver/acceptance-sdk/auto-cache-key-demo.test.mjs +56 -0
- package/testdriver/acceptance-sdk/chrome-extension.test.mjs +89 -0
- package/testdriver/acceptance-sdk/drag-and-drop.test.mjs +58 -0
- package/testdriver/acceptance-sdk/element-not-found.test.mjs +25 -0
- package/testdriver/acceptance-sdk/exec-js.test.mjs +43 -0
- package/testdriver/acceptance-sdk/exec-output.test.mjs +59 -0
- package/testdriver/acceptance-sdk/exec-pwsh.test.mjs +57 -0
- package/testdriver/acceptance-sdk/focus-window.test.mjs +36 -0
- package/testdriver/acceptance-sdk/formatted-logging.test.mjs +26 -0
- package/testdriver/acceptance-sdk/hooks-example.test.mjs +38 -0
- package/testdriver/acceptance-sdk/hover-image.test.mjs +34 -0
- package/testdriver/acceptance-sdk/hover-text-with-description.test.mjs +38 -0
- package/testdriver/acceptance-sdk/hover-text.test.mjs +27 -0
- package/testdriver/acceptance-sdk/match-image.test.mjs +36 -0
- package/testdriver/acceptance-sdk/presets-example.test.mjs +87 -0
- package/testdriver/acceptance-sdk/press-keys.test.mjs +50 -0
- package/testdriver/acceptance-sdk/prompt.test.mjs +33 -0
- package/testdriver/acceptance-sdk/scroll-keyboard.test.mjs +38 -0
- package/testdriver/acceptance-sdk/scroll-until-image.test.mjs +39 -0
- package/testdriver/acceptance-sdk/scroll-until-text.test.mjs +28 -0
- package/testdriver/acceptance-sdk/scroll.test.mjs +41 -0
- package/testdriver/acceptance-sdk/setup/globalTeardown.mjs +11 -0
- package/testdriver/acceptance-sdk/setup/testHelpers.mjs +420 -0
- package/testdriver/acceptance-sdk/setup/vitestSetup.mjs +40 -0
- package/testdriver/acceptance-sdk/sully-ai.test.mjs +234 -0
- package/testdriver/acceptance-sdk/test-console-logs.test.mjs +42 -0
- package/testdriver/acceptance-sdk/type-checking-demo.js +49 -0
- package/testdriver/acceptance-sdk/type.test.mjs +45 -0
- package/verify-element-api.js +89 -0
- package/verify-types.js +0 -0
- package/vitest.config.example.js +19 -0
- package/vitest.config.mjs +66 -0
- package/vitest.config.mjs.bak +44 -0
- package/.github/workflows/acceptance-v6.yml +0 -169
- package/.vscode/mcp.json +0 -9
- package/docs/overview/comparison.mdx +0 -82
- package/testdriver/lifecycle/prerun.yaml +0 -17
- /package/{testdriver/examples/desktop/lifecycle/prerun.yaml → .env.example} +0 -0
- /package/{testdriver → _testdriver}/acceptance/assert.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/dashcam.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/embed.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/exec-js.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/exec-output.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/exec-shell.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/focus-window.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/hover-image.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/hover-text-with-description.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/hover-text.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/if-else.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/match-image.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/press-keys.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/prompt.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/remember.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/screenshots/cart.png +0 -0
- /package/{testdriver → _testdriver}/acceptance/scroll-keyboard.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/scroll-until-image.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/scroll-until-text.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/scroll.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/snippets/match-cart.yaml +0 -0
- /package/{testdriver → _testdriver}/acceptance/type.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/failure.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/hover-text.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/lifecycle/postrun.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/lifecycle/prerun.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/lifecycle/provision.yaml +0 -0
- /package/{testdriver → _testdriver}/behavior/secrets.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/dashcam-chrome.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/exec-pwsh-multiline.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/js-exception.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/js-promise.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/lifecycle/postrun.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/prompt-in-middle.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/prompt-nested.yaml +0 -0
- /package/{testdriver → _testdriver}/edge-cases/success-test.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/android/example.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/android/lifecycle/postrun.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/android/lifecycle/provision.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/android/readme.md +0 -0
- /package/{testdriver → _testdriver}/examples/chrome-extension/lifecycle/provision.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/desktop/lifecycle/provision.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/vscode-extension/lifecycle/provision.yaml +0 -0
- /package/{testdriver → _testdriver}/examples/web/lifecycle/postrun.yaml +0 -0
- /package/docs/{account → v6/account}/dashboard.mdx +0 -0
- /package/docs/{account → v6/account}/enterprise.mdx +0 -0
- /package/docs/{account → v6/account}/pricing.mdx +0 -0
- /package/docs/{account → v6/account}/projects.mdx +0 -0
- /package/docs/{account → v6/account}/team.mdx +0 -0
- /package/docs/{action → v6/action}/ami.mdx +0 -0
- /package/docs/{action → v6/action}/performance.mdx +0 -0
- /package/docs/{action → v6/action}/secrets.mdx +0 -0
- /package/docs/{apps → v6/apps}/chrome-extensions.mdx +0 -0
- /package/docs/{apps → v6/apps}/desktop-apps.mdx +0 -0
- /package/docs/{apps → v6/apps}/mobile-apps.mdx +0 -0
- /package/docs/{apps → v6/apps}/static-websites.mdx +0 -0
- /package/docs/{apps → v6/apps}/tauri-apps.mdx +0 -0
- /package/docs/{bugs → v6/bugs}/jira.mdx +0 -0
- /package/docs/{cli → v6/cli}/overview.mdx +0 -0
- /package/docs/{commands → v6/commands}/assert.mdx +0 -0
- /package/docs/{commands → v6/commands}/exec.mdx +0 -0
- /package/docs/{commands → v6/commands}/focus-application.mdx +0 -0
- /package/docs/{commands → v6/commands}/hover-image.mdx +0 -0
- /package/docs/{commands → v6/commands}/hover-text.mdx +0 -0
- /package/docs/{commands → v6/commands}/if.mdx +0 -0
- /package/docs/{commands → v6/commands}/match-image.mdx +0 -0
- /package/docs/{commands → v6/commands}/press-keys.mdx +0 -0
- /package/docs/{commands → v6/commands}/remember.mdx +0 -0
- /package/docs/{commands → v6/commands}/run.mdx +0 -0
- /package/docs/{commands → v6/commands}/scroll-until-image.mdx +0 -0
- /package/docs/{commands → v6/commands}/scroll-until-text.mdx +0 -0
- /package/docs/{commands → v6/commands}/scroll.mdx +0 -0
- /package/docs/{commands → v6/commands}/type.mdx +0 -0
- /package/docs/{commands → v6/commands}/wait-for-image.mdx +0 -0
- /package/docs/{commands → v6/commands}/wait-for-text.mdx +0 -0
- /package/docs/{commands → v6/commands}/wait.mdx +0 -0
- /package/docs/{exporting → v6/exporting}/junit.mdx +0 -0
- /package/docs/{exporting → v6/exporting}/playwright.mdx +0 -0
- /package/docs/{features → v6/features}/auto-healing.mdx +0 -0
- /package/docs/{features → v6/features}/generation.mdx +0 -0
- /package/docs/{features → v6/features}/parallel-testing.mdx +0 -0
- /package/docs/{features → v6/features}/reusable-snippets.mdx +0 -0
- /package/docs/{features → v6/features}/selectorless.mdx +0 -0
- /package/docs/{features → v6/features}/visual-assertions.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/ci.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/cli.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/editing.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/playwright.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/running.mdx +0 -0
- /package/docs/{getting-started → v6/getting-started}/vscode.mdx +0 -0
- /package/docs/{guide → v6/guide}/assertions.mdx +0 -0
- /package/docs/{guide → v6/guide}/authentication.mdx +0 -0
- /package/docs/{guide → v6/guide}/code.mdx +0 -0
- /package/docs/{guide → v6/guide}/locating.mdx +0 -0
- /package/docs/{guide → v6/guide}/protips.mdx +0 -0
- /package/docs/{guide → v6/guide}/variables.mdx +0 -0
- /package/docs/{guide → v6/guide}/waiting.mdx +0 -0
- /package/docs/{importing → v6/importing}/csv.mdx +0 -0
- /package/docs/{importing → v6/importing}/gherkin.mdx +0 -0
- /package/docs/{importing → v6/importing}/jira.mdx +0 -0
- /package/docs/{importing → v6/importing}/testrail.mdx +0 -0
- /package/docs/{integrations → v6/integrations}/electron.mdx +0 -0
- /package/docs/{integrations → v6/integrations}/netlify.mdx +0 -0
- /package/docs/{integrations → v6/integrations}/vercel.mdx +0 -0
- /package/docs/{interactive → v6/interactive}/explore.mdx +0 -0
- /package/docs/{interactive → v6/interactive}/run.mdx +0 -0
- /package/docs/{interactive → v6/interactive}/save.mdx +0 -0
- /package/docs/{overview → v6/overview}/faq.mdx +0 -0
- /package/docs/{overview → v6/overview}/performance.mdx +0 -0
- /package/docs/{overview → v6/overview}/quickstart.mdx +0 -0
- /package/docs/{overview → v6/overview}/what-is-testdriver.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/ai-chatbot.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/cookie-banner.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/file-upload.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/form-filling.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/log-in.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/pdf-generation.mdx +0 -0
- /package/docs/{scenarios → v6/scenarios}/spell-check.mdx +0 -0
- /package/docs/{security → v6/security}/action.mdx +0 -0
- /package/docs/{security → v6/security}/agent.mdx +0 -0
- /package/docs/{security → v6/security}/platform.mdx +0 -0
- /package/docs/{tutorials → v6/tutorials}/advanced-test.mdx +0 -0
- /package/docs/{tutorials → v6/tutorials}/basic-test.mdx +0 -0
package/package.json
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testdriverai",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"description": "Next generation autonomous AI agent for end-to-end testing of web & desktop",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "sdk.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./sdk.js",
|
|
8
|
+
"./core": "./src/core/index.js",
|
|
9
|
+
"./vitest": "./src/vitest/index.mjs",
|
|
10
|
+
"./vitest/hooks": "./src/vitest/hooks.mjs",
|
|
11
|
+
"./vitest/extended": "./src/vitest/extended.mjs",
|
|
12
|
+
"./vitest/lifecycle": "./src/vitest/lifecycle.mjs",
|
|
13
|
+
"./vitest/utils": "./src/vitest/utils.mjs",
|
|
14
|
+
"./vitest/plugin": "./interfaces/vitest-plugin.mjs",
|
|
15
|
+
"./presets": "./src/presets/index.mjs"
|
|
16
|
+
},
|
|
6
17
|
"bin": {
|
|
7
18
|
"testdriverai": "bin/testdriverai.js"
|
|
8
19
|
},
|
|
@@ -10,12 +21,22 @@
|
|
|
10
21
|
"start": "node bin/testdriverai.js",
|
|
11
22
|
"dev": "DEV=true node bin/testdriverai.js",
|
|
12
23
|
"debug": "DEV=true VERBOSE=true node bin/testdriverai.js",
|
|
13
|
-
"docs": "
|
|
24
|
+
"docs": "cd docs && npx mint@latest dev",
|
|
14
25
|
"docs:dev": "cd docs && npx mint dev",
|
|
15
|
-
"docs:build": "
|
|
26
|
+
"docs:build": "cd docs && npx mint@latest build",
|
|
16
27
|
"docs:links": "node docs/_scripts/link-replacer.js",
|
|
17
28
|
"bundle": "node build.mjs",
|
|
18
29
|
"test": "mocha test/*",
|
|
30
|
+
"test:sdk": "vitest run",
|
|
31
|
+
"test:sdk:windows": "TEST_PLATFORM=windows vitest run",
|
|
32
|
+
"test:sdk:mac": "TEST_PLATFORM=mac vitest run",
|
|
33
|
+
"test:sdk:linux": "TEST_PLATFORM=linux vitest run",
|
|
34
|
+
"test:sdk:watch": "vitest",
|
|
35
|
+
"test:sdk:ui": "vitest --ui",
|
|
36
|
+
"test:sdk:coverage": "vitest run --coverage",
|
|
37
|
+
"test:sdk:single": "vitest run --reporter=verbose",
|
|
38
|
+
"test:sdk:report": "open test-results/index.html",
|
|
39
|
+
"test:sdk:results": "node scripts/view-test-results.mjs",
|
|
19
40
|
"docs-lint": "cd docs && vale **/*.mdx",
|
|
20
41
|
"docs-upload": "node upload-docs-to-openai.js",
|
|
21
42
|
"runall": "dotenv testdriverai run --config testdriver.config.yaml --path './testdriver/*.testdriver.yaml'",
|
|
@@ -54,6 +75,7 @@
|
|
|
54
75
|
"remark-parse": "^11.0.0",
|
|
55
76
|
"sanitize-filename": "^1.6.3",
|
|
56
77
|
"strip-ansi": "^6.0.1",
|
|
78
|
+
"terminal-image": "^4.1.0",
|
|
57
79
|
"tmp": "^0.2.3",
|
|
58
80
|
"winston": "^3.13.0",
|
|
59
81
|
"winston-transport": "^4.9.0",
|
|
@@ -65,6 +87,7 @@
|
|
|
65
87
|
},
|
|
66
88
|
"devDependencies": {
|
|
67
89
|
"@eslint/js": "^9.10.0",
|
|
90
|
+
"@vitest/ui": "^4.0.8",
|
|
68
91
|
"chai": "^5.1.2",
|
|
69
92
|
"esbuild": "0.20.2",
|
|
70
93
|
"esbuild-plugin-fileloc": "^0.0.6",
|
|
@@ -75,7 +98,8 @@
|
|
|
75
98
|
"mint": "^4.2.67",
|
|
76
99
|
"mocha": "^10.8.2",
|
|
77
100
|
"node-addon-api": "^8.0.0",
|
|
78
|
-
"prettier": "3.3.3"
|
|
101
|
+
"prettier": "3.3.3",
|
|
102
|
+
"vitest": "^4.0.8"
|
|
79
103
|
},
|
|
80
104
|
"optionalDependencies": {
|
|
81
105
|
"@esbuild/linux-x64": "^0.21.5"
|
package/schema.json
CHANGED
|
@@ -301,13 +301,6 @@
|
|
|
301
301
|
},
|
|
302
302
|
"amount": {
|
|
303
303
|
"type": "integer"
|
|
304
|
-
},
|
|
305
|
-
"method": {
|
|
306
|
-
"type": "string",
|
|
307
|
-
"enum": [
|
|
308
|
-
"keyboard",
|
|
309
|
-
"mouse"
|
|
310
|
-
]
|
|
311
304
|
}
|
|
312
305
|
}
|
|
313
306
|
},
|
|
@@ -353,8 +346,8 @@
|
|
|
353
346
|
"right-click",
|
|
354
347
|
"double-click",
|
|
355
348
|
"hover",
|
|
356
|
-
"
|
|
357
|
-
"
|
|
349
|
+
"mouseDown",
|
|
350
|
+
"mouseUp"
|
|
358
351
|
]
|
|
359
352
|
}
|
|
360
353
|
}
|
|
@@ -405,8 +398,8 @@
|
|
|
405
398
|
"right-click",
|
|
406
399
|
"double-click",
|
|
407
400
|
"hover",
|
|
408
|
-
"
|
|
409
|
-
"
|
|
401
|
+
"mouseDown",
|
|
402
|
+
"mouseUp"
|
|
410
403
|
]
|
|
411
404
|
},
|
|
412
405
|
"method": {
|
|
@@ -443,8 +436,8 @@
|
|
|
443
436
|
"right-click",
|
|
444
437
|
"double-click",
|
|
445
438
|
"hover",
|
|
446
|
-
"
|
|
447
|
-
"
|
|
439
|
+
"mouseDown",
|
|
440
|
+
"mouseUp"
|
|
448
441
|
]
|
|
449
442
|
}
|
|
450
443
|
}
|
|
@@ -471,8 +464,8 @@
|
|
|
471
464
|
"right-click",
|
|
472
465
|
"double-click",
|
|
473
466
|
"hover",
|
|
474
|
-
"
|
|
475
|
-
"
|
|
467
|
+
"mouseDown",
|
|
468
|
+
"mouseUp"
|
|
476
469
|
]
|
|
477
470
|
},
|
|
478
471
|
"invert": {
|
|
@@ -558,13 +551,6 @@
|
|
|
558
551
|
"distance": {
|
|
559
552
|
"type": "integer"
|
|
560
553
|
},
|
|
561
|
-
"method": {
|
|
562
|
-
"type": "string",
|
|
563
|
-
"enum": [
|
|
564
|
-
"keyboard",
|
|
565
|
-
"mouse"
|
|
566
|
-
]
|
|
567
|
-
},
|
|
568
554
|
"invert": {
|
|
569
555
|
"type": "boolean"
|
|
570
556
|
}
|
|
@@ -598,13 +584,6 @@
|
|
|
598
584
|
},
|
|
599
585
|
"distance": {
|
|
600
586
|
"type": "integer"
|
|
601
|
-
},
|
|
602
|
-
"method" : {
|
|
603
|
-
"type": "string",
|
|
604
|
-
"enum": [
|
|
605
|
-
"keyboard",
|
|
606
|
-
"mouse"
|
|
607
|
-
]
|
|
608
587
|
},
|
|
609
588
|
"invert": {
|
|
610
589
|
"type": "boolean"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TestDriver SDK Test Results Viewer
|
|
5
|
+
* Displays a formatted summary of test results from the JSON output
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import fs from "fs";
|
|
9
|
+
import path from "path";
|
|
10
|
+
|
|
11
|
+
const RESULTS_PATH = "test-results/results.json";
|
|
12
|
+
|
|
13
|
+
function formatDuration(ms) {
|
|
14
|
+
if (ms < 1000) return `${ms}ms`;
|
|
15
|
+
return `${(ms / 1000).toFixed(2)}s`;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function displayResults() {
|
|
19
|
+
if (!fs.existsSync(RESULTS_PATH)) {
|
|
20
|
+
console.error("❌ No test results found. Run tests first:");
|
|
21
|
+
console.error(" npm run test:sdk");
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const results = JSON.parse(fs.readFileSync(RESULTS_PATH, "utf8"));
|
|
26
|
+
|
|
27
|
+
const total = results.numTotalTests || 0;
|
|
28
|
+
const passed = results.numPassedTests || 0;
|
|
29
|
+
const failed = results.numFailedTests || 0;
|
|
30
|
+
const skipped = results.numPendingTests || 0;
|
|
31
|
+
const duration = results.testResults?.reduce(
|
|
32
|
+
(sum, file) => sum + (file.endTime - file.startTime),
|
|
33
|
+
0,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
console.log("\n🧪 TestDriver SDK Test Results");
|
|
37
|
+
console.log("═".repeat(50));
|
|
38
|
+
console.log(`✅ Passed: ${passed}/${total}`);
|
|
39
|
+
console.log(`❌ Failed: ${failed}/${total}`);
|
|
40
|
+
console.log(`⏭️ Skipped: ${skipped}/${total}`);
|
|
41
|
+
console.log(`⏱️ Duration: ${formatDuration(duration)}`);
|
|
42
|
+
console.log("═".repeat(50));
|
|
43
|
+
|
|
44
|
+
if (failed > 0) {
|
|
45
|
+
console.log("\n❌ Failed Tests:\n");
|
|
46
|
+
results.testResults?.forEach((file) => {
|
|
47
|
+
const failedTests =
|
|
48
|
+
file.assertionResults?.filter((test) => test.status === "failed") || [];
|
|
49
|
+
|
|
50
|
+
if (failedTests.length > 0) {
|
|
51
|
+
console.log(`📁 ${path.relative(process.cwd(), file.name)}`);
|
|
52
|
+
failedTests.forEach((test) => {
|
|
53
|
+
console.log(` ❌ ${test.title}`);
|
|
54
|
+
console.log(` Duration: ${formatDuration(test.duration)}`);
|
|
55
|
+
if (test.failureMessages?.length > 0) {
|
|
56
|
+
console.log("\n Error:");
|
|
57
|
+
test.failureMessages.forEach((msg) => {
|
|
58
|
+
// Truncate very long error messages
|
|
59
|
+
const truncated =
|
|
60
|
+
msg.length > 500 ? msg.substring(0, 500) + "..." : msg;
|
|
61
|
+
console.log(
|
|
62
|
+
" " + truncated.split("\n").join("\n ") + "\n",
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
console.log();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (passed > 0) {
|
|
73
|
+
console.log("✅ Passed Tests:\n");
|
|
74
|
+
results.testResults?.forEach((file) => {
|
|
75
|
+
const passedTests =
|
|
76
|
+
file.assertionResults?.filter((test) => test.status === "passed") || [];
|
|
77
|
+
|
|
78
|
+
if (passedTests.length > 0) {
|
|
79
|
+
console.log(`📁 ${path.relative(process.cwd(), file.name)}`);
|
|
80
|
+
passedTests.forEach((test) => {
|
|
81
|
+
console.log(` ✅ ${test.title} (${formatDuration(test.duration)})`);
|
|
82
|
+
});
|
|
83
|
+
console.log();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
console.log("\n📊 View detailed HTML report:");
|
|
89
|
+
console.log(" npm run test:sdk:report");
|
|
90
|
+
console.log(" or open: test-results/index.html\n");
|
|
91
|
+
|
|
92
|
+
// Exit with error code if tests failed
|
|
93
|
+
process.exit(failed > 0 ? 1 : 0);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
displayResults();
|