@arcadialdev/arcality 2.2.0

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 (97) hide show
  1. package/.agents/skills/e2e-testing-expert/SKILL.md +28 -0
  2. package/.agents/skills/frontend-design/LICENSE.txt +177 -0
  3. package/.agents/skills/frontend-design/SKILL.md +42 -0
  4. package/.agents/skills/nodejs-backend-patterns/SKILL.md +639 -0
  5. package/.agents/skills/nodejs-backend-patterns/references/advanced-patterns.md +430 -0
  6. package/.agents/skills/playwright-best-practices/LICENSE.md +7 -0
  7. package/.agents/skills/playwright-best-practices/README.md +147 -0
  8. package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
  9. package/.agents/skills/playwright-best-practices/advanced/authentication-flows.md +360 -0
  10. package/.agents/skills/playwright-best-practices/advanced/authentication.md +871 -0
  11. package/.agents/skills/playwright-best-practices/advanced/clock-mocking.md +364 -0
  12. package/.agents/skills/playwright-best-practices/advanced/mobile-testing.md +409 -0
  13. package/.agents/skills/playwright-best-practices/advanced/multi-context.md +288 -0
  14. package/.agents/skills/playwright-best-practices/advanced/multi-user.md +393 -0
  15. package/.agents/skills/playwright-best-practices/advanced/network-advanced.md +452 -0
  16. package/.agents/skills/playwright-best-practices/advanced/third-party.md +464 -0
  17. package/.agents/skills/playwright-best-practices/architecture/pom-vs-fixtures.md +363 -0
  18. package/.agents/skills/playwright-best-practices/architecture/test-architecture.md +369 -0
  19. package/.agents/skills/playwright-best-practices/architecture/when-to-mock.md +383 -0
  20. package/.agents/skills/playwright-best-practices/browser-apis/browser-apis.md +391 -0
  21. package/.agents/skills/playwright-best-practices/browser-apis/iframes.md +403 -0
  22. package/.agents/skills/playwright-best-practices/browser-apis/service-workers.md +504 -0
  23. package/.agents/skills/playwright-best-practices/browser-apis/websockets.md +403 -0
  24. package/.agents/skills/playwright-best-practices/core/annotations.md +424 -0
  25. package/.agents/skills/playwright-best-practices/core/assertions-waiting.md +361 -0
  26. package/.agents/skills/playwright-best-practices/core/configuration.md +452 -0
  27. package/.agents/skills/playwright-best-practices/core/fixtures-hooks.md +417 -0
  28. package/.agents/skills/playwright-best-practices/core/global-setup.md +434 -0
  29. package/.agents/skills/playwright-best-practices/core/locators.md +242 -0
  30. package/.agents/skills/playwright-best-practices/core/page-object-model.md +315 -0
  31. package/.agents/skills/playwright-best-practices/core/projects-dependencies.md +453 -0
  32. package/.agents/skills/playwright-best-practices/core/test-data.md +492 -0
  33. package/.agents/skills/playwright-best-practices/core/test-suite-structure.md +361 -0
  34. package/.agents/skills/playwright-best-practices/core/test-tags.md +298 -0
  35. package/.agents/skills/playwright-best-practices/debugging/console-errors.md +420 -0
  36. package/.agents/skills/playwright-best-practices/debugging/debugging.md +504 -0
  37. package/.agents/skills/playwright-best-practices/debugging/error-testing.md +360 -0
  38. package/.agents/skills/playwright-best-practices/debugging/flaky-tests.md +496 -0
  39. package/.agents/skills/playwright-best-practices/frameworks/angular.md +530 -0
  40. package/.agents/skills/playwright-best-practices/frameworks/nextjs.md +469 -0
  41. package/.agents/skills/playwright-best-practices/frameworks/react.md +531 -0
  42. package/.agents/skills/playwright-best-practices/frameworks/vue.md +574 -0
  43. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +468 -0
  44. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/docker.md +283 -0
  45. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/github-actions.md +546 -0
  46. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/gitlab.md +397 -0
  47. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/other-providers.md +521 -0
  48. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +371 -0
  49. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/performance.md +453 -0
  50. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/reporting.md +424 -0
  51. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +497 -0
  52. package/.agents/skills/playwright-best-practices/testing-patterns/accessibility.md +359 -0
  53. package/.agents/skills/playwright-best-practices/testing-patterns/api-testing.md +719 -0
  54. package/.agents/skills/playwright-best-practices/testing-patterns/browser-extensions.md +506 -0
  55. package/.agents/skills/playwright-best-practices/testing-patterns/canvas-webgl.md +493 -0
  56. package/.agents/skills/playwright-best-practices/testing-patterns/component-testing.md +500 -0
  57. package/.agents/skills/playwright-best-practices/testing-patterns/drag-drop.md +576 -0
  58. package/.agents/skills/playwright-best-practices/testing-patterns/electron.md +509 -0
  59. package/.agents/skills/playwright-best-practices/testing-patterns/file-operations.md +377 -0
  60. package/.agents/skills/playwright-best-practices/testing-patterns/file-upload-download.md +562 -0
  61. package/.agents/skills/playwright-best-practices/testing-patterns/forms-validation.md +561 -0
  62. package/.agents/skills/playwright-best-practices/testing-patterns/graphql-testing.md +331 -0
  63. package/.agents/skills/playwright-best-practices/testing-patterns/i18n.md +508 -0
  64. package/.agents/skills/playwright-best-practices/testing-patterns/performance-testing.md +476 -0
  65. package/.agents/skills/playwright-best-practices/testing-patterns/security-testing.md +430 -0
  66. package/.agents/skills/playwright-best-practices/testing-patterns/visual-regression.md +634 -0
  67. package/.env.example +21 -0
  68. package/README.md +30 -0
  69. package/bin/arcality.mjs +86 -0
  70. package/package.json +66 -0
  71. package/playwright.config.ts +12 -0
  72. package/scripts/cleanup-qmsdev.mjs +63 -0
  73. package/scripts/discover-view.mjs +52 -0
  74. package/scripts/extract-view.mjs +64 -0
  75. package/scripts/gen-and-run.mjs +838 -0
  76. package/scripts/init.mjs +290 -0
  77. package/scripts/migrate-to-central-out.mjs +157 -0
  78. package/scripts/postinstall.mjs +63 -0
  79. package/scripts/rebrand-report.mjs +241 -0
  80. package/scripts/setup.mjs +166 -0
  81. package/src/KnowledgeService.ts +239 -0
  82. package/src/arcalityClient.mjs +266 -0
  83. package/src/configLoader.mjs +179 -0
  84. package/src/configManager.mjs +172 -0
  85. package/src/consoleBanner.ts +32 -0
  86. package/src/envSetup.ts +205 -0
  87. package/src/index.ts +25 -0
  88. package/src/projectInspector.ts +42 -0
  89. package/src/services/collectiveMemoryService.ts +178 -0
  90. package/src/testRunner.ts +201 -0
  91. package/tests/_helpers/ArcalityReporter.ts +490 -0
  92. package/tests/_helpers/agentic-runner.spec.ts +741 -0
  93. package/tests/_helpers/ai-agent-helper.ts +1573 -0
  94. package/tests/_helpers/discover-view.spec.ts +238 -0
  95. package/tests/_helpers/extract-view.spec.ts +118 -0
  96. package/tests/_helpers/qa-tools.ts +333 -0
  97. package/tests/_helpers/smart-action.spec.ts +1458 -0
