testeiya 0.2.1 → 0.3.10

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 (402) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -171
  3. package/dist/prompt/context.js +79 -0
  4. package/dist/prompt/context.js.map +1 -0
  5. package/dist/prompt/index.js +60 -0
  6. package/dist/prompt/index.js.map +1 -0
  7. package/dist/prompt/print.js +30 -0
  8. package/dist/prompt/print.js.map +1 -0
  9. package/dist/prompt/project-info.js +2 -0
  10. package/dist/prompt/project-info.js.map +1 -0
  11. package/{src/prompt/system-prompt.ts → dist/prompt/system-prompt.js} +38 -25
  12. package/dist/prompt/system-prompt.js.map +1 -0
  13. package/dist/prompt/testomatio.js +264 -0
  14. package/dist/prompt/testomatio.js.map +1 -0
  15. package/dist/prompt/tools.js +57 -0
  16. package/dist/prompt/tools.js.map +1 -0
  17. package/dist/prompt/vocab.js +8 -0
  18. package/dist/prompt/vocab.js.map +1 -0
  19. package/dist/src/args.js +172 -0
  20. package/dist/src/args.js.map +1 -0
  21. package/dist/src/cli.js +97 -0
  22. package/dist/src/cli.js.map +1 -0
  23. package/dist/src/doctor.js +186 -0
  24. package/dist/src/doctor.js.map +1 -0
  25. package/dist/src/env.js +93 -0
  26. package/dist/src/env.js.map +1 -0
  27. package/dist/src/mcp-extension.js +9 -0
  28. package/dist/src/mcp-extension.js.map +1 -0
  29. package/dist/src/mcp.js +139 -0
  30. package/dist/src/mcp.js.map +1 -0
  31. package/dist/src/model.js +71 -0
  32. package/dist/src/model.js.map +1 -0
  33. package/dist/src/models.js +38 -0
  34. package/dist/src/models.js.map +1 -0
  35. package/dist/src/output.js +185 -0
  36. package/dist/src/output.js.map +1 -0
  37. package/dist/src/result.js +41 -0
  38. package/dist/src/result.js.map +1 -0
  39. package/dist/src/run.js +291 -0
  40. package/dist/src/run.js.map +1 -0
  41. package/dist/src/session.js +92 -0
  42. package/dist/src/session.js.map +1 -0
  43. package/dist/src/sessions.js +61 -0
  44. package/dist/src/sessions.js.map +1 -0
  45. package/dist/vendor/mcp.js +14801 -0
  46. package/mcp-tools.json +2967 -0
  47. package/package.json +34 -43
  48. package/prompt/context.ts +101 -0
  49. package/prompt/index.ts +102 -0
  50. package/prompt/print.ts +32 -0
  51. package/prompt/project-info.ts +30 -0
  52. package/prompt/system-prompt.ts +187 -0
  53. package/{src/prompt → prompt}/testomatio.ts +120 -9
  54. package/prompt/tools.ts +57 -0
  55. package/prompt/vocab.ts +7 -0
  56. package/skills/codeceptjs/ci-fix-tests/SKILL.md +7 -8
  57. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +47 -64
  58. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +56 -47
  59. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +144 -106
  60. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +50 -57
  61. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +88 -196
  62. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +4 -5
  63. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +25 -36
  64. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +23 -36
  65. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +23 -36
  66. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +23 -35
  67. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +50 -53
  68. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +87 -191
  69. package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/SKILL.md +1 -1
  70. package/{skills.lock.json → skills/skills.lock.json} +43 -36
  71. package/skills/skills.yaml +34 -0
  72. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +49 -61
  73. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  74. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +20 -7
  75. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +41 -289
  76. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  77. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  78. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  79. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  80. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  81. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  82. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  83. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +5 -3
  84. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  85. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  86. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  87. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  88. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  89. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +1 -1
  90. package/skills/testomatio/test-management/qa-thinking/SKILL.md +25 -25
  91. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +14 -1
  92. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +8 -0
  93. package/assets/testeiya-logo-dark.svg +0 -16
  94. package/assets/testeiya-logo.svg +0 -15
  95. package/models.catalog.json +0 -6963
  96. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  97. package/skills/playwright-best-practices-skill/README.md +0 -147
  98. package/skills/testeiya/README.md +0 -29
  99. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  100. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  101. package/skills/testeiya/check-tests/SKILL.md +0 -260
  102. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  103. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  104. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  105. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  106. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  107. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  108. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  109. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  110. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  111. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  112. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  113. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  114. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  115. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  116. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  117. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  118. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  119. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  120. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  121. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  122. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  123. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  124. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  125. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  126. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  127. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  128. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  129. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  130. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  131. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  132. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  133. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  134. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  135. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  136. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  137. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  138. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  139. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  140. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  141. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  142. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  143. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  144. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  145. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  146. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  147. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  148. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  149. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  150. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  151. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  152. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  153. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  154. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  155. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  156. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  157. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  158. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  159. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  160. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  161. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  162. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  163. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  164. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  165. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  166. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  167. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  168. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  169. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  170. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  171. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  172. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  173. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  174. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  175. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  176. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  177. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  178. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  179. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  180. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  181. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  182. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  183. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  184. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  185. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  186. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  187. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  188. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  189. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  190. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  191. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  192. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  193. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  194. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  195. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  196. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  197. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  198. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  199. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  200. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  201. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  202. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  203. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  204. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  205. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  206. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  207. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  208. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  209. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  210. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  211. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  212. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  213. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  214. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  215. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  216. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  217. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  218. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  219. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  220. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  221. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  222. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  223. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  224. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  225. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  226. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  227. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  228. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  229. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  230. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  231. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  232. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  233. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  234. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  235. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  236. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  237. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  238. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  239. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  240. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  241. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  242. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  243. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  244. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  245. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  246. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  247. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  248. package/skills.yaml +0 -21
  249. package/src/ai-debug.ts +0 -188
  250. package/src/api/agent-get.ts +0 -22
  251. package/src/api/agent-start.ts +0 -384
  252. package/src/api/client-log.ts +0 -29
  253. package/src/api/context.ts +0 -332
  254. package/src/api/debug-layout.ts +0 -47
  255. package/src/api/debug-report.ts +0 -29
  256. package/src/api/debug-snapshot.ts +0 -30
  257. package/src/api/debug-stream.ts +0 -52
  258. package/src/api/files-delete.ts +0 -184
  259. package/src/api/files-read.ts +0 -41
  260. package/src/api/files-rename.ts +0 -99
  261. package/src/api/files-tree.ts +0 -292
  262. package/src/api/files-write.ts +0 -41
  263. package/src/api/mcp.ts +0 -603
  264. package/src/api/memory.ts +0 -69
  265. package/src/api/open-external.ts +0 -39
  266. package/src/api/playwright-cli.ts +0 -606
  267. package/src/api/providers.ts +0 -457
  268. package/src/api/read-env-token.ts +0 -33
  269. package/src/api/sessions.ts +0 -79
  270. package/src/api/settings.ts +0 -120
  271. package/src/api/skills.ts +0 -58
  272. package/src/api/testomatio-attachment.ts +0 -89
  273. package/src/api/testomatio-auth.ts +0 -284
  274. package/src/api/testomatio-proxy.ts +0 -197
  275. package/src/api/testomatio-run-stats.ts +0 -81
  276. package/src/api/testomatio-target.ts +0 -225
  277. package/src/api/testomatio-transcription.ts +0 -82
  278. package/src/api/workspace-search.ts +0 -96
  279. package/src/api/workspace-sync.ts +0 -151
  280. package/src/api/workspace.ts +0 -165
  281. package/src/app-server.ts +0 -556
  282. package/src/bridge.ts +0 -251
  283. package/src/check-tests.ts +0 -156
  284. package/src/cli.ts +0 -17
  285. package/src/commands.ts +0 -244
  286. package/src/config.ts +0 -183
  287. package/src/connection.ts +0 -658
  288. package/src/context-store.ts +0 -265
  289. package/src/debug-bus.ts +0 -405
  290. package/src/extensions/tool-gate.ts +0 -220
  291. package/src/extensions/webui/ask-channel.ts +0 -52
  292. package/src/extensions/webui/index.ts +0 -184
  293. package/src/extensions/webui/tools/ask-question.ts +0 -88
  294. package/src/extensions/webui/tools/query-result.ts +0 -79
  295. package/src/extensions/webui/tools/render-chart.ts +0 -53
  296. package/src/extensions/webui/tools/render-item.ts +0 -61
  297. package/src/extensions/webui/tools/render-list.ts +0 -170
  298. package/src/extensions/webui/tools/render-result.ts +0 -85
  299. package/src/extensions/webui/tools/render-tree.ts +0 -71
  300. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  301. package/src/extensions/webui/tools/widget-result.ts +0 -13
  302. package/src/extensions/webui/widget-channel.ts +0 -50
  303. package/src/file-log.ts +0 -196
  304. package/src/git-tracked.ts +0 -68
  305. package/src/gitignore.ts +0 -53
  306. package/src/json-store.ts +0 -43
  307. package/src/load-env.ts +0 -70
  308. package/src/loader-style.ts +0 -96
  309. package/src/main.ts +0 -140
  310. package/src/mcp-catalog.ts +0 -96
  311. package/src/models-catalog.ts +0 -72
  312. package/src/permissions.ts +0 -120
  313. package/src/project-dir.ts +0 -189
  314. package/src/project-info.ts +0 -108
  315. package/src/prompt/app-ui.ts +0 -59
  316. package/src/prompt/browser.ts +0 -27
  317. package/src/prompt/index.ts +0 -62
  318. package/src/prompt/tools.ts +0 -27
  319. package/src/server-info.ts +0 -62
  320. package/src/session-factory.ts +0 -442
  321. package/src/session-store.ts +0 -115
  322. package/src/shell-env.ts +0 -45
  323. package/src/skills.ts +0 -163
  324. package/src/sync-snapshot.ts +0 -140
  325. package/src/telemetry.ts +0 -239
  326. package/src/testomatio-auth.ts +0 -299
  327. package/src/testomatio.ts +0 -98
  328. package/src/theme.ts +0 -30
  329. package/src/user-env.ts +0 -94
  330. package/src/welcome.ts +0 -194
  331. package/src/workspace/safe-path.ts +0 -85
  332. package/src/workspace/test-md.ts +0 -70
  333. package/src/workspace-model.ts +0 -440
  334. package/testeiya.config.json +0 -14
  335. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication-flows.md +0 -0
  336. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication.md +0 -0
  337. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/clock-mocking.md +0 -0
  338. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/mobile-testing.md +0 -0
  339. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-context.md +0 -0
  340. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-user.md +0 -0
  341. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/network-advanced.md +0 -0
  342. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/third-party.md +0 -0
  343. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/pom-vs-fixtures.md +0 -0
  344. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/test-architecture.md +0 -0
  345. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/when-to-mock.md +0 -0
  346. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/browser-apis.md +0 -0
  347. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/iframes.md +0 -0
  348. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/service-workers.md +0 -0
  349. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/websockets.md +0 -0
  350. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/annotations.md +0 -0
  351. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/assertions-waiting.md +0 -0
  352. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/configuration.md +0 -0
  353. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/fixtures-hooks.md +0 -0
  354. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/global-setup.md +0 -0
  355. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/locators.md +0 -0
  356. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/page-object-model.md +0 -0
  357. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/projects-dependencies.md +0 -0
  358. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-data.md +0 -0
  359. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-suite-structure.md +0 -0
  360. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-tags.md +0 -0
  361. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/console-errors.md +0 -0
  362. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/debugging.md +0 -0
  363. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/error-testing.md +0 -0
  364. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/flaky-tests.md +0 -0
  365. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/angular.md +0 -0
  366. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/nextjs.md +0 -0
  367. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/react.md +0 -0
  368. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/vue.md +0 -0
  369. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/ci-cd.md +0 -0
  370. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/docker.md +0 -0
  371. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/github-actions.md +0 -0
  372. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/gitlab.md +0 -0
  373. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/other-providers.md +0 -0
  374. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/parallel-sharding.md +0 -0
  375. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/performance.md +0 -0
  376. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/reporting.md +0 -0
  377. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/test-coverage.md +0 -0
  378. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/accessibility.md +0 -0
  379. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/api-testing.md +0 -0
  380. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/browser-extensions.md +0 -0
  381. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/canvas-webgl.md +0 -0
  382. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/component-testing.md +0 -0
  383. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/drag-drop.md +0 -0
  384. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/electron.md +0 -0
  385. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-operations.md +0 -0
  386. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-upload-download.md +0 -0
  387. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/forms-validation.md +0 -0
  388. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/graphql-testing.md +0 -0
  389. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/i18n.md +0 -0
  390. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/performance-testing.md +0 -0
  391. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/security-testing.md +0 -0
  392. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/visual-regression.md +0 -0
  393. /package/skills/{playwright-cli → playwright/playwright-cli}/SKILL.md +0 -0
  394. /package/skills/{playwright-cli → playwright/playwright-cli}/references/element-attributes.md +0 -0
  395. /package/skills/{playwright-cli → playwright/playwright-cli}/references/playwright-tests.md +0 -0
  396. /package/skills/{playwright-cli → playwright/playwright-cli}/references/request-mocking.md +0 -0
  397. /package/skills/{playwright-cli → playwright/playwright-cli}/references/running-code.md +0 -0
  398. /package/skills/{playwright-cli → playwright/playwright-cli}/references/session-management.md +0 -0
  399. /package/skills/{playwright-cli → playwright/playwright-cli}/references/storage-state.md +0 -0
  400. /package/skills/{playwright-cli → playwright/playwright-cli}/references/test-generation.md +0 -0
  401. /package/skills/{playwright-cli → playwright/playwright-cli}/references/tracing.md +0 -0
  402. /package/skills/{playwright-cli → playwright/playwright-cli}/references/video-recording.md +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Testomat.io
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,246 +1,359 @@
1
1
  <p align="center">
