testdriverai 5.5.4 → 5.5.6

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 (128) hide show
  1. package/agent.js +29 -39
  2. package/docs/account/dashboard.mdx +16 -0
  3. package/docs/account/enterprise.mdx +97 -0
  4. package/docs/account/pricing.mdx +26 -0
  5. package/docs/account/projects.mdx +27 -0
  6. package/docs/account/team.mdx +31 -0
  7. package/docs/action/browser.mdx +1 -1
  8. package/docs/action/os.mdx +1 -2
  9. package/docs/action/output.mdx +2 -2
  10. package/docs/action/performance.mdx +4 -0
  11. package/docs/action/prerun.mdx +57 -1
  12. package/docs/action/secrets.mdx +3 -3
  13. package/docs/action/setup.mdx +6 -6
  14. package/docs/apps/chrome-extensions.mdx +41 -0
  15. package/docs/apps/desktop-apps.mdx +87 -0
  16. package/docs/apps/mobile-apps.mdx +22 -0
  17. package/docs/apps/static-websites.mdx +54 -0
  18. package/docs/bugs/jira.mdx +35 -28
  19. package/docs/cli/overview.mdx +19 -13
  20. package/docs/commands/assert.mdx +2 -0
  21. package/docs/commands/exec.mdx +96 -0
  22. package/docs/commands/focus-application.mdx +2 -0
  23. package/docs/commands/hover-image.mdx +2 -0
  24. package/docs/commands/hover-text.mdx +2 -0
  25. package/docs/commands/if.mdx +3 -2
  26. package/docs/commands/issues.mdx +27 -0
  27. package/docs/commands/match-image.mdx +2 -0
  28. package/docs/commands/press-keys.mdx +9 -5
  29. package/docs/commands/run.mdx +2 -1
  30. package/docs/commands/scroll-until-image.mdx +3 -1
  31. package/docs/commands/scroll-until-text.mdx +2 -0
  32. package/docs/commands/scroll.mdx +3 -1
  33. package/docs/commands/type.mdx +3 -1
  34. package/docs/commands/wait-for-image.mdx +3 -1
  35. package/docs/commands/wait-for-text.mdx +3 -1
  36. package/docs/commands/wait.mdx +3 -1
  37. package/docs/docs.json +260 -146
  38. package/docs/exporting/playwright.mdx +33 -26
  39. package/docs/features/auto-healing.mdx +25 -20
  40. package/docs/features/cross-platform.mdx +9 -8
  41. package/docs/features/generation.mdx +4 -3
  42. package/docs/features/github.mdx +22 -18
  43. package/docs/features/parallel-testing.mdx +15 -11
  44. package/docs/features/reusable-snippets.mdx +18 -14
  45. package/docs/features/selectorless.mdx +8 -3
  46. package/docs/features/visual-assertions.mdx +9 -10
  47. package/docs/getting-started/ci.mdx +7 -8
  48. package/docs/getting-started/editing.mdx +2 -0
  49. package/docs/getting-started/generating.mdx +1 -1
  50. package/docs/getting-started/running.mdx +2 -2
  51. package/docs/getting-started/setup.mdx +5 -12
  52. package/docs/getting-started/vscode.mdx +67 -79
  53. package/docs/getting-started/writing.mdx +7 -5
  54. package/docs/guide/assertions.mdx +6 -6
  55. package/docs/guide/authentication.mdx +18 -14
  56. package/docs/guide/code.mdx +3 -3
  57. package/docs/guide/environment-variables.mdx +64 -0
  58. package/docs/guide/lifecycle.mdx +154 -0
  59. package/docs/guide/locating.mdx +9 -9
  60. package/docs/guide/variables.mdx +9 -6
  61. package/docs/guide/waiting.mdx +9 -8
  62. package/docs/images/content/account/newprojectsettings.png +0 -0
  63. package/docs/images/content/account/projectpage.png +0 -0
  64. package/docs/images/content/account/projectreplays.png +0 -0
  65. package/docs/images/content/account/team-manage.png +0 -0
  66. package/docs/images/content/account/teampage.png +0 -0
  67. package/docs/images/content/side-by-side.png +0 -0
  68. package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
  69. package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
  70. package/docs/images/content/vscode/vscode-file-creation.png +0 -0
  71. package/docs/images/content/vscode/vscode-install.png +0 -0
  72. package/docs/images/content/vscode/vscode-overview.png +0 -0
  73. package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
  74. package/docs/images/content/vscode/vscode-stopchat.png +0 -0
  75. package/docs/images/content/vscode/vscode-stoptest.png +0 -0
  76. package/docs/images/content/vscode/vscode-tdservice.png +0 -0
  77. package/docs/images/content/vscode/vscode-test-output.png +0 -0
  78. package/docs/images/content/vscode/vscode-testhistory.png +0 -0
  79. package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
  80. package/docs/images/content/vscode/vscode-testpane.png +0 -0
  81. package/docs/importing/csv.mdx +9 -6
  82. package/docs/importing/gherkin.mdx +12 -10
  83. package/docs/importing/jira.mdx +11 -9
  84. package/docs/importing/testrail.mdx +10 -8
  85. package/docs/integrations/electron.mdx +26 -19
  86. package/docs/integrations/netlify.mdx +25 -24
  87. package/docs/integrations/vercel.mdx +22 -20
  88. package/docs/interactive/assert.mdx +4 -1
  89. package/docs/interactive/dry.mdx +51 -0
  90. package/docs/interactive/explore.mdx +92 -0
  91. package/docs/interactive/generate.mdx +6 -3
  92. package/docs/interactive/run.mdx +3 -0
  93. package/docs/interactive/save.mdx +3 -0
  94. package/docs/interactive/undo.mdx +3 -0
  95. package/docs/overview/comparison.mdx +6 -2
  96. package/docs/overview/faq.mdx +2 -1
  97. package/docs/overview/quickstart.mdx +123 -65
  98. package/docs/overview/upgrading.mdx +82 -0
  99. package/docs/overview/what-is-testdriver.mdx +13 -5
  100. package/docs/quickstart.mdx +1 -1
  101. package/docs/scenarios/ai-chatbot.mdx +26 -0
  102. package/docs/scenarios/cookie-banner.mdx +30 -0
  103. package/docs/scenarios/file-upload.mdx +30 -0
  104. package/docs/scenarios/form-filling.mdx +28 -0
  105. package/docs/scenarios/log-in.mdx +68 -0
  106. package/docs/scenarios/pdf-generation.mdx +21 -0
  107. package/docs/scenarios/spell-check.mdx +21 -0
  108. package/docs/security/action.mdx +7 -3
  109. package/docs/security/agent.mdx +1 -1
  110. package/docs/security/platform.mdx +9 -1
  111. package/docs/snippets/calendar-link.mdx +1 -0
  112. package/docs/snippets/gitignore-warning.mdx +4 -0
  113. package/docs/snippets/test-prereqs.mdx +15 -0
  114. package/docs/tutorials/advanced-test.mdx +2 -0
  115. package/docs/tutorials/basic-test.mdx +8 -7
  116. package/lib/commands.js +40 -21
  117. package/lib/config.js +0 -1
  118. package/lib/logger.js +2 -2
  119. package/lib/parser.js +1 -0
  120. package/lib/sdk.js +32 -26
  121. package/package.json +2 -1
  122. package/schema.json +1 -4
  123. package/styles/config/vocabularies/Docs/accept.txt +15 -2
  124. package/styles/config/vocabularies/Docs/reject.txt +4 -0
  125. package/docs/30x30.mdx +0 -84
  126. package/docs/issues.mdx +0 -9
  127. package/docs/security/dashboard.mdx +0 -0
  128. package/testdriver/chrome.yaml +0 -102
