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
@@ -1,199 +0,0 @@
1
- ---
2
- name: setup-pr-testing
3
- description: Set up CI so pull requests drive selective testing with Testomat.io. When a PR opens, a test run scoped to its changes is created for testers. The affected automated tests launch after a preview deploy or on merge. Use when the user wants to integrate Testomat.io runs into a CI pipeline, create test runs per pull request, or trigger affected tests from CI events.
4
- license: MIT
5
- metadata:
6
- author: Testomat.io
7
- version: 2.1.0
8
- ---
9
-
10
- # Setup PR Testing
11
-
12
- I set up a project's CI for PR-driven testing. What gets wired depends on the project's tests:
13
-
14
- - manual — testers get a run to start on Testomat.io the moment the PR opens; nothing to execute.
15
- - automated — an execution mode must be chosen: inline in the pipeline, a Testomat.io CI profile, or another workflow/repo.
16
- - mixed — both, sharing one run per PR.
17
-
18
- Every reporter command the jobs execute is documented in `run-tests-with-testomatio-reporter` — read it before wiring.
19
-
20
- > **GOAL: a working pipeline committed to the project's own CI system.** That CI configuration is the one and only finished result. I run locally to author it — I am never part of CI. Do not execute reporter commands while authoring; the one exception is the final battle-test (Step 7), on a PR the user picked.
21
-
22
- ## Possible flows
23
-
24
- Post this diagram as a chat message before the first question — never open with a question; it frames everything that follows. When questions go through a form or tool, the diagram must already be on screen in an earlier message. Render diagrams as Mermaid when the environment displays it; fall back to ASCII otherwise.
25
-
26
- Never post a diagram bare — follow it immediately with one short paragraph explaining it: this is the general schema of PR testing, for the user to examine before anything is implemented; a run is created when a PR opens, and the user will now choose which types of tests execute (manual, automated, or both) and how the automated ones run — inline in the pipeline, through a Testomat.io CI profile, or by dispatching another repo — and when they launch (preview deploy or merge).
27
-
28
- ```mermaid
29
- flowchart LR
30
- PR([PR opened]) --> RUN[Create a run scoped<br/>to the PR changes]
31
- RUN -->|manual / mixed| TESTERS[Testers execute manual cases<br/>on Testomat.io]
32
- RUN -->|automated / mixed| SCHED[Schedule automated tests —<br/>nothing runs yet]
33
- SCHED --> TRIG{When to launch?}
34
- TRIG -->|preview deployed| MODE{How to execute?}
35
- TRIG -->|PR merged| MODE
36
- MODE -->|via a Testomat.io CI profile| RES
37
- MODE -->|inline in this pipeline| RES
38
- MODE -->|by dispatching another repo| RES
39
- RES[Run the affected automated tests —<br/>results land in the PR run]
40
- ```
41
-
42
- Keep every diagram clear: verb-first action blocks ("Create a run", "Testers execute manual cases"), decisions as questions, configuration details in the text below — never as blocks, and end at an outcome.
43
-
44
- - Manual-only project → only the top branch: the run is complete at creation, testers execute it on Testomat.io, nothing launches.
45
- - Automated-only project → only the bottom branch: the scheduled run launches on a trigger through the chosen mode.
46
- - Mixed project → both branches share one run per PR.
47
-
48
- ## The coverage map drives everything
49
-
50
- A coverage map maps source files/globs to test identifiers; the reporter filters it by the diff so only impacted tests are prepared and run. It is produced by the `qa-test-code-coverage` skill — default `coverage.tests.yml`, one file serving both manual and automated tests. Missing map → delegate to `qa-test-code-coverage`; never hand-write one here. Without a map nothing can be filtered and no pipeline can be wired.
51
-
52
- ## Method, not snippets
53
-
54
- The valuable knowledge here is the flow model and the decisions to confirm with the user. The reporter commands come from `run-tests-with-testomatio-reporter`; translating triggers into a specific CI's YAML/Groovy is yours — you already know how every CI expresses "on PR open", "after deploy finished", "on merge", "carry a value between pipelines", and "don't fail the pipeline". Write that config for the CI in front of you; never bake per-CI workflow files into this skill.
55
-
56
- ## Critical Constraints
57
-
58
- - **Never execute the reporter while authoring — the deliverable is committed CI config.** Sole exception: the user-approved battle-test (Step 7).
59
- - **Battle-test executes tests only for an already-merged PR**; an open PR only gets a run created.
60
- - **Only touch CI config files** — never source or test files.
61
- - Diagrams gate the dialogue: flows diagram before the first question, selected-flow diagram approved before wiring (Step 3), every diagram followed by a one-paragraph explanation.
62
- - Discovery first — delegate to `scan-automation-project` before writing anything.
63
- - Never assume or hardcode the CI system; read the repo, ask if unclear.
64
- - Never guess a Testomat.io CI profile name — pick from a list (Testomat.io MCP) confirmed by the user, or ask.
65
- - Say "Testomat.io CI profile" in full, never bare "profile"; every question option explains itself in plain words.
66
- - Avoid presenting the project's full test inventory as the run scope; never print full test lists.
67
- - No coverage map → no pipeline; delegate map creation to `qa-test-code-coverage`.
68
- - The PR-open job creates the run and executes nothing.
69
- - Preview launches gate on the deploy-finished signal, never on the push.
70
- - Launch jobs never block a PR and never fail a merge/release pipeline.
71
- - PR comments come from the reporter's own pipes — never script a PR-comment API call.
72
- - Every run gets a PR-based title and a rungroup.
73
-
74
- ## Workflow
75
-
76
- ### Step 1 — Discover
77
-
78
- - Delegate to `scan-automation-project`: are there manual `.test.md` cases, which e2e framework exists (unit/integration don't count), do automated tests live in this repo or elsewhere.
79
- - The result fixes the project kind — manual, automated, or mixed — and with it which flows apply.
80
- - Read the repo's CI config files to identify the CI system. Several CIs or none → ask which one runs PRs.
81
- - Locate the coverage map (default `coverage.tests.yml`). Missing → propose creating it and delegate to `qa-test-code-coverage`.
82
-
83
- ### Step 2 — Present the flows and ask the unknowns
84
-
85
- Post the possible-flows diagram, trimmed to the kinds found in Step 1, as its own message with its one-paragraph explanation (what the schema is, which choices the user is about to make) — then ask only what applies. Read the CI files first so you don't ask what's already answered.
86
-
87
- Manual tests found — nothing to choose: their part of the run is complete at creation, testers start on Testomat.io immediately.
88
-
89
- Automated tests found — ❓ choose the execution mode. Each option in the question must explain itself in plain words — what runs where and who triggers it. In particular spell out what a Testomat.io CI profile is: a CI workflow configuration saved on the Testomat.io project (Settings → CI) that Testomat.io dispatches to execute the tests, with results reporting back into the run.
90
-
91
- | Mode | When it fits |
92
- | ------------------------------- | ------------------------------------------------------------------------------------------------------------- |
93
- | Remote — Testomat.io CI profile | a Testomat.io CI profile for the e2e suite exists (Settings → CI); Testomat.io owns runner, env, secrets |
94
- | Inline — this pipeline | mobile/simulators, services this pipeline spins up, or an e2e job that already works in this repo |
95
- | Cross-repo dispatch | the e2e suite lives in another repo and no Testomat.io CI profile covers it |
96
-
97
- - Remote chosen → identify the Testomat.io CI profile, never guess it: Testomat.io MCP connected → fetch the list, present it, ❓ ask the user to choose (profiles differ by workflow and job names); no MCP → ❓ ask for the exact profile name; none exists yet → creating one in Testomat.io (Settings → CI) is a prerequisite; wire the launch step ready to enable.
98
- - No e2e suite anywhere → wire only the manual flow; never fabricate an e2e job.
99
-
100
- Then the launch triggers (automated/mixed only):
101
-
102
- 1. Preview environments — is every commit deployed to a preview server? If yes: what is the observable deploy-finished signal, and where does the preview URL surface?
103
- 2. Post-merge timing — launch right on merge, or wait for a staging/production deploy to finish? A deploy gate needs its own observable signal.
104
-
105
- And for every kind:
106
-
107
- 3. Rungroup strategy — week / day / release / milestone.
108
- 4. Diff base — the PR's target branch for PR jobs; post-merge jobs need the previous mainline tip (diff-base rules in `run-tests-with-testomatio-reporter`).
109
-
110
- ### Step 3 — Confirm the selected flow
111
-
112
- - Draw the flow the answers produced — only the chosen kind, triggers, and execution mode. Mermaid when supported, ASCII otherwise.
113
- - ❓ Present the diagram and get approval; wire nothing until the user accepts it.
114
-
115
- Example — mixed project, Testomat.io CI profile, previews confirmed:
116
-
117
- ```mermaid
118
- flowchart LR
119
- PR([PR opened]) --> RUN[Create one mixed run<br/>scoped to the diff]
120
- RUN --> TESTERS[Testers execute manual cases<br/>on Testomat.io]
121
- RUN --> SCHED[Schedule automated tests —<br/>nothing runs yet]
122
- PREV([Preview deployed]) --> L1[Launch automated tests via the<br/>Testomat.io CI profile, against the preview]
123
- MERGE([PR merged]) --> L2[Launch automated tests<br/>with the final diff]
124
- SCHED -.-> L1
125
- SCHED -.-> L2
126
- L1 --> RES[Results land in the PR run]
127
- L2 --> RES
128
- ```
129
-
130
- ### Step 4 — Wire the phases into CI
131
-
132
- Write the jobs in the CI's own syntax; take every command and env var from `run-tests-with-testomatio-reporter`. Manual-only projects get phase (a) alone.
133
-
134
- **(a) PR opened → create the run.**
135
-
136
- - Use `start` with the coverage filter; pick the run kind matching the project's tests.
137
- - Persist the printed run id with the CI's native value-passing mechanism (artifact, variable, output); fallback is shared-run title matching.
138
- - Run once per PR (on open); pushes to the PR don't recreate runs.
139
- - A diff affecting zero tests creates no run — the job still succeeds.
140
-
141
- **(b) Preview deployed → launch against the preview** (only when Step 2 confirmed previews).
142
-
143
- - Trigger on the deploy-finished signal, never on the push.
144
- - Remote mode forwards the preview URL as a remote param; inline mode points the runner's own base-URL env at it.
145
- - Manual cases need no launch — testers work through them against the preview by hand.
146
-
147
- **(c) PR merged → launch with the final diff.**
148
-
149
- - Target the persisted run id; pass a fresh coverage filter with the post-merge diff base so the final merged diff decides what runs.
150
- - Cross-repo mode: trigger the e2e repo's pipeline with the CI's native mechanism, passing the run id, API key, and title env into it.
151
- - Keep the job non-blocking and off the release's critical path.
152
-
153
- ### Step 5 — Ensure secrets are set
154
-
155
- - Store the project API key as `TESTOMATIO_<project_slug>` in the CI's secret store; map it to the `TESTOMATIO` env var in every job that calls the reporter. ❓ Slug unknown → ask the user.
156
- - Tell the user exactly where to add it: name the secret-store location the CI at hand uses for this repo/pipeline and the exact secret name to type.
157
- - Provision the PR-comment pipe token the same way (tokens per platform in `run-tests-with-testomatio-reporter`).
158
- - ❓ Ask the user to confirm the secrets are in place before the pipeline PR merges — a pipeline with missing secrets fails on its first PR.
159
- - The Testomat.io CI profile for remote launches is configured in Testomat.io (Settings → CI), not stored as a repo secret.
160
-
161
- ### Step 6 — Suggest a PR with the new workflow
162
-
163
- - Commit the CI config on a branch and suggest opening a PR through the project's normal flow — the pipeline lands reviewed, never pushed straight to the default branch.
164
- - Put in the PR description: the approved flow diagram, the phases wired, the execution mode chosen, and the secrets/prerequisites the reviewers must provision before merging.
165
- - Where the CI runs PR-triggered workflows from the branch itself, point out that this very PR will exercise the PR-opened phase.
166
-
167
- ### Step 7 — Battle-test the setup (on approval)
168
-
169
- Prove the pipeline's commands work before the CI ever runs them — by running them once, locally, on a real change.
170
-
171
- - ❓ Ask the user for a real PR to validate with — open or already merged — and for approval to create real runs.
172
- - Reproduce the pipeline's diff locally: open PR → check out its branch and diff against the target branch; merged PR → check out the merge commit and diff against the pre-merge tip.
173
- - Create the run exactly as phase (a) does — same kind, same filter — with a title that marks it as a battle-test.
174
- - Open PR → stop here: the run stays scheduled, nothing executes.
175
- - Merged PR → the change is already in mainline, so launching is safe: run the phase (c) launch against the created run.
176
- - Report every run created — id, kind, and the tests it scoped — and ask the user to review it in Testomat.io: does the scope match what that diff should affect?
177
- - Zero tests matched → report it as a finding, then pick a PR that touches mapped source files together with the user.
178
-
179
- ### Step 8 — Summarize and hand off
180
-
181
- Present the approved flow diagram once more, now marked as wired. Report: the CI targeted and files written; which phases are wired and which were skipped (no previews / no e2e / no Testomat.io CI profile); the chosen execution mode; title scheme and rungroup; how the launch steps find the prepared run (run id carrier or shared title); the battle-test outcome and the runs awaiting the user's review; secrets and prerequisites still to provision; assumptions to confirm. Recommend committing the coverage map alongside the CI config.
182
-
183
- ## Examples
184
-
185
- **Example 1 — mixed project, previews, Testomat.io CI profile**
186
- Discovery finds manual cases and an e2e suite; MCP lists the Testomat.io CI profiles and the user picks the one running the e2e suite; previews confirmed. → Diagram approved, then all three phases wired: mixed run on PR open, preview launch gated on the deployment-success event with the preview URL as a remote param, merge launch with a fresh post-merge filter. Comment pipe enabled.
187
-
188
- **Example 2 — e2e lives in another repo, no Testomat.io CI profile**
189
- The user picks cross-repo dispatch from the mode table: the merge job triggers the e2e repo's pipeline via the CI's native mechanism, passing the run id so results land in the prepared run. Note the Testomat.io CI profile option as the simpler future path.
190
-
191
- **Example 3 — no coverage map yet**
192
- No `coverage*.yml` found → explain nothing can be filtered without a map; delegate to `qa-test-code-coverage`; wire CI only after the map exists.
193
-
194
- **Example 4 — manual-only project**
195
- `scan-automation-project` finds `.test.md` cases and no e2e framework → the flows diagram shows only the manual branch; no execution-mode or trigger questions asked. One phase wired: a manual run per PR, complete at creation — testers start on Testomat.io. Explain that launch phases need an e2e suite first.
196
-
197
- ## Related skills
198
-
199
- `run-tests-with-testomatio-reporter` (the reporter commands every job executes), `qa-test-code-coverage` (creates the coverage map this skill consumes), `scan-automation-project` (mandatory discovery), `qa-e2e-tests-reporting` (install the reporter if the project has no Testomat.io integration yet), `sync-test-cases-with-tms` (manual cases not yet in Testomat.io).
package/skills.yaml DELETED
@@ -1,21 +0,0 @@
1
- # External skills for Testeiya. ONE rule: every line is a GitHub repo.
2
- #
3
- # owner/repo a skill repo (one skill, or many)
4
- # owner/repo/tree/<ref>/<subdir> pin a branch/tag/commit, or point at a subfolder
5
- #
6
- # Each source owns one vendor folder in cli/skills/ — the repo name, or the
7
- # owner when the repo is just "skills" (testomatio/skills -> testomatio/).
8
- # Updates replace only that folder; any folder this file does not own
9
- # (e.g. cli/skills/testeiya/) holds first-party skills and is never touched.
10
- #
11
- # Categories are decided by the repo, never by this file:
12
- # - repo with a Claude-plugin marketplace (.claude-plugin/marketplace.json)
13
- # -> one category subfolder per plugin (testomatio/ -> test-management / test-automation / explorbot)
14
- # - repo without one -> skills sit right under the vendor folder (the vendor is the category)
15
- #
16
- # Edit the list, then run: bunosh skills:update [vendor] See the result: bunosh skills:list
17
-
18
- - testomatio/skills
19
- - codeceptjs/skills
20
- - currents-dev/playwright-best-practices-skill
21
- - microsoft/playwright-cli/tree/main/skills/playwright-cli
package/src/ai-debug.ts DELETED
@@ -1,188 +0,0 @@
1
- import { publish, type AiEventEntry } from "./debug-bus.js";
2
-
3
- /*
4
- * Pluggable PI → Debug-panel recorder. `attachAiDebug(session)` adds one
5
- * independent listener to a pi-coding-agent session and maps the LLM-level
6
- * events the WS bridge never forwards — per-turn model responses, the errors a
7
- * failed turn hides behind a plain `finish`, and auto-retry/fallback/compaction
8
- * — into the panel's `ai` channel via `debug-bus`'s `publish`. The returned
9
- * unsubscribe is called from `connection.ts` when the session is torn down.
10
- */
11
-
12
- const MAX_DETAIL = 16000;
13
-
14
- export function attachAiDebug(session: any, conversationId?: string | null): () => void {
15
- return session.subscribe((event: any) => {
16
- const entry = mapAiEvent(event);
17
- if (!entry) return;
18
- if (conversationId) entry.summary = withSession(entry.summary, conversationId);
19
- publish(entry);
20
- });
21
- }
22
-
23
- function mapAiEvent(event: any): AiEventInput | null {
24
- if (event.type === "turn_end") return turnEntry(event.message);
25
- if (event.type === "auto_retry_start") return retryStart(event);
26
- if (event.type === "auto_retry_end") return retryEnd(event);
27
- if (event.type === "retry_fallback_applied")
28
- return fallback(`${event.from} → ${event.to} (${event.role})`, event.to, event);
29
- if (event.type === "retry_fallback_succeeded")
30
- return fallback(`${event.model} (${event.role})`, event.model, event);
31
- if (event.type === "auto_compaction_start")
32
- return compaction(`${event.reason} → ${event.action}`, true, event);
33
- if (event.type === "auto_compaction_end") return compactionEnd(event);
34
- return null;
35
- }
36
-
37
- function turnEntry(message: any): AiEventInput | null {
38
- if (!message || message.role !== "assistant") return null;
39
- const text = assistantText(message.content);
40
- const tokens = tokensOf(message.usage);
41
- const entry: AiEventInput = {
42
- kind: "ai",
43
- channel: "ai",
44
- name: "response",
45
- summary:
46
- `${message.model} · ${message.stopReason} · ${text.length} chars` +
47
- `${tokenSummary(tokens)}${cacheSummary(message.usage)}${durSummary(message.duration)}`,
48
- ok: true,
49
- model: message.model ?? null,
50
- durationMs: numberOrNull(message.duration),
51
- tokens,
52
- detail: detail({
53
- model: message.model,
54
- provider: message.provider,
55
- stopReason: message.stopReason,
56
- errorMessage: message.errorMessage,
57
- usage: message.usage,
58
- ttft: message.ttft,
59
- duration: message.duration,
60
- text,
61
- }),
62
- };
63
- if (message.stopReason !== "error") return entry;
64
- entry.name = "error";
65
- entry.ok = false;
66
- entry.summary = message.errorMessage ?? "error";
67
- return entry;
68
- }
69
-
70
- function tokenSummary(tokens: AiEventEntry["tokens"]): string {
71
- if (!tokens) return "";
72
- return ` · ${tokens.input}/${tokens.output} tok`;
73
- }
74
-
75
- function cacheSummary(usage: any): string {
76
- if (!usage?.cacheRead) return "";
77
- return ` · cached=${usage.cacheRead}`;
78
- }
79
-
80
- function durSummary(duration: any): string {
81
- if (typeof duration !== "number") return "";
82
- return ` · dur=${(duration / 1000).toFixed(1)}s`;
83
- }
84
-
85
- function withSession(summary: string | null, conversationId: string): string {
86
- if (!summary) return `session:${conversationId}`;
87
- return `${summary} · session:${conversationId}`;
88
- }
89
-
90
- function retryStart(event: any): AiEventInput {
91
- return {
92
- kind: "ai",
93
- channel: "ai",
94
- name: "retry",
95
- ok: false,
96
- summary: `attempt ${event.attempt}/${event.maxAttempts} — ${event.errorMessage}`,
97
- model: null,
98
- durationMs: numberOrNull(event.delayMs),
99
- tokens: null,
100
- detail: detail(event),
101
- };
102
- }
103
-
104
- function retryEnd(event: any): AiEventInput {
105
- const entry: AiEventInput = {
106
- kind: "ai",
107
- channel: "ai",
108
- name: "retry",
109
- ok: true,
110
- summary: `recovered on attempt ${event.attempt}`,
111
- model: null,
112
- durationMs: null,
113
- tokens: null,
114
- detail: detail(event),
115
- };
116
- if (event.success) return entry;
117
- entry.name = "error";
118
- entry.ok = false;
119
- entry.summary = event.finalError ?? "retries exhausted";
120
- return entry;
121
- }
122
-
123
- function fallback(summary: string, model: string | undefined, event: any): AiEventInput {
124
- return {
125
- kind: "ai",
126
- channel: "ai",
127
- name: "fallback",
128
- ok: true,
129
- summary,
130
- model: model ?? null,
131
- durationMs: null,
132
- tokens: null,
133
- detail: detail(event),
134
- };
135
- }
136
-
137
- function compactionEnd(event: any): AiEventInput {
138
- if (event.errorMessage) return compaction(event.errorMessage, false, event);
139
- return compaction(`${event.action} done`, true, event);
140
- }
141
-
142
- function compaction(summary: string, ok: boolean, event: any): AiEventInput {
143
- return {
144
- kind: "ai",
145
- channel: "ai",
146
- name: "compaction",
147
- ok,
148
- summary,
149
- model: null,
150
- durationMs: null,
151
- tokens: null,
152
- detail: detail(event),
153
- };
154
- }
155
-
156
- function tokensOf(usage: any): AiEventEntry["tokens"] {
157
- if (!usage) return null;
158
- return { input: usage.input ?? 0, output: usage.output ?? 0, total: usage.totalTokens ?? 0 };
159
- }
160
-
161
- function assistantText(content: any): string {
162
- if (!Array.isArray(content)) return "";
163
- const parts: string[] = [];
164
- for (const part of content) {
165
- if (part?.type === "text") parts.push(part.text ?? "");
166
- if (part?.type === "thinking") parts.push(`[thinking] ${part.thinking ?? part.text ?? ""}`);
167
- if (part?.type === "toolCall") parts.push(`[tool:${part.name}]`);
168
- }
169
- return parts.filter(Boolean).join("\n");
170
- }
171
-
172
- function numberOrNull(value: any): number | null {
173
- if (typeof value === "number") return value;
174
- return null;
175
- }
176
-
177
- function detail(value: any): string | null {
178
- let json: string;
179
- try {
180
- json = JSON.stringify(value, null, 2);
181
- } catch {
182
- return null;
183
- }
184
- if (json.length <= MAX_DETAIL) return json;
185
- return `${json.slice(0, MAX_DETAIL)}… (+${json.length - MAX_DETAIL} more chars)`;
186
- }
187
-
188
- type AiEventInput = Omit<AiEventEntry, "id" | "ts">;
@@ -1,22 +0,0 @@
1
- import { getSession } from "../session-store.js";
2
-
3
- export async function agentGet(sessionId: string): Promise<Response> {
4
- const session = getSession(sessionId);
5
-
6
- if (!session) {
7
- return Response.json({ error: "Session not found" }, { status: 404 });
8
- }
9
-
10
- const expectedMcpServers = (session.projects ?? [])
11
- .filter((p) => p.status === "ok")
12
- .map((p) => `testomatio-${p.slug}`);
13
-
14
- return Response.json({
15
- sessionId: session.sessionId,
16
- cwd: session.cwd,
17
- projects: session.projects,
18
- backendUrl: session.backendUrl,
19
- expectedMcpServers,
20
- createdAt: session.createdAt,
21
- });
22
- }