@@ -0,0 +1,468 @@
1
+ # CI/CD Integration
2
+
3
+ ## Table of Contents
4
+
5
+ 1. [GitHub Actions](#github-actions)
6
+ 2. [Docker](#docker)
7
+ 3. [Reporting](#reporting)
8
+ 4. [Sharding](#sharding)
9
+ 5. [Environment Management](#environment-management)
10
+ 6. [Caching](#caching)
11
+
12
+ ## GitHub Actions
13
+
14
+ ### Basic Workflow
15
+
16
+ ```yaml
17
+ # .github/workflows/playwright.yml
18
+ name: Playwright Tests
19
+
20
+ on:
21
+ push:
22
+ branches: [main]
23
+ pull_request:
24
+ branches: [main]
25
+
26
+ jobs:
27
+ test:
28
+ timeout-minutes: 60
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+
33
+ - uses: actions/setup-node@v4
34
+ with:
35
+ node-version: 22
36
+ cache: "npm"
37
+
38
+ - name: Install dependencies
39
+ run: npm ci
40
+
41
+ - name: Install Playwright browsers
42
+ run: npx playwright install --with-deps
43
+
44
+ - name: Run Playwright tests
45
+ run: npx playwright test
46
+
47
+ - uses: actions/upload-artifact@v4
48
+ if: ${{ !cancelled() }}
49
+ with:
50
+ name: playwright-report
51
+ path: playwright-report/
52
+ retention-days: 30
53
+ ```
54
+
55
+ ### With Sharding
56
+
57
+ ```yaml
58
+ name: Playwright Tests
59
+
60
+ on:
61
+ push:
62
+ branches: [main]
63
+
64
+ jobs:
65
+ test:
66
+ timeout-minutes: 60
67
+ runs-on: ubuntu-latest
68
+ strategy:
69
+ fail-fast: false
70
+ matrix:
71
+ shardIndex: [1, 2, 3, 4]
72
+ shardTotal: [4]
73
+ steps:
74
+ - uses: actions/checkout@v4
75
+
76
+ - uses: actions/setup-node@v4
77
+ with:
78
+ node-version: 22
79
+ cache: "npm"
80
+
81
+ - name: Install dependencies
82
+ run: npm ci
83
+
84
+ - name: Install Playwright browsers
85
+ run: npx playwright install --with-deps
86
+
87
+ - name: Run Playwright tests
88
+ run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
89
+
90
+ - name: Upload blob report
91
+ if: ${{ !cancelled() }}
92
+ uses: actions/upload-artifact@v4
93
+ with:
94
+ name: blob-report-${{ matrix.shardIndex }}
95
+ path: blob-report
96
+ retention-days: 1
97
+
98
+ merge-reports:
99
+ if: ${{ !cancelled() }}
100
+ needs: [test]
101
+ runs-on: ubuntu-latest
102
+ steps:
103
+ - uses: actions/checkout@v4
104
+
105
+ - uses: actions/setup-node@v4
106
+ with:
107
+ node-version: 22
108
+ cache: "npm"
109
+
110
+ - name: Install dependencies
111
+ run: npm ci
112
+
113
+ - name: Download blob reports
114
+ uses: actions/download-artifact@v4
115
+ with:
116
+ path: all-blob-reports
117
+ pattern: blob-report-*
118
+ merge-multiple: true
119
+
120
+ - name: Merge reports
121
+ run: npx playwright merge-reports --reporter html ./all-blob-reports
122
+
123
+ - name: Upload HTML report
124
+ uses: actions/upload-artifact@v4
125
+ with:
126
+ name: html-report
127
+ path: playwright-report
128
+ retention-days: 14
129
+ ```
130
+
131
+ ### With Container
132
+
133
+ ```yaml
134
+ jobs:
135
+ test:
136
+ timeout-minutes: 60
137
+ runs-on: ubuntu-latest
138
+ container:
139
+ # Use latest or more appropriate playwright version (match package.json)
140
+ image: mcr.microsoft.com/playwright:v1.40.0-jammy
141
+ steps:
142
+ - uses: actions/checkout@v4
143
+
144
+ - uses: actions/setup-node@v4
145
+ with:
146
+ node-version: 22
147
+ cache: "npm"
148
+
149
+ - name: Install dependencies
150
+ run: npm ci
151
+
152
+ - name: Run tests
153
+ run: npx playwright test
154
+ env:
155
+ HOME: /root
156
+ ```
157
+
158
+ ## Docker
159
+
160
+ ### Dockerfile
161
+
162
+ ```dockerfile
163
+ FROM mcr.microsoft.com/playwright:v1.40.0-jammy
164
+
165
+ WORKDIR /app
166
+
167
+ COPY package*.json ./
168
+ RUN npm ci
169
+
170
+ COPY . .
171
+
172
+ CMD ["npx", "playwright", "test"]
173
+ ```
174
+
175
+ ### Docker Compose
176
+
177
+ ```yaml
178
+ # docker-compose.yml
179
+ version: "3.8"
180
+
181
+ services:
182
+ playwright:
183
+ build: .
184
+ volumes:
185
+ - ./playwright-report:/app/playwright-report
186
+ - ./test-results:/app/test-results
187
+ environment:
188
+ - CI=true
189
+ - BASE_URL=http://app:3000
190
+ depends_on:
191
+ - app
192
+
193
+ app:
194
+ build: ./app
195
+ ports:
196
+ - "3000:3000"
197
+ ```
198
+
199
+ ### Run with Docker
200
+
201
+ ```bash
202
+ # Build and run
203
+ docker build -t playwright-tests .
204
+ docker run --rm -v $(pwd)/playwright-report:/app/playwright-report playwright-tests
205
+
206
+ # With docker-compose
207
+ docker-compose run --rm playwright
208
+ ```
209
+
210
+ ## Reporting
211
+
212
+ ### Configuration
213
+
214
+ ```typescript
215
+ // playwright.config.ts
216
+ export default defineConfig({
217
+ reporter: [
218
+ // Always generate
219
+ ["html", { outputFolder: "playwright-report" }],
220
+
221
+ // Console output
222
+ ["list"],
223
+
224
+ // CI-friendly
225
+ ["github"], // GitHub Actions annotations
226
+
227
+ // JUnit for CI integration
228
+ ["junit", { outputFile: "results.xml" }],
229
+
230
+ // JSON for custom processing
231
+ ["json", { outputFile: "results.json" }],
232
+
233
+ // Blob for merging shards
234
+ ["blob", { outputDir: "blob-report" }],
235
+ ],
236
+ });
237
+ ```
238
+
239
+ ### CI-Specific Reporter
240
+
241
+ ```typescript
242
+ export default defineConfig({
243
+ reporter: process.env.CI
244
+ ? [["github"], ["blob"], ["html"]]
245
+ : [["list"], ["html"]],
246
+ });
247
+ ```
248
+
249
+ ## Sharding
250
+
251
+ ### Command Line
252
+
253
+ ```bash
254
+ # Split into 4 shards, run shard 1
255
+ npx playwright test --shard=1/4
256
+
257
+ # Run shard 2
258
+ npx playwright test --shard=2/4
259
+ ```
260
+
261
+ ### Configuration
262
+
263
+ ```typescript
264
+ // playwright.config.ts
265
+ export default defineConfig({
266
+ // Evenly distribute tests across shards
267
+ fullyParallel: true,
268
+
269
+ // For blob reporter to merge later
270
+ reporter: process.env.CI ? [["blob"]] : [["html"]],
271
+ });
272
+ ```
273
+
274
+ ### Merge Sharded Reports
275
+
276
+ ```bash
277
+ # After all shards complete, merge blob reports
278
+ npx playwright merge-reports --reporter html ./all-blob-reports
279
+ ```
280
+
281
+ ## Environment Management
282
+
283
+ ### Environment Variables
284
+
285
+ ```typescript
286
+ // playwright.config.ts
287
+ import { defineConfig } from "@playwright/test";
288
+ import dotenv from "dotenv";
289
+
290
+ // Load env file based on environment
291
+ dotenv.config({ path: `.env.${process.env.NODE_ENV || "development"}` });
292
+
293
+ export default defineConfig({
294
+ use: {
295
+ baseURL: process.env.BASE_URL || "http://localhost:3000",
296
+ },
297
+ });
298
+ ```
299
+
300
+ ### Multiple Environments
301
+
302
+ ```yaml
303
+ # .github/workflows/playwright.yml
304
+ jobs:
305
+ test:
306
+ strategy:
307
+ matrix:
308
+ environment: [staging, production]
309
+ steps:
310
+ - name: Run tests
311
+ run: npx playwright test
312
+ env:
313
+ BASE_URL: ${{ matrix.environment == 'staging' && 'https://staging.example.com' || 'https://example.com' }}
314
+ TEST_USER: ${{ secrets[format('TEST_USER_{0}', matrix.environment)] }}
315
+ ```
316
+
317
+ ### Secrets Management
318
+
319
+ ```yaml
320
+ # GitHub Actions secrets
321
+ - name: Run tests
322
+ run: npx playwright test
323
+ env:
324
+ TEST_EMAIL: ${{ secrets.TEST_EMAIL }}
325
+ TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
326
+ ```
327
+
328
+ ```typescript
329
+ // tests use environment variables
330
+ test("login", async ({ page }) => {
331
+ await page.getByLabel("Email").fill(process.env.TEST_EMAIL!);
332
+ await page.getByLabel("Password").fill(process.env.TEST_PASSWORD!);
333
+ });
334
+ ```
335
+
336
+ ## Caching
337
+
338
+ ### Cache Playwright Browsers
339
+
340
+ ```yaml
341
+ - name: Cache Playwright browsers
342
+ uses: actions/cache@v4
343
+ id: playwright-cache
344
+ with:
345
+ path: ~/.cache/ms-playwright
346
+ key: playwright-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
347
+
348
+ - name: Install Playwright browsers
349
+ if: steps.playwright-cache.outputs.cache-hit != 'true'
350
+ run: npx playwright install --with-deps
351
+
352
+ - name: Install system deps only
353
+ if: steps.playwright-cache.outputs.cache-hit == 'true'
354
+ run: npx playwright install-deps
355
+ ```
356
+
357
+ ### Cache Node Modules
358
+
359
+ ```yaml
360
+ - uses: actions/setup-node@v4
361
+ with:
362
+ node-version: 22
363
+ cache: "npm"
364
+
365
+ - name: Install dependencies
366
+ run: npm ci
367
+ ```
368
+
369
+ ## Tag-Based Test Filtering
370
+
371
+ ### Run Specific Tags in CI
372
+
373
+ ```yaml
374
+ # Run smoke tests on PR
375
+ - name: Run smoke tests
376
+ run: npx playwright test --grep @smoke
377
+
378
+ # Run full regression nightly
379
+ - name: Run regression
380
+ run: npx playwright test --grep @regression
381
+
382
+ # Exclude flaky tests
383
+ - name: Run stable tests
384
+ run: npx playwright test --grep-invert @flaky
385
+ ```
386
+
387
+ ### PR vs Nightly Strategy
388
+
389
+ ```yaml
390
+ # .github/workflows/pr.yml - Fast feedback
391
+ - name: Run critical tests
392
+ run: npx playwright test --grep "@smoke|@critical"
393
+
394
+ # .github/workflows/nightly.yml - Full coverage
395
+ - name: Run all tests
396
+ run: npx playwright test --grep-invert @flaky
397
+ ```
398
+
399
+ ### Tag Filtering in Config
400
+
401
+ ```typescript
402
+ // playwright.config.ts
403
+ export default defineConfig({
404
+ grep: process.env.CI ? /@smoke|@critical/ : undefined,
405
+ grepInvert: process.env.CI ? /@flaky/ : undefined,
406
+ });
407
+ ```
408
+
409
+ ### Project-Based Tag Filtering
410
+
411
+ ```typescript
412
+ // playwright.config.ts
413
+ export default defineConfig({
414
+ projects: [
415
+ {
416
+ name: "smoke",
417
+ grep: /@smoke/,
418
+ },
419
+ {
420
+ name: "regression",
421
+ grepInvert: /@smoke/,
422
+ },
423
+ ],
424
+ });
425
+ ```
426
+
427
+ ## Best Practices
428
+
429
+ | Practice | Benefit |
430
+ | ----------------------------- | ------------------------- |
431
+ | Use `npm ci` | Deterministic installs |
432
+ | Run headless in CI | Faster, no display needed |
433
+ | Set retries in CI only | Handle flakiness |
434
+ | Upload artifacts on failure | Debug failures |
435
+ | Use sharding for large suites | Faster execution |
436
+ | Cache browsers | Faster setup |
437
+ | Use blob reporter for shards | Merge reports correctly |
438
+ | Use tags for PR vs nightly | Fast feedback + coverage |
439
+ | Exclude @flaky in CI | Stable pipeline |
440
+
441
+ ## CI Configuration Reference
442
+
443
+ ```typescript
444
+ // playwright.config.ts - CI optimized
445
+ export default defineConfig({
446
+ testDir: "./tests",
447
+ fullyParallel: true,
448
+ forbidOnly: !!process.env.CI,
449
+ retries: process.env.CI ? 2 : 0,
450
+ workers: process.env.CI ? 1 : undefined,
451
+ reporter: process.env.CI
452
+ ? [["github"], ["blob"], ["html"]]
453
+ : [["list"], ["html"]],
454
+ use: {
455
+ baseURL: process.env.BASE_URL || "http://localhost:3000",
456
+ trace: "on-first-retry",
457
+ screenshot: "only-on-failure",
458
+ video: "on-first-retry",
459
+ },
460
+ });
461
+ ```
462
+
463
+ ## Related References
464
+
465
+ - **Test tags**: See [test-tags.md](../core/test-tags.md) for tagging and filtering patterns
466
+ - **Performance optimization**: See [performance.md](performance.md) for sharding and parallelization
467
+ - **Debugging CI failures**: See [debugging.md](../debugging/debugging.md) for troubleshooting
468
+ - **Test reporting**: See [debugging.md](../debugging/debugging.md) for trace viewer usage