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,521 +0,0 @@
1
- # CI: CircleCI, Azure DevOps, and Jenkins
2
-
3
- > **When to use**: Running Playwright tests in CI platforms other than GitHub Actions or GitLab.
4
-
5
- ## Table of Contents
6
-
7
- 1. [Common Commands](#common-commands)
8
- 2. [Jenkins](#jenkins)
9
- 3. [CircleCI](#circleci)
10
- 4. [Azure DevOps](#azure-devops)
11
- 5. [JUnit Reporter Config](#junit-reporter-config)
12
- 6. [Platform Comparison](#platform-comparison)
13
- 7. [Troubleshooting](#troubleshooting)
14
- 8. [Anti-Patterns](#anti-patterns)
15
-
16
- ---
17
-
18
- ## Common Commands
19
-
20
- ```bash
21
- npx playwright install --with-deps # browsers + OS dependencies
22
- npx playwright test --shard=1/4 # parallel sharding
23
- npx playwright merge-reports ./blob-report # combine shard results
24
- npx playwright test --reporter=dot,html # multiple reporters
25
- ```
26
-
27
- ## Jenkins
28
-
29
- ### Declarative Pipeline
30
-
31
- ```groovy
32
- // Jenkinsfile
33
- pipeline {
34
- agent {
35
- docker {
36
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
37
- args '-u root'
38
- }
39
- }
40
-
41
- environment {
42
- CI = 'true'
43
- HOME = '/root'
44
- npm_config_cache = "${WORKSPACE}/.npm"
45
- }
46
-
47
- options {
48
- timeout(time: 30, unit: 'MINUTES')
49
- disableConcurrentBuilds()
50
- }
51
-
52
- stages {
53
- stage('Install') {
54
- steps {
55
- sh 'npm ci'
56
- }
57
- }
58
-
59
- stage('Test') {
60
- steps {
61
- sh 'npx playwright test'
62
- }
63
- post {
64
- always {
65
- junit allowEmptyResults: true,
66
- testResults: 'results/junit.xml'
67
- archiveArtifacts artifacts: 'pw-report/**',
68
- allowEmptyArchive: true
69
- archiveArtifacts artifacts: 'results/**',
70
- allowEmptyArchive: true
71
- }
72
- }
73
- }
74
- }
75
-
76
- post {
77
- failure {
78
- echo 'Tests failed!'
79
- }
80
- cleanup {
81
- cleanWs()
82
- }
83
- }
84
- }
85
- ```
86
-
87
- ### Parallel Shards
88
-
89
- ```groovy
90
- // Jenkinsfile (sharded)
91
- pipeline {
92
- agent none
93
-
94
- environment {
95
- CI = 'true'
96
- HOME = '/root'
97
- }
98
-
99
- options {
100
- timeout(time: 30, unit: 'MINUTES')
101
- }
102
-
103
- stages {
104
- stage('Test') {
105
- parallel {
106
- stage('Shard 1') {
107
- agent {
108
- docker {
109
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
110
- args '-u root'
111
- }
112
- }
113
- steps {
114
- sh 'npm ci'
115
- sh 'npx playwright test --shard=1/4'
116
- }
117
- post {
118
- always {
119
- archiveArtifacts artifacts: 'blob-report/**',
120
- allowEmptyArchive: true
121
- }
122
- }
123
- }
124
- stage('Shard 2') {
125
- agent {
126
- docker {
127
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
128
- args '-u root'
129
- }
130
- }
131
- steps {
132
- sh 'npm ci'
133
- sh 'npx playwright test --shard=2/4'
134
- }
135
- post {
136
- always {
137
- archiveArtifacts artifacts: 'blob-report/**',
138
- allowEmptyArchive: true
139
- }
140
- }
141
- }
142
- stage('Shard 3') {
143
- agent {
144
- docker {
145
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
146
- args '-u root'
147
- }
148
- }
149
- steps {
150
- sh 'npm ci'
151
- sh 'npx playwright test --shard=3/4'
152
- }
153
- post {
154
- always {
155
- archiveArtifacts artifacts: 'blob-report/**',
156
- allowEmptyArchive: true
157
- }
158
- }
159
- }
160
- stage('Shard 4') {
161
- agent {
162
- docker {
163
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
164
- args '-u root'
165
- }
166
- }
167
- steps {
168
- sh 'npm ci'
169
- sh 'npx playwright test --shard=4/4'
170
- }
171
- post {
172
- always {
173
- archiveArtifacts artifacts: 'blob-report/**',
174
- allowEmptyArchive: true
175
- }
176
- }
177
- }
178
- }
179
- }
180
- }
181
- }
182
- ```
183
-
184
- ## CircleCI
185
-
186
- ### Basic Pipeline
187
-
188
- ```yaml
189
- # .circleci/config.yml
190
- version: 2.1
191
-
192
- executors:
193
- pw:
194
- docker:
195
- - image: mcr.microsoft.com/playwright:v1.48.0-noble
196
- working_directory: ~/app
197
-
198
- jobs:
199
- install:
200
- executor: pw
201
- steps:
202
- - checkout
203
- - restore_cache:
204
- keys:
205
- - deps-{{ checksum "package-lock.json" }}
206
- - run: npm ci
207
- - save_cache:
208
- key: deps-{{ checksum "package-lock.json" }}
209
- paths:
210
- - node_modules
211
- - persist_to_workspace:
212
- root: .
213
- paths:
214
- - node_modules
215
-
216
- test:
217
- executor: pw
218
- parallelism: 4
219
- steps:
220
- - checkout
221
- - attach_workspace:
222
- at: .
223
- - run:
224
- name: Run tests
225
- command: |
226
- npx playwright test --shard=$((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL
227
- - store_artifacts:
228
- path: pw-report
229
- destination: pw-report
230
- - store_artifacts:
231
- path: results
232
- destination: results
233
- - store_test_results:
234
- path: results/junit.xml
235
-
236
- workflows:
237
- test:
238
- jobs:
239
- - install
240
- - test:
241
- requires:
242
- - install
243
- ```
244
-
245
- ### Using Orbs
246
-
247
- ```yaml
248
- # .circleci/config.yml
249
- version: 2.1
250
-
251
- orbs:
252
- node: circleci/node@latest
253
-
254
- executors:
255
- pw:
256
- docker:
257
- - image: mcr.microsoft.com/playwright:v1.48.0-noble
258
-
259
- jobs:
260
- e2e:
261
- executor: pw
262
- parallelism: 4
263
- steps:
264
- - checkout
265
- - node/install-packages
266
- - run:
267
- name: Run tests
268
- command: npx playwright test --shard=$((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL
269
- - store_artifacts:
270
- path: pw-report
271
- - store_test_results:
272
- path: results/junit.xml
273
-
274
- workflows:
275
- main:
276
- jobs:
277
- - e2e
278
- ```
279
-
280
- ## Azure DevOps
281
-
282
- ### Basic Pipeline
283
-
284
- ```yaml
285
- # azure-pipelines.yml
286
- trigger:
287
- branches:
288
- include:
289
- - main
290
-
291
- pr:
292
- branches:
293
- include:
294
- - main
295
-
296
- pool:
297
- vmImage: "ubuntu-latest"
298
-
299
- variables:
300
- CI: "true"
301
- npm_config_cache: $(Pipeline.Workspace)/.npm
302
-
303
- steps:
304
- - task: NodeTool@0
305
- inputs:
306
- versionSpec: "20.x"
307
- displayName: "Install Node.js"
308
-
309
- - task: Cache@2
310
- inputs:
311
- key: 'npm | "$(Agent.OS)" | package-lock.json'
312
- restoreKeys: |
313
- npm | "$(Agent.OS)"
314
- path: $(npm_config_cache)
315
- displayName: "Cache npm"
316
-
317
- - script: npm ci
318
- displayName: "Install dependencies"
319
-
320
- - script: npx playwright install --with-deps
321
- displayName: "Install browsers"
322
-
323
- - script: npx playwright test
324
- displayName: "Run tests"
325
-
326
- - task: PublishTestResults@2
327
- condition: always()
328
- inputs:
329
- testResultsFormat: "JUnit"
330
- testResultsFiles: "results/junit.xml"
331
- mergeTestResults: true
332
- testRunTitle: "E2E Tests"
333
- displayName: "Publish results"
334
-
335
- - task: PublishPipelineArtifact@1
336
- condition: always()
337
- inputs:
338
- targetPath: pw-report
339
- artifact: pw-report
340
- publishLocation: "pipeline"
341
- displayName: "Upload report"
342
- ```
343
-
344
- ### With Sharding
345
-
346
- ```yaml
347
- # azure-pipelines.yml
348
- trigger:
349
- branches:
350
- include:
351
- - main
352
-
353
- pr:
354
- branches:
355
- include:
356
- - main
357
-
358
- variables:
359
- CI: "true"
360
-
361
- stages:
362
- - stage: Test
363
- jobs:
364
- - job: E2E
365
- pool:
366
- vmImage: "ubuntu-latest"
367
- strategy:
368
- matrix:
369
- shard1:
370
- SHARD: "1/4"
371
- shard2:
372
- SHARD: "2/4"
373
- shard3:
374
- SHARD: "3/4"
375
- shard4:
376
- SHARD: "4/4"
377
- steps:
378
- - task: NodeTool@0
379
- inputs:
380
- versionSpec: "20.x"
381
-
382
- - script: npm ci
383
- displayName: "Install dependencies"
384
-
385
- - script: npx playwright install --with-deps
386
- displayName: "Install browsers"
387
-
388
- - script: npx playwright test --shard=$(SHARD)
389
- displayName: "Run tests (shard $(SHARD))"
390
-
391
- - task: PublishPipelineArtifact@1
392
- condition: always()
393
- inputs:
394
- targetPath: blob-report
395
- artifact: blob-report-$(System.JobPositionInPhase)
396
- displayName: "Upload blob report"
397
-
398
- - stage: Report
399
- dependsOn: Test
400
- condition: always()
401
- jobs:
402
- - job: MergeReports
403
- pool:
404
- vmImage: "ubuntu-latest"
405
- steps:
406
- - task: NodeTool@0
407
- inputs:
408
- versionSpec: "20.x"
409
-
410
- - script: npm ci
411
- displayName: "Install dependencies"
412
-
413
- - task: DownloadPipelineArtifact@2
414
- inputs:
415
- patterns: "blob-report-*/**"
416
- path: all-blob-reports
417
- displayName: "Download blob reports"
418
-
419
- - script: npx playwright merge-reports --reporter=html ./all-blob-reports
420
- displayName: "Merge reports"
421
-
422
- - task: PublishPipelineArtifact@1
423
- inputs:
424
- targetPath: pw-report
425
- artifact: pw-report
426
- displayName: "Upload merged report"
427
- ```
428
-
429
- ## JUnit Reporter Config
430
-
431
- All platforms benefit from JUnit output for native test result display:
432
-
433
- ```typescript
434
- // playwright.config.ts
435
- import { defineConfig } from "@playwright/test";
436
-
437
- export default defineConfig({
438
- reporter: process.env.CI
439
- ? [
440
- ["dot"],
441
- ["html", { open: "never" }],
442
- ["junit", { outputFile: "results/junit.xml" }],
443
- ]
444
- : [["html", { open: "on-failure" }]],
445
- });
446
- ```
447
-
448
- ## Platform Comparison
449
-
450
- | Feature | CircleCI | Azure DevOps | Jenkins |
451
- | ----------------- | ----------------------------------------------- | -------------------------------- | ---------------------- |
452
- | Docker support | `docker:` executor | `vmImage` or container jobs | Docker Pipeline plugin |
453
- | Parallelism | `parallelism: N` + `CIRCLE_NODE_INDEX` | `strategy.matrix` | `parallel` stages |
454
- | Artifact upload | `store_artifacts` | `PublishPipelineArtifact@1` | `archiveArtifacts` |
455
- | JUnit integration | `store_test_results` | `PublishTestResults@2` | `junit` step |
456
- | Shard variable | `$((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL` | Define in matrix: `SHARD: '1/4'` | Hardcode per stage |
457
- | Cache key | `checksum "package-lock.json"` | `Cache@2` with key template | `stash`/`unstash` |
458
- | Secrets | Context + env variables | Variable groups | Credentials plugin |
459
-
460
- ## Troubleshooting
461
-
462
- ### Jenkins: "Browser closed unexpectedly"
463
-
464
- Running as non-root in container causes sandbox issues.
465
-
466
- ```groovy
467
- agent {
468
- docker {
469
- image 'mcr.microsoft.com/playwright:v1.48.0-noble'
470
- args '-u root'
471
- }
472
- }
473
- environment {
474
- HOME = '/root'
475
- }
476
- ```
477
-
478
- ### CircleCI: "Executable doesn't exist"
479
-
480
- Image version mismatch with `@playwright/test` version. Use `latest` tag or match versions:
481
-
482
- ```yaml
483
- docker:
484
- - image: mcr.microsoft.com/playwright:v1.48.0-noble
485
- ```
486
-
487
- ### Azure DevOps: Test results not showing
488
-
489
- Missing JUnit reporter or `PublishTestResults@2` task:
490
-
491
- ```typescript
492
- reporter: [['junit', { outputFile: 'results/junit.xml' }]],
493
- ```
494
-
495
- ```yaml
496
- - task: PublishTestResults@2
497
- condition: always()
498
- inputs:
499
- testResultsFormat: "JUnit"
500
- testResultsFiles: "results/junit.xml"
501
- ```
502
-
503
- ### Shard index off by one
504
-
505
- CircleCI's `CIRCLE_NODE_INDEX` is 0-based, Playwright's `--shard` is 1-based:
506
-
507
- ```yaml
508
- # CircleCI - add 1
509
- command: npx playwright test --shard=$((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL
510
- ```
511
-
512
- ## Anti-Patterns
513
-
514
- | Anti-Pattern | Problem | Solution |
515
- | ----------------------------------- | ----------------------------------------- | ---------------------------------------------------- |
516
- | Missing `--with-deps` on bare metal | OS libs missing, browser launch fails | Use Playwright Docker image or `--with-deps` |
517
- | No JUnit reporter | CI can't display test results | Add `['junit', { outputFile: 'results/junit.xml' }]` |
518
- | No job timeout | Hung tests consume resources indefinitely | Set explicit timeout (20-30 min) |
519
- | No artifact upload on success | Can't verify passing results | Always upload reports (`condition: always()`) |
520
- | Non-root in container without setup | Permission errors on browser binaries | Run as root or configure permissions |
521
- | Hardcoded shard count | Must update multiple places | Use CI-native variables |