testeiya 0.10.0 → 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 (241) hide show
  1. package/PIPELINES.md +3 -0
  2. package/README.md +10 -20
  3. package/dist/prompt/clis.d.ts +7 -0
  4. package/dist/prompt/pipeline-report.d.ts +1 -0
  5. package/dist/prompt/report.d.ts +10 -0
  6. package/dist/prompt/system-prompt.d.ts +22 -0
  7. package/dist/prompt/system-prompt.js +1 -1
  8. package/dist/prompt/system-prompt.js.map +1 -1
  9. package/dist/prompt/testomat.io.d.ts +19 -0
  10. package/dist/prompt/thread.d.ts +73 -0
  11. package/dist/src/args.d.ts +39 -0
  12. package/dist/src/attribution-extension.d.ts +3 -0
  13. package/dist/src/checkpoint.d.ts +30 -0
  14. package/dist/src/cli.d.ts +2 -0
  15. package/dist/src/cli.js +27 -32
  16. package/dist/src/cli.js.map +1 -1
  17. package/dist/src/doctor.d.ts +11 -0
  18. package/dist/src/env.d.ts +30 -0
  19. package/dist/src/exec.d.ts +11 -0
  20. package/dist/src/git.d.ts +41 -0
  21. package/dist/src/git.js +10 -0
  22. package/dist/src/git.js.map +1 -1
  23. package/dist/src/langfuse-extension.d.ts +7 -0
  24. package/dist/src/langfuse.d.ts +67 -0
  25. package/dist/src/mcp.d.ts +19 -0
  26. package/dist/src/model.d.ts +20 -0
  27. package/dist/src/model.js +2 -0
  28. package/dist/src/model.js.map +1 -1
  29. package/dist/src/models.d.ts +1 -0
  30. package/dist/src/output.d.ts +84 -0
  31. package/dist/src/pipeline/command-stage.d.ts +12 -0
  32. package/dist/src/pipeline/crash-guard.d.ts +12 -0
  33. package/dist/src/pipeline/crash-guard.js +21 -0
  34. package/dist/src/pipeline/crash-guard.js.map +1 -0
  35. package/dist/src/pipeline/diagram.d.ts +24 -0
  36. package/dist/src/pipeline/gate.d.ts +21 -0
  37. package/dist/src/pipeline/launcher.d.ts +33 -0
  38. package/dist/src/pipeline/launcher.js +16 -3
  39. package/dist/src/pipeline/launcher.js.map +1 -1
  40. package/dist/src/pipeline/log.d.ts +29 -0
  41. package/dist/src/pipeline/log.js +9 -0
  42. package/dist/src/pipeline/log.js.map +1 -1
  43. package/dist/src/pipeline/overlay.d.ts +29 -0
  44. package/dist/src/pipeline/pipeline-file.d.ts +44 -0
  45. package/dist/src/pipeline/pipeline-file.js +16 -8
  46. package/dist/src/pipeline/pipeline-file.js.map +1 -1
  47. package/dist/src/pipeline/pipeline.d.ts +78 -0
  48. package/dist/src/pipeline/pipeline.js +33 -7
  49. package/dist/src/pipeline/pipeline.js.map +1 -1
  50. package/dist/src/pipeline/report.d.ts +26 -0
  51. package/dist/src/pipeline/report.js +13 -0
  52. package/dist/src/pipeline/report.js.map +1 -1
  53. package/dist/src/pipeline/spec.d.ts +63 -0
  54. package/dist/src/pipeline/stage-env.d.ts +13 -0
  55. package/dist/src/pipeline/stage-env.js +31 -0
  56. package/dist/src/pipeline/stage-env.js.map +1 -0
  57. package/dist/src/pipeline/stage.d.ts +71 -0
  58. package/dist/src/pipeline/stage.js.map +1 -1
  59. package/dist/src/pipeline/state.d.ts +63 -0
  60. package/dist/src/pipeline/summary-stage.d.ts +24 -0
  61. package/dist/src/pipeline/task-stage.d.ts +24 -0
  62. package/dist/src/pipeline/task-stage.js +86 -2
  63. package/dist/src/pipeline/task-stage.js.map +1 -1
  64. package/dist/src/pipeline/variables.d.ts +20 -0
  65. package/dist/src/result.d.ts +6 -0
  66. package/dist/src/run.d.ts +69 -0
  67. package/dist/src/run.js +116 -60
  68. package/dist/src/run.js.map +1 -1
  69. package/dist/src/session.d.ts +43 -0
  70. package/dist/src/session.js +3 -1
  71. package/dist/src/session.js.map +1 -1
  72. package/dist/src/sessions.d.ts +23 -0
  73. package/dist/src/skills.d.ts +29 -0
  74. package/package.json +11 -2
  75. package/pipelines/api-testing.yml +16 -5
  76. package/pipelines/issue-test-cases.yml +3 -4
  77. package/pipelines/pr-review.yml +14 -5
  78. package/pipelines/regression.yml +1 -0
  79. package/pipelines/web-testing.yml +1 -0
  80. package/prompt/system-prompt.ts +1 -1
  81. package/scripts/vendor-skills.js +62 -0
  82. package/skills/codeceptjs/ci-fix-tests/SKILL.md +0 -119
  83. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +0 -141
  84. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +0 -100
  85. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +0 -196
  86. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +0 -83
  87. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +0 -126
  88. package/skills/codeceptjs/lint-codeceptjs-tests/SKILL.md +0 -104
  89. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +0 -109
  90. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +0 -295
  91. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +0 -339
  92. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +0 -459
  93. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +0 -338
  94. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +0 -78
  95. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +0 -102
  96. package/skills/playwright/playwright-best-practices/SKILL.md +0 -303
  97. package/skills/playwright/playwright-best-practices/advanced/authentication-flows.md +0 -360
  98. package/skills/playwright/playwright-best-practices/advanced/authentication.md +0 -871
  99. package/skills/playwright/playwright-best-practices/advanced/clock-mocking.md +0 -364
  100. package/skills/playwright/playwright-best-practices/advanced/mobile-testing.md +0 -409
  101. package/skills/playwright/playwright-best-practices/advanced/multi-context.md +0 -288
  102. package/skills/playwright/playwright-best-practices/advanced/multi-user.md +0 -393
  103. package/skills/playwright/playwright-best-practices/advanced/network-advanced.md +0 -452
  104. package/skills/playwright/playwright-best-practices/advanced/third-party.md +0 -464
  105. package/skills/playwright/playwright-best-practices/architecture/pom-vs-fixtures.md +0 -363
  106. package/skills/playwright/playwright-best-practices/architecture/test-architecture.md +0 -369
  107. package/skills/playwright/playwright-best-practices/architecture/when-to-mock.md +0 -383
  108. package/skills/playwright/playwright-best-practices/browser-apis/browser-apis.md +0 -391
  109. package/skills/playwright/playwright-best-practices/browser-apis/iframes.md +0 -403
  110. package/skills/playwright/playwright-best-practices/browser-apis/service-workers.md +0 -504
  111. package/skills/playwright/playwright-best-practices/browser-apis/websockets.md +0 -403
  112. package/skills/playwright/playwright-best-practices/core/annotations.md +0 -424
  113. package/skills/playwright/playwright-best-practices/core/assertions-waiting.md +0 -361
  114. package/skills/playwright/playwright-best-practices/core/configuration.md +0 -452
  115. package/skills/playwright/playwright-best-practices/core/fixtures-hooks.md +0 -417
  116. package/skills/playwright/playwright-best-practices/core/global-setup.md +0 -434
  117. package/skills/playwright/playwright-best-practices/core/locators.md +0 -242
  118. package/skills/playwright/playwright-best-practices/core/page-object-model.md +0 -315
  119. package/skills/playwright/playwright-best-practices/core/projects-dependencies.md +0 -453
  120. package/skills/playwright/playwright-best-practices/core/test-data.md +0 -492
  121. package/skills/playwright/playwright-best-practices/core/test-suite-structure.md +0 -361
  122. package/skills/playwright/playwright-best-practices/core/test-tags.md +0 -298
  123. package/skills/playwright/playwright-best-practices/debugging/console-errors.md +0 -420
  124. package/skills/playwright/playwright-best-practices/debugging/debugging.md +0 -504
  125. package/skills/playwright/playwright-best-practices/debugging/error-testing.md +0 -360
  126. package/skills/playwright/playwright-best-practices/debugging/flaky-tests.md +0 -496
  127. package/skills/playwright/playwright-best-practices/frameworks/angular.md +0 -530
  128. package/skills/playwright/playwright-best-practices/frameworks/nextjs.md +0 -469
  129. package/skills/playwright/playwright-best-practices/frameworks/react.md +0 -531
  130. package/skills/playwright/playwright-best-practices/frameworks/vue.md +0 -574
  131. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +0 -468
  132. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/docker.md +0 -283
  133. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/github-actions.md +0 -546
  134. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/gitlab.md +0 -397
  135. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/other-providers.md +0 -521
  136. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +0 -371
  137. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/performance.md +0 -453
  138. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/reporting.md +0 -424
  139. package/skills/playwright/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +0 -497
  140. package/skills/playwright/playwright-best-practices/testing-patterns/accessibility.md +0 -359
  141. package/skills/playwright/playwright-best-practices/testing-patterns/api-testing.md +0 -719
  142. package/skills/playwright/playwright-best-practices/testing-patterns/browser-extensions.md +0 -506
  143. package/skills/playwright/playwright-best-practices/testing-patterns/canvas-webgl.md +0 -493
  144. package/skills/playwright/playwright-best-practices/testing-patterns/component-testing.md +0 -500
  145. package/skills/playwright/playwright-best-practices/testing-patterns/drag-drop.md +0 -576
  146. package/skills/playwright/playwright-best-practices/testing-patterns/electron.md +0 -509
  147. package/skills/playwright/playwright-best-practices/testing-patterns/file-operations.md +0 -377
  148. package/skills/playwright/playwright-best-practices/testing-patterns/file-upload-download.md +0 -562
  149. package/skills/playwright/playwright-best-practices/testing-patterns/forms-validation.md +0 -561
  150. package/skills/playwright/playwright-best-practices/testing-patterns/graphql-testing.md +0 -331
  151. package/skills/playwright/playwright-best-practices/testing-patterns/i18n.md +0 -508
  152. package/skills/playwright/playwright-best-practices/testing-patterns/performance-testing.md +0 -476
  153. package/skills/playwright/playwright-best-practices/testing-patterns/security-testing.md +0 -430
  154. package/skills/playwright/playwright-best-practices/testing-patterns/visual-regression.md +0 -634
  155. package/skills/playwright/playwright-cli/SKILL.md +0 -489
  156. package/skills/playwright/playwright-cli/references/element-attributes.md +0 -23
  157. package/skills/playwright/playwright-cli/references/playwright-tests.md +0 -39
  158. package/skills/playwright/playwright-cli/references/pr-attachments.md +0 -60
  159. package/skills/playwright/playwright-cli/references/request-mocking.md +0 -87
  160. package/skills/playwright/playwright-cli/references/running-code.md +0 -245
  161. package/skills/playwright/playwright-cli/references/session-management.md +0 -227
  162. package/skills/playwright/playwright-cli/references/storage-state.md +0 -275
  163. package/skills/playwright/playwright-cli/references/test-generation.md +0 -433
  164. package/skills/playwright/playwright-cli/references/tracing.md +0 -139
  165. package/skills/playwright/playwright-cli/references/video-recording.md +0 -216
  166. package/skills/skills.lock.json +0 -89
  167. package/skills/skills.yaml +0 -35
  168. /package/skills/{testomatio/explorbot → explorbot}/explorbot-fundamentals/SKILL.md +0 -0
  169. /package/skills/{testomatio/explorbot → explorbot}/explorbot-fundamentals/references/no-install.md +0 -0
  170. /package/skills/{testomatio/explorbot → explorbot}/explorbot-plan/SKILL.md +0 -0
  171. /package/skills/{testomatio/explorbot → explorbot}/explorbot-setup/SKILL.md +0 -0
  172. /package/skills/{testomatio/explorbot → explorbot}/prima/SKILL.md +0 -0
  173. /package/skills/{testomatio/qa-process → qa-process}/qa-lead-strategy-advisor/SKILL.md +0 -0
  174. /package/skills/{testomatio/qa-process → qa-process}/qa-lead-strategy-advisor/references/output-format.md +0 -0
  175. /package/skills/{testomatio/qa-process → qa-process}/qa-review-pr/SKILL.md +0 -0
  176. /package/skills/{testomatio/qa-process → qa-process}/testing-workflow/SKILL.md +0 -0
  177. /package/skills/{testomatio/requirements → requirements}/catalog-features/SKILL.md +0 -0
  178. /package/skills/{testomatio/requirements → requirements}/catalog-features/references/layout.md +0 -0
  179. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/SKILL.md +0 -0
  180. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/references/features.md +0 -0
  181. /package/skills/{testomatio/requirements → requirements}/detect-product-mismatches/references/layout.md +0 -0
  182. /package/skills/{testomatio/requirements → requirements}/pull-request-diff-analyzer/SKILL.md +0 -0
  183. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/SKILL.md +0 -0
  184. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/references/answer-shapes.md +0 -0
  185. /package/skills/{testomatio/requirements → requirements}/qa-explain-behavior/references/examples.md +0 -0
  186. /package/skills/{testomatio/requirements → requirements}/qa-pr-requirements-analyzer/SKILL.md +0 -0
  187. /package/skills/{testomatio/requirements → requirements}/qa-pr-requirements-analyzer/references/summary-example.md +0 -0
  188. /package/skills/{testomatio/requirements → requirements}/qa-requirement-reviewer/SKILL.md +0 -0
  189. /package/skills/{testomatio/requirements → requirements}/qa-requirement-reviewer/references/requirements_reviewer_examples.md +0 -0
  190. /package/skills/{testomatio/requirements → requirements}/qa-thinking/SKILL.md +0 -0
  191. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/SKILL.md +0 -0
  192. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/references/behaviors.md +0 -0
  193. /package/skills/{testomatio/requirements → requirements}/wiki-from-code/references/layout.md +0 -0
  194. /package/skills/{testomatio/requirements → requirements}/write-user-story/SKILL.md +0 -0
  195. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/CLAUDE.md +0 -0
  196. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/SKILL.md +0 -0
  197. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/CODECEPTJS_BEST_PRACTICES.md +0 -0
  198. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/FINAL_SUMMARY_TEMPLATE.md +0 -0
  199. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/PLAYWRIGHT_BEST_PRACTICES.md +0 -0
  200. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/POM_BEST_PRACTICES.md +0 -0
  201. /package/skills/{testomatio/test-automation → test-automation}/automate-manual-test-cases/references/TEST_DATA_MANAGEMENT.md +0 -0
  202. /package/skills/{testomatio/test-automation → test-automation}/debug-fix-failed-flaky-autotests/SKILL.md +0 -0
  203. /package/skills/{testomatio/test-automation → test-automation}/debug-fix-failed-flaky-autotests/references/DEBUGGING_QUICK_REFERENCE.md +0 -0
  204. /package/skills/{testomatio/test-automation → test-automation}/epic-requirements-specification/SKILL.md +0 -0
  205. /package/skills/{testomatio/test-automation → test-automation}/qa-automation-test-consolidation/SKILL.md +0 -0
  206. /package/skills/{testomatio/test-automation → test-automation}/qa-data-seeder/SKILL.md +0 -0
  207. /package/skills/{testomatio/test-automation → test-automation}/run-tests-with-testomatio-reporter/SKILL.md +0 -0
  208. /package/skills/{testomatio/test-automation → test-automation}/setup-change-aware-pr-testing/SKILL.md +0 -0
  209. /package/skills/{testomatio/test-automation → test-automation}/setup-ci-automation/SKILL.md +0 -0
  210. /package/skills/{testomatio/test-automation → test-automation}/testomat-allure-adapter/SKILL.md +0 -0
  211. /package/skills/{testomatio/test-management → test-management}/detect-duplicate-test-cases/SKILL.md +0 -0
  212. /package/skills/{testomatio/test-management → test-management}/detect-duplicate-test-cases/references/DUPLICATE_INSTRUCTIONS.md +0 -0
  213. /package/skills/{testomatio/test-management → test-management}/detect-useless-tests/SKILL.md +0 -0
  214. /package/skills/{testomatio/test-management → test-management}/improve-test-cases/SKILL.md +0 -0
  215. /package/skills/{testomatio/test-management → test-management}/improve-test-cases/references/TESTOMAT_MARKDOWN_EXAMPLE.md +0 -0
  216. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/SKILL.md +0 -0
  217. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/CSV_MIGRATION.md +0 -0
  218. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/CUSTOM_MIGRATION.md +0 -0
  219. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/TESTMO_MIGRATION.md +0 -0
  220. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/TESTRAIL_MIGRATION.md +0 -0
  221. /package/skills/{testomatio/test-management → test-management}/migrate-to-testomatio/references/XRAY_MIGRATION.md +0 -0
  222. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/SKILL.md +0 -0
  223. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_ARTIFACTS.md +0 -0
  224. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_HTML_REPORT.md +0 -0
  225. /package/skills/{testomatio/test-management → test-management}/qa-e2e-tests-reporting/references/TESTOMATIO_REPORTERS_CONFIG.md +0 -0
  226. /package/skills/{testomatio/test-management → test-management}/qa-split-testing-levels-pyramid/SKILL.md +0 -0
  227. /package/skills/{testomatio/test-management → test-management}/qa-sprint-report-by-testomatio/SKILL.md +0 -0
  228. /package/skills/{testomatio/test-management → test-management}/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +0 -0
  229. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/SKILL.md +0 -0
  230. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/references/COVERAGE_FILE_FORMAT.md +0 -0
  231. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/references/E2E_FRAMEWORKS.md +0 -0
  232. /package/skills/{testomatio/test-management → test-management}/qa-test-code-coverage/scripts/check-coverage.mjs +0 -0
  233. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/SKILL.md +0 -0
  234. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/test-case-format.md +0 -0
  235. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/testomat-tms-guide.md +0 -0
  236. /package/skills/{testomatio/test-management → test-management}/qa-write-test-cases/references/writing-rule.md +0 -0
  237. /package/skills/{testomatio/test-management → test-management}/scan-automation-project/SKILL.md +0 -0
  238. /package/skills/{testomatio/test-management → test-management}/sync-test-cases-with-tms/SKILL.md +0 -0
  239. /package/skills/{testomatio/test-management → test-management}/sync-test-cases-with-tms/references/TESTOMATIO_CLI.md +0 -0
  240. /package/skills/{testomatio/test-management → test-management}/testomatio-mcp/SKILL.md +0 -0
  241. /package/skills/{testomatio/test-management → test-management}/testomatio-mcp/references/MCP_SETUP.md +0 -0
