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,634 +0,0 @@
1
- # Visual Regression Testing
2
-
3
- ## Table of Contents
4
-
5
- 1. [Quick Reference](#quick-reference)
6
- 2. [Patterns](#patterns)
7
- 3. [Decision Guide](#decision-guide)
8
- 4. [Anti-Patterns](#anti-patterns)
9
- 5. [Troubleshooting](#troubleshooting)
10
-
11
- > **When to use**: Detecting unintended visual changes—layout shifts, style regressions, broken responsive designs—that functional assertions miss.
12
-
13
- ## Quick Reference
14
-
15
- ```typescript
16
- // Element screenshot
17
- await expect(page.getByTestId('product-card')).toHaveScreenshot();
18
-
19
- // Full page screenshot
20
- await expect(page).toHaveScreenshot('landing-hero.png');
21
-
22
- // Threshold for minor pixel variance
23
- await expect(page).toHaveScreenshot({ maxDiffPixelRatio: 0.01 });
24
-
25
- // Mask volatile content
26
- await expect(page).toHaveScreenshot({
27
- mask: [page.getByTestId('clock'), page.getByRole('img', { name: 'User photo' })],
28
- });
29
-
30
- // Disable CSS animations
31
- await expect(page).toHaveScreenshot({ animations: 'disabled' });
32
-
33
- // Update baselines
34
- npx playwright test --update-snapshots
35
- ```
36
-
37
- ## Patterns
38
-
39
- ### Masking Volatile Content
40
-
41
- **Use when**: Page contains timestamps, avatars, ad slots, relative dates, random images, or A/B variants.
42
-
43
- The `mask` option overlays a solid box over specified locators before capturing.
44
-
45
- ```typescript
46
- test('analytics panel with masked dynamic elements', async ({ page }) => {
47
- await page.goto('/analytics');
48
-
49
- await expect(page).toHaveScreenshot('analytics.png', {
50
- mask: [
51
- page.getByTestId('last-updated'),
52
- page.getByTestId('profile-avatar'),
53
- page.getByTestId('active-users'),
54
- page.locator('.promo-banner'),
55
- ],
56
- maskColor: '#FF00FF',
57
- });
58
- });
59
-
60
- test('activity stream with relative times', async ({ page }) => {
61
- await page.goto('/activity');
62
-
63
- await expect(page).toHaveScreenshot('activity.png', {
64
- mask: [page.locator('time[datetime]')],
65
- });
66
- });
67
- ```
68
-
69
- **Alternative: freeze content with JavaScript** when masking affects layout:
70
-
71
- ```typescript
72
- test('freeze timestamps before capture', async ({ page }) => {
73
- await page.goto('/analytics');
74
-
75
- await page.evaluate(() => {
76
- document.querySelectorAll('[data-testid="time-display"]').forEach((el) => {
77
- el.textContent = 'Jan 1, 2025 12:00 PM';
78
- });
79
- });
80
-
81
- await expect(page).toHaveScreenshot('analytics-frozen.png');
82
- });
83
- ```
84
-
85
- ### Disabling Animations
86
-
87
- **Use when**: Always. CSS animations and transitions are the primary cause of flaky visual diffs.
88
-
89
- ```typescript
90
- test('renders without animation interference', async ({ page }) => {
91
- await page.goto('/');
92
-
93
- await expect(page).toHaveScreenshot('home.png', {
94
- animations: 'disabled',
95
- });
96
- });
97
- ```
98
-
99
- **Set globally** in config:
100
-
101
- ```typescript
102
- // playwright.config.ts
103
- export default defineConfig({
104
- expect: {
105
- toHaveScreenshot: {
106
- animations: 'disabled',
107
- },
108
- },
109
- });
110
- ```
111
-
112
- When `animations: 'disabled'` is set, Playwright injects CSS forcing animation/transition duration to 0s, waits for running animations to finish, then captures.
113
-
114
- For JavaScript-driven animations (GSAP, Framer Motion), wait for stability:
115
-
116
- ```typescript
117
- test('page with JS animations', async ({ page }) => {
118
- await page.goto('/animated-hero');
119
-
120
- const heroBanner = page.getByTestId('hero-banner');
121
- await heroBanner.waitFor({ state: 'visible' });
122
-
123
- // Wait for animation to complete by checking for stable state
124
- await expect(heroBanner).not.toHaveClass(/animating/);
125
-
126
- await expect(page).toHaveScreenshot('hero.png', {
127
- animations: 'disabled',
128
- });
129
- });
130
- ```
131
-
132
- ### Configuring Thresholds
133
-
134
- **Use when**: Minor rendering differences from anti-aliasing, font hinting, or sub-pixel rendering cause false failures.
135
-
136
- | Option | Controls | Typical Value |
137
- |---|---|---|
138
- | `maxDiffPixels` | Absolute pixel count that can differ | `100` for pages, `10` for components |
139
- | `maxDiffPixelRatio` | Fraction of total pixels (0-1) | `0.01` (1%) for pages |
140
- | `threshold` | Per-pixel color tolerance (0-1) | `0.2` for most UIs, `0.1` for design systems |
141
-
142
- ```typescript
143
- test('control panel allows minor variance', async ({ page }) => {
144
- await page.goto('/control-panel');
145
-
146
- await expect(page).toHaveScreenshot('control-panel.png', {
147
- maxDiffPixelRatio: 0.01,
148
- });
149
- });
150
-
151
- test('brand logo renders pixel-perfect', async ({ page }) => {
152
- await page.goto('/brand');
153
-
154
- await expect(page.getByTestId('brand-logo')).toHaveScreenshot('brand-logo.png', {
155
- maxDiffPixels: 0,
156
- threshold: 0,
157
- });
158
- });
159
-
160
- test('graph allows anti-aliasing differences', async ({ page }) => {
161
- await page.goto('/reports');
162
-
163
- await expect(page.getByTestId('sales-graph')).toHaveScreenshot('sales-graph.png', {
164
- threshold: 0.3,
165
- maxDiffPixels: 200,
166
- });
167
- });
168
- ```
169
-
170
- **Global thresholds** in config:
171
-
172
- ```typescript
173
- // playwright.config.ts
174
- export default defineConfig({
175
- expect: {
176
- toHaveScreenshot: {
177
- maxDiffPixelRatio: 0.01,
178
- threshold: 0.2,
179
- animations: 'disabled',
180
- },
181
- },
182
- });
183
- ```
184
-
185
- ### CI Configuration
186
-
187
- **Use when**: Running visual tests in CI. Consistent rendering is critical—the same test must produce identical screenshots every time.
188
-
189
- **The problem**: Font rendering and anti-aliasing differ across operating systems. macOS snapshots won't match Linux.
190
-
191
- **The solution**: Run visual tests in Docker using the official Playwright container. Generate and update snapshots from the same container.
192
-
193
- **GitHub Actions with Docker**
194
-
195
- ```yaml
196
- # .github/workflows/visual-tests.yml
197
- name: Visual Regression Tests
198
- on: [push, pull_request]
199
-
200
- jobs:
201
- visual-tests:
202
- runs-on: ubuntu-latest
203
- container:
204
- image: mcr.microsoft.com/playwright:v1.48.0-noble
205
- steps:
206
- - uses: actions/checkout@v4
207
-
208
- - uses: actions/setup-node@v4
209
- with:
210
- node-version: lts/*
211
- cache: npm
212
-
213
- - run: npm ci
214
-
215
- - name: Run visual tests
216
- run: npx playwright test --project=visual
217
- env:
218
- HOME: /root
219
-
220
- - uses: actions/upload-artifact@v4
221
- if: failure()
222
- with:
223
- name: visual-test-report
224
- path: playwright-report/
225
- retention-days: 14
226
- ```
227
-
228
- **Updating snapshots locally using Docker**:
229
-
230
- ```bash
231
- docker run --rm -v $(pwd):/work -w /work \
232
- mcr.microsoft.com/playwright:v1.48.0-noble \
233
- npx playwright test --update-snapshots --project=visual
234
- ```
235
-
236
- **Add script to `package.json`**:
237
-
238
- ```json
239
- {
240
- "scripts": {
241
- "test:visual": "npx playwright test --project=visual",
242
- "test:visual:update": "docker run --rm -v $(pwd):/work -w /work mcr.microsoft.com/playwright:v1.48.0-noble npx playwright test --update-snapshots --project=visual"
243
- }
244
- }
245
- ```
246
-
247
- **Platform-agnostic snapshots** (requires Docker for generation):
248
-
249
- ```typescript
250
- // playwright.config.ts
251
- export default defineConfig({
252
- snapshotPathTemplate: '{testDir}/{testFileDir}/{testFileName}-snapshots/{arg}{-projectName}{ext}',
253
- projects: [
254
- {
255
- name: 'visual',
256
- testMatch: '**/*.visual.spec.ts',
257
- use: { ...devices['Desktop Chrome'] },
258
- },
259
- ],
260
- });
261
- ```
262
-
263
- ### Full Page vs Element Screenshots
264
-
265
- **Use when**: Deciding scope. Full page catches layout shifts. Element screenshots isolate components and are more stable.
266
-
267
- ```typescript
268
- test('full page captures layout shifts', async ({ page }) => {
269
- await page.goto('/');
270
-
271
- // Visible viewport
272
- await expect(page).toHaveScreenshot('home-viewport.png');
273
-
274
- // Entire scrollable page
275
- await expect(page).toHaveScreenshot('home-full.png', {
276
- fullPage: true,
277
- });
278
- });
279
-
280
- test('element screenshot isolates component', async ({ page }) => {
281
- await page.goto('/catalog');
282
-
283
- await expect(page.getByRole('table')).toHaveScreenshot('catalog-table.png');
284
- await expect(page.getByTestId('featured-item')).toHaveScreenshot('featured-item.png');
285
- });
286
- ```
287
-
288
- **Rule of thumb**: Element screenshots for independently changing components. Full page screenshots for key layouts where spacing matters.
289
-
290
- ### Responsive Visual Testing
291
-
292
- **Use when**: Application has responsive breakpoints requiring verification at different viewport sizes.
293
-
294
- ```typescript
295
- const breakpoints = [
296
- { name: 'phone', width: 375, height: 812 },
297
- { name: 'tablet', width: 768, height: 1024 },
298
- { name: 'desktop', width: 1440, height: 900 },
299
- ];
300
-
301
- for (const bp of breakpoints) {
302
- test(`landing at ${bp.name} (${bp.width}x${bp.height})`, async ({ page }) => {
303
- await page.setViewportSize({ width: bp.width, height: bp.height });
304
- await page.goto('/');
305
-
306
- await expect(page).toHaveScreenshot(`landing-${bp.name}.png`, {
307
- animations: 'disabled',
308
- fullPage: true,
309
- });
310
- });
311
- }
312
- ```
313
-
314
- **Alternative: use projects for responsive testing**:
315
-
316
- ```typescript
317
- // playwright.config.ts
318
- export default defineConfig({
319
- projects: [
320
- {
321
- name: 'desktop',
322
- testMatch: '**/*.visual.spec.ts',
323
- use: {
324
- ...devices['Desktop Chrome'],
325
- viewport: { width: 1440, height: 900 },
326
- },
327
- },
328
- {
329
- name: 'tablet',
330
- testMatch: '**/*.visual.spec.ts',
331
- use: { ...devices['iPad (gen 7)'] },
332
- },
333
- {
334
- name: 'mobile',
335
- testMatch: '**/*.visual.spec.ts',
336
- use: { ...devices['iPhone 14'] },
337
- },
338
- ],
339
- });
340
- ```
341
-
342
- ### Component Visual Testing
343
-
344
- **Use when**: Testing individual UI components in isolation—buttons, cards, forms, modals. Faster and more stable than full-page screenshots.
345
-
346
- ```typescript
347
- test.describe('Button visual states', () => {
348
- test('primary button', async ({ page }) => {
349
- await page.goto('/storybook/iframe.html?id=button--primary');
350
- const btn = page.getByRole('button');
351
- await expect(btn).toHaveScreenshot('btn-primary.png', {
352
- animations: 'disabled',
353
- });
354
- });
355
-
356
- test('primary button hover', async ({ page }) => {
357
- await page.goto('/storybook/iframe.html?id=button--primary');
358
- const btn = page.getByRole('button');
359
- await btn.hover();
360
- await expect(btn).toHaveScreenshot('btn-primary-hover.png', {
361
- animations: 'disabled',
362
- });
363
- });
364
-
365
- test('button sizes', async ({ page }) => {
366
- for (const size of ['small', 'medium', 'large']) {
367
- await page.goto(`/storybook/iframe.html?id=button--${size}`);
368
- const btn = page.getByRole('button');
369
- await expect(btn).toHaveScreenshot(`btn-${size}.png`, {
370
- animations: 'disabled',
371
- });
372
- }
373
- });
374
- });
375
- ```
376
-
377
- **Using a dedicated test harness** instead of Storybook:
378
-
379
- ```typescript
380
- test.describe('Card component', () => {
381
- test.beforeEach(async ({ page }) => {
382
- await page.goto('/test-harness/card');
383
- });
384
-
385
- test('default state', async ({ page }) => {
386
- await expect(page.getByTestId('card')).toHaveScreenshot('card-default.png', {
387
- animations: 'disabled',
388
- });
389
- });
390
-
391
- test('truncates long content', async ({ page }) => {
392
- await page.goto('/test-harness/card?content=long');
393
- await expect(page.getByTestId('card')).toHaveScreenshot('card-long.png', {
394
- animations: 'disabled',
395
- });
396
- });
397
- });
398
- ```
399
-
400
- ### Updating Snapshots
401
-
402
- **Use when**: Intentionally changed UI—design refresh, rebrand, new feature. Never update when diff is unexpected.
403
-
404
- ```bash
405
- # Update all snapshots
406
- npx playwright test --update-snapshots
407
-
408
- # Update for specific file
409
- npx playwright test tests/landing.spec.ts --update-snapshots
410
-
411
- # Update for specific project
412
- npx playwright test --project=chromium --update-snapshots
413
- ```
414
-
415
- **Workflow for reviewing changes:**
416
-
417
- 1. Run tests and view failures in HTML report:
418
- ```bash
419
- npx playwright test
420
- npx playwright show-report
421
- ```
422
- The report shows expected, actual, and diff images side-by-side.
423
-
424
- 2. If changes are intentional, update:
425
- ```bash
426
- npx playwright test --update-snapshots
427
- ```
428
-
429
- 3. Review updated snapshots before committing:
430
- ```bash
431
- git diff --name-only
432
- ```
433
-
434
- **Tag visual tests for selective updates:**
435
-
436
- ```typescript
437
- test('landing visual @visual', async ({ page }) => {
438
- await page.goto('/');
439
- await expect(page).toHaveScreenshot('landing.png', {
440
- animations: 'disabled',
441
- });
442
- });
443
- ```
444
-
445
- ```bash
446
- npx playwright test --grep @visual --update-snapshots
447
- ```
448
-
449
- ### Cross-Browser Visual Testing
450
-
451
- **Use when**: Users span Chrome, Firefox, Safari and you need per-browser rendering verification.
452
-
453
- Playwright separates snapshots by project name automatically. Each browser gets its own baseline—browsers render fonts and shadows differently.
454
-
455
- ```typescript
456
- // playwright.config.ts
457
- export default defineConfig({
458
- expect: {
459
- toHaveScreenshot: {
460
- animations: 'disabled',
461
- maxDiffPixelRatio: 0.01,
462
- },
463
- },
464
- projects: [
465
- {
466
- name: 'chromium',
467
- use: { ...devices['Desktop Chrome'] },
468
- },
469
- {
470
- name: 'firefox',
471
- use: { ...devices['Desktop Firefox'] },
472
- },
473
- {
474
- name: 'webkit',
475
- use: { ...devices['Desktop Safari'] },
476
- },
477
- ],
478
- });
479
- ```
480
-
481
- **Strategy**: Run visual tests in a single browser (Chromium on Linux in CI) to minimize snapshot count. Add other browsers only when you have actual cross-browser rendering bugs:
482
-
483
- ```typescript
484
- // playwright.config.ts
485
- export default defineConfig({
486
- projects: [
487
- {
488
- name: 'visual',
489
- testMatch: '**/*.visual.spec.ts',
490
- use: { ...devices['Desktop Chrome'] },
491
- },
492
- {
493
- name: 'chromium',
494
- testIgnore: '**/*.visual.spec.ts',
495
- use: { ...devices['Desktop Chrome'] },
496
- },
497
- {
498
- name: 'firefox',
499
- testIgnore: '**/*.visual.spec.ts',
500
- use: { ...devices['Desktop Firefox'] },
501
- },
502
- ],
503
- });
504
- ```
505
-
506
- ## Decision Guide
507
-
508
- | Scenario | Approach | Rationale |
509
- |---|---|---|
510
- | Key landing/marketing pages | Full page, `fullPage: true` | Catches layout shifts, spacing, overall harmony |
511
- | Individual components | Element screenshot | Isolated, fast, immune to unrelated changes |
512
- | Page with dynamic content | Full page + `mask` | Covers layout while ignoring volatile content |
513
- | Design system library | Element per variant, zero threshold | Pixel-perfect enforcement |
514
- | Responsive verification | Screenshot per viewport | Catches breakpoint bugs |
515
- | Cross-browser consistency | Separate snapshots per browser | Browsers render differently |
516
- | CI pipeline | Docker container, Linux-only snapshots | Consistent rendering |
517
- | Threshold: design system | `threshold: 0`, `maxDiffPixels: 0` | Zero tolerance |
518
- | Threshold: content pages | `maxDiffPixelRatio: 0.01`, `threshold: 0.2` | Minor anti-aliasing variance |
519
- | Threshold: charts/graphs | `maxDiffPixels: 200`, `threshold: 0.3` | Anti-aliasing on curves varies |
520
-
521
- ## Anti-Patterns
522
-
523
- | Don't | Problem | Do Instead |
524
- |---|---|---|
525
- | Visual test every page | Massive maintenance, constant false failures | Pick 5-10 key pages and critical components |
526
- | Skip masking dynamic content | Screenshots differ every run, permanently flaky | Use `mask` for all volatile elements |
527
- | Run across macOS, Linux, Windows | Font rendering differs, snapshots never match | Standardize on Linux via Docker |
528
- | Skip Docker in CI | OS updates shift rendering silently | Pin specific Playwright Docker image |
529
- | Blindly run `--update-snapshots` | Accepts unintentional regressions | Always review diff in HTML report first |
530
- | Skip `animations: 'disabled'` | CSS transitions create random diffs | Set globally in config |
531
- | Replace functional assertions with visual tests | Diffs don't tell you *what* broke | Visual tests complement, never replace |
532
- | Commit snapshots from different platforms | Tests fail for everyone | All team members use same Docker container |
533
- | Set threshold too high (`0.1`) | 10% pixel change passes, defeats purpose | Start with `0.01`, adjust per-test |
534
- | Full page on infinite scroll pages | Page height nondeterministic | Element screenshots on above-the-fold content |
535
-
536
- ## Troubleshooting
537
-
538
- ### "Screenshot comparison failed" on first CI run after local development
539
-
540
- **Cause**: Snapshots generated on macOS locally. CI runs on Linux. Font rendering differs.
541
-
542
- **Fix**: Generate snapshots using Docker:
543
-
544
- ```bash
545
- docker run --rm -v $(pwd):/work -w /work \
546
- mcr.microsoft.com/playwright:v1.48.0-noble \
547
- npx playwright test --update-snapshots --project=visual
548
- ```
549
-
550
- Commit Linux-generated snapshots.
551
-
552
- ### "Expected screenshot to match but X pixels differ"
553
-
554
- **Cause**: Anti-aliasing, font hinting, sub-pixel rendering differences.
555
-
556
- **Fix**: Add tolerance:
557
-
558
- ```typescript
559
- await expect(page).toHaveScreenshot('page.png', {
560
- maxDiffPixelRatio: 0.01,
561
- threshold: 0.2,
562
- });
563
- ```
564
-
565
- Check HTML report diff image to determine if it's regression or noise.
566
-
567
- ### Visual tests pass locally but fail in CI (even with Docker)
568
-
569
- **Cause**: Different Playwright versions locally vs CI.
570
-
571
- **Fix**: Ensure `package.json` version matches Docker image tag:
572
-
573
- ```json
574
- {
575
- "devDependencies": {
576
- "@playwright/test": "latest"
577
- }
578
- }
579
- ```
580
-
581
- ```yaml
582
- container:
583
- image: mcr.microsoft.com/playwright:v1.48.0-noble
584
- ```
585
-
586
- ### Animations cause random diff failures
587
-
588
- **Cause**: CSS animations captured mid-frame.
589
-
590
- **Fix**: Set `animations: 'disabled'` globally:
591
-
592
- ```typescript
593
- // playwright.config.ts
594
- export default defineConfig({
595
- expect: {
596
- toHaveScreenshot: {
597
- animations: 'disabled',
598
- },
599
- },
600
- });
601
- ```
602
-
603
- For JS animations, wait for stable state before capture.
604
-
605
- ### Snapshot file names conflict between tests
606
-
607
- **Cause**: Two tests use same screenshot name without unique paths.
608
-
609
- **Fix**: Use explicit unique names:
610
-
611
- ```typescript
612
- await expect(page).toHaveScreenshot('auth-home.png');
613
- await expect(page).toHaveScreenshot('public-home.png');
614
- ```
615
-
616
- Or customize snapshot path template:
617
-
618
- ```typescript
619
- export default defineConfig({
620
- snapshotPathTemplate: '{testDir}/{testFileDir}/{testFileName}-snapshots/{arg}{-projectName}{ext}',
621
- });
622
- ```
623
-
624
- ### Too many snapshot files to maintain
625
-
626
- **Cause**: Visual tests for every page, browser, viewport.
627
-
628
- **Fix**: Be selective. Visual test only high-risk pages:
629
- - Landing and marketing pages
630
- - Design system components
631
- - Complex layouts (dashboards, data tables)
632
- - Pages after major refactor
633
-
634
- Skip pages where functional assertions cover key elements.