testeiya 0.2.0

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 (369) hide show
  1. package/README.md +212 -0
  2. package/models.catalog.json +6963 -0
  3. package/package.json +71 -0
  4. package/skills/codeceptjs/ci-fix-tests/SKILL.md +120 -0
  5. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +158 -0
  6. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +91 -0
  7. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +158 -0
  8. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +90 -0
  9. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +234 -0
  10. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +110 -0
  11. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +306 -0
  12. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +352 -0
  13. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +472 -0
  14. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +350 -0
  15. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +81 -0
  16. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +206 -0
  17. package/skills/playwright-best-practices-skill/LICENSE.md +7 -0
  18. package/skills/playwright-best-practices-skill/README.md +147 -0
  19. package/skills/playwright-best-practices-skill/SKILL.md +303 -0
  20. package/skills/playwright-best-practices-skill/advanced/authentication-flows.md +360 -0
  21. package/skills/playwright-best-practices-skill/advanced/authentication.md +871 -0
  22. package/skills/playwright-best-practices-skill/advanced/clock-mocking.md +364 -0
  23. package/skills/playwright-best-practices-skill/advanced/mobile-testing.md +409 -0
  24. package/skills/playwright-best-practices-skill/advanced/multi-context.md +288 -0
  25. package/skills/playwright-best-practices-skill/advanced/multi-user.md +393 -0
  26. package/skills/playwright-best-practices-skill/advanced/network-advanced.md +452 -0
  27. package/skills/playwright-best-practices-skill/advanced/third-party.md +464 -0
  28. package/skills/playwright-best-practices-skill/architecture/pom-vs-fixtures.md +363 -0
  29. package/skills/playwright-best-practices-skill/architecture/test-architecture.md +369 -0
  30. package/skills/playwright-best-practices-skill/architecture/when-to-mock.md +383 -0
  31. package/skills/playwright-best-practices-skill/browser-apis/browser-apis.md +391 -0
  32. package/skills/playwright-best-practices-skill/browser-apis/iframes.md +403 -0
  33. package/skills/playwright-best-practices-skill/browser-apis/service-workers.md +504 -0
  34. package/skills/playwright-best-practices-skill/browser-apis/websockets.md +403 -0
  35. package/skills/playwright-best-practices-skill/core/annotations.md +424 -0
  36. package/skills/playwright-best-practices-skill/core/assertions-waiting.md +361 -0
  37. package/skills/playwright-best-practices-skill/core/configuration.md +452 -0
  38. package/skills/playwright-best-practices-skill/core/fixtures-hooks.md +417 -0
  39. package/skills/playwright-best-practices-skill/core/global-setup.md +434 -0
  40. package/skills/playwright-best-practices-skill/core/locators.md +242 -0
  41. package/skills/playwright-best-practices-skill/core/page-object-model.md +315 -0
  42. package/skills/playwright-best-practices-skill/core/projects-dependencies.md +453 -0
  43. package/skills/playwright-best-practices-skill/core/test-data.md +492 -0
  44. package/skills/playwright-best-practices-skill/core/test-suite-structure.md +361 -0
  45. package/skills/playwright-best-practices-skill/core/test-tags.md +298 -0
  46. package/skills/playwright-best-practices-skill/debugging/console-errors.md +420 -0
  47. package/skills/playwright-best-practices-skill/debugging/debugging.md +504 -0
  48. package/skills/playwright-best-practices-skill/debugging/error-testing.md +360 -0
  49. package/skills/playwright-best-practices-skill/debugging/flaky-tests.md +496 -0
  50. package/skills/playwright-best-practices-skill/frameworks/angular.md +530 -0
  51. package/skills/playwright-best-practices-skill/frameworks/nextjs.md +469 -0
  52. package/skills/playwright-best-practices-skill/frameworks/react.md +531 -0
  53. package/skills/playwright-best-practices-skill/frameworks/vue.md +574 -0
  54. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/ci-cd.md +468 -0
  55. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/docker.md +283 -0
  56. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/github-actions.md +546 -0
  57. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/gitlab.md +397 -0
  58. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/other-providers.md +521 -0
  59. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/parallel-sharding.md +371 -0
  60. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/performance.md +453 -0
  61. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/reporting.md +424 -0
  62. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/test-coverage.md +497 -0
  63. package/skills/playwright-best-practices-skill/testing-patterns/accessibility.md +359 -0
  64. package/skills/playwright-best-practices-skill/testing-patterns/api-testing.md +719 -0
  65. package/skills/playwright-best-practices-skill/testing-patterns/browser-extensions.md +506 -0
  66. package/skills/playwright-best-practices-skill/testing-patterns/canvas-webgl.md +493 -0
  67. package/skills/playwright-best-practices-skill/testing-patterns/component-testing.md +500 -0
  68. package/skills/playwright-best-practices-skill/testing-patterns/drag-drop.md +576 -0
  69. package/skills/playwright-best-practices-skill/testing-patterns/electron.md +509 -0
  70. package/skills/playwright-best-practices-skill/testing-patterns/file-operations.md +377 -0
  71. package/skills/playwright-best-practices-skill/testing-patterns/file-upload-download.md +562 -0
  72. package/skills/playwright-best-practices-skill/testing-patterns/forms-validation.md +561 -0
  73. package/skills/playwright-best-practices-skill/testing-patterns/graphql-testing.md +331 -0
  74. package/skills/playwright-best-practices-skill/testing-patterns/i18n.md +508 -0
  75. package/skills/playwright-best-practices-skill/testing-patterns/performance-testing.md +476 -0
  76. package/skills/playwright-best-practices-skill/testing-patterns/security-testing.md +430 -0
  77. package/skills/playwright-best-practices-skill/testing-patterns/visual-regression.md +634 -0
  78. package/skills/playwright-cli/SKILL.md +420 -0
  79. package/skills/playwright-cli/references/element-attributes.md +23 -0
  80. package/skills/playwright-cli/references/playwright-tests.md +39 -0
  81. package/skills/playwright-cli/references/request-mocking.md +87 -0
  82. package/skills/playwright-cli/references/running-code.md +241 -0
  83. package/skills/playwright-cli/references/session-management.md +225 -0
  84. package/skills/playwright-cli/references/storage-state.md +275 -0
  85. package/skills/playwright-cli/references/test-generation.md +433 -0
  86. package/skills/playwright-cli/references/tracing.md +139 -0
  87. package/skills/playwright-cli/references/video-recording.md +143 -0
  88. package/skills/testeiya/README.md +29 -0
  89. package/skills/testeiya/answer-formatting/SKILL.md +30 -0
  90. package/skills/testeiya/check-cucumber/SKILL.md +200 -0
  91. package/skills/testeiya/check-tests/SKILL.md +260 -0
  92. package/skills/testeiya/manual-run-assistant/SKILL.md +61 -0
  93. package/skills/testeiya/testomatio-docs/INDEX.md +175 -0
  94. package/skills/testeiya/testomatio-docs/SKILL.md +102 -0
  95. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +144 -0
  96. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +531 -0
  97. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +437 -0
  98. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +191 -0
  99. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +277 -0
  100. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +39 -0
  101. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +122 -0
  102. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +170 -0
  103. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +53 -0
  104. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +98 -0
  105. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +151 -0
  106. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +377 -0
  107. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +267 -0
  108. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +138 -0
  109. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +220 -0
  110. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +48 -0
  111. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +201 -0
  112. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +94 -0
  113. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +243 -0
  114. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +135 -0
  115. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +394 -0
  116. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +290 -0
  117. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +96 -0
  118. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +94 -0
  119. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +106 -0
  120. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +115 -0
  121. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +120 -0
  122. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +88 -0
  123. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +151 -0
  124. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +121 -0
  125. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +96 -0
  126. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +31 -0
  127. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +54 -0
  128. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +34 -0
  129. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +31 -0
  130. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +93 -0
  131. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +131 -0
  132. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +164 -0
  133. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +29 -0
  134. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +67 -0
  135. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +94 -0
  136. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +53 -0
  137. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +71 -0
  138. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +52 -0
  139. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +60 -0
  140. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +267 -0
  141. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +82 -0
  142. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +73 -0
  143. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +207 -0
  144. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +204 -0
  145. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +95 -0
  146. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +75 -0
  147. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +33 -0
  148. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +108 -0
  149. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +66 -0
  150. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +95 -0
  151. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +94 -0
  152. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +26 -0
  153. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +32 -0
  154. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +242 -0
  155. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +140 -0
  156. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +76 -0
  157. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +363 -0
  158. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +41 -0
  159. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +240 -0
  160. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +326 -0
  161. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +75 -0
  162. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +49 -0
  163. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +285 -0
  164. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +67 -0
  165. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +138 -0
  166. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +87 -0
  167. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +546 -0
  168. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +326 -0
  169. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +386 -0
  170. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +378 -0
  171. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +112 -0
  172. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +127 -0
  173. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +63 -0
  174. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +49 -0
  175. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +41 -0
  176. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +39 -0
  177. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +37 -0
  178. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +117 -0
  179. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +93 -0
  180. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +44 -0
  181. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +117 -0
  182. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +44 -0
  183. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +47 -0
  184. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +82 -0
  185. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +55 -0
  186. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +334 -0
  187. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +104 -0
  188. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +176 -0
  189. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +195 -0
  190. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +203 -0
  191. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +455 -0
  192. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +137 -0
  193. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +329 -0
  194. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +342 -0
  195. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +256 -0
  196. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +331 -0
  197. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +633 -0
  198. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +223 -0
  199. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +68 -0
  200. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +181 -0
  201. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +98 -0
  202. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +354 -0
  203. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +169 -0
  204. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +156 -0
  205. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +412 -0
  206. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +527 -0
  207. package/skills/testeiya/testomatio-docs/docs/support/index.md +75 -0
  208. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +388 -0
  209. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +215 -0
  210. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +247 -0
  211. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +490 -0
  212. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +144 -0
  213. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +48 -0
  214. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +248 -0
  215. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +138 -0
  216. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +77 -0
  217. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +72 -0
  218. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +23 -0
  219. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +18 -0
  220. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +63 -0
  221. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +29 -0
  222. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +80 -0
  223. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +57 -0
  224. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +331 -0
  225. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +229 -0
  226. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +325 -0
  227. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +159 -0
  228. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +164 -0
  229. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +85 -0
  230. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +163 -0
  231. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +125 -0
  232. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +478 -0
  233. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +207 -0
  234. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +218 -0
  235. package/skills/testeiya/testomatio-docs/docs.lock.json +6 -0
  236. package/skills/testeiya/testomatio-reporter/SKILL.md +307 -0
  237. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +88 -0
  238. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +95 -0
  239. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +334 -0
  240. package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +56 -0
  241. package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +242 -0
  242. package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +182 -0
  243. package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +22 -0
  244. package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +90 -0
  245. package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +53 -0
  246. package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +52 -0
  247. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +107 -0
  248. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +113 -0
  249. package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +29 -0
  250. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +151 -0
  251. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +199 -0
  252. package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +289 -0
  253. package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +86 -0
  254. package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +54 -0
  255. package/skills/testomatio/test-management/improve-test-cases/SKILL.md +114 -0
  256. package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +66 -0
  257. package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +141 -0
  258. package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +354 -0
  259. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +82 -0
  260. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +37 -0
  261. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +118 -0
  262. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +149 -0
  263. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +54 -0
  264. package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +126 -0
  265. package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +128 -0
  266. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +174 -0
  267. package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +138 -0
  268. package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +65 -0
  269. package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +40 -0
  270. package/skills/testomatio/test-management/qa-thinking/SKILL.md +36 -0
  271. package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +267 -0
  272. package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +387 -0
  273. package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +72 -0
  274. package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +159 -0
  275. package/skills/testomatio/test-management/scan-automation-project/SKILL.md +152 -0
  276. package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +107 -0
  277. package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +140 -0
  278. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +182 -0
  279. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +169 -0
  280. package/skills.lock.json +72 -0
  281. package/skills.yaml +21 -0
  282. package/src/ai-debug.ts +188 -0
  283. package/src/api/agent-get.ts +22 -0
  284. package/src/api/agent-start.ts +384 -0
  285. package/src/api/client-log.ts +29 -0
  286. package/src/api/context.ts +332 -0
  287. package/src/api/debug-layout.ts +47 -0
  288. package/src/api/debug-report.ts +29 -0
  289. package/src/api/debug-snapshot.ts +30 -0
  290. package/src/api/debug-stream.ts +52 -0
  291. package/src/api/files-delete.ts +184 -0
  292. package/src/api/files-read.ts +41 -0
  293. package/src/api/files-rename.ts +99 -0
  294. package/src/api/files-tree.ts +292 -0
  295. package/src/api/files-write.ts +41 -0
  296. package/src/api/mcp.ts +603 -0
  297. package/src/api/memory.ts +69 -0
  298. package/src/api/open-external.ts +39 -0
  299. package/src/api/playwright-cli.ts +606 -0
  300. package/src/api/providers.ts +457 -0
  301. package/src/api/read-env-token.ts +33 -0
  302. package/src/api/sessions.ts +79 -0
  303. package/src/api/settings.ts +120 -0
  304. package/src/api/skills.ts +58 -0
  305. package/src/api/testomatio-attachment.ts +89 -0
  306. package/src/api/testomatio-auth.ts +284 -0
  307. package/src/api/testomatio-proxy.ts +197 -0
  308. package/src/api/testomatio-run-stats.ts +81 -0
  309. package/src/api/testomatio-target.ts +225 -0
  310. package/src/api/testomatio-transcription.ts +82 -0
  311. package/src/api/workspace-search.ts +96 -0
  312. package/src/api/workspace-sync.ts +151 -0
  313. package/src/api/workspace.ts +165 -0
  314. package/src/app-server.ts +556 -0
  315. package/src/bridge.ts +251 -0
  316. package/src/check-tests.ts +156 -0
  317. package/src/cli.ts +17 -0
  318. package/src/commands.ts +244 -0
  319. package/src/config.ts +183 -0
  320. package/src/connection.ts +658 -0
  321. package/src/context-store.ts +265 -0
  322. package/src/debug-bus.ts +405 -0
  323. package/src/extensions/tool-gate.ts +220 -0
  324. package/src/extensions/webui/ask-channel.ts +52 -0
  325. package/src/extensions/webui/index.ts +184 -0
  326. package/src/extensions/webui/tools/ask-question.ts +88 -0
  327. package/src/extensions/webui/tools/query-result.ts +79 -0
  328. package/src/extensions/webui/tools/render-chart.ts +53 -0
  329. package/src/extensions/webui/tools/render-item.ts +61 -0
  330. package/src/extensions/webui/tools/render-list.ts +170 -0
  331. package/src/extensions/webui/tools/render-result.ts +85 -0
  332. package/src/extensions/webui/tools/render-tree.ts +71 -0
  333. package/src/extensions/webui/tools/ui-widget.ts +54 -0
  334. package/src/extensions/webui/tools/widget-result.ts +13 -0
  335. package/src/extensions/webui/widget-channel.ts +50 -0
  336. package/src/file-log.ts +196 -0
  337. package/src/git-tracked.ts +68 -0
  338. package/src/gitignore.ts +53 -0
  339. package/src/json-store.ts +43 -0
  340. package/src/load-env.ts +70 -0
  341. package/src/loader-style.ts +96 -0
  342. package/src/main.ts +140 -0
  343. package/src/mcp-catalog.ts +96 -0
  344. package/src/models-catalog.ts +72 -0
  345. package/src/permissions.ts +120 -0
  346. package/src/project-dir.ts +189 -0
  347. package/src/project-info.ts +108 -0
  348. package/src/prompt/app-ui.ts +59 -0
  349. package/src/prompt/browser.ts +27 -0
  350. package/src/prompt/index.ts +62 -0
  351. package/src/prompt/system-prompt.ts +161 -0
  352. package/src/prompt/testomatio.ts +170 -0
  353. package/src/prompt/tools.ts +27 -0
  354. package/src/server-info.ts +62 -0
  355. package/src/session-factory.ts +442 -0
  356. package/src/session-store.ts +115 -0
  357. package/src/shell-env.ts +45 -0
  358. package/src/skills.ts +163 -0
  359. package/src/sync-snapshot.ts +140 -0
  360. package/src/telemetry.ts +239 -0
  361. package/src/testomatio-auth.ts +299 -0
  362. package/src/testomatio.ts +98 -0
  363. package/src/theme.ts +30 -0
  364. package/src/user-env.ts +94 -0
  365. package/src/welcome.ts +127 -0
  366. package/src/workspace/safe-path.ts +85 -0
  367. package/src/workspace/test-md.ts +70 -0
  368. package/src/workspace-model.ts +440 -0
  369. package/testeiya.config.json +14 -0
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: testomatio-mcp
3
+ description: Configures and leverages the Testomat.io MCP server for test management analytics, run analysis, failure investigation, and defect triage. Use when the user needs to connect to Testomat.io via MCP, analyze test runs, cluster failures, investigate root causes.
4
+ license: MIT
5
+ metadata:
6
+ author: Testomat.io
7
+ version: 1.0.0
8
+ ---
9
+
10
+ # Testomatio MCP
11
+
12
+ Set up access to Testomat.io via MCP and run QA analysis workflows: run analysis, failure clustering, root-cause investigation, plan analysis, defect triage.
13
+
14
+ ## When to Use
15
+
16
+ - Detect or set up the Testomat.io MCP server for an AI agent (Claude, Cursor, OpenCode, etc.).
17
+ - Analyze test runs: recent results, success rates, failure trends.
18
+ - Investigate failures: group similar failures, find patterns.
19
+ - Find the root cause when many tests fail with the same issue.
20
+ - Create defects from failed tests in the user's issue tracker (e.g. Jira).
21
+
22
+ ## MCP Tools
23
+
24
+ - Test: `tests_list`, `tests_get`, `tests_search`
25
+ - Test Plan: `plans_list`, `plans_get`, `plans_search`
26
+ - Run: `runs_list`, `runs_get`, `runs_search`
27
+ - Testrun (results within a run): `testruns_list`, `testruns_get`
28
+ - Suite: `suites_list`, `suites_get`, `suites_search`
29
+ - Label: `labels_list`, `labels_get`
30
+ - Tag: `tags_list`, `tags_get`, `tags_search`
31
+
32
+ **CRUD tools (create, update, delete) exist for all entities. Use them only when explicitly needed for targeted updates.**
33
+
34
+ ## Rules
35
+
36
+ - **Prefer local tests over MCP.** If the repo contains markdown test cases (`*.test.md`) or automated test files, read them from the filesystem (or load them via the `sync-test-cases-with-tms` skill) instead of using MCP for full test discovery and analysis.
37
+ - Use MCP for:
38
+ - reading and analyzing run reports
39
+ - analytics and reporting
40
+ - test plan management
41
+ - tests that live exclusively in Testomat.io (no local copies), or quick test case searches (`tests_list`, `tests_search`)
42
+ - targeted searches and point updates to remote test cases
43
+ - Filter `runs_list`, `plans_list`, `testruns_list` with TQL (Testomat.io Query Language). Operators and examples: [MCP Setup Reference](./references/MCP_SETUP.md).
44
+
45
+ ## Setup
46
+
47
+ ### Step 1: Detect Existing Configuration
48
+
49
+ Check the user's AI agent config files for a `testomatio` or `mcp.testomatio` entry:
50
+ - `opencode.json`
51
+ - `.cursor/mcp.json`
52
+ - `claude_desktop_config.json`
53
+ - other, based on the user's local agent
54
+
55
+ Validate:
56
+ - the server is enabled (when the client supports enable/disable flags)
57
+ - `TESTOMATIO_PROJECT_TOKEN` and `TESTOMATIO_PROJECT_ID` are present
58
+
59
+ Configured and enabled → go to Workflows. Missing, incomplete, or disabled → Step 2.
60
+
61
+ ### Step 2: Configure MCP
62
+
63
+ Before configuring:
64
+ - Prefer confirming the project contains no more than 1000 tests.
65
+ - If project size cannot be determined, warn the user about MCP performance limits on large projects.
66
+ - **Use only targeted or filtered operations when explicitly requested.**
67
+
68
+ Credential priority for `TESTOMATIO_PROJECT_TOKEN` and `TESTOMATIO_PROJECT_ID`:
69
+ 1. Existing environment variables.
70
+ 2. Existing MCP configuration.
71
+ 3. User-provided values.
72
+
73
+ Per-agent config formats (OpenCode, Cursor, Claude Desktop) and where to obtain credentials: [MCP Setup Reference](./references/MCP_SETUP.md).
74
+
75
+ **Rules:**
76
+ - **Do not overwrite unrelated MCP server configurations.** Merge changes carefully with existing config content.
77
+ - **Do not expose project tokens, secrets, or credentials in chat responses.**
78
+
79
+ After successful configuration, confirm with a summary:
80
+
81
+ ```text
82
+ Testomat.io MCP configuration completed successfully.
83
+
84
+ AI Agent: Cursor
85
+ Config Updated: `.cursor/mcp.json`
86
+ MCP Server: Enabled
87
+ Authentication: Verified
88
+
89
+ Available workflows:
90
+ - Test run analysis
91
+ - Failure clustering
92
+ - Root-cause investigation
93
+ - Plan analysis & defect triage
94
+ ```
95
+
96
+ ## Workflows
97
+
98
+ Common patterns, not a complete list — adapt and extend to the user's needs. All assume the MCP server is enabled.
99
+
100
+ ### Workflow 1: Analyze Test Runs
101
+
102
+ Goal: understand the health of recent test execution.
103
+
104
+ 1. Call `runs_list` with `tql` filters (e.g. `finished`, `failed`, `with_defect`); narrow scope by status, environment, or plan.
105
+ 2. Select a run of interest and call `runs_get` for detailed metadata.
106
+ 3. Call `testruns_list` with `run_id` and `filter_status: failed` to extract failed results.
107
+ 4. Summarize: total tests, passed, failed, skipped, environments involved.
108
+ - Compare success/failure ratios across runs to spot regressions.
109
+
110
+ ### Workflow 2: Failure Investigation & Error Clustering
111
+
112
+ Goal: determine what went wrong and which areas are affected.
113
+
114
+ 1. Call `testruns_list` (`filter_status: failed`, `run_id`) to get failed results.
115
+ 2. For each failed testrun, call `tests_get` to map it to its suite, priority, tags, and linked issues.
116
+ 3. Cluster failures:
117
+ - by `suite_id` → identify the suite with the highest failure count
118
+ - by `message` substring → find tests failing with the same exception or assertion
119
+ 4. Present clusters ranked by count, with suite and message breakdowns and affected test titles.
120
+
121
+ ### Workflow 3: Plan Analysis & Root-Cause Detection
122
+
123
+ Goal: when many tests fail with the same issue, explain the root cause.
124
+
125
+ 1. Call `plans_get` (if a plan is linked to the run) to understand the intended scope; check whether failures correlate with specific plan sections.
126
+ 2. Call `runs_list` with `tql` targeting the same plan or environment to get historical runs.
127
+ 3. Compare failures across runs:
128
+ - increasing failure count → new regression
129
+ - same failures across multiple runs → stable bug or flaky infrastructure
130
+ - spike in a single suite or tag → localized code change, feature regression
131
+ - scattered across unrelated suites → systemic issue (infrastructure, config, dependency)
132
+ 4. Call `tests_get` on affected tests to check `code`, `state`, and linked issues.
133
+ 5. Report a root-cause hypothesis.
134
+
135
+ Example — user asks: "Check why 20 tests failed in the last run — one suite or a systemic issue?"
136
+
137
+ ```text
138
+ 1. Detecting existing Testomat.io MCP configuration:
139
+ - Found `.cursor/mcp.json`
140
+ - Found `testomatio` MCP server entry
141
+ - MCP server status: enabled
142
+
143
+ 2. Verifying MCP availability...
144
+ - Authentication successful
145
+ - Testomat.io tools available
146
+
147
+ 3. Analyzing latest test run...
148
+ - Retrieved last completed run
149
+ - Total failed tests: 20
150
+
151
+ 4. Failure clustering summary:
152
+ - 16/20 failures belong to suite: "Checkout / Payments"
153
+ - 14 failures share the same error: "Timeout waiting for payment confirmation"
154
+ - First failure timestamp indicates failures started simultaneously
155
+
156
+ 5. Probable root cause:
157
+ - The failures appear systemic rather than test-specific.
158
+ - Most failures point to instability or outage in the payment gateway service used during checkout flows.
159
+ ```
160
+
161
+ ### Workflow 4: Defect Creation from Failed Tests
162
+
163
+ Goal: turn recurring failures into trackable defects.
164
+
165
+ 1. Run Workflow 2 to cluster failures by message.
166
+ 2. If a cluster contains 5+ tests with the same failure:
167
+ - propose creating a defect (e.g. Jira issue) to the user
168
+ - draft the defect summary: title, description, affected test titles, failure messages, run link, environment
169
+ - if a Jira MCP is available, offer to create the ticket via the Jira skill
170
+ 3. After defect creation, call `tests_issues_link` for each affected test to link it to the defect.
171
+
172
+ ## Quick Commands
173
+
174
+ | Action | MCP Tool | Key Parameters |
175
+ |---------------------|-----------------|----------------|
176
+ | List failed results | `testruns_list` | `run_id`, `filter_status: failed` |
177
+ | List runs | `runs_list` | `tql`, `page`, `per_page` |
178
+ | Get run details | `runs_get` | `run_id` |
179
+ | Get test details | `tests_get` | `test_id` |
180
+ | Get plan details | `plans_get` | `plan_id` |
181
+ | Link issue to test | `tests_issues_link` | `test_id`, `url` or `jira_id` |
182
+ | Check server status | `system_ping` | none |
@@ -0,0 +1,169 @@
1
+ # MCP Setup & Configuration Reference
2
+
3
+ Short reference extracted from the Testomat.io MCP server documentation.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @testomatio/mcp@latest
9
+ ```
10
+
11
+ For enterprise subscriptions, install `@testomatio/mcp-enterprise@latest` instead (includes analytics).
12
+
13
+ ## Server Startup
14
+
15
+ ```bash
16
+ npx testomatio-mcp --token <PROJECT_TOKEN> --project <PROJECT_ID>
17
+ ```
18
+
19
+ Or with environment variables:
20
+
21
+ ```bash
22
+ export TESTOMATIO_PROJECT_TOKEN=<PROJECT_TOKEN>
23
+ export TESTOMATIO_PROJECT_ID=<PROJECT_ID>
24
+ ```
25
+
26
+ Optional custom base URL:
27
+
28
+ ```bash
29
+ export TESTOMATIO_BASE_URL=https://beta.testomat.io
30
+ ```
31
+
32
+ ## AI Agent Configurations
33
+
34
+ ### OpenCode
35
+
36
+ File: `opencode.json` (project root or `~/.config/opencode/opencode.json`)
37
+
38
+ ```json
39
+ {
40
+ "$schema": "https://opencode.ai/config.json",
41
+ "mcp": {
42
+ "testomat": {
43
+ "type": "local",
44
+ "command": [
45
+ "npx",
46
+ "-y",
47
+ "@testomatio/mcp@latest",
48
+ "--token",
49
+ "<TOKEN>",
50
+ "--project",
51
+ "<PROJECT_ID>"
52
+ ],
53
+ "enabled": true,
54
+ "environment": {
55
+ "TESTOMATIO_BASE_URL": "https://app.testomat.io"
56
+ }
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### Claude Desktop
63
+
64
+ File:
65
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
66
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
67
+
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "testomatio": {
72
+ "command": "npx",
73
+ "args": [
74
+ "-y",
75
+ "@testomatio/mcp@latest",
76
+ "--token",
77
+ "<TOKEN>",
78
+ "--project",
79
+ "<PROJECT_ID>"
80
+ ],
81
+ "env": {
82
+ "TESTOMATIO_BASE_URL": "https://app.testomat.io"
83
+ }
84
+ }
85
+ }
86
+ }
87
+ ```
88
+
89
+ ### Cursor IDE
90
+
91
+ File: `.cursor/mcp.json` (project root or `~/.cursor/mcp.json`)
92
+
93
+ ```json
94
+ {
95
+ "mcpServers": {
96
+ "testomatio": {
97
+ "type": "stdio",
98
+ "command": "npx",
99
+ "args": [
100
+ "-y",
101
+ "@testomatio/mcp@latest",
102
+ "--token",
103
+ "<TOKEN>",
104
+ "--project",
105
+ "<PROJECT_ID>"
106
+ ],
107
+ "env": {
108
+ "TESTOMATIO_BASE_URL": "https://app.testomat.io"
109
+ }
110
+ }
111
+ }
112
+ }
113
+ ```
114
+
115
+ ## Credentials
116
+
117
+ - **Project Token**: Get from Testomat.io at **Settings → Project → Project Reporting API key**.
118
+ - **Project ID**: Found in the project URL: `https://app.testomat.io/projects/<project_id>`.
119
+
120
+ ## Environment Variables
121
+
122
+ | Variable | Required | Default | Description |
123
+ |----------|----------|---------|-------------|
124
+ | `TESTOMATIO_PROJECT_TOKEN` | Yes* | - | Project API token (preferred) |
125
+ | `TESTOMATIO_PROJECT_ID` | Yes | - | Project ID |
126
+ | `TESTOMATIO_BASE_URL` | No | `https://app.testomat.io` | API base URL |
127
+
128
+ *`TESTOMATIO_PROJECT_TOKEN` is required.
129
+
130
+ ## TQL Quick Reference
131
+
132
+ TQL (Testomat.io Query Language) is used for filtering tests and runs.
133
+
134
+ Supported operators: `==`, `!=`, `>`, `<`, `>=`, `<=`, `in [...]`, `%` (contains), `and`, `or`, `not`, parentheses.
135
+
136
+ ### Common TQL Examples
137
+
138
+ **Tests:**
139
+ - `priority == 'high'`
140
+ - `state == 'automated'`
141
+ - `suite % 'Checkout'`
142
+ - `tag IN ['@smoke', '@regression']`
143
+
144
+ **Runs:**
145
+ - `title % 'Manual tests'`
146
+ - `plan == '{PLAN_ID}'`
147
+ - `finished and with_defect`
148
+ - `failed and has_test_tag == 'regression'`
149
+
150
+ For full TQL syntax details, see: https://docs.testomat.io/advanced/tql/
151
+
152
+ ## Corporate TLS / Proxy
153
+
154
+ If running behind a corporate proxy or TLS inspection, Node.js may reject HTTPS requests.
155
+
156
+ Use system CA support:
157
+
158
+ ```bash
159
+ NODE_OPTIONS=--use-system-ca testomatio-mcp --token <TOKEN> --project <PROJECT_ID>
160
+ ```
161
+
162
+ Or in MCP client config, pass `NODE_OPTIONS` in the server `env` block.
163
+
164
+ ## Important Notes
165
+
166
+ - **Run status transitions** use `runs_update` with `status_event` values: `finish`, `finish_manual`, `launch`, `rerun`, `scheduled`, `terminate`.
167
+ - **Search** for tests and runs uses `tql` as the single filter input; no dedicated `/search` endpoints.
168
+ - **Issue linking** supports scoped helpers: `tests_issues_link/unlink`, `suites_issues_link/unlink`, `runs_issues_link/unlink`.
169
+ - **API Sessions** are automatically managed by the MCP server: a session starts before the first mutating request and stops when the server shuts down.
@@ -0,0 +1,72 @@
1
+ {
2
+ "sources": [
3
+ {
4
+ "source": "testomatio/skills",
5
+ "ref": "feat/setup-pr-testing-skill",
6
+ "sha": "99a6808422ff9e3a6bd46edab04a32d37a6ed028",
7
+ "folder": "testomatio",
8
+ "skills": [
9
+ "testomatio-mcp",
10
+ "sync-test-cases-with-tms",
11
+ "scan-automation-project",
12
+ "qa-write-test-cases",
13
+ "qa-thinking",
14
+ "qa-test-code-coverage",
15
+ "qa-requirement-reviewer",
16
+ "qa-pr-requirements-analyzer",
17
+ "qa-e2e-tests-reporting",
18
+ "pull-request-diff-analyzer",
19
+ "improve-test-cases",
20
+ "detect-duplicate-test-cases",
21
+ "setup-pr-testing",
22
+ "run-tests-with-testomatio-reporter",
23
+ "qa-automation-test-consolidation",
24
+ "debug-fix-failed-flaky-autotests",
25
+ "automate-manual-test-cases",
26
+ "testomat-allure-adapter",
27
+ "explorbot-setup",
28
+ "explorbot-plan",
29
+ "explorbot-fundamentals"
30
+ ]
31
+ },
32
+ {
33
+ "source": "codeceptjs/skills",
34
+ "ref": null,
35
+ "sha": "e19ba9d0f513cbc9c3e4a4c5c6dd02cfedde4afd",
36
+ "folder": "codeceptjs",
37
+ "skills": [
38
+ "writing-codeceptjs-tests",
39
+ "refactoring-codeceptjs-tests",
40
+ "migrate-testcafe-to-codeceptjs",
41
+ "migrate-selenium-java-to-codeceptjs",
42
+ "migrate-protractor-to-codeceptjs",
43
+ "migrate-cypress-to-codeceptjs",
44
+ "migrate-codeceptjs-4",
45
+ "debugging-codeceptjs-tests",
46
+ "codeceptjs-run-analysis",
47
+ "codeceptjs-fundamentals",
48
+ "codeceptjs-exploration",
49
+ "codeceptjs-auth",
50
+ "ci-fix-tests"
51
+ ]
52
+ },
53
+ {
54
+ "source": "currents-dev/playwright-best-practices-skill",
55
+ "ref": null,
56
+ "sha": "ef329e7e65149918e1ff0eed2cf7d2e6e6f9eb5b",
57
+ "folder": "playwright-best-practices-skill",
58
+ "skills": [
59
+ "playwright-best-practices"
60
+ ]
61
+ },
62
+ {
63
+ "source": "microsoft/playwright-cli/tree/main/skills/playwright-cli",
64
+ "ref": null,
65
+ "sha": "793cfb32572733cbcb401e6f28d05a7a914ce408",
66
+ "folder": "playwright-cli",
67
+ "skills": [
68
+ "playwright-cli"
69
+ ]
70
+ }
71
+ ]
72
+ }
package/skills.yaml ADDED
@@ -0,0 +1,21 @@
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
@@ -0,0 +1,188 @@
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">;
@@ -0,0 +1,22 @@
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
+ }