testeiya 0.2.1 → 0.3.1-0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +309 -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 +70 -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 +207 -0
  20. package/dist/src/args.js.map +1 -0
  21. package/dist/src/cli.js +114 -0
  22. package/dist/src/cli.js.map +1 -0
  23. package/dist/src/doctor.js +171 -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 +194 -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 +295 -0
  40. package/dist/src/run.js.map +1 -0
  41. package/dist/src/session.js +98 -0
  42. package/dist/src/session.js.map +1 -0
  43. package/dist/src/sessions.js +72 -0
  44. package/dist/src/sessions.js.map +1 -0
  45. package/dist/src/skills.js +88 -0
  46. package/dist/src/skills.js.map +1 -0
  47. package/dist/vendor/mcp.js +14801 -0
  48. package/mcp-tools.json +2967 -0
  49. package/package.json +34 -43
  50. package/prompt/context.ts +101 -0
  51. package/prompt/index.ts +102 -0
  52. package/prompt/print.ts +32 -0
  53. package/prompt/project-info.ts +30 -0
  54. package/prompt/system-prompt.ts +187 -0
  55. package/{src/prompt → prompt}/testomatio.ts +120 -9
  56. package/prompt/tools.ts +72 -0
  57. package/prompt/vocab.ts +7 -0
  58. package/skills/codeceptjs/ci-fix-tests/SKILL.md +7 -8
  59. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +47 -64
  60. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +56 -47
  61. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +144 -106
  62. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +50 -57
  63. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +88 -196
  64. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +4 -5
  65. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +25 -36
  66. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +23 -36
  67. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +23 -36
  68. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +23 -35
  69. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +50 -53
  70. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +87 -191
  71. package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/SKILL.md +1 -1
  72. package/{skills.lock.json → skills/skills.lock.json} +43 -36
  73. package/skills/skills.yaml +34 -0
  74. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +49 -61
  75. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  76. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +20 -7
  77. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +41 -289
  78. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  79. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  80. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  81. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  82. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  83. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  84. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  85. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +5 -3
  86. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  87. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  88. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  89. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  90. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  91. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +1 -1
  92. package/skills/testomatio/test-management/qa-thinking/SKILL.md +25 -25
  93. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +14 -1
  94. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +8 -0
  95. package/assets/testeiya-logo-dark.svg +0 -16
  96. package/assets/testeiya-logo.svg +0 -15
  97. package/models.catalog.json +0 -6963
  98. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  99. package/skills/playwright-best-practices-skill/README.md +0 -147
  100. package/skills/testeiya/README.md +0 -29
  101. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  102. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  103. package/skills/testeiya/check-tests/SKILL.md +0 -260
  104. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  105. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  106. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  107. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  108. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  109. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  110. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  111. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  112. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  113. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  114. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  115. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  116. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  117. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  118. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  119. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  120. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  121. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  122. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  123. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  124. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  125. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  126. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  127. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  128. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  129. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  130. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  131. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  132. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  133. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  134. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  135. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  136. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  137. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  138. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  139. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  140. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  141. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  142. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  143. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  144. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  145. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  146. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  147. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  148. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  149. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  150. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  151. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  152. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  153. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  154. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  155. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  156. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  157. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  158. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  159. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  160. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  161. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  162. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  163. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  164. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  165. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  166. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  167. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  168. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  169. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  170. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  171. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  172. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  173. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  174. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  175. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  176. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  177. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  178. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  179. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  180. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  181. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  182. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  183. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  184. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  185. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  186. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  187. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  188. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  189. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  190. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  191. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  192. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  193. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  194. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  195. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  196. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  197. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  198. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  199. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  200. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  201. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  202. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  203. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  204. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  205. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  206. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  207. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  208. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  209. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  210. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  211. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  212. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  213. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  214. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  215. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  216. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  217. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  218. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  219. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  220. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  221. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  222. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  223. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  224. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  225. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  226. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  227. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  228. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  229. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  230. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  231. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  232. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  233. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  234. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  235. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  236. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  237. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  238. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  239. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  240. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  241. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  242. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  243. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  244. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  245. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  246. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  247. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  248. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  249. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  250. package/skills.yaml +0 -21
  251. package/src/ai-debug.ts +0 -188
  252. package/src/api/agent-get.ts +0 -22
  253. package/src/api/agent-start.ts +0 -384
  254. package/src/api/client-log.ts +0 -29
  255. package/src/api/context.ts +0 -332
  256. package/src/api/debug-layout.ts +0 -47
  257. package/src/api/debug-report.ts +0 -29
  258. package/src/api/debug-snapshot.ts +0 -30
  259. package/src/api/debug-stream.ts +0 -52
  260. package/src/api/files-delete.ts +0 -184
  261. package/src/api/files-read.ts +0 -41
  262. package/src/api/files-rename.ts +0 -99
  263. package/src/api/files-tree.ts +0 -292
  264. package/src/api/files-write.ts +0 -41
  265. package/src/api/mcp.ts +0 -603
  266. package/src/api/memory.ts +0 -69
  267. package/src/api/open-external.ts +0 -39
  268. package/src/api/playwright-cli.ts +0 -606
  269. package/src/api/providers.ts +0 -457
  270. package/src/api/read-env-token.ts +0 -33
  271. package/src/api/sessions.ts +0 -79
  272. package/src/api/settings.ts +0 -120
  273. package/src/api/skills.ts +0 -58
  274. package/src/api/testomatio-attachment.ts +0 -89
  275. package/src/api/testomatio-auth.ts +0 -284
  276. package/src/api/testomatio-proxy.ts +0 -197
  277. package/src/api/testomatio-run-stats.ts +0 -81
  278. package/src/api/testomatio-target.ts +0 -225
  279. package/src/api/testomatio-transcription.ts +0 -82
  280. package/src/api/workspace-search.ts +0 -96
  281. package/src/api/workspace-sync.ts +0 -151
  282. package/src/api/workspace.ts +0 -165
  283. package/src/app-server.ts +0 -556
  284. package/src/bridge.ts +0 -251
  285. package/src/check-tests.ts +0 -156
  286. package/src/cli.ts +0 -17
  287. package/src/commands.ts +0 -244
  288. package/src/config.ts +0 -183
  289. package/src/connection.ts +0 -658
  290. package/src/context-store.ts +0 -265
  291. package/src/debug-bus.ts +0 -405
  292. package/src/extensions/tool-gate.ts +0 -220
  293. package/src/extensions/webui/ask-channel.ts +0 -52
  294. package/src/extensions/webui/index.ts +0 -184
  295. package/src/extensions/webui/tools/ask-question.ts +0 -88
  296. package/src/extensions/webui/tools/query-result.ts +0 -79
  297. package/src/extensions/webui/tools/render-chart.ts +0 -53
  298. package/src/extensions/webui/tools/render-item.ts +0 -61
  299. package/src/extensions/webui/tools/render-list.ts +0 -170
  300. package/src/extensions/webui/tools/render-result.ts +0 -85
  301. package/src/extensions/webui/tools/render-tree.ts +0 -71
  302. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  303. package/src/extensions/webui/tools/widget-result.ts +0 -13
  304. package/src/extensions/webui/widget-channel.ts +0 -50
  305. package/src/file-log.ts +0 -196
  306. package/src/git-tracked.ts +0 -68
  307. package/src/gitignore.ts +0 -53
  308. package/src/json-store.ts +0 -43
  309. package/src/load-env.ts +0 -70
  310. package/src/loader-style.ts +0 -96
  311. package/src/main.ts +0 -140
  312. package/src/mcp-catalog.ts +0 -96
  313. package/src/models-catalog.ts +0 -72
  314. package/src/permissions.ts +0 -120
  315. package/src/project-dir.ts +0 -189
  316. package/src/project-info.ts +0 -108
  317. package/src/prompt/app-ui.ts +0 -59
  318. package/src/prompt/browser.ts +0 -27
  319. package/src/prompt/index.ts +0 -62
  320. package/src/prompt/tools.ts +0 -27
  321. package/src/server-info.ts +0 -62
  322. package/src/session-factory.ts +0 -442
  323. package/src/session-store.ts +0 -115
  324. package/src/shell-env.ts +0 -45
  325. package/src/skills.ts +0 -163
  326. package/src/sync-snapshot.ts +0 -140
  327. package/src/telemetry.ts +0 -239
  328. package/src/testomatio-auth.ts +0 -299
  329. package/src/testomatio.ts +0 -98
  330. package/src/theme.ts +0 -30
  331. package/src/user-env.ts +0 -94
  332. package/src/welcome.ts +0 -194
  333. package/src/workspace/safe-path.ts +0 -85
  334. package/src/workspace/test-md.ts +0 -70
  335. package/src/workspace-model.ts +0 -440
  336. package/testeiya.config.json +0 -14
  337. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication-flows.md +0 -0
  338. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication.md +0 -0
  339. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/clock-mocking.md +0 -0
  340. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/mobile-testing.md +0 -0
  341. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-context.md +0 -0
  342. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-user.md +0 -0
  343. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/network-advanced.md +0 -0
  344. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/third-party.md +0 -0
  345. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/pom-vs-fixtures.md +0 -0
  346. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/test-architecture.md +0 -0
  347. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/when-to-mock.md +0 -0
  348. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/browser-apis.md +0 -0
  349. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/iframes.md +0 -0
  350. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/service-workers.md +0 -0
  351. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/websockets.md +0 -0
  352. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/annotations.md +0 -0
  353. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/assertions-waiting.md +0 -0
  354. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/configuration.md +0 -0
  355. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/fixtures-hooks.md +0 -0
  356. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/global-setup.md +0 -0
  357. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/locators.md +0 -0
  358. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/page-object-model.md +0 -0
  359. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/projects-dependencies.md +0 -0
  360. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-data.md +0 -0
  361. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-suite-structure.md +0 -0
  362. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-tags.md +0 -0
  363. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/console-errors.md +0 -0
  364. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/debugging.md +0 -0
  365. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/error-testing.md +0 -0
  366. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/flaky-tests.md +0 -0
  367. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/angular.md +0 -0
  368. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/nextjs.md +0 -0
  369. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/react.md +0 -0
  370. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/vue.md +0 -0
  371. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/ci-cd.md +0 -0
  372. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/docker.md +0 -0
  373. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/github-actions.md +0 -0
  374. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/gitlab.md +0 -0
  375. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/other-providers.md +0 -0
  376. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/parallel-sharding.md +0 -0
  377. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/performance.md +0 -0
  378. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/reporting.md +0 -0
  379. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/test-coverage.md +0 -0
  380. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/accessibility.md +0 -0
  381. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/api-testing.md +0 -0
  382. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/browser-extensions.md +0 -0
  383. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/canvas-webgl.md +0 -0
  384. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/component-testing.md +0 -0
  385. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/drag-drop.md +0 -0
  386. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/electron.md +0 -0
  387. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-operations.md +0 -0
  388. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-upload-download.md +0 -0
  389. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/forms-validation.md +0 -0
  390. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/graphql-testing.md +0 -0
  391. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/i18n.md +0 -0
  392. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/performance-testing.md +0 -0
  393. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/security-testing.md +0 -0
  394. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/visual-regression.md +0 -0
  395. /package/skills/{playwright-cli → playwright/playwright-cli}/SKILL.md +0 -0
  396. /package/skills/{playwright-cli → playwright/playwright-cli}/references/element-attributes.md +0 -0
  397. /package/skills/{playwright-cli → playwright/playwright-cli}/references/playwright-tests.md +0 -0
  398. /package/skills/{playwright-cli → playwright/playwright-cli}/references/request-mocking.md +0 -0
  399. /package/skills/{playwright-cli → playwright/playwright-cli}/references/running-code.md +0 -0
  400. /package/skills/{playwright-cli → playwright/playwright-cli}/references/session-management.md +0 -0
  401. /package/skills/{playwright-cli → playwright/playwright-cli}/references/storage-state.md +0 -0
  402. /package/skills/{playwright-cli → playwright/playwright-cli}/references/test-generation.md +0 -0
  403. /package/skills/{playwright-cli → playwright/playwright-cli}/references/tracing.md +0 -0
  404. /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,384 @@
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 skills # list the skills bundled with this package
58
+ testeiya sessions # list saved sessions for this folder
59
59
  ```
60
60
 
61
- Bring an API key for your LLM provider, or sign in with an AI coding subscription you already have — see [Providers](#providers) below.
61
+ The agent runs one task and exits. Progress goes to stderr, so a run drops into CI as-is:
62
62
 
63
- Then ask it things like:
63
+ | Exit code | Meaning |
64
+ |---|---|
65
+ | `0` | pass, or a positive verdict from the agent |
66
+ | `1` | failed run, or a negative verdict — findings that need a human |
67
+ | `2` | bad usage |
68
+ | `130` | interrupted |
64
69
 
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"
70
+ Pass `--exit-zero` when a negative verdict must not fail the job. A broken run
71
+ still exits `1`, bad usage still exits `2`, and the verdict is still in the
72
+ report and in the run envelope for anything that wants to gate on it.
69
73
 
70
- Multi-line pastes (API docs, specs, requirements) go straight into the prompt.
74
+ A task can come from stdin too:
71
75
 
72
- ## Providers
76
+ ```bash
77
+ cat issue-42.md | testeiya task --output report.md
78
+ ```
73
79
 
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.
80
+ Every command takes `--json` for machine-readable output of the run envelope
81
+ (verdict, reason, tokens, session id). `testeiya --help` lists all options;
82
+ `testeiya help` is the full guide.
75
83
 
76
- ### API platform access
84
+ ## Scenarios
77
85
 
78
- Pick whichever provider your team already uses, export its API key, and go:
86
+ Each scenario below is a single unattended run. Nobody answers questions; the
87
+ agent reads what the trigger gives it and acts on its own judgement. If its
88
+ verdict is negative, the job fails — that failure *is* the signal.
79
89
 
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 |
90
+ ### Grill a pull request
91
91
 
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`.
92
+ Every PR gets a QA review before merge. The agent loads the branch's diff,
93
+ analyzes it through the `qa-thinking` skill — edge cases, negative flows,
94
+ abuses, data-consistency risks — and posts the findings as a PR comment:
93
95
 
