testdriverai 7.0.0 → 7.1.1
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/.env.example +2 -0
- package/.github/workflows/linux-tests.yml +28 -0
- package/README.md +126 -0
- package/agent/index.js +7 -9
- package/agent/interface.js +13 -2
- package/agent/lib/commands.js +795 -136
- package/agent/lib/redraw.js +124 -39
- package/agent/lib/sandbox.js +40 -3
- package/agent/lib/sdk.js +21 -0
- package/agent/lib/valid-version.js +2 -2
- package/debugger/index.html +1 -1
- package/docs/docs.json +86 -71
- package/docs/guide/best-practices-polling.mdx +154 -0
- package/docs/v6/getting-started/self-hosting.mdx +3 -2
- package/docs/v7/_drafts/agents.mdx +852 -0
- package/docs/v7/_drafts/auto-cache-key.mdx +167 -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 +400 -0
- package/docs/v7/_drafts/caching.mdx +366 -0
- package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
- package/docs/v7/_drafts/core.mdx +459 -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/implementation-plan.mdx +994 -0
- package/docs/v7/_drafts/init-command.mdx +95 -0
- package/docs/v7/_drafts/optimal-sdk-design.mdx +1348 -0
- package/docs/v7/_drafts/performance.mdx +517 -0
- package/docs/v7/_drafts/presets.mdx +210 -0
- package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
- package/docs/v7/_drafts/provision.mdx +266 -0
- package/docs/{QUICK_START_TEST_RECORDING.md → v7/_drafts/quick-start-test-recording.mdx} +3 -3
- package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
- package/docs/v7/{guides → _drafts}/self-hosting.mdx +1 -1
- 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/api/{ai.mdx → act.mdx} +24 -24
- package/docs/v7/api/client.mdx +1 -1
- package/docs/v7/api/dashcam.mdx +497 -0
- package/docs/v7/api/doubleClick.mdx +102 -0
- package/docs/v7/api/elements.mdx +143 -41
- package/docs/v7/api/find.mdx +258 -0
- package/docs/v7/api/mouseDown.mdx +161 -0
- package/docs/v7/api/mouseUp.mdx +164 -0
- package/docs/v7/api/rightClick.mdx +123 -0
- package/docs/v7/api/type.mdx +51 -7
- package/docs/v7/features/ai-native.mdx +427 -0
- package/docs/v7/features/easy-to-write.mdx +351 -0
- package/docs/v7/features/enterprise.mdx +540 -0
- package/docs/v7/features/fast.mdx +424 -0
- package/docs/v7/features/observable.mdx +623 -0
- package/docs/v7/features/powerful.mdx +531 -0
- package/docs/v7/features/scalable.mdx +417 -0
- package/docs/v7/features/stable.mdx +514 -0
- package/docs/v7/getting-started/configuration.mdx +380 -0
- package/docs/v7/getting-started/generating-tests.mdx +525 -0
- package/docs/v7/getting-started/installation.mdx +486 -0
- package/docs/v7/getting-started/quickstart.mdx +320 -141
- package/docs/v7/getting-started/running-and-debugging.mdx +511 -0
- package/docs/v7/getting-started/setting-up-in-ci.mdx +612 -0
- package/docs/v7/getting-started/writing-tests.mdx +535 -0
- package/docs/v7/overview/what-is-testdriver.mdx +398 -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 +3 -3
- package/docs/v7/presets/chrome-extension.mdx +223 -0
- package/docs/v7/presets/chrome.mdx +303 -0
- package/docs/v7/presets/electron.mdx +453 -0
- package/docs/v7/presets/vscode.mdx +417 -0
- package/docs/v7/presets/webapp.mdx +396 -0
- package/examples/run-tests-with-recording.sh +2 -2
- package/interfaces/cli/commands/init.js +358 -0
- package/interfaces/vitest-plugin.mjs +393 -103
- package/lib/core/Dashcam.js +506 -0
- package/lib/core/index.d.ts +150 -0
- package/lib/core/index.js +12 -0
- package/lib/presets/index.mjs +331 -0
- package/lib/vitest/hooks.d.ts +119 -0
- package/lib/vitest/hooks.mjs +316 -0
- package/lib/vitest/setup.mjs +44 -0
- package/package.json +13 -3
- package/sdk.d.ts +350 -44
- package/sdk.js +818 -105
- package/{self-hosted.yml → setup/aws/self-hosted.yml} +1 -1
- package/test/manual/test-console-logs.test.mjs +42 -0
- package/test/manual/test-init.sh +54 -0
- package/test/manual/test-provision-auth.mjs +22 -0
- package/test/testdriver/assert.test.mjs +41 -0
- package/test/testdriver/auto-cache-key-demo.test.mjs +56 -0
- package/test/testdriver/chrome-extension.test.mjs +89 -0
- package/{testdriver/acceptance-sdk → test/testdriver}/drag-and-drop.test.mjs +7 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/element-not-found.test.mjs +6 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/exec-js.test.mjs +6 -18
- package/{testdriver/acceptance-sdk → test/testdriver}/exec-output.test.mjs +9 -21
- package/{testdriver/acceptance-sdk → test/testdriver}/exec-pwsh.test.mjs +14 -26
- package/{testdriver/acceptance-sdk → test/testdriver}/focus-window.test.mjs +8 -20
- package/{testdriver/acceptance-sdk → test/testdriver}/formatted-logging.test.mjs +5 -20
- package/{testdriver/acceptance-sdk → test/testdriver}/hover-image.test.mjs +10 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/hover-text-with-description.test.mjs +7 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/hover-text.test.mjs +5 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/match-image.test.mjs +7 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/press-keys.test.mjs +5 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/prompt.test.mjs +7 -19
- package/{testdriver/acceptance-sdk → test/testdriver}/scroll-keyboard.test.mjs +6 -20
- package/{testdriver/acceptance-sdk → test/testdriver}/scroll-until-image.test.mjs +6 -18
- package/test/testdriver/scroll-until-text.test.mjs +28 -0
- package/{testdriver/acceptance-sdk → test/testdriver}/scroll.test.mjs +12 -21
- package/test/testdriver/setup/lifecycleHelpers.mjs +262 -0
- package/{testdriver/acceptance-sdk → test/testdriver}/setup/testHelpers.mjs +25 -20
- package/test/testdriver/type.test.mjs +45 -0
- package/vitest.config.mjs +11 -56
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/acceptance-linux.yml +0 -75
- package/.github/workflows/acceptance-sdk-tests.yml +0 -133
- package/.github/workflows/acceptance-tests.yml +0 -130
- package/.github/workflows/lint.yml +0 -27
- package/.github/workflows/publish-canary.yml +0 -40
- package/.github/workflows/publish-latest.yml +0 -61
- package/.github/workflows/test-install.yml +0 -29
- package/.vscode/extensions.json +0 -3
- package/.vscode/launch.json +0 -22
- package/.vscode/mcp.json +0 -9
- package/.vscode/settings.json +0 -14
- package/CODEOWNERS +0 -3
- package/MIGRATION.md +0 -389
- package/SDK_README.md +0 -1122
- package/_testdriver/acceptance/assert.yaml +0 -7
- package/_testdriver/acceptance/dashcam.yaml +0 -9
- package/_testdriver/acceptance/drag-and-drop.yaml +0 -49
- package/_testdriver/acceptance/embed.yaml +0 -9
- package/_testdriver/acceptance/exec-js.yaml +0 -29
- package/_testdriver/acceptance/exec-output.yaml +0 -43
- package/_testdriver/acceptance/exec-shell.yaml +0 -40
- package/_testdriver/acceptance/focus-window.yaml +0 -16
- package/_testdriver/acceptance/hover-image.yaml +0 -18
- package/_testdriver/acceptance/hover-text-with-description.yaml +0 -29
- package/_testdriver/acceptance/hover-text.yaml +0 -14
- package/_testdriver/acceptance/if-else.yaml +0 -31
- package/_testdriver/acceptance/match-image.yaml +0 -15
- package/_testdriver/acceptance/press-keys.yaml +0 -35
- package/_testdriver/acceptance/prompt.yaml +0 -11
- package/_testdriver/acceptance/remember.yaml +0 -27
- package/_testdriver/acceptance/screenshots/cart.png +0 -0
- package/_testdriver/acceptance/scroll-keyboard.yaml +0 -34
- package/_testdriver/acceptance/scroll-until-image.yaml +0 -26
- package/_testdriver/acceptance/scroll-until-text.yaml +0 -20
- package/_testdriver/acceptance/scroll.yaml +0 -33
- package/_testdriver/acceptance/snippets/login.yaml +0 -29
- package/_testdriver/acceptance/snippets/match-cart.yaml +0 -8
- package/_testdriver/acceptance/type.yaml +0 -29
- package/_testdriver/behavior/failure.yaml +0 -7
- package/_testdriver/behavior/hover-text.yaml +0 -13
- package/_testdriver/behavior/lifecycle/postrun.yaml +0 -10
- package/_testdriver/behavior/lifecycle/prerun.yaml +0 -8
- package/_testdriver/behavior/lifecycle/provision.yaml +0 -8
- package/_testdriver/behavior/secrets.yaml +0 -7
- package/_testdriver/edge-cases/dashcam-chrome.yaml +0 -8
- package/_testdriver/edge-cases/exec-pwsh-multiline.yaml +0 -10
- package/_testdriver/edge-cases/js-exception.yaml +0 -8
- package/_testdriver/edge-cases/js-promise.yaml +0 -19
- package/_testdriver/edge-cases/lifecycle/postrun.yaml +0 -10
- package/_testdriver/edge-cases/prompt-in-middle.yaml +0 -23
- package/_testdriver/edge-cases/prompt-nested.yaml +0 -7
- package/_testdriver/edge-cases/success-test.yaml +0 -9
- package/_testdriver/examples/android/example.yaml +0 -12
- package/_testdriver/examples/android/lifecycle/postrun.yaml +0 -11
- package/_testdriver/examples/android/lifecycle/provision.yaml +0 -47
- package/_testdriver/examples/android/readme.md +0 -7
- package/_testdriver/examples/chrome-extension/lifecycle/provision.yaml +0 -74
- package/_testdriver/examples/desktop/lifecycle/prerun.yaml +0 -0
- package/_testdriver/examples/desktop/lifecycle/provision.yaml +0 -64
- package/_testdriver/examples/vscode-extension/lifecycle/provision.yaml +0 -73
- package/_testdriver/examples/web/lifecycle/postrun.yaml +0 -7
- package/_testdriver/examples/web/lifecycle/prerun.yaml +0 -22
- package/_testdriver/lifecycle/postrun.yaml +0 -8
- package/_testdriver/lifecycle/prerun.yaml +0 -15
- package/_testdriver/lifecycle/provision.yaml +0 -25
- package/debug-screenshot-1763401388589.png +0 -0
- package/mcp-server/AI_GUIDELINES.md +0 -57
- package/scripts/view-test-results.mjs +0 -96
- package/styles/.vale-config/2-MDX.ini +0 -5
- package/styles/Microsoft/AMPM.yml +0 -9
- package/styles/Microsoft/Accessibility.yml +0 -30
- package/styles/Microsoft/Acronyms.yml +0 -64
- package/styles/Microsoft/Adverbs.yml +0 -272
- package/styles/Microsoft/Auto.yml +0 -11
- package/styles/Microsoft/Avoid.yml +0 -14
- package/styles/Microsoft/Contractions.yml +0 -50
- package/styles/Microsoft/Dashes.yml +0 -13
- package/styles/Microsoft/DateFormat.yml +0 -8
- package/styles/Microsoft/DateNumbers.yml +0 -40
- package/styles/Microsoft/DateOrder.yml +0 -8
- package/styles/Microsoft/Ellipses.yml +0 -9
- package/styles/Microsoft/FirstPerson.yml +0 -16
- package/styles/Microsoft/Foreign.yml +0 -13
- package/styles/Microsoft/Gender.yml +0 -8
- package/styles/Microsoft/GenderBias.yml +0 -42
- package/styles/Microsoft/GeneralURL.yml +0 -11
- package/styles/Microsoft/HeadingAcronyms.yml +0 -7
- package/styles/Microsoft/HeadingColons.yml +0 -8
- package/styles/Microsoft/HeadingPunctuation.yml +0 -13
- package/styles/Microsoft/Headings.yml +0 -28
- package/styles/Microsoft/Hyphens.yml +0 -14
- package/styles/Microsoft/Negative.yml +0 -13
- package/styles/Microsoft/Ordinal.yml +0 -13
- package/styles/Microsoft/OxfordComma.yml +0 -8
- package/styles/Microsoft/Passive.yml +0 -183
- package/styles/Microsoft/Percentages.yml +0 -7
- package/styles/Microsoft/Plurals.yml +0 -7
- package/styles/Microsoft/Quotes.yml +0 -7
- package/styles/Microsoft/RangeTime.yml +0 -13
- package/styles/Microsoft/Semicolon.yml +0 -8
- package/styles/Microsoft/SentenceLength.yml +0 -6
- package/styles/Microsoft/Spacing.yml +0 -8
- package/styles/Microsoft/Suspended.yml +0 -7
- package/styles/Microsoft/Terms.yml +0 -42
- package/styles/Microsoft/URLFormat.yml +0 -9
- package/styles/Microsoft/Units.yml +0 -16
- package/styles/Microsoft/Vocab.yml +0 -25
- package/styles/Microsoft/We.yml +0 -11
- package/styles/Microsoft/Wordiness.yml +0 -127
- package/styles/Microsoft/meta.json +0 -4
- package/styles/alex/Ablist.yml +0 -274
- package/styles/alex/Condescending.yml +0 -16
- package/styles/alex/Gendered.yml +0 -110
- package/styles/alex/LGBTQ.yml +0 -55
- package/styles/alex/OCD.yml +0 -10
- package/styles/alex/Press.yml +0 -12
- package/styles/alex/ProfanityLikely.yml +0 -1289
- package/styles/alex/ProfanityMaybe.yml +0 -282
- package/styles/alex/ProfanityUnlikely.yml +0 -251
- package/styles/alex/README.md +0 -27
- package/styles/alex/Race.yml +0 -85
- package/styles/alex/Suicide.yml +0 -26
- package/styles/alex/meta.json +0 -4
- package/styles/config/vocabularies/Docs/accept.txt +0 -47
- package/styles/config/vocabularies/Docs/reject.txt +0 -4
- package/styles/proselint/Airlinese.yml +0 -8
- package/styles/proselint/AnimalLabels.yml +0 -48
- package/styles/proselint/Annotations.yml +0 -9
- package/styles/proselint/Apologizing.yml +0 -8
- package/styles/proselint/Archaisms.yml +0 -52
- package/styles/proselint/But.yml +0 -8
- package/styles/proselint/Cliches.yml +0 -782
- package/styles/proselint/CorporateSpeak.yml +0 -30
- package/styles/proselint/Currency.yml +0 -5
- package/styles/proselint/Cursing.yml +0 -15
- package/styles/proselint/DateCase.yml +0 -7
- package/styles/proselint/DateMidnight.yml +0 -7
- package/styles/proselint/DateRedundancy.yml +0 -10
- package/styles/proselint/DateSpacing.yml +0 -7
- package/styles/proselint/DenizenLabels.yml +0 -52
- package/styles/proselint/Diacritical.yml +0 -95
- package/styles/proselint/GenderBias.yml +0 -45
- package/styles/proselint/GroupTerms.yml +0 -39
- package/styles/proselint/Hedging.yml +0 -8
- package/styles/proselint/Hyperbole.yml +0 -6
- package/styles/proselint/Jargon.yml +0 -11
- package/styles/proselint/LGBTOffensive.yml +0 -13
- package/styles/proselint/LGBTTerms.yml +0 -15
- package/styles/proselint/Malapropisms.yml +0 -8
- package/styles/proselint/Needless.yml +0 -358
- package/styles/proselint/Nonwords.yml +0 -38
- package/styles/proselint/Oxymorons.yml +0 -22
- package/styles/proselint/P-Value.yml +0 -6
- package/styles/proselint/RASSyndrome.yml +0 -30
- package/styles/proselint/README.md +0 -12
- package/styles/proselint/Skunked.yml +0 -13
- package/styles/proselint/Spelling.yml +0 -17
- package/styles/proselint/Typography.yml +0 -11
- package/styles/proselint/Uncomparables.yml +0 -50
- package/styles/proselint/Very.yml +0 -6
- package/styles/proselint/meta.json +0 -15
- package/styles/write-good/Cliches.yml +0 -702
- package/styles/write-good/E-Prime.yml +0 -32
- package/styles/write-good/Illusions.yml +0 -11
- package/styles/write-good/Passive.yml +0 -183
- package/styles/write-good/README.md +0 -27
- package/styles/write-good/So.yml +0 -5
- package/styles/write-good/ThereIs.yml +0 -6
- package/styles/write-good/TooWordy.yml +0 -221
- package/styles/write-good/Weasel.yml +0 -29
- package/styles/write-good/meta.json +0 -4
- package/test/mcp-example-test.yaml +0 -27
- package/test/test_parser.js +0 -47
- package/testdriver/acceptance-sdk/QUICK_REFERENCE.md +0 -61
- package/testdriver/acceptance-sdk/README.md +0 -128
- package/testdriver/acceptance-sdk/TEST_REPORTING.md +0 -245
- package/testdriver/acceptance-sdk/assert.test.mjs +0 -44
- package/testdriver/acceptance-sdk/scroll-until-text.test.mjs +0 -42
- package/testdriver/acceptance-sdk/setup/lifecycleHelpers.mjs +0 -239
- package/testdriver/acceptance-sdk/type-checking-demo.js +0 -49
- package/testdriver/acceptance-sdk/type.test.mjs +0 -84
- package/vale.ini +0 -18
- package/vitest.config.example.js +0 -19
- package/vitest.config.mjs.bak +0 -44
- /package/docs/{ARCHITECTURE.md → v7/_drafts/architecture.mdx} +0 -0
- /package/docs/{AWESOME_LOGS_QUICK_REF.md → v7/_drafts/awesome-logs-quick-ref.mdx} +0 -0
- /package/{CONTRIBUTING.md → docs/v7/_drafts/contributing.mdx} +0 -0
- /package/docs/v7/{guides → _drafts}/migration.mdx +0 -0
- /package/{PLUGIN_MIGRATION.md → docs/v7/_drafts/plugin-migration.mdx} +0 -0
- /package/{PROMPT_CACHE.md → docs/v7/_drafts/prompt-cache.mdx} +0 -0
- /package/docs/{SDK_AWESOME_LOGS.md → v7/_drafts/sdk-awesome-logs.mdx} +0 -0
- /package/docs/{sdk-browser-rendering.md → v7/_drafts/sdk-browser-rendering.mdx} +0 -0
- /package/{SDK_LOGGING.md → docs/v7/_drafts/sdk-logging.mdx} +0 -0
- /package/{SDK_MIGRATION.md → docs/v7/_drafts/sdk-migration.mdx} +0 -0
- /package/docs/{TEST_RECORDING.md → v7/_drafts/test-recording.mdx} +0 -0
- /package/docs/v7/{README.md → overview/readme.mdx} +0 -0
- /package/{debug-locate-response.js → test/manual/debug-locate-response.js} +0 -0
- /package/{test-find-api.js → test/manual/test-find-api.js} +0 -0
- /package/{test-prompt-cache.js → test/manual/test-prompt-cache.js} +0 -0
- /package/{test-sandbox-render.js → test/manual/test-sandbox-render.js} +0 -0
- /package/{test-sdk-methods.js → test/manual/test-sdk-methods.js} +0 -0
- /package/{test-sdk-refactor.js → test/manual/test-sdk-refactor.js} +0 -0
- /package/{test-stack-trace.mjs → test/manual/test-stack-trace.mjs} +0 -0
- /package/{verify-element-api.js → test/manual/verify-element-api.js} +0 -0
- /package/{verify-types.js → test/manual/verify-types.js} +0 -0
- /package/{testdriver/acceptance-sdk → test/testdriver}/setup/globalTeardown.mjs +0 -0
- /package/{testdriver/acceptance-sdk → test/testdriver}/setup/vitestSetup.mjs +0 -0
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Enterprise Ready"
|
|
3
|
+
description: "Security, compliance, and scale for the largest organizations"
|
|
4
|
+
icon: "building"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
TestDriver Enterprise provides the security, control, and scalability that large organizations demand.
|
|
8
|
+
|
|
9
|
+
## On-Premise Deployment
|
|
10
|
+
|
|
11
|
+
Run TestDriver entirely within your infrastructure:
|
|
12
|
+
|
|
13
|
+
<Card title="Deployment Options" icon="server">
|
|
14
|
+
- **Air-Gapped Installation** - No external connectivity required
|
|
15
|
+
- **Custom VPC** - Deploy in your AWS/Azure/GCP environment
|
|
16
|
+
- **Kubernetes** - Helm charts for container orchestration
|
|
17
|
+
- **Docker Compose** - Simple self-hosted deployment
|
|
18
|
+
- **Bare Metal** - Install on your own hardware
|
|
19
|
+
</Card>
|
|
20
|
+
|
|
21
|
+
```yaml docker-compose.yml
|
|
22
|
+
version: '3.8'
|
|
23
|
+
services:
|
|
24
|
+
testdriver-api:
|
|
25
|
+
image: testdriver/api:latest
|
|
26
|
+
environment:
|
|
27
|
+
- LICENSE_KEY=${TESTDRIVER_LICENSE}
|
|
28
|
+
- DATABASE_URL=${DATABASE_URL}
|
|
29
|
+
- REDIS_URL=${REDIS_URL}
|
|
30
|
+
ports:
|
|
31
|
+
- "3000:3000"
|
|
32
|
+
|
|
33
|
+
testdriver-worker:
|
|
34
|
+
image: testdriver/worker:latest
|
|
35
|
+
environment:
|
|
36
|
+
- API_URL=http://testdriver-api:3000
|
|
37
|
+
volumes:
|
|
38
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
39
|
+
|
|
40
|
+
testdriver-scheduler:
|
|
41
|
+
image: testdriver/scheduler:latest
|
|
42
|
+
environment:
|
|
43
|
+
- API_URL=http://testdriver-api:3000
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
[Complete self-hosting guide](/v7/guides/self-hosting)
|
|
47
|
+
|
|
48
|
+
## Hardened Security
|
|
49
|
+
|
|
50
|
+
Enterprise-grade security features:
|
|
51
|
+
|
|
52
|
+
<AccordionGroup>
|
|
53
|
+
<Accordion title="SOC 2 Type II Certified">
|
|
54
|
+
TestDriver is SOC 2 Type II certified, ensuring:
|
|
55
|
+
|
|
56
|
+
- Rigorous security controls
|
|
57
|
+
- Regular third-party audits
|
|
58
|
+
- Documented security policies
|
|
59
|
+
- Incident response procedures
|
|
60
|
+
- Continuous monitoring
|
|
61
|
+
|
|
62
|
+
[View security documentation](https://testdriver.ai/security)
|
|
63
|
+
</Accordion>
|
|
64
|
+
|
|
65
|
+
<Accordion title="Data Encryption">
|
|
66
|
+
**At Rest:**
|
|
67
|
+
- AES-256 encryption for all stored data
|
|
68
|
+
- Encrypted database volumes
|
|
69
|
+
- Encrypted S3 buckets
|
|
70
|
+
- Encrypted cache storage
|
|
71
|
+
|
|
72
|
+
**In Transit:**
|
|
73
|
+
- TLS 1.3 for all connections
|
|
74
|
+
- Certificate pinning
|
|
75
|
+
- HTTPS-only communication
|
|
76
|
+
- VPN support for sandboxes
|
|
77
|
+
</Accordion>
|
|
78
|
+
|
|
79
|
+
<Accordion title="Network Isolation">
|
|
80
|
+
Each sandbox runs in complete isolation:
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
const { testdriver } = await chrome(context, {
|
|
84
|
+
url: 'https://internal-app.company.com',
|
|
85
|
+
network: {
|
|
86
|
+
isolated: true, // Isolated network namespace
|
|
87
|
+
vpn: 'company-vpn', // Connect through VPN
|
|
88
|
+
proxy: 'proxy.company.com:8080',
|
|
89
|
+
allowlist: ['*.company.com']
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
- Isolated network namespaces
|
|
95
|
+
- No cross-sandbox communication
|
|
96
|
+
- Firewall rules per sandbox
|
|
97
|
+
- VPN integration
|
|
98
|
+
- Proxy support
|
|
99
|
+
</Accordion>
|
|
100
|
+
|
|
101
|
+
<Accordion title="Audit Logging">
|
|
102
|
+
Complete audit trail of all activities:
|
|
103
|
+
|
|
104
|
+
- User authentication events
|
|
105
|
+
- API calls and parameters
|
|
106
|
+
- Test executions
|
|
107
|
+
- Sandbox provisioning
|
|
108
|
+
- Configuration changes
|
|
109
|
+
- Data access logs
|
|
110
|
+
|
|
111
|
+
```javascript
|
|
112
|
+
// Audit logs include:
|
|
113
|
+
{
|
|
114
|
+
timestamp: '2024-12-02T10:15:30Z',
|
|
115
|
+
user: 'user@company.com',
|
|
116
|
+
action: 'test.run',
|
|
117
|
+
resource: 'login.test.js',
|
|
118
|
+
sandbox: 'i-0abc123def',
|
|
119
|
+
ip: '10.0.1.45',
|
|
120
|
+
result: 'success'
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Export to SIEM systems: Splunk, Datadog, ELK Stack
|
|
125
|
+
</Accordion>
|
|
126
|
+
|
|
127
|
+
<Accordion title="Role-Based Access Control (RBAC)">
|
|
128
|
+
Granular permissions management:
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
roles:
|
|
132
|
+
- name: developer
|
|
133
|
+
permissions:
|
|
134
|
+
- tests.read
|
|
135
|
+
- tests.write
|
|
136
|
+
- tests.run
|
|
137
|
+
|
|
138
|
+
- name: qa-lead
|
|
139
|
+
permissions:
|
|
140
|
+
- tests.*
|
|
141
|
+
- sandboxes.manage
|
|
142
|
+
- reports.view
|
|
143
|
+
|
|
144
|
+
- name: admin
|
|
145
|
+
permissions:
|
|
146
|
+
- "*"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
- Team-based access control
|
|
150
|
+
- Resource-level permissions
|
|
151
|
+
- API key scoping
|
|
152
|
+
- SSO integration
|
|
153
|
+
</Accordion>
|
|
154
|
+
|
|
155
|
+
<Accordion title="Compliance">
|
|
156
|
+
Meet regulatory requirements:
|
|
157
|
+
|
|
158
|
+
- **GDPR** - EU data protection compliance
|
|
159
|
+
- **HIPAA** - Healthcare data protection
|
|
160
|
+
- **SOX** - Financial controls compliance
|
|
161
|
+
- **ISO 27001** - Information security management
|
|
162
|
+
- **FedRAMP** - US government cloud security (in progress)
|
|
163
|
+
|
|
164
|
+
Data residency options:
|
|
165
|
+
- US (us-east-1, us-west-2)
|
|
166
|
+
- EU (eu-west-1, eu-central-1)
|
|
167
|
+
- UK (eu-west-2)
|
|
168
|
+
- Asia Pacific (ap-southeast-1)
|
|
169
|
+
</Accordion>
|
|
170
|
+
</AccordionGroup>
|
|
171
|
+
|
|
172
|
+
## Authentication & SSO
|
|
173
|
+
|
|
174
|
+
Enterprise authentication options:
|
|
175
|
+
|
|
176
|
+
<Tabs>
|
|
177
|
+
<Tab title="SAML 2.0">
|
|
178
|
+
```javascript
|
|
179
|
+
// Configure SAML authentication
|
|
180
|
+
{
|
|
181
|
+
"auth": {
|
|
182
|
+
"type": "saml",
|
|
183
|
+
"entryPoint": "https://idp.company.com/sso",
|
|
184
|
+
"issuer": "testdriver",
|
|
185
|
+
"cert": "MIIDXTCCAkWgAwIBAgIJAK..."
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Supported providers:
|
|
191
|
+
- Okta
|
|
192
|
+
- Azure AD
|
|
193
|
+
- OneLogin
|
|
194
|
+
- Auth0
|
|
195
|
+
- Google Workspace
|
|
196
|
+
</Tab>
|
|
197
|
+
|
|
198
|
+
<Tab title="LDAP/Active Directory">
|
|
199
|
+
```javascript
|
|
200
|
+
{
|
|
201
|
+
"auth": {
|
|
202
|
+
"type": "ldap",
|
|
203
|
+
"url": "ldaps://ldap.company.com:636",
|
|
204
|
+
"bindDN": "cn=admin,dc=company,dc=com",
|
|
205
|
+
"searchBase": "ou=users,dc=company,dc=com"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
</Tab>
|
|
210
|
+
|
|
211
|
+
<Tab title="OAuth 2.0 / OIDC">
|
|
212
|
+
```javascript
|
|
213
|
+
{
|
|
214
|
+
"auth": {
|
|
215
|
+
"type": "oauth2",
|
|
216
|
+
"authorizationURL": "https://auth.company.com/oauth/authorize",
|
|
217
|
+
"tokenURL": "https://auth.company.com/oauth/token",
|
|
218
|
+
"clientID": "testdriver-client"
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
</Tab>
|
|
223
|
+
</Tabs>
|
|
224
|
+
|
|
225
|
+
## Custom Golden Images
|
|
226
|
+
|
|
227
|
+
Pre-configure your test environments:
|
|
228
|
+
|
|
229
|
+
```javascript
|
|
230
|
+
const { testdriver } = await chrome(context, {
|
|
231
|
+
url: 'https://internal-app.company.com',
|
|
232
|
+
goldenImage: 'company-chrome-base-v1.2',
|
|
233
|
+
os: 'linux'
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
<Card title="Golden Image Features" icon="image">
|
|
238
|
+
**Include in your golden images:**
|
|
239
|
+
|
|
240
|
+
- Company certificates and CA bundles
|
|
241
|
+
- Internal proxy configurations
|
|
242
|
+
- Pre-installed dependencies
|
|
243
|
+
- Custom browser extensions
|
|
244
|
+
- Development tools (Git, Node, etc.)
|
|
245
|
+
- Company fonts and assets
|
|
246
|
+
- Environment variables
|
|
247
|
+
- SSH keys and credentials
|
|
248
|
+
- Custom OS configurations
|
|
249
|
+
</Card>
|
|
250
|
+
|
|
251
|
+
### Creating Golden Images
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Start from base image
|
|
255
|
+
testdriver image create --base ubuntu-22.04 --name company-base
|
|
256
|
+
|
|
257
|
+
# Install dependencies
|
|
258
|
+
testdriver image exec company-base -- bash -c "
|
|
259
|
+
apt-get update
|
|
260
|
+
apt-get install -y ca-certificates
|
|
261
|
+
cp /tmp/company-ca.crt /usr/local/share/ca-certificates/
|
|
262
|
+
update-ca-certificates
|
|
263
|
+
"
|
|
264
|
+
|
|
265
|
+
# Configure proxy
|
|
266
|
+
testdriver image exec company-base -- bash -c "
|
|
267
|
+
echo 'export HTTP_PROXY=http://proxy.company.com:8080' >> /etc/environment
|
|
268
|
+
echo 'export HTTPS_PROXY=http://proxy.company.com:8080' >> /etc/environment
|
|
269
|
+
"
|
|
270
|
+
|
|
271
|
+
# Save image
|
|
272
|
+
testdriver image save company-base --version v1.2
|
|
273
|
+
|
|
274
|
+
# Use in tests
|
|
275
|
+
testdriver sandbox spawn --image company-base:v1.2
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Unlimited Usage
|
|
279
|
+
|
|
280
|
+
Enterprise plans include:
|
|
281
|
+
|
|
282
|
+
<CardGroup cols={2}>
|
|
283
|
+
<Card title="Unlimited Tests" icon="infinity">
|
|
284
|
+
No limits on:
|
|
285
|
+
- Test executions
|
|
286
|
+
- API calls
|
|
287
|
+
- Concurrent tests
|
|
288
|
+
- Test duration
|
|
289
|
+
</Card>
|
|
290
|
+
|
|
291
|
+
<Card title="Unlimited Sandboxes" icon="server">
|
|
292
|
+
No limits on:
|
|
293
|
+
- Sandbox hours
|
|
294
|
+
- Concurrent sandboxes
|
|
295
|
+
- Sandbox storage
|
|
296
|
+
- Network bandwidth
|
|
297
|
+
</Card>
|
|
298
|
+
|
|
299
|
+
<Card title="Unlimited Team" icon="users">
|
|
300
|
+
No limits on:
|
|
301
|
+
- Team members
|
|
302
|
+
- Test projects
|
|
303
|
+
- API keys
|
|
304
|
+
- Integrations
|
|
305
|
+
</Card>
|
|
306
|
+
|
|
307
|
+
<Card title="Unlimited Storage" icon="database">
|
|
308
|
+
No limits on:
|
|
309
|
+
- Dashcam recordings
|
|
310
|
+
- Test artifacts
|
|
311
|
+
- Cache storage
|
|
312
|
+
- Log retention
|
|
313
|
+
</Card>
|
|
314
|
+
</CardGroup>
|
|
315
|
+
|
|
316
|
+
## Custom SLA
|
|
317
|
+
|
|
318
|
+
Enterprise support includes:
|
|
319
|
+
|
|
320
|
+
<Card title="Service Level Agreement" icon="file-contract">
|
|
321
|
+
- **99.9% uptime guarantee** - Guaranteed availability
|
|
322
|
+
- **< 1 hour response time** - Priority support tickets
|
|
323
|
+
- **Dedicated support engineer** - Named contact
|
|
324
|
+
- **24/7 emergency hotline** - Critical issues
|
|
325
|
+
- **Quarterly business reviews** - Performance optimization
|
|
326
|
+
- **Private Slack channel** - Direct team access
|
|
327
|
+
- **Custom training** - Onboarding and best practices
|
|
328
|
+
</Card>
|
|
329
|
+
|
|
330
|
+
## IP Allowlisting
|
|
331
|
+
|
|
332
|
+
Restrict access to your infrastructure:
|
|
333
|
+
|
|
334
|
+
```javascript
|
|
335
|
+
// Enterprise dashboard configuration
|
|
336
|
+
{
|
|
337
|
+
"security": {
|
|
338
|
+
"ipAllowlist": [
|
|
339
|
+
"10.0.0.0/8", // Corporate network
|
|
340
|
+
"203.0.113.0/24", // VPN range
|
|
341
|
+
"198.51.100.42/32" // Specific IP
|
|
342
|
+
],
|
|
343
|
+
"apiKeyRestrictions": {
|
|
344
|
+
"ipAllowlist": ["10.0.0.0/8"],
|
|
345
|
+
"referrerAllowlist": ["https://*.company.com"]
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
## Secret Management
|
|
352
|
+
|
|
353
|
+
Integrate with enterprise secret managers:
|
|
354
|
+
|
|
355
|
+
<Tabs>
|
|
356
|
+
<Tab title="HashiCorp Vault">
|
|
357
|
+
```javascript
|
|
358
|
+
import { VaultSecretProvider } from 'testdriverai/secrets';
|
|
359
|
+
|
|
360
|
+
const secrets = new VaultSecretProvider({
|
|
361
|
+
url: 'https://vault.company.com',
|
|
362
|
+
token: process.env.VAULT_TOKEN
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
const password = await secrets.get('prod/db/password');
|
|
366
|
+
|
|
367
|
+
await testdriver.find('password input').type(password, { secret: true });
|
|
368
|
+
```
|
|
369
|
+
</Tab>
|
|
370
|
+
|
|
371
|
+
<Tab title="AWS Secrets Manager">
|
|
372
|
+
```javascript
|
|
373
|
+
import { AWSSecretsProvider } from 'testdriverai/secrets';
|
|
374
|
+
|
|
375
|
+
const secrets = new AWSSecretsProvider({
|
|
376
|
+
region: 'us-east-1'
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
const apiKey = await secrets.get('prod/api-key');
|
|
380
|
+
```
|
|
381
|
+
</Tab>
|
|
382
|
+
|
|
383
|
+
<Tab title="Azure Key Vault">
|
|
384
|
+
```javascript
|
|
385
|
+
import { AzureKeyVaultProvider } from 'testdriverai/secrets';
|
|
386
|
+
|
|
387
|
+
const secrets = new AzureKeyVaultProvider({
|
|
388
|
+
vaultUrl: 'https://company-kv.vault.azure.net'
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
const token = await secrets.get('prod-access-token');
|
|
392
|
+
```
|
|
393
|
+
</Tab>
|
|
394
|
+
</Tabs>
|
|
395
|
+
|
|
396
|
+
## Private Docker Registry
|
|
397
|
+
|
|
398
|
+
Use your own container registry:
|
|
399
|
+
|
|
400
|
+
```yaml docker-compose.yml
|
|
401
|
+
services:
|
|
402
|
+
testdriver-api:
|
|
403
|
+
image: registry.company.com/testdriver/api:latest
|
|
404
|
+
imagePullSecrets:
|
|
405
|
+
- name: company-registry-secret
|
|
406
|
+
|
|
407
|
+
testdriver-worker:
|
|
408
|
+
image: registry.company.com/testdriver/worker:latest
|
|
409
|
+
imagePullSecrets:
|
|
410
|
+
- name: company-registry-secret
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
## Dedicated Infrastructure
|
|
414
|
+
|
|
415
|
+
Enterprise customers can request:
|
|
416
|
+
|
|
417
|
+
- **Dedicated API servers** - No multi-tenancy
|
|
418
|
+
- **Dedicated database** - Isolated data storage
|
|
419
|
+
- **Dedicated sandboxes** - Private compute fleet
|
|
420
|
+
- **Custom instance types** - GPU, high-memory, etc.
|
|
421
|
+
- **Private network** - Direct Connect, VPN
|
|
422
|
+
- **Colocation** - Deploy in your data center
|
|
423
|
+
|
|
424
|
+
## Cost Control
|
|
425
|
+
|
|
426
|
+
Enterprise features for managing costs:
|
|
427
|
+
|
|
428
|
+
```javascript
|
|
429
|
+
// Set budget alerts
|
|
430
|
+
{
|
|
431
|
+
"billing": {
|
|
432
|
+
"budget": {
|
|
433
|
+
"monthly": 50000,
|
|
434
|
+
"alerts": [
|
|
435
|
+
{ "threshold": 0.5, "notify": ["finance@company.com"] },
|
|
436
|
+
{ "threshold": 0.8, "notify": ["finance@company.com", "cto@company.com"] },
|
|
437
|
+
{ "threshold": 1.0, "action": "pause_tests" }
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
"limits": {
|
|
441
|
+
"maxConcurrentSandboxes": 100,
|
|
442
|
+
"maxSandboxDuration": 7200000, // 2 hours
|
|
443
|
+
"maxTestsPerDay": 10000
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
## Compliance Reports
|
|
450
|
+
|
|
451
|
+
Automated compliance reporting:
|
|
452
|
+
|
|
453
|
+
- **Test coverage reports** - Code coverage metrics
|
|
454
|
+
- **Security scan results** - Vulnerability reports
|
|
455
|
+
- **Audit logs** - Complete activity logs
|
|
456
|
+
- **Performance metrics** - SLA compliance
|
|
457
|
+
- **Cost reports** - Resource usage and billing
|
|
458
|
+
|
|
459
|
+
Export formats: PDF, CSV, JSON
|
|
460
|
+
|
|
461
|
+
## Migration Support
|
|
462
|
+
|
|
463
|
+
Enterprise onboarding includes:
|
|
464
|
+
|
|
465
|
+
<Steps>
|
|
466
|
+
<Step title="Assessment">
|
|
467
|
+
Evaluate current testing infrastructure and requirements
|
|
468
|
+
</Step>
|
|
469
|
+
|
|
470
|
+
<Step title="Planning">
|
|
471
|
+
Design migration strategy and timeline
|
|
472
|
+
</Step>
|
|
473
|
+
|
|
474
|
+
<Step title="Pilot">
|
|
475
|
+
Run pilot tests with small subset of suite
|
|
476
|
+
</Step>
|
|
477
|
+
|
|
478
|
+
<Step title="Migration">
|
|
479
|
+
Migrate tests in phases with rollback plan
|
|
480
|
+
</Step>
|
|
481
|
+
|
|
482
|
+
<Step title="Training">
|
|
483
|
+
Train team on TestDriver best practices
|
|
484
|
+
</Step>
|
|
485
|
+
|
|
486
|
+
<Step title="Optimization">
|
|
487
|
+
Optimize test performance and costs
|
|
488
|
+
</Step>
|
|
489
|
+
</Steps>
|
|
490
|
+
|
|
491
|
+
## Enterprise Pricing
|
|
492
|
+
|
|
493
|
+
Contact sales for custom pricing:
|
|
494
|
+
|
|
495
|
+
<Card title="Get Enterprise Quote" icon="envelope" href="https://testdriver.ai/enterprise">
|
|
496
|
+
- Volume discounts available
|
|
497
|
+
- Custom contract terms
|
|
498
|
+
- Flexible payment options
|
|
499
|
+
- Multi-year agreements
|
|
500
|
+
- Prepaid credits
|
|
501
|
+
|
|
502
|
+
**Email:** enterprise@testdriver.ai
|
|
503
|
+
**Phone:** +1 (555) 123-4567
|
|
504
|
+
</Card>
|
|
505
|
+
|
|
506
|
+
## Learn More
|
|
507
|
+
|
|
508
|
+
<CardGroup cols={2}>
|
|
509
|
+
<Card
|
|
510
|
+
title="Self-Hosting Guide"
|
|
511
|
+
icon="server"
|
|
512
|
+
href="/v7/guides/self-hosting"
|
|
513
|
+
>
|
|
514
|
+
Deploy TestDriver on-premise
|
|
515
|
+
</Card>
|
|
516
|
+
|
|
517
|
+
<Card
|
|
518
|
+
title="Security Documentation"
|
|
519
|
+
icon="shield"
|
|
520
|
+
href="https://testdriver.ai/security"
|
|
521
|
+
>
|
|
522
|
+
Security white papers and audits
|
|
523
|
+
</Card>
|
|
524
|
+
|
|
525
|
+
<Card
|
|
526
|
+
title="Compliance"
|
|
527
|
+
icon="file-contract"
|
|
528
|
+
href="https://testdriver.ai/compliance"
|
|
529
|
+
>
|
|
530
|
+
Compliance certifications
|
|
531
|
+
</Card>
|
|
532
|
+
|
|
533
|
+
<Card
|
|
534
|
+
title="Contact Sales"
|
|
535
|
+
icon="handshake"
|
|
536
|
+
href="https://testdriver.ai/enterprise"
|
|
537
|
+
>
|
|
538
|
+
Get enterprise quote
|
|
539
|
+
</Card>
|
|
540
|
+
</CardGroup>
|