testeiya 0.10.1 → 0.10.2

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 (225) hide show
  1. package/README.md +7 -19
  2. package/dist/prompt/clis.d.ts +7 -0
  3. package/dist/prompt/pipeline-report.d.ts +1 -0
  4. package/dist/prompt/report.d.ts +10 -0
  5. package/dist/prompt/system-prompt.d.ts +22 -0
  6. package/dist/prompt/testomat.io.d.ts +19 -0
  7. package/dist/prompt/thread.d.ts +73 -0
  8. package/dist/src/args.d.ts +39 -0
  9. package/dist/src/attribution-extension.d.ts +3 -0
  10. package/dist/src/checkpoint.d.ts +30 -0
  11. package/dist/src/cli.d.ts +2 -0
  12. package/dist/src/cli.js +27 -32
  13. package/dist/src/cli.js.map +1 -1
  14. package/dist/src/doctor.d.ts +11 -0
  15. package/dist/src/env.d.ts +30 -0
  16. package/dist/src/exec.d.ts +11 -0
  17. package/dist/src/git.d.ts +41 -0
  18. package/dist/src/langfuse-extension.d.ts +7 -0
  19. package/dist/src/langfuse.d.ts +67 -0
  20. package/dist/src/mcp.d.ts +19 -0
  21. package/dist/src/model.d.ts +20 -0
  22. package/dist/src/models.d.ts +1 -0
  23. package/dist/src/output.d.ts +84 -0
  24. package/dist/src/pipeline/command-stage.d.ts +12 -0
  25. package/dist/src/pipeline/crash-guard.d.ts +12 -0
  26. package/dist/src/pipeline/crash-guard.js +21 -0
  27. package/dist/src/pipeline/crash-guard.js.map +1 -0
  28. package/dist/src/pipeline/diagram.d.ts +24 -0
  29. package/dist/src/pipeline/gate.d.ts +21 -0
  30. package/dist/src/pipeline/launcher.d.ts +33 -0
  31. package/dist/src/pipeline/launcher.js +16 -3
  32. package/dist/src/pipeline/launcher.js.map +1 -1
  33. package/dist/src/pipeline/log.d.ts +29 -0
  34. package/dist/src/pipeline/log.js +9 -0
  35. package/dist/src/pipeline/log.js.map +1 -1
  36. package/dist/src/pipeline/overlay.d.ts +29 -0
  37. package/dist/src/pipeline/pipeline-file.d.ts +44 -0
  38. package/dist/src/pipeline/pipeline.d.ts +78 -0
  39. package/dist/src/pipeline/pipeline.js +22 -0
  40. package/dist/src/pipeline/pipeline.js.map +1 -1
  41. package/dist/src/pipeline/report.d.ts +26 -0
  42. package/dist/src/pipeline/report.js +13 -0
  43. package/dist/src/pipeline/report.js.map +1 -1
  44. package/dist/src/pipeline/spec.d.ts +63 -0
  45. package/dist/src/pipeline/stage-env.d.ts +13 -0
  46. package/dist/src/pipeline/stage-env.js +31 -0
  47. package/dist/src/pipeline/stage-env.js.map +1 -0
  48. package/dist/src/pipeline/stage.d.ts +71 -0
  49. package/dist/src/pipeline/stage.js.map +1 -1
  50. package/dist/src/pipeline/state.d.ts +63 -0
  51. package/dist/src/pipeline/summary-stage.d.ts +24 -0
  52. package/dist/src/pipeline/task-stage.d.ts +24 -0
  53. package/dist/src/pipeline/task-stage.js +86 -2
  54. package/dist/src/pipeline/task-stage.js.map +1 -1
  55. package/dist/src/pipeline/variables.d.ts +20 -0
  56. package/dist/src/result.d.ts +6 -0
  57. package/dist/src/run.d.ts +69 -0
  58. package/dist/src/run.js +116 -60
  59. package/dist/src/run.js.map +1 -1
  60. package/dist/src/session.d.ts +43 -0
  61. package/dist/src/sessions.d.ts +23 -0
  62. package/dist/src/skills.d.ts +29 -0
  63. package/package.json +11 -2
  64. package/pipelines/api-testing.yml +1 -1
  65. package/scripts/vendor-skills.js +62 -0
  66. package/skills/codeceptjs/ci-fix-tests/SKILL.md +0 -119
  67. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +0 -141
  68. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +0 -100
  69. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +0 -196
  70. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +0 -83
  71. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +0 -126
  72. package/skills/codeceptjs/lint-codeceptjs-tests/SKILL.md +0 -104
  73. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +0 -109
  74. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +0 -295
  75. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +0 -339
  76. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +0 -459
  77. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +0 -338
  78. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +0 -78
  79. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +0 -102
  80. package/skills/playwright/playwright-best-practices/SKILL.md +0 -303
  81. package/skills/playwright/playwright-best-practices/advanced/authentication-flows.md +0 -360
  82. package/skills/playwright/playwright-best-practices/advanced/authentication.md +0 -871
  83. package/skills/playwright/playwright-best-practices/advanced/clock-mocking.md +0 -364
  84. package/skills/playwright/playwright-best-practices/advanced/mobile-testing.md +0 -409
  85. package/skills/playwright/playwright-best-practices/advanced/multi-context.md +0 -288
  86. package/skills/playwright/playwright-best-practices/advanced/multi-user.md +0 -393
  87. package/skills/playwright/playwright-best-practices/advanced/network-advanced.md +0 -452
  88. package/skills/playwright/playwright-best-practices/advanced/third-party.md +0 -464
  89. package/skills/playwright/playwright-best-practices/architecture/pom-vs-fixtures.md +0 -363
  90. package/skills/playwright/playwright-best-practices/architecture/test-architecture.md +0 -369
  91. package/skills/playwright/playwright-best-practices/architecture/when-to-mock.md +0 -383
  92. package/skills/playwright/playwright-best-practices/browser-apis/browser-apis.md +0 -391
  93. package/skills/playwright/playwright-best-practices/browser-apis/iframes.md +0 -403
  94. package/skills/playwright/playwright-best-practices/browser-apis/service-workers.md +0 -504
  95. package/skills/playwright/playwright-best-practices/browser-apis/websockets.md +0 -403
  96. package/skills/playwright/playwright-best-practices/core/annotations.md +0 -424
  97. package/skills/playwright/playwright-best-practices/core/assertions-waiting.md +0 -361
  98. package/skills/playwright/playwright-best-practices/core/configuration.md +0 -452
  99. package/skills/playwright/playwright-best-practices/core/fixtures-hooks.md +0 -417
  100. package/skills/playwright/playwright-best-practices/core/global-setup.md +0 -434
  101. package/skills/playwright/playwright-best-practices/core/locators.md +0 -242
  102. package/skills/playwright/playwright-best-practices/core/page-object-model.md +0 -315
  103. package/skills/playwright/playwright-best-practices/core/projects-dependencies.md +0 -453
  104. package/skills/playwright/playwright-best-practices/core/test-data.md +0 -492
  105. package/skills/playwright/playwright-best-practices/core/test-suite-structure.md +0 -361
  106. package/skills/playwright/playwright-best-practices/core/test-tags.md +0 -298
  107. package/skills/playwright/playwright-best-practices/debugging/console-errors.md +0 -420
  108. package/skills/playwright/playwright-best-practices/debugging/debugging.md +0 -504
  109. package/skills/playwright/playwright-best-practices/debugging/error-testing.md +0 -360
  110. package/skills/playwright/playwright-best-practices/debugging/flaky-tests.md +0 -496
  111. package/skills/playwright/playwright-best-practices/frameworks/angular.md +0 -530
  112. package/skills/playwright/playwright-best-practices/frameworks/nextjs.md +0 -469
  113. package/skills/playwright/playwright-best-practices/frameworks/react.md +0 -531
  114. package/skills/playwright/playwright-best-practices/frameworks/vue.md +0 -574
  115. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +0 -468
  116. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/docker.md +0 -283
  117. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/github-actions.md +0 -546
  118. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/gitlab.md +0 -397
  119. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/other-providers.md +0 -521
  120. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +0 -371
  121. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/performance.md +0 -453
  122. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/reporting.md +0 -424
  123. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +0 -497
  124. package/skills/playwright/playwright-best-practices/testing-patterns/accessibility.md +0 -359
  125. package/skills/playwright/playwright-best-practices/testing-patterns/api-testing.md +0 -719
  126. package/skills/playwright/playwright-best-practices/testing-patterns/browser-extensions.md +0 -506
  127. package/skills/playwright/playwright-best-practices/testing-patterns/canvas-webgl.md +0 -493
  128. package/skills/playwright/playwright-best-practices/testing-patterns/component-testing.md +0 -500
  129. package/skills/playwright/playwright-best-practices/testing-patterns/drag-drop.md +0 -576
  130. package/skills/playwright/playwright-best-practices/testing-patterns/electron.md +0 -509
  131. package/skills/playwright/playwright-best-practices/testing-patterns/file-operations.md +0 -377
  132. package/skills/playwright/playwright-best-practices/testing-patterns/file-upload-download.md +0 -562
  133. package/skills/playwright/playwright-best-practices/testing-patterns/forms-validation.md +0 -561
  134. package/skills/playwright/playwright-best-practices/testing-patterns/graphql-testing.md +0 -331
  135. package/skills/playwright/playwright-best-practices/testing-patterns/i18n.md +0 -508
  136. package/skills/playwright/playwright-best-practices/testing-patterns/performance-testing.md +0 -476
  137. package/skills/playwright/playwright-best-practices/testing-patterns/security-testing.md +0 -430
  138. package/skills/playwright/playwright-best-practices/testing-patterns/visual-regression.md +0 -634
  139. package/skills/playwright/playwright-cli/SKILL.md +0 -489
  140. package/skills/playwright/playwright-cli/references/element-attributes.md +0 -23
  141. package/skills/playwright/playwright-cli/references/playwright-tests.md +0 -39
  142. package/skills/playwright/playwright-cli/references/pr-attachments.md +0 -60
  143. package/skills/playwright/playwright-cli/references/request-mocking.md +0 -87
  144. package/skills/playwright/playwright-cli/references/running-code.md +0 -245
  145. package/skills/playwright/playwright-cli/references/session-management.md +0 -227
  146. package/skills/playwright/playwright-cli/references/storage-state.md +0 -275
  147. package/skills/playwright/playwright-cli/references/test-generation.md +0 -433
  148. package/skills/playwright/playwright-cli/references/tracing.md +0 -139
  149. package/skills/playwright/playwright-cli/references/video-recording.md +0 -216
  150. package/skills/skills.lock.json +0 -89
  151. package/skills/skills.yaml +0 -35
  152. /package/skills/{testomatio/explorbot → explorbot}/explorbot-fundamentals/SKILL.md +0 -0
  153. /package/skills/{testomatio/explorbot → explorbot}/explorbot-fundamentals/references/no-install.md +0 -0
  154. /package/skills/{testomatio/explorbot → explorbot}/explorbot-plan/SKILL.md +0 -0
  155. /package/skills/{testomatio/explorbot → explorbot}/explorbot-setup/SKILL.md +0 -0
  156. /package/skills/{testomatio/explorbot → explorbot}/prima/SKILL.md +0 -0
  157. /package/skills/{testomatio/qa-process → qa-process}/qa-lead-strategy-advisor/SKILL.md +0 -0
  158. /package/skills/{testomatio/qa-process → qa-process}/qa-lead-strategy-advisor/references/output-format.md +0 -0
  159. /package/skills/{testomatio/qa-process → qa-process}/qa-review-pr/SKILL.md +0 -0
  160. /package/skills/{testomatio/qa-process → qa-process}/testing-workflow/SKILL.md +0 -0
  161. /package/skills/{testomatio/requirements → requirements}/catalog-features/SKILL.md +0 -0
  162. /package/skills/{testomatio/requirements → requirements}/catalog-features/references/layout.md +0 -0
  163. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/SKILL.md +0 -0
  164. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/references/features.md +0 -0
  165. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/references/layout.md +0 -0
  166. /package/skills/{testomatio/requirements → requirements}/pull-request-diff-analyzer/SKILL.md +0 -0
  167. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/SKILL.md +0 -0
  168. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/references/answer-shapes.md +0 -0
  169. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/references/examples.md +0 -0
  170. /package/skills/{testomatio/requirements → requirements}/qa-pr-requirements-analyzer/SKILL.md +0 -0
  171. /package/skills/{testomatio/requirements → requirements}/qa-pr-requirements-analyzer/references/summary-example.md +0 -0
  172. /package/skills/{testomatio/requirements → requirements}/qa-requirement-reviewer/SKILL.md +0 -0
  173. /package/skills/{testomatio/requirements → requirements}/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -0
  174. /package/skills/{testomatio/requirements → requirements}/qa-thinking/SKILL.md +0 -0
  175. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/SKILL.md +0 -0
  176. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/references/behaviors.md +0 -0
  177. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/references/layout.md +0 -0
  178. /package/skills/{testomatio/requirements → requirements}/write-user-story/SKILL.md +0 -0
  179. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/CLAUDE.md +0 -0
  180. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/SKILL.md +0 -0
  181. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +0 -0
  182. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +0 -0
  183. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +0 -0
  184. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +0 -0
  185. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +0 -0
  186. /package/skills/{testomatio/test-automation → test-automation}/debug-fix-failed-flaky-autotests/SKILL.md +0 -0
  187. /package/skills/{testomatio/test-automation → test-automation}/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +0 -0
  188. /package/skills/{testomatio/test-automation → test-automation}/epic-requirements-specification/SKILL.md +0 -0
  189. /package/skills/{testomatio/test-automation → test-automation}/qa-automation-test-consolidation/SKILL.md +0 -0
  190. /package/skills/{testomatio/test-automation → test-automation}/qa-data-seeder/SKILL.md +0 -0
  191. /package/skills/{testomatio/test-automation → test-automation}/run-tests-with-testomatio-reporter/SKILL.md +0 -0
  192. /package/skills/{testomatio/test-automation → test-automation}/setup-change-aware-pr-testing/SKILL.md +0 -0
  193. /package/skills/{testomatio/test-automation → test-automation}/setup-ci-automation/SKILL.md +0 -0
  194. /package/skills/{testomatio/test-automation → test-automation}/testomat-allure-adapter/SKILL.md +0 -0
  195. /package/skills/{testomatio/test-management → test-management}/detect-duplicate-test-cases/SKILL.md +0 -0
  196. /package/skills/{testomatio/test-management → test-management}/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +0 -0
  197. /package/skills/{testomatio/test-management → test-management}/detect-useless-tests/SKILL.md +0 -0
  198. /package/skills/{testomatio/test-management → test-management}/improve-test-cases/SKILL.md +0 -0
  199. /package/skills/{testomatio/test-management → test-management}/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +0 -0
  200. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/SKILL.md +0 -0
  201. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/CSV_MIGRATION.md +0 -0
  202. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/CUSTOM_MIGRATION.md +0 -0
  203. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/TESTMO_MIGRATION.md +0 -0
  204. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/TESTRAIL_MIGRATION.md +0 -0
  205. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/XRAY_MIGRATION.md +0 -0
  206. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/SKILL.md +0 -0
  207. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +0 -0
  208. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +0 -0
  209. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +0 -0
  210. /package/skills/{testomatio/test-management → test-management}/qa-split-testing-levels-pyramid/SKILL.md +0 -0
  211. /package/skills/{testomatio/test-management → test-management}/qa-sprint-report-by-testomatio/SKILL.md +0 -0
  212. /package/skills/{testomatio/test-management → test-management}/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +0 -0
  213. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/SKILL.md +0 -0
  214. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +0 -0
  215. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +0 -0
  216. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/scripts/check-coverage.mjs +0 -0
  217. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/SKILL.md +0 -0
  218. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/test-case-format.md +0 -0
  219. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/testomat-tms-guide.md +0 -0
  220. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/writing-rule.md +0 -0
  221. /package/skills/{testomatio/test-management → test-management}/scan-automation-project/SKILL.md +0 -0
  222. /package/skills/{testomatio/test-management → test-management}/sync-test-cases-with-tms/SKILL.md +0 -0
  223. /package/skills/{testomatio/test-management → test-management}/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +0 -0
  224. /package/skills/{testomatio/test-management → test-management}/testomatio-mcp/SKILL.md +0 -0
  225. /package/skills/{testomatio/test-management → test-management}/testomatio-mcp/references/MCP_SETUP.md +0 -0