94
- Keys can also live in a `.env` file in the working directory or in `~/.testeiya/.env`.
96
+ ```bash
97
+ git fetch origin "$PR_BRANCH"
98
+ git checkout "$PR_BRANCH"
99
+ testeiya task "Review this pull request as a QA engineer. What could go wrong?" \
100
+ --output gh:pr-comment --output review.json
101
+ ```
95
102
 
96
- ### Subscriptions
103
+ Exit code `1` means the agent found real risk, so you can gate the merge on it.
97
104
 
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:
105
+ ### Write test cases from a pull request
99
106
 
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` |
107
+ Same trigger, different deliverable: the `qa-write-test-cases` skill turns the
108
+ change into test cases in Testomat.io markdown format, written as a build
109
+ artifact ready to commit or import:
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
+ ```bash
112
+ testeiya task "Create test cases covering the changes in this pull request" \
113
+ --output testcases/
114
+ ```
110
115
 
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)).
116
+ With `TESTOMATIO` and the project id set, add
117
+ `sync them to Testomat.io` to the task and they land straight in the TMS via
118
+ `sync-test-cases-with-tms`.
112
119
 
113
- ## Connect to Testomat.io
120
+ ### Create test cases from a new issue
114
121
 
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.
122
+ A requirements text arrives from the issue tracker piped in, no human
123
+ summarizing it first. The agent writes a checklist and test cases from it:
116
124
 
117
- Interactively, type `/connect` inside the agent and pick a project.
125
+ ```bash
126
+ gh issue view 57 --json title,body -q '.title + "\n\n" + .body' \
127
+ | testeiya task --output testcases/issue-57.md
128
+ ```
118
129
 
119
- In CI or scripts, pass the project token via environment variables:
130
+ ### Explore a deployed app with Explorbot
131
+
132
+ After a deploy, point [Explorbot](https://github.com/testomatio/explorbot) — the
133
+ autonomous browser-testing CLI the agent drives through the `explorbot-*`
134
+ skills — at the staging URL. It researches, plans, and tests the live app in
135
+ its own browser, then reports what broke:
120
136
 
121
137
  ```bash
