testeiya 0.2.1 → 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 (414) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -213
  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 -42
  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/assets/testeiya-logo-dark.svg +0 -16
  51. package/assets/testeiya-logo.svg +0 -15
  52. package/models.catalog.json +0 -6963
  53. package/skills/codeceptjs/ci-fix-tests/SKILL.md +0 -120
  54. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +0 -158
  55. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +0 -91
  56. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +0 -158
  57. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +0 -90
  58. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +0 -234
  59. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +0 -110
  60. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +0 -306
  61. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +0 -352
  62. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +0 -472
  63. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +0 -350
  64. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +0 -81
  65. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +0 -206
  66. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  67. package/skills/playwright-best-practices-skill/README.md +0 -147
  68. package/skills/playwright-best-practices-skill/SKILL.md +0 -303
  69. package/skills/playwright-best-practices-skill/advanced/authentication-flows.md +0 -360
  70. package/skills/playwright-best-practices-skill/advanced/authentication.md +0 -871
  71. package/skills/playwright-best-practices-skill/advanced/clock-mocking.md +0 -364
  72. package/skills/playwright-best-practices-skill/advanced/mobile-testing.md +0 -409
  73. package/skills/playwright-best-practices-skill/advanced/multi-context.md +0 -288
  74. package/skills/playwright-best-practices-skill/advanced/multi-user.md +0 -393
  75. package/skills/playwright-best-practices-skill/advanced/network-advanced.md +0 -452
  76. package/skills/playwright-best-practices-skill/advanced/third-party.md +0 -464
  77. package/skills/playwright-best-practices-skill/architecture/pom-vs-fixtures.md +0 -363
  78. package/skills/playwright-best-practices-skill/architecture/test-architecture.md +0 -369
  79. package/skills/playwright-best-practices-skill/architecture/when-to-mock.md +0 -383
  80. package/skills/playwright-best-practices-skill/browser-apis/browser-apis.md +0 -391
  81. package/skills/playwright-best-practices-skill/browser-apis/iframes.md +0 -403
  82. package/skills/playwright-best-practices-skill/browser-apis/service-workers.md +0 -504
  83. package/skills/playwright-best-practices-skill/browser-apis/websockets.md +0 -403
  84. package/skills/playwright-best-practices-skill/core/annotations.md +0 -424
  85. package/skills/playwright-best-practices-skill/core/assertions-waiting.md +0 -361
  86. package/skills/playwright-best-practices-skill/core/configuration.md +0 -452
  87. package/skills/playwright-best-practices-skill/core/fixtures-hooks.md +0 -417
  88. package/skills/playwright-best-practices-skill/core/global-setup.md +0 -434
  89. package/skills/playwright-best-practices-skill/core/locators.md +0 -242
  90. package/skills/playwright-best-practices-skill/core/page-object-model.md +0 -315
  91. package/skills/playwright-best-practices-skill/core/projects-dependencies.md +0 -453
  92. package/skills/playwright-best-practices-skill/core/test-data.md +0 -492
  93. package/skills/playwright-best-practices-skill/core/test-suite-structure.md +0 -361
  94. package/skills/playwright-best-practices-skill/core/test-tags.md +0 -298
  95. package/skills/playwright-best-practices-skill/debugging/console-errors.md +0 -420
  96. package/skills/playwright-best-practices-skill/debugging/debugging.md +0 -504
  97. package/skills/playwright-best-practices-skill/debugging/error-testing.md +0 -360
  98. package/skills/playwright-best-practices-skill/debugging/flaky-tests.md +0 -496
  99. package/skills/playwright-best-practices-skill/frameworks/angular.md +0 -530
  100. package/skills/playwright-best-practices-skill/frameworks/nextjs.md +0 -469
  101. package/skills/playwright-best-practices-skill/frameworks/react.md +0 -531
  102. package/skills/playwright-best-practices-skill/frameworks/vue.md +0 -574
  103. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/ci-cd.md +0 -468
  104. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/docker.md +0 -283
  105. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/github-actions.md +0 -546
  106. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/gitlab.md +0 -397
  107. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/other-providers.md +0 -521
  108. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/parallel-sharding.md +0 -371
  109. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/performance.md +0 -453
  110. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/reporting.md +0 -424
  111. package/skills/playwright-best-practices-skill/infrastructure-ci-cd/test-coverage.md +0 -497
  112. package/skills/playwright-best-practices-skill/testing-patterns/accessibility.md +0 -359
  113. package/skills/playwright-best-practices-skill/testing-patterns/api-testing.md +0 -719
  114. package/skills/playwright-best-practices-skill/testing-patterns/browser-extensions.md +0 -506
  115. package/skills/playwright-best-practices-skill/testing-patterns/canvas-webgl.md +0 -493
  116. package/skills/playwright-best-practices-skill/testing-patterns/component-testing.md +0 -500
  117. package/skills/playwright-best-practices-skill/testing-patterns/drag-drop.md +0 -576
  118. package/skills/playwright-best-practices-skill/testing-patterns/electron.md +0 -509
  119. package/skills/playwright-best-practices-skill/testing-patterns/file-operations.md +0 -377
  120. package/skills/playwright-best-practices-skill/testing-patterns/file-upload-download.md +0 -562
  121. package/skills/playwright-best-practices-skill/testing-patterns/forms-validation.md +0 -561
  122. package/skills/playwright-best-practices-skill/testing-patterns/graphql-testing.md +0 -331
  123. package/skills/playwright-best-practices-skill/testing-patterns/i18n.md +0 -508
  124. package/skills/playwright-best-practices-skill/testing-patterns/performance-testing.md +0 -476
  125. package/skills/playwright-best-practices-skill/testing-patterns/security-testing.md +0 -430
  126. package/skills/playwright-best-practices-skill/testing-patterns/visual-regression.md +0 -634
  127. package/skills/playwright-cli/SKILL.md +0 -420
  128. package/skills/playwright-cli/references/element-attributes.md +0 -23
  129. package/skills/playwright-cli/references/playwright-tests.md +0 -39
  130. package/skills/playwright-cli/references/request-mocking.md +0 -87
  131. package/skills/playwright-cli/references/running-code.md +0 -241
  132. package/skills/playwright-cli/references/session-management.md +0 -225
  133. package/skills/playwright-cli/references/storage-state.md +0 -275
  134. package/skills/playwright-cli/references/test-generation.md +0 -433
  135. package/skills/playwright-cli/references/tracing.md +0 -139
  136. package/skills/playwright-cli/references/video-recording.md +0 -143
  137. package/skills/testeiya/README.md +0 -29
  138. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  139. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  140. package/skills/testeiya/check-tests/SKILL.md +0 -260
  141. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  142. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  143. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  144. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  145. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  146. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  147. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  148. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  149. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  150. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  151. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  152. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  153. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  154. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  155. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  156. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  157. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  158. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  159. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  160. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  161. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  162. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  163. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  164. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  165. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  166. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  167. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  168. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  169. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  170. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  171. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  172. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  173. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  174. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  175. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  176. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  177. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  178. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  179. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  180. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  181. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  182. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  183. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  184. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  185. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  186. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  187. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  188. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  189. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  190. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  191. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  192. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  193. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  194. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  195. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  196. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  197. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  198. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  199. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  200. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  201. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  202. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  203. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  204. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  205. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  206. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  207. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  208. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  209. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  210. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  211. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  212. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  213. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  214. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  215. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  216. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  217. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  218. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  219. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  220. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  221. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  222. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  223. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  224. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  225. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  226. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  227. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  228. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  229. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  230. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  231. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  232. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  233. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  234. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  235. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  236. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  237. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  238. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  239. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  240. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  241. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  242. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  243. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  244. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  245. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  246. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  247. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  248. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  249. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  250. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  251. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  252. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  253. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  254. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  255. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  256. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  257. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  258. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  259. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  260. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  261. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  262. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  263. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  264. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  265. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  266. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  267. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  268. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  269. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  270. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  271. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  272. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  273. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  274. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  275. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  276. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  277. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  278. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  279. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  280. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  281. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  282. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  283. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  284. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  285. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  286. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +0 -88
  287. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +0 -95
  288. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +0 -334
  289. package/skills/testomatio/test-automation/automate-manual-test-cases/CLAUDE.md +0 -56
  290. package/skills/testomatio/test-automation/automate-manual-test-cases/SKILL.md +0 -242
  291. package/skills/testomatio/test-automation/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +0 -182
  292. package/skills/testomatio/test-automation/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +0 -22
  293. package/skills/testomatio/test-automation/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +0 -90
  294. package/skills/testomatio/test-automation/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +0 -53
  295. package/skills/testomatio/test-automation/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +0 -52
  296. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/SKILL.md +0 -107
  297. package/skills/testomatio/test-automation/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +0 -113
  298. package/skills/testomatio/test-automation/qa-automation-test-consolidation/SKILL.md +0 -29
  299. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +0 -151
  300. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  301. package/skills/testomatio/test-automation/testomat-allure-adapter/SKILL.md +0 -289
  302. package/skills/testomatio/test-management/detect-duplicate-test-cases/SKILL.md +0 -86
  303. package/skills/testomatio/test-management/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +0 -54
  304. package/skills/testomatio/test-management/improve-test-cases/SKILL.md +0 -114
  305. package/skills/testomatio/test-management/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +0 -66
  306. package/skills/testomatio/test-management/pull-request-diff-analyzer/SKILL.md +0 -141
  307. package/skills/testomatio/test-management/qa-e2e-tests-reporting/SKILL.md +0 -354
  308. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +0 -82
  309. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +0 -37
  310. package/skills/testomatio/test-management/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +0 -118
  311. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/SKILL.md +0 -149
  312. package/skills/testomatio/test-management/qa-pr-requirements-analyzer/references/summary-example.md +0 -54
  313. package/skills/testomatio/test-management/qa-requirement-reviewer/SKILL.md +0 -126
  314. package/skills/testomatio/test-management/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -128
  315. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +0 -174
  316. package/skills/testomatio/test-management/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +0 -138
  317. package/skills/testomatio/test-management/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +0 -65
  318. package/skills/testomatio/test-management/qa-test-code-coverage/scripts/check-coverage.mjs +0 -40
  319. package/skills/testomatio/test-management/qa-thinking/SKILL.md +0 -36
  320. package/skills/testomatio/test-management/qa-write-test-cases/SKILL.md +0 -267
  321. package/skills/testomatio/test-management/qa-write-test-cases/references/test-case-format.md +0 -387
  322. package/skills/testomatio/test-management/qa-write-test-cases/references/testomat-tms-guide.md +0 -72
  323. package/skills/testomatio/test-management/qa-write-test-cases/references/writing-rule.md +0 -159
  324. package/skills/testomatio/test-management/scan-automation-project/SKILL.md +0 -152
  325. package/skills/testomatio/test-management/sync-test-cases-with-tms/SKILL.md +0 -107
  326. package/skills/testomatio/test-management/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +0 -140
  327. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +0 -182
  328. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +0 -169
  329. package/skills.yaml +0 -21
  330. package/src/ai-debug.ts +0 -188
  331. package/src/api/agent-get.ts +0 -22
  332. package/src/api/agent-start.ts +0 -384
  333. package/src/api/client-log.ts +0 -29
  334. package/src/api/context.ts +0 -332
  335. package/src/api/debug-layout.ts +0 -47
  336. package/src/api/debug-report.ts +0 -29
  337. package/src/api/debug-snapshot.ts +0 -30
  338. package/src/api/debug-stream.ts +0 -52
  339. package/src/api/files-delete.ts +0 -184
  340. package/src/api/files-read.ts +0 -41
  341. package/src/api/files-rename.ts +0 -99
  342. package/src/api/files-tree.ts +0 -292
  343. package/src/api/files-write.ts +0 -41
  344. package/src/api/mcp.ts +0 -603
  345. package/src/api/memory.ts +0 -69
  346. package/src/api/open-external.ts +0 -39
  347. package/src/api/playwright-cli.ts +0 -606
  348. package/src/api/providers.ts +0 -457
  349. package/src/api/read-env-token.ts +0 -33
  350. package/src/api/sessions.ts +0 -79
  351. package/src/api/settings.ts +0 -120
  352. package/src/api/skills.ts +0 -58
  353. package/src/api/testomatio-attachment.ts +0 -89
  354. package/src/api/testomatio-auth.ts +0 -284
  355. package/src/api/testomatio-proxy.ts +0 -197
  356. package/src/api/testomatio-run-stats.ts +0 -81
  357. package/src/api/testomatio-target.ts +0 -225
  358. package/src/api/testomatio-transcription.ts +0 -82
  359. package/src/api/workspace-search.ts +0 -96
  360. package/src/api/workspace-sync.ts +0 -151
  361. package/src/api/workspace.ts +0 -165
  362. package/src/app-server.ts +0 -556
  363. package/src/bridge.ts +0 -251
  364. package/src/check-tests.ts +0 -156
  365. package/src/cli.ts +0 -17
  366. package/src/commands.ts +0 -244
  367. package/src/config.ts +0 -183
  368. package/src/connection.ts +0 -658
  369. package/src/context-store.ts +0 -265
  370. package/src/debug-bus.ts +0 -405
  371. package/src/extensions/tool-gate.ts +0 -220
  372. package/src/extensions/webui/ask-channel.ts +0 -52
  373. package/src/extensions/webui/index.ts +0 -184
  374. package/src/extensions/webui/tools/ask-question.ts +0 -88
  375. package/src/extensions/webui/tools/query-result.ts +0 -79
  376. package/src/extensions/webui/tools/render-chart.ts +0 -53
  377. package/src/extensions/webui/tools/render-item.ts +0 -61
  378. package/src/extensions/webui/tools/render-list.ts +0 -170
  379. package/src/extensions/webui/tools/render-result.ts +0 -85
  380. package/src/extensions/webui/tools/render-tree.ts +0 -71
  381. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  382. package/src/extensions/webui/tools/widget-result.ts +0 -13
  383. package/src/extensions/webui/widget-channel.ts +0 -50
  384. package/src/file-log.ts +0 -196
  385. package/src/git-tracked.ts +0 -68
  386. package/src/gitignore.ts +0 -53
  387. package/src/json-store.ts +0 -43
  388. package/src/load-env.ts +0 -70
  389. package/src/loader-style.ts +0 -96
  390. package/src/main.ts +0 -140
  391. package/src/mcp-catalog.ts +0 -96
  392. package/src/models-catalog.ts +0 -72
  393. package/src/permissions.ts +0 -120
  394. package/src/project-dir.ts +0 -189
  395. package/src/project-info.ts +0 -108
  396. package/src/prompt/app-ui.ts +0 -59
  397. package/src/prompt/browser.ts +0 -27
  398. package/src/prompt/index.ts +0 -62
  399. package/src/server-info.ts +0 -62
  400. package/src/session-factory.ts +0 -442
  401. package/src/session-store.ts +0 -115
  402. package/src/shell-env.ts +0 -45
  403. package/src/skills.ts +0 -163
  404. package/src/sync-snapshot.ts +0 -140
  405. package/src/telemetry.ts +0 -239
  406. package/src/testomatio-auth.ts +0 -299
  407. package/src/testomatio.ts +0 -98
  408. package/src/theme.ts +0 -30
  409. package/src/user-env.ts +0 -94
  410. package/src/welcome.ts +0 -194
  411. package/src/workspace/safe-path.ts +0 -85
  412. package/src/workspace/test-md.ts +0 -70
  413. package/src/workspace-model.ts +0 -440
  414. package/testeiya.config.json +0 -14