@@ -1,397 +0,0 @@
1
- # GitLab CI/CD Configuration
2
-
3
- ## Table of Contents
4
-
5
- 1. [Key Commands](#key-commands)
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**: Running Playwright tests in GitLab pipelines on merge requests, merges to main, or scheduled pipelines.
12
-
13
- ## Key Commands
14
-
15
- ```bash
16
- npx playwright install --with-deps # install browsers + OS deps
17
- npx playwright test --shard=1/4 # run 1 of 4 parallel shards
18
- npx playwright merge-reports ./blob-report # merge shard results
19
- npx playwright test --reporter=dot # minimal output for CI logs
20
- ```
21
-
22
- ## Patterns
23
-
24
- ### Basic Pipeline Configuration
25
-
26
- **Use when**: Any GitLab project with Playwright tests.
27
-
28
- ```yaml
29
- # .gitlab-ci.yml
30
- image: mcr.microsoft.com/playwright:v1.48.0-noble
31
-
32
- stages:
33
- - install
34
- - test
35
- - report
36
-
37
- variables:
38
- CI: "true"
39
- npm_config_cache: "$CI_PROJECT_DIR/.npm"
40
-
41
- cache:
42
- key:
43
- files:
44
- - package-lock.json
45
- paths:
46
- - .npm/
47
- - node_modules/
48
-
49
- setup:
50
- stage: install
51
- script:
52
- - npm ci
53
- artifacts:
54
- paths:
55
- - node_modules/
56
- expire_in: 1 hour
57
-
58
- e2e:
59
- stage: test
60
- needs: [setup]
61
- script:
62
- - npx playwright test
63
- artifacts:
64
- when: always
65
- paths:
66
- - playwright-report/
67
- - test-results/
68
- expire_in: 14 days
69
- rules:
70
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
71
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
72
- ```
73
-
74
- ### Sharded Parallel Execution
75
-
76
- **Use when**: Test suite exceeds 10 minutes. GitLab's `parallel` keyword splits across jobs automatically.
77
- **Avoid when**: Suite runs under 5 minutes.
78
-
79
- ```yaml
80
- image: mcr.microsoft.com/playwright:v1.48.0-noble
81
-
82
- stages:
83
- - install
84
- - test
85
- - report
86
-
87
- variables:
88
- CI: "true"
89
- npm_config_cache: "$CI_PROJECT_DIR/.npm"
90
-
91
- cache:
92
- key:
93
- files:
94
- - package-lock.json
95
- paths:
96
- - .npm/
97
- - node_modules/
98
-
99
- setup:
100
- stage: install
101
- script:
102
- - npm ci
103
- artifacts:
104
- paths:
105
- - node_modules/
106
- expire_in: 1 hour
107
-
108
- e2e:
109
- stage: test
110
- needs: [setup]
111
- parallel: 4
112
- script:
113
- - npx playwright test --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
114
- artifacts:
115
- when: always
116
- paths:
117
- - blob-report/
118
- expire_in: 1 hour
119
- rules:
120
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
121
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
122
-
123
- combine-reports:
124
- stage: report
125
- needs: [e2e]
126
- when: always
127
- script:
128
- - npx playwright merge-reports --reporter=html ./blob-report
129
- artifacts:
130
- when: always
131
- paths:
132
- - playwright-report/
133
- expire_in: 14 days
134
- ```
135
-
136
- **Config for sharded pipelines:**
137
-
138
- ```typescript
139
- // playwright.config.ts
140
- export default defineConfig({
141
- reporter: process.env.CI
142
- ? [["blob"], ["dot"]]
143
- : [["html", { open: "on-failure" }]],
144
- });
145
- ```
146
-
147
- ### Environment Variables and Secrets
148
-
149
- **Use when**: Tests need secrets (API keys, passwords) and should only run on merge requests or the default branch.
150
-
151
- ```yaml
152
- image: mcr.microsoft.com/playwright:v1.48.0-noble
153
-
154
- stages:
155
- - test
156
-
157
- variables:
158
- CI: "true"
159
-
160
- e2e:staging:
161
- stage: test
162
- variables:
163
- BASE_URL: $STAGING_URL
164
- TEST_PASSWORD: $TEST_PASSWORD
165
- API_KEY: $API_KEY
166
- before_script:
167
- - npm ci
168
- script:
169
- - npx playwright test
170
- artifacts:
171
- when: always
172
- paths:
173
- - playwright-report/
174
- - test-results/
175
- expire_in: 14 days
176
- rules:
177
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
178
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
179
- - when: manual
180
- allow_failure: true
181
- ```
182
-
183
- **Setting variables in GitLab:**
184
- Navigate to **Settings > CI/CD > Variables** and add:
185
-
186
- - `STAGING_URL` -- not masked, not protected
187
- - `TEST_PASSWORD` -- masked, protected
188
- - `API_KEY` -- masked, protected
189
-
190
- ### Multi-Browser Matrix
191
-
192
- **Use when**: Running Chromium on MRs and all browsers on the default branch.
193
-
194
- ```yaml
195
- image: mcr.microsoft.com/playwright:v1.48.0-noble
196
-
197
- stages:
198
- - install
199
- - test
200
-
201
- variables:
202
- CI: "true"
203
-
204
- setup:
205
- stage: install
206
- script:
207
- - npm ci
208
- artifacts:
209
- paths:
210
- - node_modules/
211
- expire_in: 1 hour
212
-
213
- e2e:chromium:
214
- stage: test
215
- needs: [setup]
216
- script:
217
- - npx playwright test --project=chromium
218
- artifacts:
219
- when: always
220
- paths:
221
- - playwright-report/
222
- - test-results/
223
- expire_in: 14 days
224
- rules:
225
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
226
-
227
- e2e:all-browsers:
228
- stage: test
229
- needs: [setup]
230
- parallel:
231
- matrix:
232
- - PROJECT: [chromium, firefox, webkit]
233
- script:
234
- - npx playwright test --project=$PROJECT
235
- artifacts:
236
- when: always
237
- paths:
238
- - playwright-report/
239
- - test-results/
240
- expire_in: 14 days
241
- rules:
242
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
243
- ```
244
-
245
- ### Services Integration (Database, Cache)
246
-
247
- **Use when**: Tests need the application running alongside Playwright, or you need external services.
248
-
249
- ```yaml
250
- stages:
251
- - test
252
-
253
- e2e:integration:
254
- stage: test
255
- image: mcr.microsoft.com/playwright:v1.48.0-noble
256
- services:
257
- - name: postgres:latest
258
- alias: db
259
- - name: redis:latest
260
- alias: cache
261
- variables:
262
- CI: "true"
263
- DATABASE_URL: "postgresql://postgres:postgres@db:5432/testdb"
264
- REDIS_URL: "redis://cache:6379"
265
- POSTGRES_PASSWORD: "postgres"
266
- POSTGRES_DB: "testdb"
267
- before_script:
268
- - npm ci
269
- - npx prisma db push
270
- - npx prisma db seed
271
- script:
272
- - npx playwright test
273
- artifacts:
274
- when: always
275
- paths:
276
- - playwright-report/
277
- - test-results/
278
- expire_in: 14 days
279
- rules:
280
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
281
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
282
- ```
283
-
284
- ### Scheduled Nightly Regression
285
-
286
- **Use when**: Full regression is too slow for every MR.
287
-
288
- ```yaml
289
- e2e:nightly:
290
- stage: test
291
- image: mcr.microsoft.com/playwright:v1.48.0-noble
292
- before_script:
293
- - npm ci
294
- script:
295
- - npx playwright test --grep @regression
296
- artifacts:
297
- when: always
298
- paths:
299
- - playwright-report/
300
- expire_in: 30 days
301
- rules:
302
- - if: $CI_PIPELINE_SOURCE == "schedule"
303
- ```
304
-
305
- Set up the schedule in **CI/CD > Schedules**: `0 3 * * 1-5` (3 AM UTC, weekdays).
306
-
307
- ## Decision Guide
308
-
309
- | Scenario | Approach | Why |
310
- | ------------------------------------ | ------------------------------------------------------ | --------------------------------------------------- |
311
- | Simple project, < 5 min suite | Single `test` job using Playwright Docker image | No sharding overhead; artifacts capture report |
312
- | Suite > 10 min | `parallel: N` with `--shard` | GitLab auto-assigns `CI_NODE_INDEX`/`CI_NODE_TOTAL` |
313
- | Merge request fast feedback | Chromium only on MRs; all browsers on main | 3x fewer pipeline minutes on MRs |
314
- | External services needed (DB, Redis) | `services:` keyword with Postgres/Redis images | GitLab manages service lifecycle |
315
- | Secrets for staging environment | GitLab CI/CD Variables (masked + protected) | Never hardcode secrets in `.gitlab-ci.yml` |
316
- | Full nightly regression | Pipeline schedule (`CI_PIPELINE_SOURCE == "schedule"`) | Avoids blocking MR pipelines |
317
- | Report browsing | `artifacts:` with `paths: [playwright-report/]` | Browse directly in GitLab job artifacts UI |
318
-
319
- ## Anti-Patterns
320
-
321
- | Anti-Pattern | Problem | Do This Instead |
322
- | ---------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------- |
323
- | Not using the Playwright Docker image | Installing browsers every run adds 1-2 minutes | Use `mcr.microsoft.com/playwright:v1.48.0-noble` as base image |
324
- | `artifacts: when: on_failure` only | No report when tests pass; can't verify results | Use `when: always` to capture reports regardless |
325
- | No `expire_in` on artifacts | Artifacts accumulate and consume storage | Set `expire_in: 14 days` for reports, `1 hour` for intermediate artifacts |
326
- | Hardcoding `CI_NODE_TOTAL` in shard flag | Breaks when you change `parallel:` value | Use `--shard=$CI_NODE_INDEX/$CI_NODE_TOTAL` |
327
- | Skipping `needs:` between stages | Jobs wait for all previous stage jobs, not just their dependencies | Use `needs:` for precise dependency graphs |
328
- | Large `cache:` including `node_modules/` without key | Stale cache causes version conflicts | Key cache on `package-lock.json` hash |
329
-
330
- ## Troubleshooting
331
-
332
- ### Browser launch fails: "Failed to launch browser"
333
-
334
- **Cause**: Not using the Playwright Docker image, or using a version that doesn't match your `@playwright/test` version.
335
-
336
- **Fix**: Match the Docker image tag to your Playwright version:
337
-
338
- ```yaml
339
- # Check your version: npm ls @playwright/test
340
- image: mcr.microsoft.com/playwright:v1.48.0-noble
341
- ```
342
-
343
- ### Tests hang in GitLab runner: "Navigation timeout exceeded"
344
-
345
- **Cause**: GitLab shared runners may have limited resources.
346
-
347
- **Fix**: Reduce workers and increase timeouts:
348
-
349
- ```typescript
350
- export default defineConfig({
351
- workers: process.env.CI ? 2 : undefined,
352
- use: {
353
- navigationTimeout: process.env.CI ? 30_000 : 15_000,
354
- },
355
- });
356
- ```
357
-
358
- ### Pipeline runs on every push, not just merge requests
359
-
360
- **Cause**: Missing `rules:` configuration.
361
-
362
- **Fix**: Add explicit rules:
363
-
364
- ```yaml
365
- rules:
366
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
367
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
368
- ```
369
-
370
- ### Services (Postgres/Redis) not reachable from tests
371
-
372
- **Cause**: Using `localhost` instead of the service alias.
373
-
374
- **Fix**: Use the service alias as hostname:
375
-
376
- ```yaml
377
- services:
378
- - name: postgres:latest
379
- alias: db
380
-
381
- variables:
382
- DATABASE_URL: "postgresql://postgres:postgres@db:5432/testdb"
383
- ```
384
-
385
- ### Merged report is empty after sharded run
386
-
387
- **Cause**: Each shard job needs the `blob` reporter, not `html`.
388
-
389
- **Fix**: Configure blob reporter for CI:
390
-
391
- ```typescript
392
- export default defineConfig({
393
- reporter: process.env.CI
394
- ? [["blob"], ["dot"]]
395
- : [["html", { open: "on-failure" }]],
396
- });
397
- ```