122
- export TESTOMATIO=tstmt_your-project-token
138
+ testeiya task "Run explorbot against https://staging.example.com, max 10 tests, report failures" \
139
+ --output explorbot-report.md
123
140
  ```
124
141
 
125
- ## Skills
126
-
127
- Testeiya ships with a curated skill library, loaded automatically:
142
+ ### Repair failing tests after a red build
128
143
 
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
144
+ On a failed CodeceptJS run, the `ci-fix-tests` skill attempts safe fixes only
145
+ locator drift, missing waitsreruns just the failing scenarios, rolls back any
146
+ edit that did not help, and always writes `output/ci-fix.md` for the next job:
133
147
 
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.
148
+ ```bash
149
+ testeiya task "Fix the failed CodeceptJS tests using ci-fix-tests. No refactors." \
150
+ --no-session
151
+ ```
135
152
 
136
- ## Slash commands
153
+ ### Audit the test suite on a schedule
137
154
 
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 |
155
+ Nightly, the agent walks the Testomat.io project and reports gaps — suites with
156
+ no tests, cases gone stale against the current code, coverage holes:
146
157
 
147
- ## Running in CI
158
+ ```bash
159
+ TESTOMATIO=tstmt_xxx testeiya task \
160
+ "Audit this project: which suites have no automated tests, and which manual cases look automatable?" \
161
+ --output audits/$(date +%F).md
162
+ ```
148
163
 
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.
164
+ ## CI setup
150
165
 
151
- Each example below uses a different LLM provider any provider works on any CI; just export the matching API key variable.
166
+ Testeiya needs three things in any CI system: a provider key, a model name, and
167
+ the checkout of whatever the task reads. Everything else is standard.
152
168
 
153
169
  ### GitHub Actions
154
170
 
171
+ GitHub runners ship the [GitHub CLI](https://cli.github.com), so posting back to
172
+ the PR is one flag. `GITHUB_TOKEN` authenticates it; keep the LLM key in
173
+ repository secrets.
174
+
155
175
  ```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 }}
