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.
Files changed (324) hide show
  1. package/.env.example +2 -0
  2. package/.github/workflows/linux-tests.yml +28 -0
  3. package/README.md +126 -0
  4. package/agent/index.js +7 -9
  5. package/agent/interface.js +13 -2
  6. package/agent/lib/commands.js +795 -136
  7. package/agent/lib/redraw.js +124 -39
  8. package/agent/lib/sandbox.js +40 -3
  9. package/agent/lib/sdk.js +21 -0
  10. package/agent/lib/valid-version.js +2 -2
  11. package/debugger/index.html +1 -1
  12. package/docs/docs.json +86 -71
  13. package/docs/guide/best-practices-polling.mdx +154 -0
  14. package/docs/v6/getting-started/self-hosting.mdx +3 -2
  15. package/docs/v7/_drafts/agents.mdx +852 -0
  16. package/docs/v7/_drafts/auto-cache-key.mdx +167 -0
  17. package/docs/v7/_drafts/best-practices.mdx +486 -0
  18. package/docs/v7/_drafts/caching-ai.mdx +215 -0
  19. package/docs/v7/_drafts/caching-selectors.mdx +400 -0
  20. package/docs/v7/_drafts/caching.mdx +366 -0
  21. package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
  22. package/docs/v7/_drafts/core.mdx +459 -0
  23. package/docs/v7/_drafts/dashcam-title-feature.mdx +89 -0
  24. package/docs/v7/_drafts/debugging.mdx +349 -0
  25. package/docs/v7/_drafts/error-handling.mdx +501 -0
  26. package/docs/v7/_drafts/faq.mdx +393 -0
  27. package/docs/v7/_drafts/hooks.mdx +360 -0
  28. package/docs/v7/_drafts/implementation-plan.mdx +994 -0
  29. package/docs/v7/_drafts/init-command.mdx +95 -0
  30. package/docs/v7/_drafts/optimal-sdk-design.mdx +1348 -0
  31. package/docs/v7/_drafts/performance.mdx +517 -0
  32. package/docs/v7/_drafts/presets.mdx +210 -0
  33. package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
  34. package/docs/v7/_drafts/provision.mdx +266 -0
  35. package/docs/{QUICK_START_TEST_RECORDING.md → v7/_drafts/quick-start-test-recording.mdx} +3 -3
  36. package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
  37. package/docs/v7/{guides → _drafts}/self-hosting.mdx +1 -1
  38. package/docs/v7/_drafts/troubleshooting.mdx +526 -0
  39. package/docs/v7/_drafts/vitest-plugin.mdx +477 -0
  40. package/docs/v7/_drafts/vitest.mdx +535 -0
  41. package/docs/v7/api/{ai.mdx → act.mdx} +24 -24
  42. package/docs/v7/api/client.mdx +1 -1
  43. package/docs/v7/api/dashcam.mdx +497 -0
  44. package/docs/v7/api/doubleClick.mdx +102 -0
  45. package/docs/v7/api/elements.mdx +143 -41
  46. package/docs/v7/api/find.mdx +258 -0
  47. package/docs/v7/api/mouseDown.mdx +161 -0
  48. package/docs/v7/api/mouseUp.mdx +164 -0
  49. package/docs/v7/api/rightClick.mdx +123 -0
  50. package/docs/v7/api/type.mdx +51 -7
  51. package/docs/v7/features/ai-native.mdx +427 -0
  52. package/docs/v7/features/easy-to-write.mdx +351 -0
  53. package/docs/v7/features/enterprise.mdx +540 -0
  54. package/docs/v7/features/fast.mdx +424 -0
  55. package/docs/v7/features/observable.mdx +623 -0
  56. package/docs/v7/features/powerful.mdx +531 -0
  57. package/docs/v7/features/scalable.mdx +417 -0
  58. package/docs/v7/features/stable.mdx +514 -0
  59. package/docs/v7/getting-started/configuration.mdx +380 -0
  60. package/docs/v7/getting-started/generating-tests.mdx +525 -0
  61. package/docs/v7/getting-started/installation.mdx +486 -0
  62. package/docs/v7/getting-started/quickstart.mdx +320 -141
  63. package/docs/v7/getting-started/running-and-debugging.mdx +511 -0
  64. package/docs/v7/getting-started/setting-up-in-ci.mdx +612 -0
  65. package/docs/v7/getting-started/writing-tests.mdx +535 -0
  66. package/docs/v7/overview/what-is-testdriver.mdx +398 -0
  67. package/docs/v7/platforms/linux.mdx +308 -0
  68. package/docs/v7/platforms/macos.mdx +433 -0
  69. package/docs/v7/platforms/windows.mdx +430 -0
  70. package/docs/v7/playwright.mdx +3 -3
  71. package/docs/v7/presets/chrome-extension.mdx +223 -0
  72. package/docs/v7/presets/chrome.mdx +303 -0
  73. package/docs/v7/presets/electron.mdx +453 -0
  74. package/docs/v7/presets/vscode.mdx +417 -0
  75. package/docs/v7/presets/webapp.mdx +396 -0
  76. package/examples/run-tests-with-recording.sh +2 -2
  77. package/interfaces/cli/commands/init.js +358 -0
  78. package/interfaces/vitest-plugin.mjs +393 -103
  79. package/lib/core/Dashcam.js +506 -0
  80. package/lib/core/index.d.ts +150 -0
  81. package/lib/core/index.js +12 -0
  82. package/lib/presets/index.mjs +331 -0
  83. package/lib/vitest/hooks.d.ts +119 -0
  84. package/lib/vitest/hooks.mjs +316 -0
  85. package/lib/vitest/setup.mjs +44 -0
  86. package/package.json +13 -3
  87. package/sdk.d.ts +350 -44
  88. package/sdk.js +818 -105
  89. package/{self-hosted.yml → setup/aws/self-hosted.yml} +1 -1
  90. package/test/manual/test-console-logs.test.mjs +42 -0
  91. package/test/manual/test-init.sh +54 -0
  92. package/test/manual/test-provision-auth.mjs +22 -0
  93. package/test/testdriver/assert.test.mjs +41 -0
  94. package/test/testdriver/auto-cache-key-demo.test.mjs +56 -0
  95. package/test/testdriver/chrome-extension.test.mjs +89 -0
  96. package/{testdriver/acceptance-sdk → test/testdriver}/drag-and-drop.test.mjs +7 -19
  97. package/{testdriver/acceptance-sdk → test/testdriver}/element-not-found.test.mjs +6 -19
  98. package/{testdriver/acceptance-sdk → test/testdriver}/exec-js.test.mjs +6 -18
  99. package/{testdriver/acceptance-sdk → test/testdriver}/exec-output.test.mjs +9 -21
  100. package/{testdriver/acceptance-sdk → test/testdriver}/exec-pwsh.test.mjs +14 -26
  101. package/{testdriver/acceptance-sdk → test/testdriver}/focus-window.test.mjs +8 -20
  102. package/{testdriver/acceptance-sdk → test/testdriver}/formatted-logging.test.mjs +5 -20
  103. package/{testdriver/acceptance-sdk → test/testdriver}/hover-image.test.mjs +10 -19
  104. package/{testdriver/acceptance-sdk → test/testdriver}/hover-text-with-description.test.mjs +7 -19
  105. package/{testdriver/acceptance-sdk → test/testdriver}/hover-text.test.mjs +5 -19
  106. package/{testdriver/acceptance-sdk → test/testdriver}/match-image.test.mjs +7 -19
  107. package/{testdriver/acceptance-sdk → test/testdriver}/press-keys.test.mjs +5 -19
  108. package/{testdriver/acceptance-sdk → test/testdriver}/prompt.test.mjs +7 -19
  109. package/{testdriver/acceptance-sdk → test/testdriver}/scroll-keyboard.test.mjs +6 -20
  110. package/{testdriver/acceptance-sdk → test/testdriver}/scroll-until-image.test.mjs +6 -18
  111. package/test/testdriver/scroll-until-text.test.mjs +28 -0
  112. package/{testdriver/acceptance-sdk → test/testdriver}/scroll.test.mjs +12 -21
  113. package/test/testdriver/setup/lifecycleHelpers.mjs +262 -0
  114. package/{testdriver/acceptance-sdk → test/testdriver}/setup/testHelpers.mjs +25 -20
  115. package/test/testdriver/type.test.mjs +45 -0
  116. package/vitest.config.mjs +11 -56
  117. package/.github/dependabot.yml +0 -11
  118. package/.github/workflows/acceptance-linux.yml +0 -75
  119. package/.github/workflows/acceptance-sdk-tests.yml +0 -133
  120. package/.github/workflows/acceptance-tests.yml +0 -130
  121. package/.github/workflows/lint.yml +0 -27
  122. package/.github/workflows/publish-canary.yml +0 -40
  123. package/.github/workflows/publish-latest.yml +0 -61
  124. package/.github/workflows/test-install.yml +0 -29
  125. package/.vscode/extensions.json +0 -3
  126. package/.vscode/launch.json +0 -22
  127. package/.vscode/mcp.json +0 -9
  128. package/.vscode/settings.json +0 -14
  129. package/CODEOWNERS +0 -3
  130. package/MIGRATION.md +0 -389
  131. package/SDK_README.md +0 -1122
  132. package/_testdriver/acceptance/assert.yaml +0 -7
  133. package/_testdriver/acceptance/dashcam.yaml +0 -9
  134. package/_testdriver/acceptance/drag-and-drop.yaml +0 -49
  135. package/_testdriver/acceptance/embed.yaml +0 -9
  136. package/_testdriver/acceptance/exec-js.yaml +0 -29
  137. package/_testdriver/acceptance/exec-output.yaml +0 -43
  138. package/_testdriver/acceptance/exec-shell.yaml +0 -40
  139. package/_testdriver/acceptance/focus-window.yaml +0 -16
  140. package/_testdriver/acceptance/hover-image.yaml +0 -18
  141. package/_testdriver/acceptance/hover-text-with-description.yaml +0 -29
  142. package/_testdriver/acceptance/hover-text.yaml +0 -14
  143. package/_testdriver/acceptance/if-else.yaml +0 -31
  144. package/_testdriver/acceptance/match-image.yaml +0 -15
  145. package/_testdriver/acceptance/press-keys.yaml +0 -35
  146. package/_testdriver/acceptance/prompt.yaml +0 -11
  147. package/_testdriver/acceptance/remember.yaml +0 -27
  148. package/_testdriver/acceptance/screenshots/cart.png +0 -0
  149. package/_testdriver/acceptance/scroll-keyboard.yaml +0 -34
  150. package/_testdriver/acceptance/scroll-until-image.yaml +0 -26
  151. package/_testdriver/acceptance/scroll-until-text.yaml +0 -20
  152. package/_testdriver/acceptance/scroll.yaml +0 -33
  153. package/_testdriver/acceptance/snippets/login.yaml +0 -29
  154. package/_testdriver/acceptance/snippets/match-cart.yaml +0 -8
  155. package/_testdriver/acceptance/type.yaml +0 -29
  156. package/_testdriver/behavior/failure.yaml +0 -7
  157. package/_testdriver/behavior/hover-text.yaml +0 -13
  158. package/_testdriver/behavior/lifecycle/postrun.yaml +0 -10
  159. package/_testdriver/behavior/lifecycle/prerun.yaml +0 -8
  160. package/_testdriver/behavior/lifecycle/provision.yaml +0 -8
  161. package/_testdriver/behavior/secrets.yaml +0 -7
  162. package/_testdriver/edge-cases/dashcam-chrome.yaml +0 -8
  163. package/_testdriver/edge-cases/exec-pwsh-multiline.yaml +0 -10
  164. package/_testdriver/edge-cases/js-exception.yaml +0 -8
  165. package/_testdriver/edge-cases/js-promise.yaml +0 -19
  166. package/_testdriver/edge-cases/lifecycle/postrun.yaml +0 -10
  167. package/_testdriver/edge-cases/prompt-in-middle.yaml +0 -23
  168. package/_testdriver/edge-cases/prompt-nested.yaml +0 -7
  169. package/_testdriver/edge-cases/success-test.yaml +0 -9
  170. package/_testdriver/examples/android/example.yaml +0 -12
  171. package/_testdriver/examples/android/lifecycle/postrun.yaml +0 -11
  172. package/_testdriver/examples/android/lifecycle/provision.yaml +0 -47
  173. package/_testdriver/examples/android/readme.md +0 -7
  174. package/_testdriver/examples/chrome-extension/lifecycle/provision.yaml +0 -74
  175. package/_testdriver/examples/desktop/lifecycle/prerun.yaml +0 -0
  176. package/_testdriver/examples/desktop/lifecycle/provision.yaml +0 -64
  177. package/_testdriver/examples/vscode-extension/lifecycle/provision.yaml +0 -73
  178. package/_testdriver/examples/web/lifecycle/postrun.yaml +0 -7
  179. package/_testdriver/examples/web/lifecycle/prerun.yaml +0 -22
  180. package/_testdriver/lifecycle/postrun.yaml +0 -8
  181. package/_testdriver/lifecycle/prerun.yaml +0 -15
  182. package/_testdriver/lifecycle/provision.yaml +0 -25
  183. package/debug-screenshot-1763401388589.png +0 -0
  184. package/mcp-server/AI_GUIDELINES.md +0 -57
  185. package/scripts/view-test-results.mjs +0 -96
  186. package/styles/.vale-config/2-MDX.ini +0 -5
  187. package/styles/Microsoft/AMPM.yml +0 -9
  188. package/styles/Microsoft/Accessibility.yml +0 -30
  189. package/styles/Microsoft/Acronyms.yml +0 -64
  190. package/styles/Microsoft/Adverbs.yml +0 -272
  191. package/styles/Microsoft/Auto.yml +0 -11
  192. package/styles/Microsoft/Avoid.yml +0 -14
  193. package/styles/Microsoft/Contractions.yml +0 -50
  194. package/styles/Microsoft/Dashes.yml +0 -13
  195. package/styles/Microsoft/DateFormat.yml +0 -8
  196. package/styles/Microsoft/DateNumbers.yml +0 -40
  197. package/styles/Microsoft/DateOrder.yml +0 -8
  198. package/styles/Microsoft/Ellipses.yml +0 -9
  199. package/styles/Microsoft/FirstPerson.yml +0 -16
  200. package/styles/Microsoft/Foreign.yml +0 -13
  201. package/styles/Microsoft/Gender.yml +0 -8
  202. package/styles/Microsoft/GenderBias.yml +0 -42
  203. package/styles/Microsoft/GeneralURL.yml +0 -11
  204. package/styles/Microsoft/HeadingAcronyms.yml +0 -7
  205. package/styles/Microsoft/HeadingColons.yml +0 -8
  206. package/styles/Microsoft/HeadingPunctuation.yml +0 -13
  207. package/styles/Microsoft/Headings.yml +0 -28
  208. package/styles/Microsoft/Hyphens.yml +0 -14
  209. package/styles/Microsoft/Negative.yml +0 -13
  210. package/styles/Microsoft/Ordinal.yml +0 -13
  211. package/styles/Microsoft/OxfordComma.yml +0 -8
  212. package/styles/Microsoft/Passive.yml +0 -183
  213. package/styles/Microsoft/Percentages.yml +0 -7
  214. package/styles/Microsoft/Plurals.yml +0 -7
  215. package/styles/Microsoft/Quotes.yml +0 -7
  216. package/styles/Microsoft/RangeTime.yml +0 -13
  217. package/styles/Microsoft/Semicolon.yml +0 -8
  218. package/styles/Microsoft/SentenceLength.yml +0 -6
  219. package/styles/Microsoft/Spacing.yml +0 -8
  220. package/styles/Microsoft/Suspended.yml +0 -7
  221. package/styles/Microsoft/Terms.yml +0 -42
  222. package/styles/Microsoft/URLFormat.yml +0 -9
  223. package/styles/Microsoft/Units.yml +0 -16
  224. package/styles/Microsoft/Vocab.yml +0 -25
  225. package/styles/Microsoft/We.yml +0 -11
  226. package/styles/Microsoft/Wordiness.yml +0 -127
  227. package/styles/Microsoft/meta.json +0 -4
  228. package/styles/alex/Ablist.yml +0 -274
  229. package/styles/alex/Condescending.yml +0 -16
  230. package/styles/alex/Gendered.yml +0 -110
  231. package/styles/alex/LGBTQ.yml +0 -55
  232. package/styles/alex/OCD.yml +0 -10
  233. package/styles/alex/Press.yml +0 -12
  234. package/styles/alex/ProfanityLikely.yml +0 -1289
  235. package/styles/alex/ProfanityMaybe.yml +0 -282
  236. package/styles/alex/ProfanityUnlikely.yml +0 -251
  237. package/styles/alex/README.md +0 -27
  238. package/styles/alex/Race.yml +0 -85
  239. package/styles/alex/Suicide.yml +0 -26
  240. package/styles/alex/meta.json +0 -4
  241. package/styles/config/vocabularies/Docs/accept.txt +0 -47
  242. package/styles/config/vocabularies/Docs/reject.txt +0 -4
  243. package/styles/proselint/Airlinese.yml +0 -8
  244. package/styles/proselint/AnimalLabels.yml +0 -48
  245. package/styles/proselint/Annotations.yml +0 -9
  246. package/styles/proselint/Apologizing.yml +0 -8
  247. package/styles/proselint/Archaisms.yml +0 -52
  248. package/styles/proselint/But.yml +0 -8
  249. package/styles/proselint/Cliches.yml +0 -782
  250. package/styles/proselint/CorporateSpeak.yml +0 -30
  251. package/styles/proselint/Currency.yml +0 -5
  252. package/styles/proselint/Cursing.yml +0 -15
  253. package/styles/proselint/DateCase.yml +0 -7
  254. package/styles/proselint/DateMidnight.yml +0 -7
  255. package/styles/proselint/DateRedundancy.yml +0 -10
  256. package/styles/proselint/DateSpacing.yml +0 -7
  257. package/styles/proselint/DenizenLabels.yml +0 -52
  258. package/styles/proselint/Diacritical.yml +0 -95
  259. package/styles/proselint/GenderBias.yml +0 -45
  260. package/styles/proselint/GroupTerms.yml +0 -39
  261. package/styles/proselint/Hedging.yml +0 -8
  262. package/styles/proselint/Hyperbole.yml +0 -6
  263. package/styles/proselint/Jargon.yml +0 -11
  264. package/styles/proselint/LGBTOffensive.yml +0 -13
  265. package/styles/proselint/LGBTTerms.yml +0 -15
  266. package/styles/proselint/Malapropisms.yml +0 -8
  267. package/styles/proselint/Needless.yml +0 -358
  268. package/styles/proselint/Nonwords.yml +0 -38
  269. package/styles/proselint/Oxymorons.yml +0 -22
  270. package/styles/proselint/P-Value.yml +0 -6
  271. package/styles/proselint/RASSyndrome.yml +0 -30
  272. package/styles/proselint/README.md +0 -12
  273. package/styles/proselint/Skunked.yml +0 -13
  274. package/styles/proselint/Spelling.yml +0 -17
  275. package/styles/proselint/Typography.yml +0 -11
  276. package/styles/proselint/Uncomparables.yml +0 -50
  277. package/styles/proselint/Very.yml +0 -6
  278. package/styles/proselint/meta.json +0 -15
  279. package/styles/write-good/Cliches.yml +0 -702
  280. package/styles/write-good/E-Prime.yml +0 -32
  281. package/styles/write-good/Illusions.yml +0 -11
  282. package/styles/write-good/Passive.yml +0 -183
  283. package/styles/write-good/README.md +0 -27
  284. package/styles/write-good/So.yml +0 -5
  285. package/styles/write-good/ThereIs.yml +0 -6
  286. package/styles/write-good/TooWordy.yml +0 -221
  287. package/styles/write-good/Weasel.yml +0 -29
  288. package/styles/write-good/meta.json +0 -4
  289. package/test/mcp-example-test.yaml +0 -27
  290. package/test/test_parser.js +0 -47
  291. package/testdriver/acceptance-sdk/QUICK_REFERENCE.md +0 -61
  292. package/testdriver/acceptance-sdk/README.md +0 -128
  293. package/testdriver/acceptance-sdk/TEST_REPORTING.md +0 -245
  294. package/testdriver/acceptance-sdk/assert.test.mjs +0 -44
  295. package/testdriver/acceptance-sdk/scroll-until-text.test.mjs +0 -42
  296. package/testdriver/acceptance-sdk/setup/lifecycleHelpers.mjs +0 -239
  297. package/testdriver/acceptance-sdk/type-checking-demo.js +0 -49
  298. package/testdriver/acceptance-sdk/type.test.mjs +0 -84
  299. package/vale.ini +0 -18
  300. package/vitest.config.example.js +0 -19
  301. package/vitest.config.mjs.bak +0 -44
  302. /package/docs/{ARCHITECTURE.md → v7/_drafts/architecture.mdx} +0 -0
  303. /package/docs/{AWESOME_LOGS_QUICK_REF.md → v7/_drafts/awesome-logs-quick-ref.mdx} +0 -0
  304. /package/{CONTRIBUTING.md → docs/v7/_drafts/contributing.mdx} +0 -0
  305. /package/docs/v7/{guides → _drafts}/migration.mdx +0 -0
  306. /package/{PLUGIN_MIGRATION.md → docs/v7/_drafts/plugin-migration.mdx} +0 -0
  307. /package/{PROMPT_CACHE.md → docs/v7/_drafts/prompt-cache.mdx} +0 -0
  308. /package/docs/{SDK_AWESOME_LOGS.md → v7/_drafts/sdk-awesome-logs.mdx} +0 -0
  309. /package/docs/{sdk-browser-rendering.md → v7/_drafts/sdk-browser-rendering.mdx} +0 -0
  310. /package/{SDK_LOGGING.md → docs/v7/_drafts/sdk-logging.mdx} +0 -0
  311. /package/{SDK_MIGRATION.md → docs/v7/_drafts/sdk-migration.mdx} +0 -0
  312. /package/docs/{TEST_RECORDING.md → v7/_drafts/test-recording.mdx} +0 -0
  313. /package/docs/v7/{README.md → overview/readme.mdx} +0 -0
  314. /package/{debug-locate-response.js → test/manual/debug-locate-response.js} +0 -0
  315. /package/{test-find-api.js → test/manual/test-find-api.js} +0 -0
  316. /package/{test-prompt-cache.js → test/manual/test-prompt-cache.js} +0 -0
  317. /package/{test-sandbox-render.js → test/manual/test-sandbox-render.js} +0 -0
  318. /package/{test-sdk-methods.js → test/manual/test-sdk-methods.js} +0 -0
  319. /package/{test-sdk-refactor.js → test/manual/test-sdk-refactor.js} +0 -0
  320. /package/{test-stack-trace.mjs → test/manual/test-stack-trace.mjs} +0 -0
  321. /package/{verify-element-api.js → test/manual/verify-element-api.js} +0 -0
  322. /package/{verify-types.js → test/manual/verify-types.js} +0 -0
  323. /package/{testdriver/acceptance-sdk → test/testdriver}/setup/globalTeardown.mjs +0 -0
  324. /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>