package/agent.js CHANGED
@@ -160,7 +160,7 @@ function completer(line) {
160
160
  "/summarize /save /run /quit /assert /undo /manual /yml /js /exec".split(
161
161
  " ",
162
162
  );
163
- if (line.startsWith("/run ") || line.startsWith("/explore ")) {
163
+ if (line.startsWith("/run ")) {
164
164
  return fileCompleter(line);
165
165
  } else {
166
166
  completions.concat(tasks);
@@ -851,9 +851,6 @@ const firstPrompt = async () => {
851
851
  let shouldExit = flags.includes("--exit") ? true : false;
852
852
 
853
853
  await run(file, shouldSave, shouldExit);
854
- } else if (input.indexOf("/explore") == 0) {
855
- const file = commands[1];
856
- await run(file, true, true);
857
854
  } else if (input.indexOf("/generate") == 0) {
858
855
  const skipYaml = commands[4] === "--skip-yaml";
859
856
  await generate(commands[1], commands[2], commands[3], skipYaml);
@@ -882,7 +879,7 @@ const firstPrompt = async () => {
882
879
  logger.error(result.error.result.stdout);
883
880
  }
884
881
  } else {
885
- await exploratoryLoop(input, false, true, true);
882
+ await exploratoryLoop(input.replace(/^\/explore\s+/, ""), false, true, true );
886
883
  }
887
884
 
888
885
  setTerminalWindowTransparency(false);
@@ -1082,12 +1079,10 @@ let run = async (file = thisFile, shouldSave = false, shouldExit = true) => {
1082
1079
  if (ymlObj.version) {
1083
1080
  let valid = isValidVersion(ymlObj.version);
1084
1081
  if (!valid) {
1085
- logger.error(
1086
- `Version mismatch: ${file}. Trying to run a test with v${ymlObj.version} test when this package is v${package.version}.`,
1087
- );
1088
-
1089
- await summarize("Version mismatch");
1090
- await exit(true);
1082
+ console.log("")
1083
+ logger.warn(chalk.red(`Version mismatch detected!`));
1084
+ logger.warn(chalk.red(`Running a test created with v${ymlObj.version}.`));
1085
+ logger.warn(chalk.red(`The current testdriverai version is v${package.version}.`));
1091
1086
  }
1092
1087
  }
1093
1088
 
@@ -1210,18 +1205,19 @@ const buildEnv = async () => {
1210
1205
  };
1211
1206
 
1212
1207
  const start = async () => {
1213
- // logger.info(await system.getPrimaryDisplay());
1214
-
1215
- // @todo add-auth
1216
- // if (!process.env.DASHCAM_API_KEY) {
1217
- // log('info', chalk.red(`You must supply an API key`), 'system')
1218
- // log('info', `Supply your API key with the \`DASHCAM_API_KEY\` environment variable.`, 'system');
1219
- // log('info', 'You can get a key in the Dashcam Discord server: https://discord.com/invite/cWDFW8DzPm', 'system')
1220
- // process.exit();
1221
- // }
1222
1208
 
1223
1209
  let a = getArgs();
1224
1210
 
1211
+ thisFile = a.file;
1212
+ const thisCommand = a.command;
1213
+
1214
+ logger.info(chalk.green(`Howdy! I'm TestDriver v${package.version}`));
1215
+ logger.info(`This is beta software!`);
1216
+ logger.info("");
1217
+ logger.info(chalk.yellow(`Join our Discord for help`));
1218
+ logger.info(`https://discord.com/invite/cWDFW8DzPm`);
1219
+ logger.info("");
1220
+
1225
1221
  // make testdriver directory if it doesn't exist
1226
1222
  let testdriverFolder = path.join(workingDir, "testdriver");
1227
1223
  if (!fs.existsSync(testdriverFolder)) {
@@ -1235,29 +1231,23 @@ const start = async () => {
1235
1231
 
1236
1232
  }
1237
1233
 
1238
- // if testdriver.yaml doesn't exist, make it
1239
- let testdriverFile = path.join(testdriverFolder, "testdriver.yaml");
1240
- if (!fs.existsSync(testdriverFile)) {
1241
- fs.writeFileSync(testdriverFile, "");
1242
- logger.info(chalk.dim(`Created testdriver.yaml`));
1243
- console.log(chalk.dim(`Created testdriver.yaml: ${testdriverFile}`));
1234
+ // if the directory for thisFile doesn't exist, create it
1235
+ const dir = path.dirname(thisFile);
1236
+ if (!fs.existsSync(dir)) {
1237
+ fs.mkdirSync(dir, { recursive: true });
1238
+ logger.info(chalk.dim(`Created directory ${dir}`));
1244
1239
  }
1245
1240
 
1246
- thisFile = a.file;
1247
- const thisCommand = a.command;
1248
-
1249
- logger.info(chalk.green(`Howdy! I'm TestDriver v${package.version}`));
1250
- logger.info(`This is beta software!`);
1251
- logger.info("");
1252
- logger.info(chalk.yellow(`Join our Discord for help`));
1253
- logger.info(`https://discord.com/invite/cWDFW8DzPm`);
1254
- logger.info("");
1255
-
1256
- // individual run ID for this session
1257
- // let runID = new Date().getTime();
1241
+ // if thisFile doesn't exist, create it
1242
+ if (!fs.existsSync(thisFile)) {
1243
+ fs.writeFileSync(thisFile, "");
1244
+ logger.info(chalk.dim(`Created ${thisFile}`));
1245
+ }
1258
1246
 
1247
+ if (config.TD_API_KEY) {
1248
+ await sdk.auth();
1249
+ }
1259
1250
 
1260
- // await sdk.auth();
1261
1251
  if (thisCommand !== "run") {
1262
1252
  speak("Howdy! I am TestDriver version " + package.version);
1263
1253
  }
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: "Dashboard"
3
+ sidebarTitle: "Dashboard"
4
+ description: "Explore your TestDriver dashboard and its features."
5
+ icon: "gauge"
6
+ ---
7
+ ## Welcome to your TestDriver Dashboard
8
+ Your dashboard is your command center for managing your TestDriver experience. Here, you can view your projects, monitor usage, and access various features to enhance your testing workflow.
9
+
10
+ ## Key Features
11
+ - **Projects**: Get a quick snapshot of your projects, with all Dashcam replays.
12
+ - **Team**: Manage your API key, and add/remove team members.
13
+ - **Usage & Billing**: Monitor your usage and credits in real-time.
14
+
15
+
16
+
@@ -0,0 +1,97 @@
1
+ ---
2
+ title: "Enterprise"
3
+ sidebarTitle: "Enterprise"
4
+ description: "30 Tests in 30 Days Guaranteed!"
5
+ icon: gem
6
+ ---
7
+ import { calendar } from '/snippets/calendar-link.mdx'
8
+
9
+ We understand that QA coverage is critical and often needed immediately. That's why we're offering our **30x30 Guarantee**: try TestDriver Enterprise and we guarantee you will see 30 tests in 30 days!
10
+
11
+ Unlike other QA services that take months and cost hundreds of thousands of dollars, TestDriver gets you up and running in just 30 days.
12
+
13
+ <Card
14
+ title="Book a Call"
15
+ icon="calendar"
16
+ href="https://calendly.com/d/cq23-qyn-3v6/testdriver-ai-demo"
17
+ link
18
+ >
19
+ Don't miss out on the cutting-edge of AI and QA testing!
20
+ </Card>
21
+
22
+
23
+ ---
24
+
25
+ ## Pricing
26
+ We're confident you'll love TestDriver, which is why we're offering this risk-free trial. After the trial, plans start at just **$995/month**, which includes:
27
+ - **12,500 runner minutes per month**: Enough to run 30 tests **2-5 times per day**.
28
+ - Full access to our enterprise test dashboards.
29
+ - Seamless integration with GitHub Actions.
30
+
31
+ For more details or to get a demo [Contract Details](#contract-details). To see other plans and pricing, check out our [Pricing](/account/pricing).
32
+
33
+
34
+ <CardGroup cols={3}>
35
+ <Card title="Quickly Deploy AI QA Tests">
36
+ Safeguard your most important user flows with generated tests.
37
+ </Card>
38
+ <Card title="Increase your total coverage">
39
+ Test flows never possible before with our powerful computer-use agent.
40
+ </Card>
41
+ <Card title="Spend less time on maintenance">
42
+ TestDriver tests automatically repair themselves.
43
+ </Card>
44
+ </CardGroup>
45
+
46
+ ## Promotion Details
47
+ Here's what's included in the **30x30 Promotion**:
48
+
49
+ - **Test Coverage**: Test any publicly available desktop app, Chrome extension, mobile app, or website.
50
+ - **AI-Generated Tests**: Choose from **250 AI-generated tests** within the first 7 days.
51
+ - **Daily Test Runs**: Run tests **3-5 times every day**.
52
+ - **AI Quality Reports**: Receive detailed reports delivered directly to your email.
53
+ - **Self-Healing Tests**: AI automatically fixes and maintains your tests.
54
+ - **GitHub Integration**: Seamlessly integrate with GitHub Actions.
55
+ - **Enterprise Dashboards**: Gain full access to our enterprise-grade test dashboards.
56
+
57
+ For more details, see [Contract Details](#contract-details).
58
+
59
+ ---
60
+
61
+ ## How Does It Work?
62
+
63
+ 1. **Book an Onboarding Call**: Share the specific flows you want to test.
64
+ 2. **Generate a Test Suite**: We'll explore your app and generate hundreds of tests using our AI.
65
+ 3. **Deploy Tests**: Your new tests will be deployed to our GitHub Actions.
66
+ 4. **Custom Test Creation**: Our support team will work with you to create tests for any features TestDriver might have missed.
67
+ 5. **Engineer Training**: We'll train your engineers on best practices for creating and maintaining TestDriver tests.
68
+
69
+ ---
70
+
71
+ ## Onboarding Process
72
+
73
+ | Service | Timeline | Description |
74
+ |-----------------------|----------------|-----------------------------------------------------------------------------|
75
+ | **Custom Onboarding** | First 7 Days | Get set up quickly with custom workflows and Prerun Scripts developed by the TestDriver team. |
76
+ | **AI Test Generation**| First 7 Days | Instant coverage: We'll generate hundreds of tests for you to choose from. |
77
+ | **Custom Test Creation** | First 30 Days | Our team will create tests for any features TestDriver might have missed. |
78
+ | **Training** | First 30 Days | Our support team will train your engineers on best practices. |
79
+ | **Test Execution** | Recurring | Seamless deployment: Tests are executed on a schedule or via GitHub Actions.|
80
+
81
+ ---
82
+
83
+ ## Contract Details
84
+
85
+ - **Free Trial**: Get 30 custom tests free during a 30-day trial when subscribing to the $995/month "30x30" plan.
86
+ - **Ownership**: The tests are yours! You can modify, duplicate, or distribute them however you wish.
87
+ - **Payment**: A payment method is required to begin the trial.
88
+ - **Renewal**: The contract renews annually.
89
+ - **Cancellation**: Cancel anytime during your trial, for any reason.
90
+ - **Credits**: Unused credits do not roll over and expire at the end of each month.
91
+ - **Additional Usage**: Additional usage is billed at standard rates.
92
+ - **On Prem/BYOC**: Option available as an add-on to your contract.
93
+
94
+ ---
95
+
96
+ ## Ready to Get Started?
97
+ Don't wait! <a href={calendar}>**Schedule your onboarding call now**</a> and let us help you achieve QA coverage in just 30 days.
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: "Pricing"
3
+ sidebarTitle: "Pricing"
4
+ description: "Explore TestDriver's pricing plans and features."
5
+ icon: "dollar-sign"
6
+ ---
7
+
8
+ ## TestDriver Pricing Plans
9
+ TestDriver offers a range of pricing plans to suit different needs, from individual developers to large enterprises. Our plans are designed to provide flexibility and scalability, ensuring you can choose the right option for your testing requirements.
10
+
11
+ <CardGroup cols={3}>
12
+ <Card title="Free" icon="check">
13
+ Local agent testing. Always free.
14
+ </Card>
15
+ <Card title="Business" icon="briefcase">
16
+ Use local or hosted runners on demand or integrated with CI for as low as $0.05/minute.
17
+ </Card>
18
+ <Card title="Enterprise" icon="shield">
19
+ Need advanced features? Contact us for tailored solutions. Starting at $995/month.
20
+ </Card>
21
+ </CardGroup>
22
+
23
+ <Tip>Every plan starts with $100 in TestDriver credits to get you off the starting line!</Tip>
24
+
25
+ ## Compare Plans
26
+ To view the latest pricing and features, please visit our [Pricing Page](https://testdriver.ai/pricing).
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: "TestDriver Projects"
3
+ sidebarTitle: "Projects"
4
+ description: "Manage your projects and workflows with TestDriver."
5
+ icon: "folder"
6
+ ---
7
+
8
+ ## Dashboard Project View
9
+ In the Project tab, select a Project to see the replays for that project.
10
+
11
+ <Frame caption="Click a Project to view its replays">
12
+ <img src="/images/content/account/projectpage.png" />
13
+ </Frame>
14
+
15
+ From the Project view, you can see all the replays (Dashes) stored for that project. Click one to see it. These will also be linked in CI for any pull requests or branches that have been tested with TestDriver.
16
+
17
+ <Frame caption="Click a Replay to view, comment or share ">
18
+ <img src="/images/content/account/projectreplays.png" />
19
+ </Frame>
20
+
21
+
22
+ ## New Project
23
+ When you create a new Project, you can also enable the <Icon icon="jira" /> Jira integration to create issues automatically each time a replay (Dash) is created.
24
+
25
+ <Frame caption="Click a Project to view its replays">
26
+ <img src="/images/content/account/newprojectsettings.png" />
27
+ </Frame>
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "Team"
3
+ sidebarTitle: "Team"
4
+ description: "Manage your team and collaborate with TestDriver."
5
+ icon: "users"
6
+ ---
7
+
8
+ ## Important Settings in one place
9
+ In the Team tab, you can manage your team name, team members, API key, and subscription.
10
+
11
+ ### Let's take a look at the team settings.
12
+ <Frame caption="Team Settings">
13
+ <img src="/images/content/account/teampage.png" />
14
+ </Frame>
15
+
16
+ 1. **Team Name**: The name of your team. This is used to identify your team in TestDriver.
17
+ 2. **API Key**: Your API key is used to authenticate your requests to the TestDriver API. You can regenerate it if you suspect it has been compromised.
18
+ 3. **Usage & Billing**: Monitor your usage and billing information. This includes your current plan, usage limits, and billing history.
19
+ <Tip>Note: this button is where you 'Upgrade to Pro' to start your free trial.</Tip>
20
+ 4. **Replay Visibility**: Toggle whether your replays are public or private by default. This defaults to **private**.
21
+ 5. **Don't forget to save your changes!**: After making any changes, be sure to click the **Update** button to apply them.
22
+
23
+
24
+ ### Team Members
25
+ <Frame caption="Team Members">
26
+ <img src="/images/content/account/team-manage.png" />
27
+ </Frame>
28
+
29
+ 1. **Email Invite**: Invite new team members by entering their email address and clicking the **Invite** button. They will receive an email invitation to join your team. You can also copy the link above this option to send to everyone at once.
30
+ 2. **Removing Team Members**: To remove a team member, click the **Remove** button next to their name. This will revoke their access to your TestDriver account.
31
+ 3. **Invite Status**: The status of the invite will be shown here. If it says **Invited**, the invite has not been accepted yet. To resend it, click here.
@@ -116,7 +116,7 @@ jobs:
116
116
  os: ${{ matrix.os }}
117
117
  prerun: |
118
118
  # Add prerun script here
119
- key: ${{ secrets.TESTDRIVER_API_KEY }}
119
+ key: ${{ secrets.TD_API_KEY }}
120
120
  env:
121
121
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
122
122
  FORCE_COLOR: "3"
@@ -142,7 +142,7 @@ jobs:
142
142
  os: ${{ matrix.os }}
143
143
  prerun: |
144
144
  # Add prerun script here
145
- key: ${{ secrets.TESTDRIVER_API_KEY }}
145
+ key: ${{ secrets.TD_API_KEY }}
146
146
  env:
147
147
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
148
148
  FORCE_COLOR: "3"
@@ -155,4 +155,3 @@ jobs:
155
155
  - **Prerun Scripts**: Ensure your prerun scripts are compatible with the specified operating system.
156
156
  - **Cross-Platform Testing**: Use the matrix strategy to test across multiple OS and browser combinations for maximum coverage.
157
157
  - **Linux Default**: Linux is the default operating system for most workflows and is ideal for lightweight, fast testing.
158
- ```
@@ -26,7 +26,7 @@ The following example demonstrates how to use the output variables to create a c
26
26
 
27
27
  ### Workflow Example
28
28
  ```yaml
29
- name: TestDriver.ai
29
+ name: TestDriver
30
30
 
31
31
  permissions:
32
32
  actions: read
@@ -45,7 +45,7 @@ jobs:
45
45
  steps:
46
46
  - uses: dashcamio/testdriver@main
47
47
  version: v4.0.0
48
- key: ${{ secrets.TESTDRIVER_API_KEY }}
48
+ key: ${{ secrets.TD_API_KEY }}
49
49
  with:
50
50
  prompt: |
51
51
  1. /run /Users/ec2-user/actions-runner/_work/testdriver/testdriver/.testdriver/test.yml
@@ -19,6 +19,10 @@ Parallel testing allows you to split your test actions into multiple files and r
19
19
  - Divide your test steps into smaller, independent YAML files.
20
20
  - Use the `run` command or GitHub matrix strategy to execute these files in parallel.
21
21
 
22
+ <Warning>
23
+ The `run` command is used in your test files to run other test files. This is useful for breaking down large tests into smaller, more manageable pieces. To run multiple separate tests, use the GitHub matrix strategy.
24
+ </Warning>
25
+
22
26
  Example:
23
27
  ```yaml
24
28
  strategy:
@@ -2,7 +2,7 @@
2
2
  title: "Prerun Scripts"
3
3
  sidebarTitle: "Prerun Scripts"
4
4
  description: "Learn how to customize and set up your TestDriver environment to optimize your CI/CD pipeline."
5
- icon: "hammer"
5
+ icon: "terminal"
6
6
  ---
7
7
 
8
8
  ## Overview
@@ -58,6 +58,30 @@ jobs:
58
58
  }
59
59
  ```
60
60
 
61
+ ## Example: Loading a Calculator App on Linux, Mac or Windows
62
+ ```yaml
63
+ version: 5.5.5
64
+ session: 67f00511acbd9ccac373edf7
65
+ steps:
66
+ - prompt: launch a calculator
67
+ commands:
68
+ - command: exec
69
+ lang: shell
70
+ linux: |
71
+ linux: |
72
+ jumpapp /usr/bin/galculator > /dev/null 2>&1 &
73
+ exit
74
+ mac: |
75
+ open "/Applications/Calculator.app"
76
+ wait
77
+ windows:
78
+ start /B calc.exe
79
+ timeout /t 5
80
+ - command: wait-for-text
81
+ text: "galculator"
82
+ timeout: 30000
83
+ ```
84
+
61
85
  ---
62
86
 
63
87
  ## Key Points
@@ -75,6 +99,38 @@ jobs:
75
99
 
76
100
  ---
77
101
 
102
+ ## A Note on the Default Prerun Script
103
+ When setting up your TestDriver environment, a default prerun script is automatically generated. This script includes essential commands to ensure your VM is ready for testing. You can customize this script to suit your specific needs, but it's important to understand that it serves as a baseline for your test environment. It looks like this:
104
+
105
+ ```yaml
106
+ version: 5.1.1
107
+ session: 67f00511acbd9ccac373edf7
108
+ steps:
109
+ - prompt: launch chrome
110
+ commands:
111
+ - command: exec
112
+ lang: shell
113
+ linux: |
114
+ jumpapp google-chrome --disable-fre --no-default-browser-check --no-first-run "${TD_WEBSITE}" &
115
+ exit
116
+ mac: |
117
+ open -na "Google Chrome" --args --disable-fre --no-default-browser-check --no-first-run --disable-features=PasswordManagerEnabled "${TD_WEBSITE}" &
118
+ exit
119
+ windows:
120
+ Start-Process "C:/Program Files/Google/Chrome/Application/chrome.exe" -ArgumentList "--start-maximized", "${TD_WEBSITE}"
121
+ exit
122
+ - command: wait-for-text
123
+ text: "Google Chrome"
124
+ timeout: 30000
125
+ ```
126
+
127
+ Take note that it defaults to launching the Chrome browser. If you want to use a different browser, you can modify the `prompt` and `commands` sections accordingly.
128
+
129
+ <Warning>
130
+ The `wait-For-text` command is crucial for ensuring that the browser is fully loaded before proceeding with the test steps. If you are testing a webapplication, you may want to adjust the `text` parameter to match the expected title or content of the page.
131
+ </Warning>
132
+
133
+
78
134
  ## Notes
79
135
  - Prerun scripts are executed on the VM before the test suite begins.
80
136
  - They are essential for ensuring a consistent and reliable test environment.
@@ -2,7 +2,7 @@
2
2
  title: "Managing Secrets in GitHub Actions"
3
3
  sidebarTitle: "Secrets Management"
4
4
  description: "Discover how to securely configure and optimize your TestDriver environment for seamless CI/CD workflows."
5
- icon: "mask"
5
+ icon: "asterisk"
6
6
  ---
7
7
 
8
8
  ## Overview
@@ -52,7 +52,7 @@ steps:
52
52
  1. Navigate to your GitHub repository.
53
53
  2. Go to **Settings** > **Secrets and variables** > **Actions**.
54
54
  3. Click **New repository secret**.
55
- 4. Add your secrets (e.g., `TD_USERNAME`, `TD_PASSWORD`, `TESTDRIVER_API_KEY`).
55
+ 4. Add your secrets (e.g., `TD_USERNAME`, `TD_PASSWORD`, `TD_API_KEY`).
56
56
 
57
57
  For detailed instructions, refer to the [GitHub Docs on using secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
58
58
 
@@ -78,7 +78,7 @@ jobs:
78
78
  steps:
79
79
  - uses: testdriverai/action@main
80
80
  with:
81
- key: ${{ secrets.TESTDRIVER_API_KEY }}
81
+ key: ${{ secrets.TD_API_KEY }}
82
82
  prompt: |
83
83
  1. /run tests/signin.yml
84
84
  env:
@@ -2,7 +2,7 @@
2
2
  title: "GitHub Action Setup Guide"
3
3
  sidebarTitle: "Setup Guide"
4
4
  description: "Learn how to set up and configure the TestDriver GitHub Action for automated cloud-based testing in your CI/CD workflows."
5
- icon: "wrench"
5
+ icon: "square-terminal"
6
6
  ---
7
7
 
8
8
  ## Overview
@@ -25,7 +25,7 @@ To execute TestDriver actions on our virtual machines, you'll need an API key. F
25
25
  3. **Copy Your API Key**: Locate and copy your API key.
26
26
  4. **Add the API Key as a GitHub Secret**:
27
27
  - Navigate to your repository settings in GitHub.
28
- - Add a new secret named `TESTDRIVER_API_KEY` and paste your API key.
28
+ - Add a new secret named `TD_API_KEY` and paste your API key.
29
29
 
30
30
  ---
31
31
 
@@ -33,7 +33,7 @@ To execute TestDriver actions on our virtual machines, you'll need an API key. F
33
33
  Now it's time to create your first TestDriver workflow. Add the following configuration to `.github/workflows/testdriver.yml`:
34
34
 
35
35
  ```yaml
36
- name: TestDriver.ai
36
+ name: TestDriver
37
37
 
38
38
  permissions:
39
39
  actions: read
@@ -57,7 +57,7 @@ jobs:
57
57
  steps:
58
58
  - uses: dashcamio/testdriver@main
59
59
  version: "v5.0.7"
60
- key: ${{ secrets.TESTDRIVER_API_KEY }}
60
+ key: ${{ secrets.TD_API_KEY }}
61
61
  os: linux
62
62
  with:
63
63
  prompt: |
@@ -69,7 +69,7 @@ jobs:
69
69
 
70
70
  ### Key Points:
71
71
  - **Trigger Conditions**: The `on` section defines when the workflow runs (e.g., pull requests, scheduled events, or manual triggers).
72
- - **API Key**: The `key` field uses the `TESTDRIVER_API_KEY` secret for authentication.
72
+ - **API Key**: The `key` field uses the `TD_API_KEY` secret for authentication.
73
73
  - **Prompt**: The `prompt` field specifies the commands to execute. In this example, the `/run` command is used to execute a test file from the repository.
74
74
 
75
75
  ---
@@ -106,7 +106,7 @@ gh pr create --web
106
106
  ---
107
107
 
108
108
  ## Output
109
- For details on interpreting the output of the GitHub Action, refer to the [Action Output Documentation](../output).
109
+ For details on interpreting the output of the GitHub Action, refer to the [Action Output Documentation](action/output).
110
110
 
111
111
  ---
112
112
 
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Testing Chrome Extensions with TestDriver
3
+ sidebarTitle: "Chrome Extensions"
4
+ description: "Test Chrome extensions with TestDriver"
5
+ icon: "puzzle-piece"
6
+ ---
7
+
8
+ import TestPrereqs from '/snippets/test-prereqs.mdx'
9
+
10
+ # Testing Chrome Extensions with TestDriver
11
+ TestDriver can be used to test Chrome extensions. This guide provides an overview of how to set up and run tests for your Chrome extension using TestDriver.
12
+
13
+ <TestPrereqs />
14
+
15
+ ## How Do I Test Chrome Extensions?
16
+ TestDriver provides a powerful solution for testing Chrome extensions. With our platform, you can easily create and run tests to ensure your extension functions as expected across different browsers and operating systems.
17
+ ## Getting Started
18
+ You can test a preinstalled extension or test by installing an extension. If the extension is in developemt mode, turn this on by checking the "Developer mode" checkbox in the Chrome extensions page. From there you can load the unpacked extension by selecting the folder where your extension is located. To download the files onto the VM if you are performing a test on cloud hosted runners, see the [Lifecycle](/guide/lifecycle) or [Prerun](/action/prerun) docs.
19
+
20
+ ## Sample Test Steps
21
+ 1. Load a the Chrome Web Store.
22
+ 2. Search for the extension you want to test.
23
+ 3. Click on the extension to open its details page.
24
+ 4. Click on the "Add to Chrome" button to install the extension.
25
+ 5. Wait for the installation to complete.
26
+ 6. Click the 'puzzle piece' icon to pin the extension to the toolbar.
27
+ 7. Click on the extension icon to open it.
28
+
29
+ ## TestDriver in Action
30
+ <iframe
31
+ width="560"
32
+ height="315"
33
+ src="https://www.youtube.com/embed/czfq4It6-pQ"
34
+ title="Testing Chrome Extensions with TestDriver"
35
+ frameborder="0"
36
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
37
+ allowfullscreen
38
+ ></iframe>
39
+
40
+ ## Now What?
41
+ Once you have insstalled your extension, simply create a TestDriver test to test any functionality a user would use.
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Using TestDriver with Desktop Apps
3
+ sidebarTitle: "Desktop Apps"
4
+ description: "TestDriver is designed to work with any desktop application, including Electron, Java, and .NET apps."
5
+ icon: "desktop"
6
+ ---
7
+
8
+ import TestPrereqs from '/snippets/test-prereqs.mdx'
9
+
10
+ TestDriver is designed to work with any desktop application, including Electron, Java, and .NET apps. This guide provides an overview of how to use TestDriver with desktop applications, including installation, configuration, and running tests.
11
+
12
+ <TestPrereqs />
13
+
14
+ ## Sample Test Steps
15
+
16
+ ## TestDriver in Action
17
+ <iframe
18
+ width="560"
19
+ height="315"
20
+ src="https://www.youtube.com/embed/IwJwGxHH8cA"
21
+ title="Assert 2+2=4"
22
+ frameborder="0"
23
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
24
+ allowfullscreen
25
+ ></iframe>
26
+
27
+ ## Supported Desktop Applications
28
+ TestDriver supports a wide range of desktop applications, including:
29
+ - Electron apps
30
+ - Java apps
31
+ - .NET apps
32
+ - Native Windows applications
33
+ - Native Mac applications
34
+ - Native Linux applications
35
+ - Any other desktop application that can be run on Windows, Mac, or Linux
36
+ ## Installation
37
+ To use TestDriver with desktop applications, no special setup is needed. Simply run the local agent to interact with applications on your local machine, or add instructions to `prerun.yaml` to tell the runner to launch or install the application. Here is an example that performs a calculation on a calculator app:
38
+ ```yaml
39
+ version: 5.5.5
40
+ session: 67f00511acbd9ccac373edf7
41
+ steps:
42
+ - prompt: launch a calculator
43
+ commands:
44
+ - command: exec
45
+ lang: shell
46
+ linux: |
47
+ linux: |
48
+ jumpapp /usr/bin/galculator > /dev/null 2>&1 &
49
+ exit
50
+ mac: |
51
+ open "/Applications/Calculator.app"
52
+ wait
53
+ windows:
54
+ start /B calc.exe
55
+ timeout /t 5
56
+ - command: wait-for-text
57
+ text: "calculator"
58
+ timeout: 30000
59
+ ```
60
+
61
+ A `calculator_test.yaml` file might look like this:
62
+ ```yaml
63
+ version: 5.5.5
64
+ session: 6810141e0e064b42739922f2
65
+ steps:
66
+ - prompt: /try performing the operation 2 + 2 = on the calculator that is opened
67
+ commands:
68
+ - command: focus-application
69
+ name: galculator
70
+ - command: hover-image
71
+ description: button with number 2 on the calculator
72
+ action: click
73
+ - command: hover-image
74
+ description: plus button on the calculator
75
+ action: click
76
+ - command: hover-image
77
+ description: button with number 2 on the calculator
78
+ action: click
79
+ - command: hover-image
80
+ description: equals button on the calculator
81
+ action: click
82
+ ```
83
+
84
+ ## Conclusion
85
+ TestDriver is a powerful tool for automating tests for desktop applications. With its support for a wide range of desktop platforms and its easy-to-use interface, you can quickly set up and run tests for your applications. Whether you are testing Electron apps, Java apps, or any other desktop application, TestDriver provides the tools you need to ensure your applications work as expected.
86
+
87
+