176
+ name: qa-review
177
+ on:
178
+ pull_request:
179
+ types: [opened, synchronize]
180
+
181
+ permissions:
182
+ pull-requests: write
183
+ contents: read
184
+
185
+ jobs:
186
+ grill:
187
+ runs-on: ubuntu-latest
188
+ env:
189
+ GH_TOKEN: ${{ github.token }}
190
+ OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
191
+ TESTEIYA_MODEL: openrouter/anthropic/claude-sonnet-5
192
+ # optional, for scenarios that touch Testomat.io
193
+ TESTOMATIO: ${{ secrets.TESTOMATIO }}
194
+ TESTOMATIO_PROJECT_ID: my-project
195
+ steps:
196
+ - uses: actions/checkout@v4
197
+ with:
198
+ fetch-depth: 0
199
+ - uses: actions/setup-node@v4
200
+ with:
201
+ node-version: 22
202
+ - run: npx testeiya@latest doctor
203
+ - run: |
204
+ npx testeiya@latest task \
205
+ "Review this pull request as a QA engineer. What could go wrong?" \
206
+ --output gh:pr-comment --output review.json
207
+ - uses: actions/upload-artifact@v4
208
+ if: always()
209
+ with:
210
+ name: review
211
+ path: review.json
161
212
  ```
162
213
 
214
+ The same shape works for the other scenarios: trigger on `issues` and pipe the
215
+ body in for test-case generation, or run on a `schedule` for the nightly audit.
216
+
163
217
  ### GitLab CI
164
218
 
219
+ GitLab runners do not ship `gh`, so the report goes to job artifacts — visible
220
+ in the merge request pipeline page. Exit code `1` fails the job and blocks the
221
+ merge when you mark it required.
222
+
165
223
  ```yaml
