testeiya 0.2.0 → 0.3.9

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 (412) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -175
  3. package/dist/prompt/context.js +79 -0
  4. package/dist/prompt/context.js.map +1 -0
  5. package/dist/prompt/index.js +56 -0
  6. package/dist/prompt/index.js.map +1 -0
  7. package/dist/prompt/print.js +22 -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} +24 -21
  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 +49 -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 +72 -0
  20. package/dist/src/args.js.map +1 -0
  21. package/dist/src/cli.js +61 -0
  22. package/dist/src/cli.js.map +1 -0
  23. package/dist/src/env.js +69 -0
  24. package/dist/src/env.js.map +1 -0
  25. package/dist/src/mcp-extension.js +9 -0
  26. package/dist/src/mcp-extension.js.map +1 -0
  27. package/dist/src/mcp.js +139 -0
  28. package/dist/src/mcp.js.map +1 -0
  29. package/dist/src/model.js +66 -0
  30. package/dist/src/model.js.map +1 -0
  31. package/dist/src/result.js +41 -0
  32. package/dist/src/result.js.map +1 -0
  33. package/dist/src/run.js +199 -0
  34. package/dist/src/run.js.map +1 -0
  35. package/dist/src/session.js +77 -0
  36. package/dist/src/session.js.map +1 -0
  37. package/dist/vendor/mcp.js +14801 -0
  38. package/mcp-tools.json +2967 -0
  39. package/package.json +29 -41
  40. package/prompt/context.ts +101 -0
  41. package/prompt/index.ts +93 -0
  42. package/prompt/print.ts +23 -0
  43. package/prompt/project-info.ts +30 -0
  44. package/prompt/system-prompt.ts +173 -0
  45. package/{src/prompt → prompt}/testomatio.ts +119 -8
  46. package/{src/prompt → prompt}/tools.ts +30 -8
  47. package/prompt/vocab.ts +7 -0
  48. package/{skills.lock.json → skills/skills.lock.json} +11 -7
  49. package/skills/skills.yaml +34 -0
  50. package/models.catalog.json +0 -6963
  51. package/skills/codeceptjs/ci-fix-tests/SKILL.md +0 -120
  52. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +0 -158
  53. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +0 -91
  54. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +0 -158
  55. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +0 -90
  56. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +0 -234
  57. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +0 -110
  58. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +0 -306
  59. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +0 -352
  60. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +0 -472
  61. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +0 -350
  62. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +0 -81
  63. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +0 -206
  64. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  65. package/skills/playwright-best-practices-skill/README.md +0 -147
  66. package/skills/playwright-best-practices-skill/SKILL.md +0 -303
  67. package/skills/playwright-best-practices-skill/advanced/authentication-flows.md +0 -360
  68. package/skills/playwright-best-practices-skill/advanced/authentication.md +0 -871
  69. package/skills/playwright-best-practices-skill/advanced/clock-mocking.md +0 -364
  70. package/skills/playwright-best-practices-skill/advanced/mobile-testing.md +0 -409
  71. package/skills/playwright-best-practices-skill/advanced/multi-context.md +0 -288
  72. package/skills/playwright-best-practices-skill/advanced/multi-user.md +0 -393
  73. package/skills/playwright-best-practices-skill/advanced/network-advanced.md +0 -452
  74. package/skills/playwright-best-practices-skill/advanced/third-party.md +0 -464
  75. package/skills/playwright-best-practices-skill/architecture/pom-vs-fixtures.md +0 -363
  76. package/skills/playwright-best-practices-skill/architecture/test-architecture.md +0 -369
  77. package/skills/playwright-best-practices-skill/architecture/when-to-mock.md +0 -383
  78. package/skills/playwright-best-practices-skill/browser-apis/browser-apis.md +0 -391
  79. package/skills/playwright-best-practices-skill/browser-apis/iframes.md +0 -403
  80. package/skills/playwright-best-practices-skill/browser-apis/service-workers.md +0 -504
  81. package/skills/playwright-best-practices-skill/browser-apis/websockets.md +0 -403
  82. package/skills/playwright-best-practices-skill/core/annotations.md +0 -424
  83. package/skills/playwright-best-practices-skill/core/assertions-waiting.md +0 -361
  84. package/skills/playwright-best-practices-skill/core/configuration.md +0 -452
  85. package/skills/playwright-best-practices-skill/core/fixtures-hooks.md +0 -417
  86. package/skills/playwright-best-practices-skill/core/global-setup.md +0 -434
  87. package/skills/playwright-best-practices-skill/core/locators.md +0 -242
  88. package/skills/playwright-best-practices-skill/core/page-object-model.md +0 -315
  89. package/skills/playwright-best-practices-skill/core/projects-dependencies.md +0 -453
  90. package/skills/playwright-best-practices-skill/core/test-data.md +0 -492
  91. package/skills/playwright-best-practices-skill/core/test-suite-structure.md +0 -361
  92. package/skills/playwright-best-practices-skill/core/test-tags.md +0 -298
  93. package/skills/playwright-best-practices-skill/debugging/console-errors.md +0 -420
  94. package/skills/playwright-best-practices-skill/debugging/debugging.md +0 -504
  95. package/skills/playwright-best-practices-skill/debugging/error-testing.md +0 -360
  96. package/skills/playwright-best-practices-skill/debugging/flaky-tests.md +0 -496
  97. package/skills/playwright-best-practices-skill/frameworks/angular.md +0 -530
  98. package/skills/playwright-best-practices-skill/frameworks/nextjs.md +0 -469
  99. package/skills/playwright-best-practices-skill/frameworks/react.md +0 -531
  100. package/skills/playwright-best-practices-skill/frameworks/vue.md +0 -574
  101. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/ci-cd.md +0 -468
  102. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/docker.md +0 -283
  103. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/github-actions.md +0 -546
  104. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/gitlab.md +0 -397
  105. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/other-providers.md +0 -521
  106. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/parallel-sharding.md +0 -371
  107. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/performance.md +0 -453
  108. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/reporting.md +0 -424
  109. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/test-coverage.md +0 -497
  110. package/skills/playwright-best-practices-skill/testing-patterns/accessibility.md +0 -359
  111. package/skills/playwright-best-practices-skill/testing-patterns/api-testing.md +0 -719
  112. package/skills/playwright-best-practices-skill/testing-patterns/browser-extensions.md +0 -506
  113. package/skills/playwright-best-practices-skill/testing-patterns/canvas-webgl.md +0 -493
  114. package/skills/playwright-best-practices-skill/testing-patterns/component-testing.md +0 -500
  115. package/skills/playwright-best-practices-skill/testing-patterns/drag-drop.md +0 -576
  116. package/skills/playwright-best-practices-skill/testing-patterns/electron.md +0 -509
  117. package/skills/playwright-best-practices-skill/testing-patterns/file-operations.md +0 -377
  118. package/skills/playwright-best-practices-skill/testing-patterns/file-upload-download.md +0 -562
  119. package/skills/playwright-best-practices-skill/testing-patterns/forms-validation.md +0 -561
  120. package/skills/playwright-best-practices-skill/testing-patterns/graphql-testing.md +0 -331
  121. package/skills/playwright-best-practices-skill/testing-patterns/i18n.md +0 -508
  122. package/skills/playwright-best-practices-skill/testing-patterns/performance-testing.md +0 -476
  123. package/skills/playwright-best-practices-skill/testing-patterns/security-testing.md +0 -430
  124. package/skills/playwright-best-practices-skill/testing-patterns/visual-regression.md +0 -634
  125. package/skills/playwright-cli/SKILL.md +0 -420
  126. package/skills/playwright-cli/references/element-attributes.md +0 -23
  127. package/skills/playwright-cli/references/playwright-tests.md +0 -39
  128. package/skills/playwright-cli/references/request-mocking.md +0 -87
  129. package/skills/playwright-cli/references/running-code.md +0 -241
  130. package/skills/playwright-cli/references/session-management.md +0 -225
  131. package/skills/playwright-cli/references/storage-state.md +0 -275
  132. package/skills/playwright-cli/references/test-generation.md +0 -433
  133. package/skills/playwright-cli/references/tracing.md +0 -139
  134. package/skills/playwright-cli/references/video-recording.md +0 -143
  135. package/skills/testeiya/README.md +0 -29
  136. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  137. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  138. package/skills/testeiya/check-tests/SKILL.md +0 -260
  139. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  140. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  141. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  142. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  143. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  144. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  145. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  146. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  147. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  148. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  149. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  150. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  151. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  152. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  153. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  154. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  155. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  156. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  157. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  158. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  159. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  160. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  161. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  162. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  163. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  164. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  165. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  166. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  167. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  168. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  169. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  170. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  171. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  172. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  173. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  174. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  175. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  176. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  177. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  178. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  179. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  180. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  181. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  182. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  183. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  184. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  185. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  186. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  187. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  188. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  189. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  190. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  191. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  192. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  193. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  194. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  195. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  196. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  197. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  198. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  199. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  200. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  201. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  202. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  203. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  204. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  205. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  206. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  207. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  208. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  209. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  210. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  211. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  212. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  213. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  214. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  215. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  216. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  217. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  218. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  219. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  220. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  221. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  222. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  223. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  224. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  225. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  226. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  227. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  228. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  229. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  230. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  231. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  232. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  233. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  234. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  235. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  236. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  237. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  238. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  239. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  240. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  241. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  242. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  243. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  244. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  245. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  246. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  247. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  248. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  249. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  250. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  251. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  252. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  253. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  254. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  255. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  256. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  257. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  258. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  259. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  260. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  261. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  262. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  263. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  264. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  265. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  266. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  267. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  268. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  269. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  270. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  271. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  272. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  273. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  274. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  275. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  276. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  277. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  278. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  279. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  280. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  281. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  282. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  283. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  284. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +0 -88
  285. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +0 -95
  286. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +0 -334
  287. package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +0 -56
  288. package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +0 -242
  289. package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +0 -182
  290. package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +0 -22
  291. package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +0 -90
  292. package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +0 -53
  293. package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +0 -52
  294. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +0 -107
  295. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +0 -113
  296. package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +0 -29
  297. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +0 -151
  298. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  299. package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +0 -289
  300. package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +0 -86
  301. package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +0 -54
  302. package/skills/testomatio/test-management/improve-test-cases/SKILL.md +0 -114
  303. package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +0 -66
  304. package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +0 -141
  305. package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +0 -354
  306. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +0 -82
  307. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +0 -37
  308. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +0 -118
  309. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +0 -149
  310. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +0 -54
  311. package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +0 -126
  312. package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -128
  313. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +0 -174
  314. package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +0 -138
  315. package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +0 -65
  316. package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +0 -40
  317. package/skills/testomatio/test-management/qa-thinking/SKILL.md +0 -36
  318. package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +0 -267
  319. package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +0 -387
  320. package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +0 -72
  321. package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +0 -159
  322. package/skills/testomatio/test-management/scan-automation-project/SKILL.md +0 -152
  323. package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +0 -107
  324. package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +0 -140
  325. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +0 -182
  326. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +0 -169
  327. package/skills.yaml +0 -21
  328. package/src/ai-debug.ts +0 -188
  329. package/src/api/agent-get.ts +0 -22
  330. package/src/api/agent-start.ts +0 -384
  331. package/src/api/client-log.ts +0 -29
  332. package/src/api/context.ts +0 -332
  333. package/src/api/debug-layout.ts +0 -47
  334. package/src/api/debug-report.ts +0 -29
  335. package/src/api/debug-snapshot.ts +0 -30
  336. package/src/api/debug-stream.ts +0 -52
  337. package/src/api/files-delete.ts +0 -184
  338. package/src/api/files-read.ts +0 -41
  339. package/src/api/files-rename.ts +0 -99
  340. package/src/api/files-tree.ts +0 -292
  341. package/src/api/files-write.ts +0 -41
  342. package/src/api/mcp.ts +0 -603
  343. package/src/api/memory.ts +0 -69
  344. package/src/api/open-external.ts +0 -39
  345. package/src/api/playwright-cli.ts +0 -606
  346. package/src/api/providers.ts +0 -457
  347. package/src/api/read-env-token.ts +0 -33
  348. package/src/api/sessions.ts +0 -79
  349. package/src/api/settings.ts +0 -120
  350. package/src/api/skills.ts +0 -58
  351. package/src/api/testomatio-attachment.ts +0 -89
  352. package/src/api/testomatio-auth.ts +0 -284
  353. package/src/api/testomatio-proxy.ts +0 -197
  354. package/src/api/testomatio-run-stats.ts +0 -81
  355. package/src/api/testomatio-target.ts +0 -225
  356. package/src/api/testomatio-transcription.ts +0 -82
  357. package/src/api/workspace-search.ts +0 -96
  358. package/src/api/workspace-sync.ts +0 -151
  359. package/src/api/workspace.ts +0 -165
  360. package/src/app-server.ts +0 -556
  361. package/src/bridge.ts +0 -251
  362. package/src/check-tests.ts +0 -156
  363. package/src/cli.ts +0 -17
  364. package/src/commands.ts +0 -244
  365. package/src/config.ts +0 -183
  366. package/src/connection.ts +0 -658
  367. package/src/context-store.ts +0 -265
  368. package/src/debug-bus.ts +0 -405
  369. package/src/extensions/tool-gate.ts +0 -220
  370. package/src/extensions/webui/ask-channel.ts +0 -52
  371. package/src/extensions/webui/index.ts +0 -184
  372. package/src/extensions/webui/tools/ask-question.ts +0 -88
  373. package/src/extensions/webui/tools/query-result.ts +0 -79
  374. package/src/extensions/webui/tools/render-chart.ts +0 -53
  375. package/src/extensions/webui/tools/render-item.ts +0 -61
  376. package/src/extensions/webui/tools/render-list.ts +0 -170
  377. package/src/extensions/webui/tools/render-result.ts +0 -85
  378. package/src/extensions/webui/tools/render-tree.ts +0 -71
  379. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  380. package/src/extensions/webui/tools/widget-result.ts +0 -13
  381. package/src/extensions/webui/widget-channel.ts +0 -50
  382. package/src/file-log.ts +0 -196
  383. package/src/git-tracked.ts +0 -68
  384. package/src/gitignore.ts +0 -53
  385. package/src/json-store.ts +0 -43
  386. package/src/load-env.ts +0 -70
  387. package/src/loader-style.ts +0 -96
  388. package/src/main.ts +0 -140
  389. package/src/mcp-catalog.ts +0 -96
  390. package/src/models-catalog.ts +0 -72
  391. package/src/permissions.ts +0 -120
  392. package/src/project-dir.ts +0 -189
  393. package/src/project-info.ts +0 -108
  394. package/src/prompt/app-ui.ts +0 -59
  395. package/src/prompt/browser.ts +0 -27
  396. package/src/prompt/index.ts +0 -62
  397. package/src/server-info.ts +0 -62
  398. package/src/session-factory.ts +0 -442
  399. package/src/session-store.ts +0 -115
  400. package/src/shell-env.ts +0 -45
  401. package/src/skills.ts +0 -163
  402. package/src/sync-snapshot.ts +0 -140
  403. package/src/telemetry.ts +0 -239
  404. package/src/testomatio-auth.ts +0 -299
  405. package/src/testomatio.ts +0 -98
  406. package/src/theme.ts +0 -30
  407. package/src/user-env.ts +0 -94
  408. package/src/welcome.ts +0 -127
  409. package/src/workspace/safe-path.ts +0 -85
  410. package/src/workspace/test-md.ts +0 -70
  411. package/src/workspace-model.ts +0 -440
  412. package/testeiya.config.json +0 -14