@@ -1,452 +0,0 @@
1
- # Playwright Configuration
2
-
3
- ## Table of Contents
4
-
5
- 1. [CLI Quick Reference](#cli-quick-reference)
6
- 2. [Decision Guide](#decision-guide)
7
- 3. [Production-Ready Config](#production-ready-config)
8
- 4. [Patterns](#patterns)
9
- 5. [Anti-Patterns](#anti-patterns)
10
- 6. [Troubleshooting](#troubleshooting)
11
- 7. [Related](#related)
12
-
13
- > **When to use**: Setting up a new project, adjusting timeouts, adding browser targets, configuring CI behavior, or managing environment-specific settings.
14
-
15
- ## CLI Quick Reference
16
-
17
- ```bash
18
- npx playwright init # scaffold config + first test
19
- npx playwright test --config=custom.config.ts # use alternate config
20
- npx playwright test --project=chromium # run single project
21
- npx playwright test --reporter=html # override reporter
22
- npx playwright test --grep @smoke # run tests tagged @smoke
23
- npx playwright test --grep-invert @slow # exclude @slow tests
24
- npx playwright show-report # open last HTML report
25
- DEBUG=pw:api npx playwright test # verbose logging
26
- ```
27
-
28
- ## Decision Guide
29
-
30
- ### Timeout Selection
31
-
32
- | Symptom | Setting | Default | Recommended |
33
- |---------|---------|---------|-------------|
34
- | Test takes too long overall | `timeout` | 30s | 30-60s (max 120s) |
35
- | Assertion retries too long/short | `expect.timeout` | 5s | 5-10s |
36
- | `page.goto()` or `waitForURL()` times out | `navigationTimeout` | 30s | 10-30s |
37
- | `click()`, `fill()` time out | `actionTimeout` | 0 (unlimited) | 10-15s |
38
- | Dev server slow to start | `webServer.timeout` | 60s | 60-180s |
39
-
40
- ### Server Management
41
-
42
- | Scenario | Approach |
43
- |----------|----------|
44
- | App in same repo | `webServer` with `reuseExistingServer: !process.env.CI` |
45
- | Separate repos | Manual start or Docker Compose |
46
- | Testing deployed environment | No `webServer`; set `baseURL` via env |
47
- | Multiple services | Array of `webServer` entries |
48
-
49
- ### Single vs Multi-Project
50
-
51
- | Scenario | Approach |
52
- |----------|----------|
53
- | Early development | Single project (chromium only) |
54
- | Pre-release validation | Multi-project: chromium + firefox + webkit |
55
- | Mobile-responsive app | Add mobile projects alongside desktop |
56
- | Auth + non-auth tests | Setup project with dependencies |
57
- | Tight CI budget | Chromium on PRs; all browsers on main |
58
-
59
- ### globalSetup vs Setup Projects vs Fixtures
60
-
61
- | Need | Use |
62
- |------|-----|
63
- | One-time DB seed | `globalSetup` |
64
- | Shared browser auth | Setup project with `dependencies` |
65
- | Per-test isolated state | Custom fixture via `test.extend()` |
66
- | Cleanup after all tests | `globalTeardown` |
67
-
68
- ## Production-Ready Config
69
-
70
- ```ts
71
- // playwright.config.ts
72
- import { defineConfig, devices } from '@playwright/test';
73
- import dotenv from 'dotenv';
74
- import path from 'path';
75
-
76
- dotenv.config({ path: path.resolve(__dirname, '.env') });
77
-
78
- export default defineConfig({
79
- testDir: './e2e',
80
- testMatch: '**/*.spec.ts',
81
-
82
- fullyParallel: true,
83
- forbidOnly: !!process.env.CI,
84
- retries: process.env.CI ? 2 : 0,
85
- workers: process.env.CI ? '50%' : undefined,
86
-
87
- reporter: process.env.CI
88
- ? [['html', { open: 'never' }], ['github']]
89
- : [['html', { open: 'on-failure' }]],
90
-
91
- timeout: 30_000,
92
- expect: { timeout: 5_000 },
93
-
94
- use: {
95
- baseURL: process.env.BASE_URL || 'http://localhost:4000',
96
- actionTimeout: 10_000,
97
- navigationTimeout: 15_000,
98
- trace: 'on-first-retry',
99
- screenshot: 'only-on-failure',
100
- video: 'retain-on-failure',
101
- locale: 'en-US',
102
- timezoneId: 'America/Los_Angeles',
103
- },
104
-
105
- projects: [
106
- { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
107
- { name: 'firefox', use: { ...devices['Desktop Firefox'] } },
108
- { name: 'webkit', use: { ...devices['Desktop Safari'] } },
109
- { name: 'mobile-chrome', use: { ...devices['Pixel 7'] } },
110
- { name: 'mobile-safari', use: { ...devices['iPhone 14'] } },
111
- ],
112
-
113
- webServer: {
114
- command: 'npm run start',
115
- url: 'http://localhost:4000',
116
- reuseExistingServer: !process.env.CI,
117
- timeout: 120_000,
118
- stdout: 'pipe',
119
- stderr: 'pipe',
120
- },
121
- });
122
- ```
123
-
124
- ## Patterns
125
-
126
- ### Environment-Specific Configuration
127
-
128
- **Use when**: Tests run against dev, staging, and production environments.
129
-
130
- ```ts
131
- // playwright.config.ts
132
- import { defineConfig } from '@playwright/test';
133
- import dotenv from 'dotenv';
134
- import path from 'path';
135
-
136
- const ENV = process.env.TEST_ENV || 'local';
137
- dotenv.config({ path: path.resolve(__dirname, `.env.${ENV}`) });
138
-
139
- const envConfig: Record<string, { baseURL: string; retries: number }> = {
140
- local: { baseURL: 'http://localhost:4000', retries: 0 },
141
- staging: { baseURL: 'https://staging.myapp.com', retries: 2 },
142
- prod: { baseURL: 'https://myapp.com', retries: 2 },
143
- };
144
-
145
- export default defineConfig({
146
- testDir: './e2e',
147
- retries: envConfig[ENV].retries,
148
- use: { baseURL: envConfig[ENV].baseURL },
149
- });
150
- ```
151
-
152
- ```bash
153
- TEST_ENV=staging npx playwright test
154
- TEST_ENV=prod npx playwright test --grep @smoke
155
- ```
156
-
157
- ### Setup Project with Dependencies
158
-
159
- **Use when**: Tests need shared authentication state before running.
160
-
161
- ```ts
162
- // playwright.config.ts
163
- import { defineConfig, devices } from '@playwright/test';
164
-
165
- export default defineConfig({
166
- testDir: './e2e',
167
- projects: [
168
- {
169
- name: 'setup',
170
- testMatch: /auth\.setup\.ts/,
171
- },
172
- {
173
- name: 'chromium',
174
- use: {
175
- ...devices['Desktop Chrome'],
176
- storageState: 'playwright/.auth/session.json',
177
- },
178
- dependencies: ['setup'],
179
- },
180
- {
181
- name: 'firefox',
182
- use: {
183
- ...devices['Desktop Firefox'],
184
- storageState: 'playwright/.auth/session.json',
185
- },
186
- dependencies: ['setup'],
187
- },
188
- ],
189
- });
190
- ```
191
-
192
- ```ts
193
- // e2e/auth.setup.ts
194
- import { test as setup, expect } from '@playwright/test';
195
-
196
- const authFile = 'playwright/.auth/session.json';
197
-
198
- setup('authenticate', async ({ page }) => {
199
- await page.goto('/login');
200
- await page.getByLabel('Username').fill('testuser@example.com');
201
- await page.getByLabel('Password').fill(process.env.TEST_PASSWORD!);
202
- await page.getByRole('button', { name: 'Log in' }).click();
203
- await expect(page.getByRole('heading', { name: 'Home' })).toBeVisible();
204
- await page.context().storageState({ path: authFile });
205
- });
206
- ```
207
-
208
- ### webServer with Build Step
209
-
210
- **Use when**: Tests need a running application server managed by Playwright.
211
-
212
- ```ts
213
- // playwright.config.ts
214
- import { defineConfig } from '@playwright/test';
215
-
216
- export default defineConfig({
217
- testDir: './e2e',
218
- use: { baseURL: 'http://localhost:4000' },
219
- webServer: {
220
- command: process.env.CI
221
- ? 'npm run build && npm run preview'
222
- : 'npm run dev',
223
- url: 'http://localhost:4000',
224
- reuseExistingServer: !process.env.CI,
225
- timeout: 120_000,
226
- env: {
227
- NODE_ENV: 'test',
228
- DB_URL: process.env.DB_URL || 'postgresql://localhost:5432/testdb',
229
- },
230
- },
231
- });
232
- ```
233
-
234
- ### globalSetup / globalTeardown
235
-
236
- **Use when**: One-time non-browser work like seeding a database. Runs once per test run.
237
-
238
- ```ts
239
- // playwright.config.ts
240
- import { defineConfig } from '@playwright/test';
241
-
242
- export default defineConfig({
243
- testDir: './e2e',
244
- globalSetup: './e2e/setup.ts',
245
- globalTeardown: './e2e/teardown.ts',
246
- });
247
- ```
248
-
249
- ```ts
250
- // e2e/setup.ts
251
- import { FullConfig } from '@playwright/test';
252
-
253
- export default async function globalSetup(config: FullConfig) {
254
- const { execSync } = await import('child_process');
255
- execSync('npx prisma db seed', { stdio: 'inherit' });
256
- process.env.TEST_RUN_ID = `run-${Date.now()}`;
257
- }
258
- ```
259
-
260
- ```ts
261
- // e2e/teardown.ts
262
- import { FullConfig } from '@playwright/test';
263
-
264
- export default async function globalTeardown(config: FullConfig) {
265
- const { execSync } = await import('child_process');
266
- execSync('npx prisma db push --force-reset', { stdio: 'inherit' });
267
- }
268
- ```
269
-
270
- ### Environment Variables with .env
271
-
272
- **Use when**: Managing secrets, URLs, or feature flags without hardcoding.
273
-
274
- ```bash
275
- # .env.example (commit this)
276
- BASE_URL=http://localhost:4000
277
- TEST_PASSWORD=
278
- API_KEY=
279
-
280
- # .env.local (gitignored)
281
- BASE_URL=http://localhost:4000
282
- TEST_PASSWORD=secret123
283
- API_KEY=dev-key-abc
284
-
285
- # .env.staging (gitignored)
286
- BASE_URL=https://staging.myapp.com
287
- TEST_PASSWORD=staging-pass
288
- API_KEY=staging-key-xyz
289
- ```
290
-
291
- ```bash
292
- # .gitignore
293
- .env
294
- .env.local
295
- .env.staging
296
- .env.production
297
- playwright/.auth/
298
- ```
299
-
300
- Install dotenv:
301
-
302
- ```bash
303
- npm install -D dotenv
304
- ```
305
-
306
- ### Tag-Based Test Filtering
307
-
308
- **Use when**: Running subsets of tests in different CI stages (PR vs nightly).
309
-
310
- ```ts
311
- // playwright.config.ts
312
- import { defineConfig } from '@playwright/test';
313
-
314
- export default defineConfig({
315
- testDir: './e2e',
316
-
317
- // Filter by tags in CI
318
- grep: process.env.CI ? /@smoke|@critical/ : undefined,
319
- grepInvert: process.env.CI ? /@flaky/ : undefined,
320
- });
321
- ```
322
-
323
- **Project-specific filtering:**
324
-
325
- ```ts
326
- // playwright.config.ts
327
- import { defineConfig, devices } from '@playwright/test';
328
-
329
- export default defineConfig({
330
- testDir: './e2e',
331
- projects: [
332
- {
333
- name: 'smoke',
334
- grep: /@smoke/,
335
- use: { ...devices['Desktop Chrome'] },
336
- },
337
- {
338
- name: 'regression',
339
- grepInvert: /@smoke/,
340
- use: { ...devices['Desktop Chrome'] },
341
- },
342
- {
343
- name: 'critical-only',
344
- grep: /@critical/,
345
- use: { ...devices['Desktop Chrome'] },
346
- },
347
- ],
348
- });
349
- ```
350
-
351
- ```bash
352
- # Run specific project
353
- npx playwright test --project=smoke
354
- npx playwright test --project=regression
355
- ```
356
-
357
- ### Artifact Collection Strategy
358
-
359
- | Setting | Local | CI | Reason |
360
- |---------|-------|-----|--------|
361
- | `trace` | `'off'` | `'on-first-retry'` | Traces are large; collect on failure only |
362
- | `screenshot` | `'off'` | `'only-on-failure'` | Useful for CI debugging |
363
- | `video` | `'off'` | `'retain-on-failure'` | Recording slows tests |
364
-
365
- ```ts
366
- // playwright.config.ts
367
- import { defineConfig } from '@playwright/test';
368
-
369
- export default defineConfig({
370
- testDir: './e2e',
371
- use: {
372
- trace: process.env.CI ? 'on-first-retry' : 'off',
373
- screenshot: process.env.CI ? 'only-on-failure' : 'off',
374
- video: process.env.CI ? 'retain-on-failure' : 'off',
375
- },
376
- });
377
- ```
378
-
379
- ## Anti-Patterns
380
-
381
- | Don't | Problem | Do Instead |
382
- |-------|---------|------------|
383
- | `timeout: 300_000` globally | Masks flaky tests; slow CI | Fix root cause; keep 30s default |
384
- | Hardcoded URLs: `page.goto('http://localhost:4000/login')` | Breaks in other environments | Use `baseURL` + relative paths |
385
- | All browsers on every PR | 3x CI time | Chromium on PRs; all on main |
386
- | `trace: 'on'` always | Huge artifacts, slow uploads | `trace: 'on-first-retry'` |
387
- | `video: 'on'` always | Massive storage; slow tests | `video: 'retain-on-failure'` |
388
- | Config in test files: `test.use({ viewport: {...} })` everywhere | Scattered, inconsistent | Define once in project config |
389
- | `retries: 3` locally | Hides flakiness | `retries: 0` local, `retries: 2` CI |
390
- | No `forbidOnly` in CI | Committed `test.only` runs single test | `forbidOnly: !!process.env.CI` |
391
- | `globalSetup` for browser auth | No browser context available | Use setup project with dependencies |
392
- | Committing `.env` with credentials | Security risk | Commit `.env.example` only |
393
-
394
- ## Troubleshooting
395
-
396
- ### baseURL Not Working
397
-
398
- **Cause**: Using absolute URL in `page.goto()` ignores `baseURL`.
399
-
400
- ```ts
401
- // Wrong - ignores baseURL
402
- await page.goto('http://localhost:4000/dashboard');
403
-
404
- // Correct - uses baseURL
405
- await page.goto('/dashboard');
406
- ```
407
-
408
- ### webServer Starts But Tests Get Connection Refused
409
-
410
- **Cause**: `webServer.url` doesn't match actual server address or health check returns non-200.
411
-
412
- ```ts
413
- webServer: {
414
- command: 'npm run dev',
415
- url: 'http://localhost:4000/api/health', // use real endpoint
416
- reuseExistingServer: !process.env.CI,
417
- timeout: 120_000,
418
- },
419
- ```
420
-
421
- ### Tests Pass Locally But Timeout in CI
422
-
423
- **Cause**: CI machines are slower. Increase timeouts and reduce workers:
424
-
425
- ```ts
426
- export default defineConfig({
427
- workers: process.env.CI ? '50%' : undefined,
428
- use: {
429
- navigationTimeout: process.env.CI ? 30_000 : 15_000,
430
- actionTimeout: process.env.CI ? 15_000 : 10_000,
431
- },
432
- });
433
- ```
434
-
435
- ### "Target page, context or browser has been closed"
436
-
437
- **Cause**: Test exceeded `timeout` and Playwright tore down browser during action.
438
-
439
- **Fix**: Don't increase global timeout. Find slow step using trace:
440
-
441
- ```bash
442
- npx playwright test --trace on
443
- npx playwright show-report
444
- ```
445
-
446
- ## Related
447
-
448
- - [test-tags.md](./test-tags.md) - tagging and filtering tests with `--grep`
449
- - [fixtures-hooks.md](./fixtures-hooks.md) - custom fixtures for per-test state
450
- - [test-suite-structure.md](test-suite-structure.md) - file structure and naming
451
- - [authentication.md](../advanced/authentication.md) - setup projects for shared auth
452
- - [projects-dependencies.md](./projects-dependencies.md) - advanced multi-project patterns