166
- testeiya:
167
- image: oven/bun:1
168
- script:
169
- - bunx testeiya
224
+ qa-review:
225
+ image: node:22
226
+ rules:
227
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
170
228
  variables:
171
- OPENAI_API_KEY: $OPENAI_API_KEY
172
- TESTOMATIO: $TESTOMATIO_TOKEN
229
+ TESTEIYA_MODEL: openrouter/anthropic/claude-sonnet-5
230
+ TESTOMATIO_PROJECT_ID: my-project
231
+ script:
232
+ - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
233
+ - npx testeiya@latest doctor
234
+ - npx testeiya@latest task
235
+ "Review this merge request as a QA engineer. What could go wrong?"
236
+ --output review/report.md --output review/envelope.json
237
+ artifacts:
238
+ when: always
239
+ paths:
240
+ - review/
241
+ parallel:
242
+ # secrets go to Settings > CI/CD > Variables:
243
+ # OPENROUTER_API_KEY (masked), TESTOMATIO (masked, protected)
173
244
  ```
174
245
 
175
- ### Bitbucket Pipelines
246
+ For posting back to the merge request, hand the envelope's report to GitLab's
247
+ API in a follow-up step, or install `gh` plus a token mirror if the project is
248
+ also on GitHub.
176
249
 
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
250
+ ### Anywhere else
208
251
 
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)
252
+ Any scheduler that can run a container works — the contract is just stdin,
253
+ stdout, and an exit code:
254
+
255
+ ```bash
256
+ echo "Audit the checkout suite for gaps" | testeiya task --output audit.md
257
+ case $? in
258
+ 0) echo "clean" ;;
259
+ 1) echo "findings need review" ;;
260
+ esac
219
261
  ```
220
262
 
221
- ## Configuration
263
+ ## Where the report goes
264
+
265
+ `--output` names a destination and can repeat. Without one the report goes to stdout.
266
+
267
+ ```bash
268
+ testeiya task "<task>" --output report.md --output run.json --output gh:pr-comment
269
+ ```
270
+
271
+ | Destination | What happens |
272
+ |---|---|
273
+ | `report.md` | the agent writes the report there |
274
+ | `run.json` | the run envelope: verdict, reason, report, tokens, session id |
275
+ | `gh:pr-comment` | posted on this branch's pull request |
276
+ | `gh:pr#123` | posted on that pull request |
277
+
278
+ Posting uses the GitHub CLI and resolves the PR number from `GITHUB_EVENT_PATH`,
279
+ `GITHUB_REF`, or `gh pr view` — so inside Actions it just works. Every
280
+ destination is checked before the run starts, so a missing `gh` costs no tokens.
281
+
282
+ `--footer "<text>"` adds a line under a posted comment, and nowhere else. It is
283
+ what turns a report into a conversation: tell the reader how to answer, and let
284
+ the workflow feed their reply back into the same session.
285
+
286
+ ```bash
287
+ testeiya task "Review this pull request" \
288
+ --output gh:pr-comment \
289
+ --footer "> You can reply to this comment by typing /testeiya"
290
+ ```
291
+
292
+ ## Sessions
293
+
294
+ Runs are saved under `~/.testeiya`, so a follow-up picks up where the last one
295
+ stopped. A resumed run reuses its session's model.
296
+
297
+ ```bash
298
+ testeiya task "Review the checkout suite" --name checkout-review --output report.md
299
+ testeiya task "Now write the missing cases" -c
300
+ testeiya sessions
301
+ testeiya task "<task>" --resume <id>
302
+ ```
303
+
304
+ Pass `--name` to label a session and `--no-session` to save nothing.
305
+
306
+ In CI, `--session <label>` is the one to reach for: it continues the session
307
+ with that label, and starts it the first time, so a job that runs again and
308
+ again needs no "does it exist yet" branch. Give each thread its own label, and
309
+ carry `~/.testeiya` between rounds with the runner's cache. `--no-session` keeps
310
+ runners stateless when continuity is not wanted.
311
+
312
+ ```bash
313
+ testeiya task "Review the new commits" --session "pr-42" --output gh:pr-comment
314
+ ```
315
+
316
+ ## Testomat.io
317
+
318
+ Set `TESTOMATIO` to a project API key. The agent can then read and write that
319
+ project's tests, suites, runs and plans through `check-tests` and the REST API.
320
+
321
+ ```bash
322
+ TESTOMATIO=tstmt_xxx testeiya task --project my-project "Which suites have no tests?"
323
+ ```
324
+
325
+ Add the project id and the agent also gets the Testomat.io MCP tools. The id
326
+ comes from `--project` or from `TESTOMATIO_PROJECT_ID`; the MCP server needs it,
327
+ because a token alone does not say which project to talk to. `TESTOMATIO_URL`
328
+ points at a self-hosted instance.
329
+
330
+ ## Skills
331
+
332
+ A skill is a folder with a `SKILL.md`. The agent loads them all and invokes the
333
+ ones a task calls for — you never pick a skill explicitly, the task phrasing
334
+ does.
335
+
336
+ The set is vendored from upstream repositories and moves with every release, so
337
+ ask your own install rather than a list in a README:
338
+
339
+ ```bash
340
+ testeiya skills # every bundled skill: name and what it is for
341
+ testeiya skills playwright # filter by name, category or description
342
+ testeiya skills --json # [{name, group, description}]
343
+ ```
344
+
345
+ Categories today: QA process, test management, test automation, Explorbot,
346
+ Playwright, CodeceptJS.
347
+
348
+ Sources are declared in `skills/skills.yaml` and pinned in
349
+ `skills/skills.lock.json`. The vendored folders are deliberately not committed —
350
+ they belong to their authors, under their own licences. A clone has the manifest
351
+ and nothing else; `node scripts/vendor-skills.js` fills the tree. Every release
352
+ runs it, so the published `testeiya` package ships each skill as current on
353
+ release day.
354
+
355
+ `skillsOverride` in `src/session.ts` keeps only what is found under that tree,
356
+ so an arbitrary clone cannot hand the model its own skills. To add yours, point
357
+ `additionalSkillPaths` at your folder. [EXTENDING.md](EXTENDING.md) covers both hooks.
358
+
359
+ To propose a new source, add its line to `skills/skills.yaml`. See [CONTRIBUTING.md](CONTRIBUTING.md).
360
+
361
+ ## Building your own agent
362
+
363
+ The CLI is a thin composition over [pi](https://pi.dev): about 1,500 lines wiring
364
+ the SDK to the prompt and skills here. A fork can add pi extensions and custom
365
+ tools, or swap the one-shot run loop for pi's full interactive TUI.
366
+ [EXTENDING.md](EXTENDING.md) walks through both.
367
+
368
+ ## Contributing
222
369
 
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.
370
+ Prompt wording is exactly what an outside contributor can improve, and a change
371
+ to it changes how the agent behaves for everyone. Read
372
+ [CONTRIBUTING.md](CONTRIBUTING.md) first. It covers what belongs here and what
373
+ belongs upstream, in the repository that owns a given skill.
224
374
 
225
- All options:
375
+ ## Issues
226
376
 
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 |
377
+ This repository is also the public issue tracker for both surfaces:
241
378
 
242
- API keys are never stored in these files — they come from environment variables or `.env` files (working directory or `~/.testeiya/.env`).
379
+ - Testeiya Desktop app, the packaged desktop application
380
+ - Testeiya CLI, the command-line agent in `src/`
243
381
 
244
- ## License
382
+ ## Licence
245
383
 
246
- ISC
384
+ [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