@@ -1,497 +0,0 @@
1
- # Test Coverage
2
-
3
- ## Table of Contents
4
-
5
- 1. [Coverage Setup](#coverage-setup)
6
- 2. [Collecting Coverage](#collecting-coverage)
7
- 3. [Coverage Reports](#coverage-reports)
8
- 4. [Coverage Thresholds](#coverage-thresholds)
9
- 5. [Advanced Patterns](#advanced-patterns)
10
- 6. [CI Integration](#ci-integration)
11
-
12
- ## Coverage Setup
13
-
14
- ### Install Dependencies
15
-
16
- ```bash
17
- # For V8 coverage (built into Playwright)
18
- # No additional dependencies needed
19
-
20
- # For Istanbul-based coverage (more features)
21
- npm install -D nyc @istanbuljs/nyc-config-typescript
22
- ```
23
-
24
- ### Basic Configuration
25
-
26
- ```typescript
27
- // playwright.config.ts
28
- import { defineConfig } from "@playwright/test";
29
-
30
- export default defineConfig({
31
- use: {
32
- // Enable coverage collection
33
- contextOptions: {
34
- // V8 coverage is automatic with the API below
35
- },
36
- },
37
- });
38
- ```
39
-
40
- ### V8 Coverage Fixture
41
-
42
- ```typescript
43
- // fixtures/coverage.ts
44
- import { test as base, expect } from "@playwright/test";
45
- import fs from "fs";
46
- import path from "path";
47
- import { randomUUID } from "crypto";
48
-
49
- export const test = base.extend<{}, { collectCoverage: void }>({
50
- collectCoverage: [
51
- async ({ browser }, use) => {
52
- // Start coverage for all pages
53
- const context = await browser.newContext();
54
- const page = await context.newPage();
55
-
56
- await page.coverage.startJSCoverage();
57
- await page.coverage.startCSSCoverage();
58
-
59
- await use();
60
-
61
- // Collect coverage
62
- const [jsCoverage, cssCoverage] = await Promise.all([
63
- page.coverage.stopJSCoverage(),
64
- page.coverage.stopCSSCoverage(),
65
- ]);
66
-
67
- // Save coverage data
68
- const coverageDir = "./coverage";
69
- if (!fs.existsSync(coverageDir)) {
70
- fs.mkdirSync(coverageDir, { recursive: true });
71
- }
72
-
73
- fs.writeFileSync(
74
- path.join(coverageDir, `coverage-${randomUUID()}.json`),
75
- JSON.stringify([...jsCoverage, ...cssCoverage])
76
- );
77
-
78
- await context.close();
79
- },
80
- { scope: "worker", auto: true },
81
- ],
82
- });
83
- ```
84
-
85
- ## Collecting Coverage
86
-
87
- ### Per-Test Coverage
88
-
89
- ```typescript
90
- test("collect coverage for single test", async ({ page }) => {
91
- // Start coverage collection
92
- await page.coverage.startJSCoverage({
93
- resetOnNavigation: false,
94
- });
95
-
96
- // Run test
97
- await page.goto("/app");
98
- await page.getByRole("button", { name: "Submit" }).click();
99
- await expect(page.getByText("Success")).toBeVisible();
100
-
101
- // Stop and get coverage
102
- const coverage = await page.coverage.stopJSCoverage();
103
-
104
- // Filter to only your source files
105
- const appCoverage = coverage.filter((entry) => entry.url.includes("/src/"));
106
-
107
- console.log(`Covered ${appCoverage.length} source files`);
108
- });
109
- ```
110
-
111
- ### Coverage for Specific Files
112
-
113
- ```typescript
114
- test("track specific module coverage", async ({ page }) => {
115
- await page.coverage.startJSCoverage();
116
-
117
- await page.goto("/checkout");
118
- await page.getByRole("button", { name: "Pay" }).click();
119
-
120
- const coverage = await page.coverage.stopJSCoverage();
121
-
122
- // Find coverage for checkout module
123
- const checkoutCoverage = coverage.find((c) => c.url.includes("checkout.js"));
124
-
125
- if (checkoutCoverage) {
126
- const totalBytes = checkoutCoverage.text?.length || 0;
127
- const coveredBytes = checkoutCoverage.ranges.reduce(
128
- (sum, range) => sum + (range.end - range.start),
129
- 0
130
- );
131
- const percentage = (coveredBytes / totalBytes) * 100;
132
-
133
- console.log(`Checkout module: ${percentage.toFixed(1)}% covered`);
134
- expect(percentage).toBeGreaterThan(80);
135
- }
136
- });
137
- ```
138
-
139
- ### CSS Coverage
140
-
141
- ```typescript
142
- test("collect CSS coverage", async ({ page }) => {
143
- await page.coverage.startCSSCoverage();
144
-
145
- await page.goto("/app");
146
-
147
- // Interact to trigger different CSS states
148
- await page.getByRole("button").hover();
149
- await page.getByRole("dialog").waitFor();
150
-
151
- const cssCoverage = await page.coverage.stopCSSCoverage();
152
-
153
- // Find unused CSS
154
- for (const entry of cssCoverage) {
155
- const totalBytes = entry.text?.length || 0;
156
- const usedBytes = entry.ranges.reduce(
157
- (sum, range) => sum + (range.end - range.start),
158
- 0
159
- );
160
- const unusedPercentage = ((totalBytes - usedBytes) / totalBytes) * 100;
161
-
162
- if (unusedPercentage > 50) {
163
- console.warn(`${entry.url}: ${unusedPercentage.toFixed(1)}% unused CSS`);
164
- }
165
- }
166
- });
167
- ```
168
-
169
- ## Coverage Reports
170
-
171
- ### Converting to Istanbul Format
172
-
173
- ```typescript
174
- // scripts/convert-coverage.ts
175
- import { execSync } from "child_process";
176
- import fs from "fs";
177
- import path from "path";
178
- import v8ToIstanbul from "v8-to-istanbul";
179
-
180
- async function convertCoverage() {
181
- const coverageDir = "./coverage";
182
- const files = fs.readdirSync(coverageDir).filter((f) => f.endsWith(".json"));
183
-
184
- const istanbulCoverage: any = {};
185
-
186
- for (const file of files) {
187
- const coverageData = JSON.parse(
188
- fs.readFileSync(path.join(coverageDir, file), "utf-8")
189
- );
190
-
191
- for (const entry of coverageData) {
192
- if (!entry.url.startsWith("file://")) continue;
193
-
194
- const filePath = entry.url.replace("file://", "");
195
- const converter = v8ToIstanbul(filePath);
196
-
197
- await converter.load();
198
- converter.applyCoverage(entry.functions || []);
199
-
200
- const istanbul = converter.toIstanbul();
201
- Object.assign(istanbulCoverage, istanbul);
202
- }
203
- }
204
-
205
- fs.writeFileSync(
206
- path.join(coverageDir, "coverage-final.json"),
207
- JSON.stringify(istanbulCoverage)
208
- );
209
- }
210
-
211
- convertCoverage();
212
- ```
213
-
214
- ### Generating HTML Report
215
-
216
- ```bash
217
- # Using nyc to generate report
218
- npx nyc report --reporter=html --reporter=text --temp-dir=./coverage
219
- ```
220
-
221
- ```typescript
222
- // package.json scripts
223
- {
224
- "scripts": {
225
- "test": "playwright test",
226
- "test:coverage": "playwright test && npm run coverage:report",
227
- "coverage:report": "npx nyc report --reporter=html --reporter=lcov --temp-dir=./coverage"
228
- }
229
- }
230
- ```
231
-
232
- ### Custom Coverage Reporter
233
-
234
- ```typescript
235
- // reporters/coverage-reporter.ts
236
- import type { Reporter, FullResult } from "@playwright/test/reporter";
237
- import fs from "fs";
238
- import path from "path";
239
-
240
- class CoverageReporter implements Reporter {
241
- private coverageData: any[] = [];
242
-
243
- onEnd(result: FullResult) {
244
- // Aggregate all coverage files
245
- const coverageDir = "./coverage";
246
- const files = fs
247
- .readdirSync(coverageDir)
248
- .filter((f) => f.endsWith(".json"));
249
-
250
- for (const file of files) {
251
- const data = JSON.parse(
252
- fs.readFileSync(path.join(coverageDir, file), "utf-8")
253
- );
254
- this.coverageData.push(...data);
255
- }
256
-
257
- // Generate summary
258
- const summary = this.generateSummary();
259
- console.log("\n📊 Coverage Summary:");
260
- console.log(` Files: ${summary.totalFiles}`);
261
- console.log(` Lines: ${summary.lineCoverage.toFixed(1)}%`);
262
- console.log(` Bytes: ${summary.byteCoverage.toFixed(1)}%`);
263
-
264
- if (summary.lineCoverage < 80) {
265
- console.warn("⚠️ Coverage below 80% threshold!");
266
- }
267
- }
268
-
269
- private generateSummary() {
270
- let totalBytes = 0;
271
- let coveredBytes = 0;
272
- const files = new Set<string>();
273
-
274
- for (const entry of this.coverageData) {
275
- if (entry.url.includes("/src/")) {
276
- files.add(entry.url);
277
- totalBytes += entry.text?.length || 0;
278
- coveredBytes += entry.ranges.reduce(
279
- (sum: number, r: any) => sum + (r.end - r.start),
280
- 0
281
- );
282
- }
283
- }
284
-
285
- return {
286
- totalFiles: files.size,
287
- byteCoverage: (coveredBytes / totalBytes) * 100,
288
- lineCoverage: (coveredBytes / totalBytes) * 100, // Simplified
289
- };
290
- }
291
- }
292
-
293
- export default CoverageReporter;
294
- ```
295
-
296
- ## Coverage Thresholds
297
-
298
- ### Enforcing Minimum Coverage
299
-
300
- ```typescript
301
- // tests/coverage.spec.ts
302
- import { test, expect } from "@playwright/test";
303
- import fs from "fs";
304
- import path from "path";
305
-
306
- test.afterAll(async () => {
307
- const coverageDir = "./coverage";
308
- const files = fs.readdirSync(coverageDir).filter((f) => f.endsWith(".json"));
309
-
310
- let totalBytes = 0;
311
- let coveredBytes = 0;
312
-
313
- for (const file of files) {
314
- const coverage = JSON.parse(
315
- fs.readFileSync(path.join(coverageDir, file), "utf-8")
316
- );
317
-
318
- for (const entry of coverage) {
319
- if (!entry.url.includes("/src/")) continue;
320
- totalBytes += entry.text?.length || 0;
321
- coveredBytes += entry.ranges.reduce(
322
- (sum: number, r: any) => sum + (r.end - r.start),
323
- 0
324
- );
325
- }
326
- }
327
-
328
- const coveragePercent = (coveredBytes / totalBytes) * 100;
329
-
330
- // Enforce threshold
331
- expect(coveragePercent).toBeGreaterThan(80);
332
- });
333
- ```
334
-
335
- ### Per-Directory Thresholds
336
-
337
- ```typescript
338
- // coverage-check.ts
339
- interface CoverageThreshold {
340
- pattern: RegExp;
341
- minCoverage: number;
342
- }
343
-
344
- const thresholds: CoverageThreshold[] = [
345
- { pattern: /\/src\/core\//, minCoverage: 90 },
346
- { pattern: /\/src\/utils\//, minCoverage: 85 },
347
- { pattern: /\/src\/components\//, minCoverage: 70 },
348
- { pattern: /\/src\/pages\//, minCoverage: 60 },
349
- ];
350
-
351
- function checkThresholds(coverage: any[]): string[] {
352
- const violations: string[] = [];
353
-
354
- for (const threshold of thresholds) {
355
- const matchingFiles = coverage.filter((c) => threshold.pattern.test(c.url));
356
-
357
- let total = 0;
358
- let covered = 0;
359
-
360
- for (const file of matchingFiles) {
361
- total += file.text?.length || 0;
362
- covered += file.ranges.reduce(
363
- (sum: number, r: any) => sum + (r.end - r.start),
364
- 0
365
- );
366
- }
367
-
368
- const percent = total > 0 ? (covered / total) * 100 : 0;
369
-
370
- if (percent < threshold.minCoverage) {
371
- violations.push(
372
- `${threshold.pattern}: ${percent.toFixed(1)}% < ${
373
- threshold.minCoverage
374
- }%`
375
- );
376
- }
377
- }
378
-
379
- return violations;
380
- }
381
- ```
382
-
383
- ## Advanced Patterns
384
-
385
- ### Merging Coverage Across Shards
386
-
387
- ```typescript
388
- // scripts/merge-coverage.ts
389
- import fs from "fs";
390
- import { glob } from "glob";
391
-
392
- async function mergeCoverage() {
393
- const files = await glob("shard-*/coverage/*.json");
394
- const merged = new Map<string, any>();
395
-
396
- for (const file of files) {
397
- const data = JSON.parse(fs.readFileSync(file, "utf-8"));
398
- for (const entry of data) {
399
- if (merged.has(entry.url)) {
400
- const existing = merged.get(entry.url);
401
- existing.ranges.push(...entry.ranges);
402
- } else {
403
- merged.set(entry.url, { ...entry });
404
- }
405
- }
406
- }
407
-
408
- fs.writeFileSync(
409
- "./coverage/merged.json",
410
- JSON.stringify([...merged.values()])
411
- );
412
- }
413
-
414
- mergeCoverage();
415
- ```
416
-
417
- ### Incremental Coverage
418
-
419
- ```typescript
420
- // Check coverage only for changed files in CI
421
- import { execSync } from "child_process";
422
- import fs from "fs";
423
-
424
- const changedFiles = execSync("git diff --name-only HEAD~1")
425
- .toString()
426
- .split("\n")
427
- .filter((f) => f.endsWith(".ts"));
428
-
429
- const coverage = JSON.parse(fs.readFileSync("./coverage/merged.json", "utf-8"));
430
-
431
- for (const file of changedFiles) {
432
- const entry = coverage.find((c: any) => c.url.includes(file));
433
- if (entry) {
434
- const percent =
435
- (entry.ranges.reduce((s: number, r: any) => s + r.end - r.start, 0) /
436
- (entry.text?.length || 1)) *
437
- 100;
438
- console.log(`${file}: ${percent.toFixed(1)}%`);
439
- }
440
- }
441
- ```
442
-
443
- ## CI Integration
444
-
445
- ### GitHub Actions
446
-
447
- ```yaml
448
- # .github/workflows/test.yml
449
- name: Tests with Coverage
450
-
451
- on: [push, pull_request]
452
-
453
- jobs:
454
- test:
455
- runs-on: ubuntu-latest
456
- steps:
457
- - uses: actions/checkout@v4
458
-
459
- - uses: actions/setup-node@v4
460
- with:
461
- node-version: 22
462
-
463
- - run: npm ci
464
- - run: npx playwright install --with-deps
465
-
466
- - name: Run tests with coverage
467
- run: npm run test:coverage
468
-
469
- - name: Upload coverage to Codecov
470
- uses: codecov/codecov-action@v3
471
- with:
472
- files: ./coverage/lcov.info
473
- fail_ci_if_error: true
474
-
475
- - name: Check coverage threshold
476
- run: |
477
- COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct')
478
- if (( $(echo "$COVERAGE < 80" | bc -l) )); then
479
- echo "Coverage $COVERAGE% is below 80% threshold"
480
- exit 1
481
- fi
482
- ```
483
-
484
- ## Anti-Patterns to Avoid
485
-
486
- | Anti-Pattern | Problem | Solution |
487
- | ---------------------------- | -------------------------------------- | --------------------------- |
488
- | Coverage for coverage's sake | Gaming metrics | Focus on critical paths |
489
- | 100% coverage target | Diminishing returns, tests for getters | Set realistic thresholds |
490
- | Ignoring coverage drops | Technical debt | Enforce thresholds in CI |
491
- | No source map support | Wrong line numbers | Enable source maps in build |
492
- | Coverage only in CI | Late feedback | Run locally too |
493
-
494
- ## Related References
495
-
496
- - **CI/CD**: See [ci-cd.md](ci-cd.md) for pipeline configuration
497
- - **Performance**: See [performance.md](performance.md) for optimizing coverage collection