2
- <a href="https://testomat.ai/testeiya/">
3
- <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset="https://cdn.jsdelivr.net/npm/testeiya/assets/testeiya-logo-dark.svg">
5
- <img src="https://cdn.jsdelivr.net/npm/testeiya/assets/testeiya-logo.svg" alt="Testeiya logo" width="140">
6
- </picture>
7
- </a>
2
+ <img src="https://raw.githubusercontent.com/testomatio/testeiya-app/main/assets/testeiya-cli-logo.png" alt="Testeiya" width="220">
8
3
  </p>
9
4
 
10
- <h1 align="center">Testeiya CLI</h1>
5
+ # Testeiya
11
6
 
12
- <p align="center">
13
- A QA-focused AI agent for your terminal and CI.<br>
14
- Built on the <a href="https://github.com/can1357/oh-my-pi">oh-my-pi</a> harness (a fork of <a href="https://github.com/badlogic/pi-mono">Pi</a>).
15
- </p>
7
+ [![npm](https://img.shields.io/npm/v/testeiya)](https://www.npmjs.com/package/testeiya)
8
+ [![licence](https://img.shields.io/npm/l/testeiya)](LICENSE)
16
9
 
17
- <p align="center">
18
- <a href="https://testomat.ai/testeiya/">Website</a> ·
19
- <a href="https://www.npmjs.com/package/testeiya">npm</a> ·
20
- <a href="https://testomat.io">Testomat.io</a>
21
- </p>
10
+ An agent, app, and the goddess of testing.
22
11
 
23
- ```text
24
- ████████ ███████ ███████ ████████ ███████ ██████ ██ ██ █████
25
- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
26
- ██ █████ ███████ ██ █████ ██ ████ ███████
27
- ██ ██ ██ ██ ██ ██ ██ ██ ██
28
- ██ ███████ ███████ ██ ███████ ██████ ██ ██ ██
12
+ Testeiya is an autonomous QA agent. It reacts to triggers — a pull request, a new
13
+ issue, a failed test run, a deploy — runs exactly one analysis, and delivers its
14
+ verdict where your team works: a PR comment, a markdown report, or a Testomat.io
15
+ project. There is no interactive mode and no human in the loop. That is the point:
16
+ you wire it into CI once, and every event that should get QA thinking gets it.
29
17
 
30
- AI Testing Agent · Testomat.io
31
- ```
18
+ It ships as a desktop app, a web app, and the command-line agent in this repository.
32
19
 
33
- ## What is Testeiya CLI?
20
+ | Folder | What it is |
21
+ |---|---|
22
+ | `prompt/` | System-prompt fragments: the agent's role, rules, tool guidance, Testomat.io operating rules, and the report contract |
23
+ | `skills/` | The manifest of skills the agent can invoke. Every folder is fetched from its own upstream repository |
24
+ | `src/` | The `testeiya` command-line agent (Node) |
34
25
 
35
- Testeiya is an AI testing agent: point it at a project and it analyzes test suites, finds coverage gaps, writes and improves test cases, and syncs them with [Testomat.io](https://testomat.io).
26
+ The desktop and web harness is not open source. That covers the servers, session management, sync, and UI.
36
27
 
37
- **Testeiya CLI** is the terminal edition of that agent. It is made to:
28
+ ## Install
38
29
 
39
- - **run in your terminal** an interactive agent in the current working directory
40
- - **run in non-interactive environments like CI** — everything is configurable through environment variables and config files, with no GUI required
30
+ Requires Node 22.19 or newer, an LLM provider key, and a model.
41
31
 
42
- It reads your codebase freely while keeping writes and destructive commands locked down by default, so you can safely point it at any project.
32
+ ```bash
33
+ npx testeiya doctor
34
+ ```
43
35
 
44
- > Looking for a visual app instead? **Testeiya Desktop** is a separate chat application built on the same agent. Testeiya CLI is the official name of this terminal tool the two are not the same thing. Learn about both at [testomat.ai/testeiya](https://testomat.ai/testeiya/).
36
+ `doctor` reports which key won, which skills loaded, and whether Testomat.io is reachablewithout spending a token.
45
37
 
46
- ## Quick start
38
+ The key comes from the environment (`OPENROUTER_API_KEY`, `ANTHROPIC_API_KEY`,
39
+ `OPENAI_API_KEY`, `GEMINI_API_KEY`), from `~/.testeiya/.env`, or from
40
+ `~/.testeiya/auth.json`. That last file is the one the desktop app's Settings
41
+ dialog writes, so configuring it once covers both.
47
42
 
48
- Requires [Bun](https://bun.sh) 1.3+.
43
+ There is no default model. Name one with `--model <provider>/<id>` or
44
+ `TESTEIYA_MODEL`. CI usually has neither set, so a run that resolves no model
45
+ exits `2` rather than picking one for you.
49
46
 
50
47
  ```bash
51
- bunx testeiya
48
+ export TESTEIYA_MODEL=openrouter/anthropic/claude-sonnet-5
49
+ testeiya models anthropic # list what your key can reach
52
50
  ```
53
51
 
54
- Or install it globally:
52
+ ## How it runs
55
53
 
56
54
  ```bash
57
- bun add -g testeiya
58
- testeiya
55
+ testeiya task "<task>" # run one task, deliver a report, exit
56
+ testeiya ask "<question>" # answer a question, no report
57
+ testeiya sessions # list saved sessions for this folder
59
58
  ```
60
59
 
61
- Bring an API key for your LLM provider, or sign in with an AI coding subscription you already have — see [Providers](#providers) below.
60
+ The agent runs one task and exits. Progress goes to stderr, so a run drops into CI as-is:
62
61
 
63
- Then ask it things like:
62
+ | Exit code | Meaning |
63
+ |---|---|
64
+ | `0` | pass, or a positive verdict from the agent |
65
+ | `1` | failed run, or a negative verdict — findings that need a human |
66
+ | `2` | bad usage |
67
+ | `130` | interrupted |
64
68
 
65
- - "Analyze the test suite in this project"
66
- - "Find untested code paths in src/controllers"
67
- - "Generate test cases for the auth module"
68
- - "Find duplicate test cases and suggest which to remove"
69
+ A task can come from stdin too:
69
70
 
70
- Multi-line pastes (API docs, specs, requirements) go straight into the prompt.
71
+ ```bash
72
+ cat issue-42.md | testeiya task --output report.md
73
+ ```
71
74
 
72
- ## Providers
75
+ Every command takes `--json` for machine-readable output of the run envelope
76
+ (verdict, reason, tokens, session id). `testeiya --help` lists all options;
77
+ `testeiya help` is the full guide.
73
78
 
74
- Testeiya is not tied to a single LLM vendor, and it takes two kinds of access: pay-as-you-go API keys, or the AI coding subscription you may already have.
79
+ ## Scenarios
75
80
 
76
- ### API platform access
81
+ Each scenario below is a single unattended run. Nobody answers questions; the
82
+ agent reads what the trigger gives it and acts on its own judgement. If its
83
+ verdict is negative, the job fails — that failure *is* the signal.
77
84
 
78
- Pick whichever provider your team already uses, export its API key, and go:
85
+ ### Grill a pull request
79
86
 
80
- | Provider | `provider.name` | API key variable |
81
- | -------------------- | ------------ | -------------------- |
82
- | OpenRouter (default) | `openrouter` | `OPENROUTER_API_KEY` |
83
- | OpenAI | `openai` | `OPENAI_API_KEY` |
84
- | Anthropic | `anthropic` | `ANTHROPIC_API_KEY` |
85
- | Google Gemini | `google` | `GEMINI_API_KEY` |
86
- | Groq | `groq` | `GROQ_API_KEY` |
87
- | Mistral | `mistral` | `MISTRAL_API_KEY` |
88
- | xAI | `xai` | `XAI_API_KEY` |
89
- | Azure OpenAI | `azure-openai-responses` | `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_BASE_URL` |
90
- | Ollama (local) | `ollama` | not required |
87
+ Every PR gets a QA review before merge. The agent loads the branch's diff,
88
+ analyzes it through the `qa-thinking` skill — edge cases, negative flows,
89
+ abuses, data-consistency risks and posts the findings as a PR comment:
91
90
 
92
- Many more work out of the box (Together, Cerebras, Moonshot, LM Studio, …), and any OpenAI-compatible endpoint — a vLLM or LiteLLM gateway, a corporate proxy — can be plugged in through `provider.baseUrl`.
91
+ ```bash
92
+ git fetch origin "$PR_BRANCH"
93
+ git checkout "$PR_BRANCH"
94
+ testeiya task "Review this pull request as a QA engineer. What could go wrong?" \
95
+ --output gh:pr-comment --output review.json
96
+ ```
93
97
 
94
- Keys can also live in a `.env` file in the working directory or in `~/.testeiya/.env`.
98
+ Exit code `1` means the agent found real risk, so you can gate the merge on it.
95
99
 
96
- ### Subscriptions
100
+ ### Write test cases from a pull request
97
101
 
98
- Already paying for an AI coding plan? Sign in with it instead of managing API keys — type `/login` inside the agent and pick the account:
102
+ Same trigger, different deliverable: the `qa-write-test-cases` skill turns the
103
+ change into test cases in Testomat.io markdown format, written as a build
104
+ artifact ready to commit or import:
99
105
 
100
- | Subscription | `provider.name` |
101
- | ---------------------------- | ---------------- |
102
- | Claude Pro / Max (Anthropic) | `anthropic` |
103
- | ChatGPT / Codex (OpenAI) | `openai-codex` |
104
- | GitHub Copilot | `github-copilot` |
105
- | Gemini (Google account) | `google-gemini-cli` |
106
- | Cursor | `cursor` |
107
- | Kimi Code | `kimi-code` |
106
+ ```bash
107
+ testeiya task "Create test cases covering the changes in this pull request" \
108
+ --output testcases/
109
+ ```
108
110
 
109
- …plus GitLab Duo, Qwen, Z.ai and other coding plans `/login` shows everything available. Credentials are stored locally and refreshed automatically.
111
+ With `TESTOMATIO` and the project id set, add
112
+ `sync them to Testomat.io` to the task and they land straight in the TMS via
113
+ `sync-test-cases-with-tms`.
110
114
 
111
- To switch providers or models at any time, type `/model` inside the agent, or set `provider.name` and `provider.model` in the config file (see [Configuration](#configuration)).
115
+ ### Create test cases from a new issue
112
116
 
113
- ## Connect to Testomat.io
117
+ A requirements text arrives from the issue tracker — piped in, no human
118
+ summarizing it first. The agent writes a checklist and test cases from it:
114
119
 
115
- Testeiya works standalone, but connecting a [Testomat.io](https://testomat.io) project unlocks test management: pulling and pushing test cases, browsing runs, and the Testomat.io MCP tools.
120
+ ```bash
121
+ gh issue view 57 --json title,body -q '.title + "\n\n" + .body' \
122
+ | testeiya task --output testcases/issue-57.md
123
+ ```
116
124
 
117
- Interactively, type `/connect` inside the agent and pick a project.
125
+ ### Explore a deployed app with Explorbot
118
126
 
119
- In CI or scripts, pass the project token via environment variables:
127
+ After a deploy, point [Explorbot](https://github.com/testomatio/explorbot) the
128
+ autonomous browser-testing CLI the agent drives through the `explorbot-*`
129
+ skills — at the staging URL. It researches, plans, and tests the live app in
130
+ its own browser, then reports what broke:
120
131
 
121
132
  ```bash
122
- export TESTOMATIO=tstmt_your-project-token
133
+ testeiya task "Run explorbot against https://staging.example.com, max 10 tests, report failures" \
134
+ --output explorbot-report.md
123
135
  ```
124
136
 
125
- ## Skills
137
+ ### Repair failing tests after a red build
126
138
 
127
- Testeiya ships with a curated skill library, loaded automatically:
139
+ On a failed CodeceptJS run, the `ci-fix-tests` skill attempts safe fixes only —
140
+ locator drift, missing waits — reruns just the failing scenarios, rolls back any
141
+ edit that did not help, and always writes `output/ci-fix.md` for the next job:
128
142
 
129
- - **Test management** (Testomat.io) — write and improve test cases, detect duplicates, analyze coverage, review requirements, sync cases with the TMS
130
- - **Test automation** (Testomat.io) automate manual test cases, debug flaky tests, set up reporters and PR testing
131
- - **Frameworks** — CodeceptJS (writing, debugging, migrations from Cypress/Protractor/TestCafe/Selenium), Playwright best practices and the Playwright browser CLI
132
- - **Testomat.io docs** — the full product documentation, bundled and searchable, so platform questions are answered from the docs
133
-
134
- Add your own: drop a folder with a `SKILL.md` into `~/.testeiya/skills/` (all projects) or `<project>/.testeiya/skills/` (one project). Type `/skills` in the agent to list what's loaded.
143
+ ```bash
144
+ testeiya task "Fix the failed CodeceptJS tests using ci-fix-tests. No refactors." \
145
+ --no-session
146
+ ```
135
147
 
136
- ## Slash commands
148
+ ### Audit the test suite on a schedule
137
149
 
138
- | Command | Purpose |
139
- | ---------- | ------------------------------------------------ |
140
- | `/connect` | Link a Testomat.io project and load its MCP tools |
141
- | `/project` | Switch the active Testomat.io project |
142
- | `/model` | Switch the LLM provider and model |
143
- | `/login` | Sign in with an AI subscription account |
144
- | `/skills` | List loaded skills |
145
- | `/help` | Show all commands |
150
+ Nightly, the agent walks the Testomat.io project and reports gaps — suites with
151
+ no tests, cases gone stale against the current code, coverage holes:
146
152
 
147
- ## Running in CI
153
+ ```bash
154
+ TESTOMATIO=tstmt_xxx testeiya task \
155
+ "Audit this project: which suites have no automated tests, and which manual cases look automatable?" \
156
+ --output audits/$(date +%F).md
157
+ ```
148
158
 
149
- Testeiya CLI is built to run where no human is watching. The default permission model (reads allowed, writes and bash blocked) makes it safe to run against a checked-out repository.
159
+ ## CI setup
150
160
 
151
- Each example below uses a different LLM provider any provider works on any CI; just export the matching API key variable.
161
+ Testeiya needs three things in any CI system: a provider key, a model name, and
162
+ the checkout of whatever the task reads. Everything else is standard.
152
163
 
153
164
  ### GitHub Actions
154
165
 
166
+ GitHub runners ship the [GitHub CLI](https://cli.github.com), so posting back to
167
+ the PR is one flag. `GITHUB_TOKEN` authenticates it; keep the LLM key in
168
+ repository secrets.
169
+
155
170
  ```yaml
156
- - uses: oven-sh/setup-bun@v2
157
- - run: bunx testeiya
158
- env:
159
- OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
160
- TESTOMATIO: ${{ secrets.TESTOMATIO_TOKEN }}
171
+ name: qa-review
172
+ on:
173
+ pull_request:
174
+ types: [opened, synchronize]
175
+
176
+ permissions:
177
+ pull-requests: write
178
+ contents: read
179
+
180
+ jobs:
181
+ grill:
182
+ runs-on: ubuntu-latest
183
+ env:
184
+ GH_TOKEN: ${{ github.token }}
185
+ OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
186
+ TESTEIYA_MODEL: openrouter/anthropic/claude-sonnet-5
187
+ # optional, for scenarios that touch Testomat.io
188
+ TESTOMATIO: ${{ secrets.TESTOMATIO }}
189
+ TESTOMATIO_PROJECT_ID: my-project
190
+ steps:
191
+ - uses: actions/checkout@v4
192
+ with:
193
+ fetch-depth: 0
194
+ - uses: actions/setup-node@v4
195
+ with:
196
+ node-version: 22
197
+ - run: npx testeiya@latest doctor
198
+ - run: |
199
+ npx testeiya@latest task \
200
+ "Review this pull request as a QA engineer. What could go wrong?" \
201
+ --output gh:pr-comment --output review.json
202
+ - uses: actions/upload-artifact@v4
203
+ if: always()
204
+ with:
205
+ name: review
206
+ path: review.json
161
207
  ```
162
208
 
209
+ The same shape works for the other scenarios: trigger on `issues` and pipe the
210
+ body in for test-case generation, or run on a `schedule` for the nightly audit.
211
+
163
212
  ### GitLab CI
164
213
 
214
+ GitLab runners do not ship `gh`, so the report goes to job artifacts — visible
215
+ in the merge request pipeline page. Exit code `1` fails the job and blocks the
216
+ merge when you mark it required.
217
+
165
218
  ```yaml
166
- testeiya:
167
- image: oven/bun:1
168
- script:
169
- - bunx testeiya
219
+ qa-review:
220
+ image: node:22
221
+ rules:
222
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
170
223
  variables:
171
- OPENAI_API_KEY: $OPENAI_API_KEY
172
- TESTOMATIO: $TESTOMATIO_TOKEN
224
+ TESTEIYA_MODEL: openrouter/anthropic/claude-sonnet-5
225
+ TESTOMATIO_PROJECT_ID: my-project
226
+ script:
227
+ - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
228
+ - npx testeiya@latest doctor
229
+ - npx testeiya@latest task
230
+ "Review this merge request as a QA engineer. What could go wrong?"
231
+ --output review/report.md --output review/envelope.json
232
+ artifacts:
233
+ when: always
234
+ paths:
235
+ - review/
236
+ parallel:
237
+ # secrets go to Settings > CI/CD > Variables:
238
+ # OPENROUTER_API_KEY (masked), TESTOMATIO (masked, protected)
173
239
  ```
174
240
 
175
- ### Bitbucket Pipelines
241
+ For posting back to the merge request, hand the envelope's report to GitLab's
242
+ API in a follow-up step, or install `gh` plus a token mirror if the project is
243
+ also on GitHub.
176
244
 
177
- ```yaml
178
- pipelines:
179
- default:
180
- - step:
181
- name: testeiya
182
- image: oven/bun:1
183
- script:
184
- # ANTHROPIC_API_KEY and TESTOMATIO are set as secured repository variables
185
- - bunx testeiya
186
- ```
187
-
188
- ### Jenkins
189
-
190
- ```groovy
191
- pipeline {
192
- agent { docker { image 'oven/bun:1' } }
193
- environment {
194
- MISTRAL_API_KEY = credentials('mistral-api-key')
195
- TESTOMATIO = credentials('testomatio-token')
196
- }
197
- stages {
198
- stage('testeiya') {
199
- steps {
200
- sh 'bunx testeiya'
201
- }
202
- }
203
- }
204
- }
205
- ```
206
-
207
- ### Azure Pipelines
245
+ ### Anywhere else
208
246
 
209
- ```yaml
210
- steps:
211
- - script: |
212
- curl -fsSL https://bun.sh/install | bash
213
- export PATH="$HOME/.bun/bin:$PATH"
214
- bunx testeiya
215
- env:
216
- AZURE_OPENAI_API_KEY: $(AZURE_OPENAI_API_KEY)
217
- AZURE_OPENAI_BASE_URL: $(AZURE_OPENAI_BASE_URL)
218
- TESTOMATIO: $(TESTOMATIO_TOKEN)
247
+ Any scheduler that can run a container works — the contract is just stdin,
248
+ stdout, and an exit code:
249
+
250
+ ```bash
251
+ echo "Audit the checkout suite for gaps" | testeiya task --output audit.md
252
+ case $? in
253
+ 0) echo "clean" ;;
254
+ 1) echo "findings need review" ;;
255
+ esac
256
+ ```
257
+
258
+ ## Where the report goes
259
+
260
+ `--output` names a destination and can repeat. Without one the report goes to stdout.
261
+
262
+ ```bash
263
+ testeiya task "<task>" --output report.md --output run.json --output gh:pr-comment
264
+ ```
265
+
266
+ | Destination | What happens |
267
+ |---|---|
268
+ | `report.md` | the agent writes the report there |
269
+ | `run.json` | the run envelope: verdict, reason, report, tokens, session id |
270
+ | `gh:pr-comment` | posted on this branch's pull request |
271
+ | `gh:pr#123` | posted on that pull request |
272
+
273
+ Posting uses the GitHub CLI and resolves the PR number from `GITHUB_EVENT_PATH`,
274
+ `GITHUB_REF`, or `gh pr view` — so inside Actions it just works. Every
275
+ destination is checked before the run starts, so a missing `gh` costs no tokens.
276
+
277
+ ## Sessions
278
+
279
+ Runs are saved under `~/.testeiya`, so a follow-up picks up where the last one
280
+ stopped. A resumed run reuses its session's model.
281
+
282
+ ```bash
283
+ testeiya task "Review the checkout suite" --name checkout-review --output report.md
284
+ testeiya task "Now write the missing cases" -c
285
+ testeiya sessions
286
+ testeiya task "<task>" --resume <id>
287
+ ```
288
+
289
+ Pass `--name` to label a session and `--no-session` to save nothing. In CI,
290
+ `--no-session` keeps runners stateless unless you deliberately chain `-c` steps.
291
+
292
+ ## Testomat.io
293
+
294
+ Set `TESTOMATIO` to a project API key. The agent can then read and write that
295
+ project's tests, suites, runs and plans through `check-tests` and the REST API.
296
+
297
+ ```bash
298
+ TESTOMATIO=tstmt_xxx testeiya task --project my-project "Which suites have no tests?"
219
299
  ```
220
300
 
221
- ## Configuration
301
+ Add the project id and the agent also gets the Testomat.io MCP tools. The id
302
+ comes from `--project` or from `TESTOMATIO_PROJECT_ID`; the MCP server needs it,
303
+ because a token alone does not say which project to talk to. `TESTOMATIO_URL`
304
+ points at a self-hosted instance.
305
+
306
+ ## Skills
307
+
308
+ A skill is a folder with a `SKILL.md`. The agent loads them all and invokes the
309
+ ones a task calls for — you never pick a skill explicitly, the task phrasing
310
+ does.
311
+
312
+ What ships today, vendored from upstream repositories:
313
+
314
+ | Category | Skills |
315
+ |---|---|
316
+ | QA process | `testing-workflow`, `qa-explain-behavior`, `qa-lead-strategy-advisor` |
317
+ | Test management | `qa-write-test-cases`, `sync-test-cases-with-tms`, `qa-sprint-report-by-testomatio`, `qa-split-testing-levels-pyramid`, `qa-thinking` |
318
+ | Test automation | `automate-manual-test-cases`, `setup-change-aware-pr-testing`, `run-tests-with-testomatio-reporter`, `setup-ci-automation`, `debug-fix-failed-flaky-autotests`, `qa-data-seeder`, `qa-automation-test-consolidation`, `testomat-allure-adapter` |
319
+ | Explorbot | `explorbot-fundamentals`, `explorbot-setup`, `explorbot-plan` |
320
+ | Playwright | `playwright-best-practices`, `playwright-cli` |
321
+ | CodeceptJS | writing, refactoring, debugging, run analysis, migrations from Cypress/TestCafe/Selenium/Protractor, `ci-fix-tests` |
322
+
323
+ Sources are declared in `skills/skills.yaml` and pinned in
324
+ `skills/skills.lock.json`. The vendored folders are deliberately not committed —
325
+ they belong to their authors, under their own licences. A clone has the manifest
326
+ and nothing else; `node scripts/vendor-skills.js` fills the tree. Every release
327
+ runs it, so the published `testeiya` package ships each skill as current on
328
+ release day.
329
+
330
+ `skillsOverride` in `src/session.ts` keeps only what is found under that tree,
331
+ so an arbitrary clone cannot hand the model its own skills. To add yours, point
332
+ `additionalSkillPaths` at your folder. [EXTENDING.md](EXTENDING.md) covers both hooks.
333
+
334
+ To propose a new source, add its line to `skills/skills.yaml`. See [CONTRIBUTING.md](CONTRIBUTING.md).
335
+
336
+ ## Building your own agent
337
+
338
+ The CLI is a thin composition over [pi](https://pi.dev): about 1,500 lines wiring
339
+ the SDK to the prompt and skills here. A fork can add pi extensions and custom
340
+ tools, or swap the one-shot run loop for pi's full interactive TUI.
341
+ [EXTENDING.md](EXTENDING.md) walks through both.
342
+
343
+ ## Contributing
222
344
 
223
- Configuration is layered, lowest to highest priority: built-in defaults, then `testeiya.config.json` in the working directory, then `~/.testeiya/config.json`. The in-app `/model` selection writes to the home file, so it persists across runs.
345
+ Prompt wording is exactly what an outside contributor can improve, and a change
346
+ to it changes how the agent behaves for everyone. Read
347
+ [CONTRIBUTING.md](CONTRIBUTING.md) first. It covers what belongs here and what
348
+ belongs upstream, in the repository that owns a given skill.
224
349
 
225
- All options:
350
+ ## Issues
226
351
 
227
- | Option | Default | Purpose |
228
- | ------------------------- | ------------ | ------- |
229
- | `provider.name` | `openrouter` | LLM provider id (see [Providers](#providers)) |
230
- | `provider.model` | — | Model id, as your provider names it |
231
- | `provider.baseUrl` | provider's own | API endpoint override, for gateways and self-hosted OpenAI-compatible servers |
232
- | `provider.contextWindow` | `200000` | Context window size the agent budgets against |
233
- | `provider.maxTokens` | `16384` | Maximum output tokens per response |
234
- | `thinkingLevel` | `medium` | Reasoning effort: `off`, `minimal`, `low`, `medium`, `high`, `xhigh` |
235
- | `permissions.autoAllowRead` | `true` | Auto-approve read-only tools |
236
- | `permissions.blockWrites` | `true` | Block edit and write tools |
237
- | `permissions.blockBash` | `true` | Allow only read-only bash commands |
238
- | `memoryEnabled` | `true` | Per-project agent memory |
239
- | `testomatioHost` | `https://app.testomat.io` | Testomat.io base URL, for self-hosted instances |
240
- | `toolGate.activeTools` | — | Per-MCP-server glob patterns of tool names to keep active; the rest load on demand |
352
+ This repository is also the public issue tracker for both surfaces:
241
353
 
242
- API keys are never stored in these files — they come from environment variables or `.env` files (working directory or `~/.testeiya/.env`).
354
+ - Testeiya Desktop app, the packaged desktop application
355
+ - Testeiya CLI, the command-line agent in `src/`
243
356
 
244
- ## License
357
+ ## Licence
245
358
 
246
- ISC
359
+ [MIT](LICENSE).
@@ -0,0 +1,79 @@
1
+ import dedent from "dedent";
2
+ import { TESTEIYA_DIR_NAME } from "./vocab.js";
3
+ /** System-prompt section describing the workspace context; "" when none. */
4
+ export function contextPromptSection(entries, folders = []) {
5
+ if (entries.length === 0 && folders.length === 0)
6
+ return "";
7
+ return dedent `
8
+ <workspace-context>
9
+ This workspace has context attached — the user (or you, earlier) put it there for a purpose. Consult it before answering, and prefer it over assumptions about the project.
10
+
11
+ ${contextLines(entries, folders)}
12
+
13
+ ALL of it lives under the hidden \`${TESTEIYA_DIR_NAME}/\` dir: file-search tools skip hidden dirs by default, so search it explicitly (pass hidden:true, or prefix the path with \`${TESTEIYA_DIR_NAME}/\`). Linked folders and cloned repositories are reference material: read them, never modify them. A linked folder is a symlink — wildcard searches do not descend into it; search it with its own path prefix (e.g. \`${TESTEIYA_DIR_NAME}/<name>/\`). Documents under \`${TESTEIYA_DIR_NAME}/requirements\` and \`${TESTEIYA_DIR_NAME}/docs\` are specs and plans — use them when writing or reviewing tests.
14
+ </workspace-context>
15
+ `;
16
+ }
17
+ /** Per-prompt notice when the context changed mid-session; appended to the next prompt. */
18
+ export function contextUpdateNotice(entries, folders = []) {
19
+ if (entries.length === 0 && folders.length === 0) {
20
+ return dedent `
21
+ <workspace-context-update>
22
+ All extra workspace context was removed. Do not rely on it anymore.
23
+ </workspace-context-update>
24
+ `;
25
+ }
26
+ return dedent `
27
+ <workspace-context-update>
28
+ The workspace context just changed. It now contains:
29
+
30
+ ${contextLines(entries, folders)}
31
+
32
+ This was done for a purpose — take it into account for this and future requests. Remember \`${TESTEIYA_DIR_NAME}/\` is hidden: search it with hidden:true or an explicit path prefix.
33
+ </workspace-context-update>
34
+ `;
35
+ }
36
+ function contextLines(entries, folders) {
37
+ const lines = [];
38
+ const covered = new Set(entries.map((e) => parentDir(e.path)));
39
+ for (const f of folders) {
40
+ if (covered.has(f.path))
41
+ continue;
42
+ lines.push(`- \`${f.path}/\` — ${folderPurpose(f.name)}`);
43
+ }
44
+ for (const e of entries)
45
+ lines.push(`- ${describeEntry(e)}`);
46
+ return lines.join("\n");
47
+ }
48
+ function folderPurpose(name) {
49
+ if (name === "manual-tests") {
50
+ return "the project's manual test suites pulled from Testomat.io (*.test.md — THE manual tests of this project)";
51
+ }
52
+ if (name === "code")
53
+ return "reference code added as context";
54
+ if (name === "requirements")
55
+ return "requirements and specs";
56
+ if (name === "docs")
57
+ return "test planning and strategy documents";
58
+ if (name === "auto-tests")
59
+ return "automated test references";
60
+ return "exploratory testing setup";
61
+ }
62
+ function parentDir(rel) {
63
+ const idx = rel.lastIndexOf("/");
64
+ if (idx < 0)
65
+ return "";
66
+ return rel.slice(0, idx);
67
+ }
68
+ function describeEntry(e) {
69
+ const date = e.addedAt?.split("T")[0] ?? "";
70
+ let from = "";
71
+ if (e.origin && e.origin !== e.name)
72
+ from = ` from ${e.origin}`;
73
+ if (e.kind === "repo")
74
+ return `\`${e.path}\` — git repository${from} (${date})`;
75
+ if (e.kind === "folder")
76
+ return `\`${e.path}\` — local folder${from} (${date})`;
77
+ return `\`${e.path}\` — document${from} (${date})`;
78
+ }
79
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../prompt/context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAClC,OAAuB,EACvB,UAA2B,EAAE;IAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,OAAO,MAAM,CAAA;;;;IAIX,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;yCAEO,iBAAiB,gIAAgI,iBAAiB,0NAA0N,iBAAiB,kCAAkC,iBAAiB,yBAAyB,iBAAiB;;GAEhhB,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CACjC,OAAuB,EACvB,UAA2B,EAAE;IAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,MAAM,CAAA;;;;KAIZ,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAA;;;;IAIX,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;;kGAEgE,iBAAiB;;GAEhH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAuB,EAAE,OAAwB;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,OAAO,yGAAyG,CAAC;IACnH,CAAC;IACD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,iCAAiC,CAAC;IAC9D,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,wBAAwB,CAAC;IAC7D,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,sCAAsC,CAAC;IACnE,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,2BAA2B,CAAC;IAC9D,OAAO,2BAA2B,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,CAAe;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI;QAAE,IAAI,GAAG,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;IAChE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,sBAAsB,IAAI,KAAK,IAAI,GAAG,CAAC;IAChF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,IAAI,KAAK,IAAI,GAAG,CAAC;IAChF,OAAO,KAAK,CAAC,CAAC,IAAI,gBAAgB,IAAI,KAAK,IAAI,GAAG,CAAC;AACrD,CAAC"}