@@ -1,496 +0,0 @@
1
- # Debugging and Managing Flaky Tests
2
-
3
- ## Table of Contents
4
-
5
- 1. [Understanding Flakiness Types](#understanding-flakiness-types)
6
- 2. [Detection and Reproduction](#detection-and-reproduction)
7
- 3. [Root Cause Analysis](#root-cause-analysis)
8
- 4. [Fixing Strategies by Type](#fixing-strategies-by-type)
9
- 5. [CI-Specific Flakiness](#ci-specific-flakiness)
10
- 6. [Quarantine and Management](#quarantine-and-management)
11
- 7. [Prevention Strategies](#prevention-strategies)
12
-
13
- ## Understanding Flakiness Types
14
-
15
- ### Categories of Flakiness
16
-
17
- Most flaky tests fall into distinct categories requiring different remediation:
18
-
19
- | Category | Symptoms | Common Causes |
20
- | --------------------------- | ------------------------------- | ------------------------------------------------------ |
21
- | **UI-driven** | Element not found, click missed | Missing waits, animations, dynamic rendering |
22
- | **Environment-driven** | CI-only failures | Slower CPU, memory limits, cold browser starts |
23
- | **Data/parallelism-driven** | Fails with multiple workers | Shared backend data, reused accounts, state collisions |
24
- | **Test-suite-driven** | Fails when run with other tests | Leaked state, shared fixtures, order dependencies |
25
-
26
- ### Flakiness Decision Tree
27
-
28
- ```
29
- Test fails intermittently
30
- ├─ Fails locally too?
31
- │ ├─ YES → Timing/async issue → Check waits and assertions
32
- │ └─ NO → CI-specific → Check environment differences
33
-
34
- ├─ Fails only with multiple workers?
35
- │ └─ YES → Parallelism issue → Check data isolation
36
-
37
- ├─ Fails only when run after specific tests?
38
- │ └─ YES → State leak → Check fixtures and cleanup
39
-
40
- └─ Fails randomly regardless of conditions?
41
- └─ External dependency → Check network/API stability
42
- ```
43
-
44
- ## Detection and Reproduction
45
-
46
- ### Confirming Flakiness
47
-
48
- ```bash
49
- # Run test multiple times to confirm instability
50
- npx playwright test tests/checkout.spec.ts --repeat-each=20
51
-
52
- # Run with single worker to isolate parallelism issues
53
- npx playwright test --workers=1
54
-
55
- # Run in CI-like conditions locally
56
- CI=true npx playwright test --repeat-each=10
57
- ```
58
-
59
- ### Reproduction Strategies
60
-
61
- ```typescript
62
- // playwright.config.ts - Enable artifacts for flaky test investigation
63
- export default defineConfig({
64
- retries: process.env.CI ? 2 : 0,
65
- use: {
66
- trace: "on-first-retry", // Capture trace on retry
67
- video: "retain-on-failure",
68
- screenshot: "only-on-failure",
69
- },
70
- });
71
- ```
72
-
73
- ### Identify Flaky Tests Programmatically
74
-
75
- ```typescript
76
- // Track test results across runs
77
- test.afterEach(async ({}, testInfo) => {
78
- if (testInfo.retry > 0 && testInfo.status === "passed") {
79
- console.warn(`FLAKY: ${testInfo.title} passed on retry ${testInfo.retry}`);
80
- // Log to your tracking system
81
- }
82
- });
83
- ```
84
-
85
- ## Root Cause Analysis
86
-
87
- ### Event Logging for Race Conditions
88
-
89
- Add comprehensive event logging to expose timing issues:
90
-
91
- ```typescript
92
- test.beforeEach(async ({ page }) => {
93
- page.on("console", (msg) =>
94
- console.log(`CONSOLE [${msg.type()}]:`, msg.text()),
95
- );
96
- page.on("pageerror", (err) => console.error("PAGE ERROR:", err.message));
97
- page.on("requestfailed", (req) =>
98
- console.error(`REQUEST FAILED: ${req.url()}`),
99
- );
100
- });
101
- ```
102
-
103
- > **For comprehensive console error handling** (fail on errors, allowed patterns, fixtures), see [console-errors.md](console-errors.md).
104
-
105
- ### Network Timing Analysis
106
-
107
- ```typescript
108
- // Capture slow or failed requests
109
- test.beforeEach(async ({ page }) => {
110
- const slowRequests: string[] = [];
111
-
112
- page.on("requestfinished", (request) => {
113
- const timing = request.timing();
114
- const duration = timing.responseEnd - timing.requestStart;
115
- if (duration > 2000) {
116
- slowRequests.push(`${request.url()} took ${duration}ms`);
117
- }
118
- });
119
-
120
- page.on("requestfailed", (request) => {
121
- console.error(`Failed: ${request.url()} - ${request.failure()?.errorText}`);
122
- });
123
- });
124
- ```
125
-
126
- ### Trace Analysis
127
-
128
- ```bash
129
- # View trace from failed CI run
130
- npx playwright show-trace path/to/trace.zip
131
-
132
- # Generate trace for specific test
133
- npx playwright test tests/flaky.spec.ts --trace on
134
- ```
135
-
136
- ## Fixing Strategies by Type
137
-
138
- ### UI-Driven Flakiness
139
-
140
- **Problem: Element not ready when action executes**
141
-
142
- ```typescript
143
- // ❌ BAD: No wait for element state
144
- await page.click("#submit");
145
- await page.fill("#username", "test"); // Element may not be ready
146
-
147
- // ✅ GOOD: Actions + assertions pattern (auto-waiting built-in)
148
- await page.getByRole("button", { name: "Submit" }).click();
149
- await expect(page.getByRole("heading", { name: "Dashboard" })).toBeVisible();
150
- ```
151
-
152
- **Problem: Animations or transitions interfere**
153
-
154
- ```typescript
155
- // ❌ BAD: Click during animation
156
- await page.click(".menu-item");
157
-
158
- // ✅ GOOD: Wait for animation to complete
159
- await page.getByRole("menuitem", { name: "Settings" }).click();
160
- await expect(page.getByRole("dialog")).toBeVisible();
161
- // Or disable animations entirely
162
- await page.emulateMedia({ reducedMotion: "reduce" });
163
- ```
164
-
165
- **Problem: Brittle selectors**
166
-
167
- ```typescript
168
- // ❌ BAD: Fragile CSS chain
169
- await page.click("div.container > div:nth-child(2) > button.btn-primary");
170
-
171
- // ✅ GOOD: Semantic selectors
172
- await page.getByRole("button", { name: "Continue" }).click();
173
- await page.getByTestId("checkout-button").click();
174
- await page.getByLabel("Email address").fill("test@example.com");
175
- ```
176
-
177
- ### Async/Timing Flakiness
178
-
179
- **Problem: Race between test and application**
180
-
181
- ```typescript
182
- // ❌ BAD: Arbitrary sleep
183
- await page.click("#load-data");
184
- await page.waitForTimeout(3000); // Hope data loads in 3s
185
-
186
- // ✅ GOOD: Wait for specific condition
187
- await page.click("#load-data");
188
- await expect(page.locator(".data-row")).toHaveCount(10, { timeout: 10000 });
189
-
190
- // ✅ BETTER: Wait for network response, then assert
191
- const responsePromise = page.waitForResponse(
192
- (r) =>
193
- r.url().includes("/api/data") &&
194
- r.request().method() === "GET" &&
195
- r.ok(),
196
- );
197
- await page.click("#load-data");
198
- await responsePromise;
199
- await expect(page.locator(".data-row")).toHaveCount(10);
200
- ```
201
-
202
- > **For comprehensive waiting strategies** (navigation, element state, network, polling with `toPass()`), see [assertions-waiting.md](assertions-waiting.md#waiting-strategies).
203
-
204
- **Problem: Complex async state**
205
-
206
- ```typescript
207
- // Custom wait for application-specific conditions
208
- await page.waitForFunction(() => {
209
- const app = (window as any).__APP_STATE__;
210
- return app?.isReady && !app?.isLoading;
211
- });
212
-
213
- // Wait for multiple conditions
214
- await Promise.all([
215
- page.waitForResponse("**/api/user"),
216
- page.waitForResponse("**/api/settings"),
217
- page.getByRole("button", { name: "Load" }).click(),
218
- ]);
219
- ```
220
-
221
- ### Data/Parallelism-Driven Flakiness
222
-
223
- **Problem: Tests share backend data**
224
-
225
- ```typescript
226
- // ❌ BAD: All workers use same user
227
- const testUser = { email: "test@example.com", password: "pass123" };
228
-
229
- // ✅ GOOD: Unique data per worker
230
- import { test as base } from "@playwright/test";
231
-
232
- export const test = base.extend<
233
- {},
234
- { testUser: { email: string; id: string } }
235
- >({
236
- testUser: [
237
- async ({}, use, workerInfo) => {
238
- const email = `test-${workerInfo.workerIndex}-${Date.now()}@example.com`;
239
- const user = await createTestUser(email);
240
- await use(user);
241
- await deleteTestUser(user.id);
242
- },
243
- { scope: "worker" },
244
- ],
245
- });
246
- ```
247
-
248
- **Problem: Shared storageState across workers**
249
-
250
- ```typescript
251
- // ❌ BAD: All workers share same auth state
252
- use: {
253
- storageState: '.auth/user.json',
254
- }
255
-
256
- // ✅ GOOD: Per-worker auth state
257
- export const test = base.extend<{}, { workerStorageState: string }>({
258
- workerStorageState: [
259
- async ({ browser }, use, workerInfo) => {
260
- const id = workerInfo.workerIndex;
261
- const fileName = `.auth/user-${id}.json`;
262
-
263
- if (!fs.existsSync(fileName)) {
264
- const page = await browser.newPage({ storageState: undefined });
265
- await authenticateUser(page, `worker${id}@test.com`);
266
- await page.context().storageState({ path: fileName });
267
- await page.close();
268
- }
269
-
270
- await use(fileName);
271
- },
272
- { scope: "worker" },
273
- ],
274
- });
275
- ```
276
-
277
- ### Test-Suite-Driven Flakiness (State Leaks)
278
-
279
- **Problem: Tests affect each other**
280
-
281
- ```typescript
282
- // ❌ BAD: Module-level state persists across tests
283
- let sharedPage: Page;
284
-
285
- test.beforeAll(async ({ browser }) => {
286
- sharedPage = await browser.newPage(); // Shared across tests!
287
- });
288
-
289
- // ✅ GOOD: Use Playwright's default isolation (fresh context per test)
290
- test("first test", async ({ page }) => {
291
- // Fresh page for this test
292
- });
293
-
294
- test("second test", async ({ page }) => {
295
- // Fresh page for this test
296
- });
297
- ```
298
-
299
- **Problem: Fixture cleanup not happening**
300
-
301
- ```typescript
302
- // ✅ GOOD: Proper fixture with cleanup
303
- export const test = base.extend<{ tempFile: string }>({
304
- tempFile: async ({}, use) => {
305
- const file = `/tmp/test-${Date.now()}.json`;
306
- fs.writeFileSync(file, "{}");
307
-
308
- await use(file);
309
-
310
- // Cleanup always runs, even on failure
311
- if (fs.existsSync(file)) {
312
- fs.unlinkSync(file);
313
- }
314
- },
315
- });
316
- ```
317
-
318
- ## CI-Specific Flakiness
319
-
320
- ### Why Tests Fail Only in CI
321
-
322
- | CI Condition | Impact | Solution |
323
- | ------------------ | ------------------------------------- | ---------------------------------------------------- |
324
- | Slower CPU | Actions complete later than expected | Use auto-waiting, not timeouts |
325
- | Cold browser start | No cached assets, slower initial load | Add explicit waits for first navigation |
326
- | Headless mode | Different rendering behavior | Test locally in headless mode |
327
- | Shared runners | Resource contention | Reduce parallelism or use dedicated runners |
328
- | Network latency | API calls slower | Mock external APIs, increase timeouts for real calls |
329
-
330
- ### Simulating CI Locally
331
-
332
- ```bash
333
- # Run headless with CI environment variable
334
- CI=true npx playwright test
335
-
336
- # Limit CPU (Linux/Mac)
337
- cpulimit -l 50 -- npx playwright test
338
-
339
- # Run in Docker matching CI environment
340
- docker run -it --rm \
341
- -v $(pwd):/work \
342
- -w /work \
343
- mcr.microsoft.com/playwright:v1.40.0-jammy \
344
- npx playwright test
345
- ```
346
-
347
- ### Consistent Viewport and Scale
348
-
349
- ```typescript
350
- // playwright.config.ts - Match CI rendering exactly
351
- export default defineConfig({
352
- use: {
353
- viewport: { width: 1280, height: 720 },
354
- deviceScaleFactor: 1,
355
- },
356
- });
357
- ```
358
-
359
- ### Network Stubbing for External APIs
360
-
361
- ```typescript
362
- // Eliminate external API flakiness
363
- test.beforeEach(async ({ page }) => {
364
- // Stub unstable third-party APIs
365
- await page.route("**/api.analytics.com/**", (route) =>
366
- route.fulfill({ body: "" }),
367
- );
368
- await page.route("**/api.payment-provider.com/**", (route) =>
369
- route.fulfill({ json: { status: "ok" } }),
370
- );
371
- });
372
-
373
- // Test-specific stub
374
- test("checkout with payment", async ({ page }) => {
375
- await page.route("**/api/payment", (route) =>
376
- route.fulfill({ json: { success: true, transactionId: "test-123" } }),
377
- );
378
- // Test proceeds with deterministic response
379
- });
380
- ```
381
-
382
- ## Quarantine and Management
383
-
384
- ### Quarantine Pattern
385
-
386
- ```typescript
387
- // playwright.config.ts - Separate flaky tests
388
- export default defineConfig({
389
- projects: [
390
- {
391
- name: "stable",
392
- testIgnore: ["**/*.flaky.spec.ts"],
393
- },
394
- {
395
- name: "quarantine",
396
- testMatch: ["**/*.flaky.spec.ts"],
397
- retries: 3,
398
- },
399
- ],
400
- });
401
- ```
402
-
403
- ### Annotation-Based Quarantine
404
-
405
- ```typescript
406
- // Mark flaky tests with annotations
407
- test("intermittent checkout issue", async ({ page }, testInfo) => {
408
- testInfo.annotations.push({
409
- type: "flaky",
410
- description: "Investigating payment API timing - JIRA-1234",
411
- });
412
-
413
- // Test implementation
414
- });
415
-
416
- // Skip flaky test conditionally
417
- test("known CI flaky", async ({ page }) => {
418
- test.skip(!!process.env.CI, "Flaky in CI - investigating JIRA-5678");
419
- // Test implementation
420
- });
421
- ```
422
-
423
- ## Prevention Strategies
424
-
425
- ### Test Burn-In
426
-
427
- ```bash
428
- # Run new tests many times before merging
429
- npx playwright test tests/new-feature.spec.ts --repeat-each=50
430
-
431
- # Run in parallel to expose race conditions
432
- npx playwright test tests/new-feature.spec.ts --repeat-each=20 --workers=4
433
- ```
434
-
435
- ### Isolation Checklist
436
-
437
- ```typescript
438
- // ✅ Each test should be self-contained
439
- test.describe("User profile", () => {
440
- test("can update name", async ({ page, testUser }) => {
441
- // Uses unique testUser fixture
442
- // No dependency on other tests
443
- // Cleanup handled by fixture
444
- });
445
-
446
- test("can update email", async ({ page, testUser }) => {
447
- // Independent of "can update name"
448
- // Own testUser, own state
449
- });
450
- });
451
- ```
452
-
453
- ### Defensive Assertions
454
-
455
- ```typescript
456
- // ❌ BAD: Single point of failure
457
- await expect(page.locator(".items")).toHaveCount(5);
458
-
459
- // ✅ GOOD: Progressive assertions that help diagnose
460
- await expect(page.locator(".items-container")).toBeVisible();
461
- await expect(page.locator(".loading")).not.toBeVisible();
462
- await expect(page.locator(".items")).toHaveCount(5);
463
- ```
464
-
465
- ### Retry Budget
466
-
467
- ```typescript
468
- // playwright.config.ts - Limit retries to avoid masking issues
469
- export default defineConfig({
470
- retries: process.env.CI ? 2 : 0, // Only retry in CI
471
- expect: {
472
- timeout: 10000, // Reasonable assertion timeout
473
- },
474
- timeout: 60000, // Test timeout
475
- });
476
- ```
477
-
478
- ## Anti-Patterns to Avoid
479
-
480
- | Anti-Pattern | Problem | Solution |
481
- | ----------------------------------------- | ----------------------------------- | ---------------------------------------------- |
482
- | `waitForTimeout()` as primary wait | Arbitrary, hides real timing issues | Use auto-waiting assertions |
483
- | Increasing global timeout to "fix" flakes | Masks root cause, slows all tests | Find and fix actual timing issue |
484
- | Retrying until pass | Hides systemic problems | Fix root cause, use retries for diagnosis only |
485
- | Shared test data across workers | Race conditions, collisions | Isolate data per worker |
486
- | Testing real external APIs | Network variability | Mock external dependencies |
487
- | Module-level mutable state | Leaks between tests | Use fixtures with proper cleanup |
488
- | Ignoring flaky tests | Problem compounds over time | Quarantine and track for fixing |
489
-
490
- ## Related References
491
-
492
- - **Debugging**: See [debugging.md](debugging.md) for trace viewer and inspector
493
- - **Fixtures**: See [fixtures-hooks.md](../core/fixtures-hooks.md) for worker-scoped isolation
494
- - **Performance**: See [performance.md](../infrastructure-ci-cd/performance.md) for parallel execution patterns
495
- - **Assertions**: See [assertions-waiting.md](../core/assertions-waiting.md) for auto-waiting patterns
496
- - **Global Setup**: See [global-setup.md](../core/global-setup.md) for setup vs fixtures decision