@futdevpro/dynamo-e2e 1.7.0 → 1.9.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 (140) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/CONTRIBUTING.md +90 -0
  3. package/README.md +2 -2
  4. package/build/_modules/cwv/_collections/cwv-emission.util.d.ts.map +1 -1
  5. package/build/_modules/cwv/_collections/cwv-emission.util.js +6 -1
  6. package/build/_modules/cwv/_collections/cwv-emission.util.js.map +1 -1
  7. package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts +32 -0
  8. package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts.map +1 -0
  9. package/build/_modules/cwv/_collections/inp-interaction-script.const.js +59 -0
  10. package/build/_modules/cwv/_collections/inp-interaction-script.const.js.map +1 -0
  11. package/build/_modules/cwv/cwv-suite.generator.d.ts.map +1 -1
  12. package/build/_modules/cwv/cwv-suite.generator.js +9 -1
  13. package/build/_modules/cwv/cwv-suite.generator.js.map +1 -1
  14. package/build/_modules/cwv/index.d.ts +1 -0
  15. package/build/_modules/cwv/index.d.ts.map +1 -1
  16. package/build/_modules/cwv/index.js +1 -0
  17. package/build/_modules/cwv/index.js.map +1 -1
  18. package/build/_modules/cwv/inp-emit-integration.spec.d.ts +2 -0
  19. package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +1 -0
  20. package/build/_modules/cwv/inp-emit-integration.spec.js +43 -0
  21. package/build/_modules/cwv/inp-emit-integration.spec.js.map +1 -0
  22. package/build/_modules/cwv/inp-script.spec.d.ts +2 -0
  23. package/build/_modules/cwv/inp-script.spec.d.ts.map +1 -0
  24. package/build/_modules/cwv/inp-script.spec.js +35 -0
  25. package/build/_modules/cwv/inp-script.spec.js.map +1 -0
  26. package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts +51 -0
  27. package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts.map +1 -0
  28. package/build/_modules/runtime/_services/wave-2b-page-objects.js +106 -0
  29. package/build/_modules/runtime/_services/wave-2b-page-objects.js.map +1 -0
  30. package/build/_modules/runtime/fixtures.d.ts +12 -0
  31. package/build/_modules/runtime/fixtures.d.ts.map +1 -1
  32. package/build/_modules/runtime/fixtures.js +16 -0
  33. package/build/_modules/runtime/fixtures.js.map +1 -1
  34. package/build/_modules/runtime/index.d.ts +1 -0
  35. package/build/_modules/runtime/index.d.ts.map +1 -1
  36. package/build/_modules/runtime/index.js +1 -0
  37. package/build/_modules/runtime/index.js.map +1 -1
  38. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +2 -0
  39. package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +1 -0
  40. package/build/_modules/runtime/wave-2b-page-objects.spec.js +130 -0
  41. package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +1 -0
  42. package/coverage/contracts/_collections/index.html +1 -1
  43. package/coverage/contracts/_collections/index.ts.html +1 -1
  44. package/coverage/contracts/_collections/utils/index.html +1 -1
  45. package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
  46. package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  47. package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  48. package/coverage/contracts/_enums/index.html +1 -1
  49. package/coverage/contracts/_enums/index.ts.html +1 -1
  50. package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  51. package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  52. package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  53. package/coverage/contracts/index.html +1 -1
  54. package/coverage/contracts/index.ts.html +1 -1
  55. package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  56. package/coverage/cwv/_collections/cwv-emission.util.ts.html +103 -88
  57. package/coverage/cwv/_collections/index.html +22 -7
  58. package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
  59. package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  60. package/coverage/cwv/cwv-suite.generator.ts.html +61 -34
  61. package/coverage/cwv/index.html +7 -7
  62. package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
  63. package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
  64. package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
  65. package/coverage/generators/_collections/index.html +1 -1
  66. package/coverage/generators/_collections/spec-emission.util.ts.html +33 -33
  67. package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
  68. package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
  69. package/coverage/generators/form-suite.generator.ts.html +1 -1
  70. package/coverage/generators/index.html +1 -1
  71. package/coverage/generators/viewport-suite.generator.ts.html +1 -1
  72. package/coverage/index.html +28 -28
  73. package/coverage/lcov-report/contracts/_collections/index.html +1 -1
  74. package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
  75. package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
  76. package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
  77. package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
  78. package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
  79. package/coverage/lcov-report/contracts/_enums/index.html +1 -1
  80. package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
  81. package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
  82. package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
  83. package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
  84. package/coverage/lcov-report/contracts/index.html +1 -1
  85. package/coverage/lcov-report/contracts/index.ts.html +1 -1
  86. package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
  87. package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +103 -88
  88. package/coverage/lcov-report/cwv/_collections/index.html +22 -7
  89. package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
  90. package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
  91. package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +61 -34
  92. package/coverage/lcov-report/cwv/index.html +7 -7
  93. package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
  94. package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
  95. package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
  96. package/coverage/lcov-report/generators/_collections/index.html +1 -1
  97. package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +33 -33
  98. package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
  99. package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
  100. package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
  101. package/coverage/lcov-report/generators/index.html +1 -1
  102. package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
  103. package/coverage/lcov-report/index.html +28 -28
  104. package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  105. package/coverage/lcov-report/runtime/_collections/index.html +1 -1
  106. package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
  107. package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
  108. package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
  109. package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
  110. package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
  111. package/coverage/lcov-report/runtime/_services/index.html +24 -9
  112. package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
  113. package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
  114. package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
  115. package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
  116. package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
  117. package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +397 -0
  118. package/coverage/lcov-report/runtime/index.html +5 -5
  119. package/coverage/lcov-report/runtime/index.ts.html +7 -4
  120. package/coverage/lcov.info +463 -186
  121. package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
  122. package/coverage/runtime/_collections/index.html +1 -1
  123. package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
  124. package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
  125. package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
  126. package/coverage/runtime/_services/field-page-object.ts.html +1 -1
  127. package/coverage/runtime/_services/form-page-object.ts.html +1 -1
  128. package/coverage/runtime/_services/index.html +24 -9
  129. package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
  130. package/coverage/runtime/_services/logger.service.ts.html +1 -1
  131. package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
  132. package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
  133. package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
  134. package/coverage/runtime/_services/wave-2b-page-objects.ts.html +397 -0
  135. package/coverage/runtime/index.html +5 -5
  136. package/coverage/runtime/index.ts.html +7 -4
  137. package/coverage/tmp/coverage-222216-1781070051665-0.json +1 -0
  138. package/coverage/tmp/{coverage-221672-1781069317212-0.json → coverage-225712-1781070050591-0.json} +1 -1
  139. package/package.json +1 -1
  140. package/coverage/tmp/coverage-224768-1781069318181-0.json +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,43 @@
3
3
  Minden release a `dynamo-e2e-foundation` HYPERPLAN MP-N ütemezést követi.
4
4
  Verzióformátum: `MM.mm.p` (két-számjegyes major-minor, Dynamo-konvenció).
5
5
 
6
+ ## [01.09.0] — 2026-06-10
7
+
8
+ ### Added (Wave-3 INP integration + Wave-2b fixture + CONTRIBUTING)
9
+ - `DyE2E_CWVSuite_Generator.emit()` Wave-3 INP integration:
10
+ - `thresholds.inp_p75_ms` jelenléte triggereli az INP page-script
11
+ inline-deklarálását
12
+ - Per-iter `page.addInitScript(DYE2E_INP_PAGE_SCRIPT)` feltételes hivás
13
+ - `page.evaluate(__dye2e_inp_snapshot__)` automatikus snapshot-trigger
14
+ - `INP` az asszertion-table-ban (LCP + CLS + INP + FCP + TTFB)
15
+ - `dye2eTest` fixture bővítve Wave-2b page-object factory-kkal:
16
+ `chipSelectPO`, `autocompletePO`, `colorPickerPO`, `filePO`, `richTextPO`
17
+ - `CONTRIBUTING.md` — hozzájárulási útmutató (setup, checklist, branch-strat,
18
+ verziózás, test-case-mátrix-bővítés, code-style, CICD)
19
+
20
+ ### Test
21
+ - 167/0 Jasmine zöld (162 előbb + 5 INP integration spec)
22
+ - Coverage: 98.3% statements / 86.28% branches / 97.24% functions / 98.3% lines
23
+
24
+ ## [01.08.0] — 2026-06-10
25
+
26
+ ### Added (Wave-3 INP + Wave-2b page-objects)
27
+ - **Wave-3 INP page-script** (`cwv/_collections/inp-interaction-script.const.ts`):
28
+ - `DYE2E_INP_PAGE_SCRIPT` — `PerformanceObserver` `event` type +
29
+ `interactionId` filter; longestInteraction → INP p75
30
+ - Re-injection guard (`__dye2e_inp_setup__`)
31
+ - `DyE2E_INPInteraction_Shape` typed driver-interface
32
+ - **Wave-2b page-objects** (`runtime/_services/wave-2b-page-objects.ts`):
33
+ - `DyE2E_ChipSelectPageObject` — clickChip + isSelected (class+aria)
34
+ - `DyE2E_AutocompletePageObject` — fillAndSuggest + selectSuggestion
35
+ - `DyE2E_ColorPickerPageObject` — setColor + getCurrentColor
36
+ - `DyE2E_FilePageObject` — upload (single/multi) + clear
37
+ - `DyE2E_RichTextPageObject` — fill + textContent (contenteditable scope)
38
+
39
+ ### Test
40
+ - 162/0 Jasmine zöld (142 előbb + 13 Wave-2b PO + 7 INP)
41
+ - Coverage: 98.29% statements / 86.19% branches / 97.24% functions / 98.29% lines
42
+
6
43
  ## [01.07.0] — 2026-06-10
7
44
 
8
45
  ### Added (Wave-2b emission impl)
@@ -0,0 +1,90 @@
1
+ # Contributing — `@futdevpro/dynamo-e2e`
2
+
3
+ Köszönjük, hogy hozzájárulsz! Ez egy bedrock-package a Dynamo + FDP
4
+ ecosystem-hez. A módosítások N-szeresen fan-out-elnek a consumer-projekteken,
5
+ így minimális defensiveness elvárt.
6
+
7
+ ## Setup
8
+
9
+ ```bash
10
+ git clone git@github.com:futdevpro/dynamo-e2e.git
11
+ cd dynamo-e2e
12
+ pnpm run prep
13
+ ```
14
+
15
+ ## Develop
16
+
17
+ ```bash
18
+ pnpm run build-base # tsc → ./build
19
+ pnpm test # build + jasmine
20
+ pnpm run test:coverage # build + c8 jasmine — 75/65/75/75 küszöb
21
+ ```
22
+
23
+ ## Hozzájárulási checklist
24
+
25
+ A PR-előtt:
26
+
27
+ - [ ] `pnpm test` zöld lokálisan
28
+ - [ ] `pnpm run test:coverage` zöld (mindenhol >75% statements / functions / lines, >65% branches)
29
+ - [ ] Új feature → spec + getting-started + per-fieldtype-test-matrix update
30
+ - [ ] Deterministic emission — `STAMP_BUILT_AT` const, semmilyen `Date.now()` a generator-ban
31
+ - [ ] Pure JavaScript a page-script-ekben (NEM TS — a browser direkt futtatja)
32
+ - [ ] JSDoc minden új public export-on
33
+ - [ ] CHANGELOG.md új section a release-version-nel
34
+
35
+ ## Branch-strategy
36
+
37
+ - `master` — kötelező-zöld; CICD-publish-eli
38
+ - `feat/*` — feature branches; PR-rel mergel
39
+ - `fix/*` — bug-fix branches
40
+ - `chore/*` — non-functional changes (docs, deps)
41
+
42
+ ## Verziózás
43
+
44
+ - **Major (`MM.x.x`)**: API-break. **NINCS automatikus** — emberi
45
+ decision (lásd MP-07 SP-F példa)
46
+ - **Minor (`MM.mm.0`)**: új feature, additive
47
+ - **Patch (`MM.mm.p`)**: bug-fix, doc-only
48
+
49
+ A `dynamo-cli` `dc bump-version` husky-pre-commit auto-bumpolja a
50
+ patch-szegmenset. Major/minor-bumpot manuálisan kell beállítani a
51
+ `package.json`-ban a commit előtt — ÉS a CHANGELOG-ot is.
52
+
53
+ ## A test-case-mátrix-bővítés (Wave-2+)
54
+
55
+ Új field-type-hozzáadás:
56
+
57
+ 1. `src/_modules/contracts/_collections/test-case-sets/<type>-field-test-cases.const.ts`
58
+ 2. Hozzáfűzd a `FIELD_TYPE_TEST_CASE_REGISTRY`-be
59
+ 3. `src/_modules/generators/_collections/field-emission.util.ts` `emitInteraction` + `emitAssertion` dispatch-ágat add hozzá
60
+ 4. (Opcionális) `src/_modules/runtime/_services/<type>-page-object.ts` page-object + fixture
61
+ 5. Specifikációs `__documentations/per-fieldtype-test-matrix.md` táblát bővíts
62
+ 6. Specifikáció `cwv|generators|runtime` modulon test minden új dispatch-ágra
63
+
64
+ ## Code style
65
+
66
+ - TypeScript strict-laza (lásd `tsconfig.json`)
67
+ - Hunglish dokumentáció + Hungarian inline-comment (memory: project konvenció)
68
+ - Top-of-file imports (`import` only, NEM `require()`)
69
+ - Naming: `DyE2E_*` per Dynamo-konvenció (DataModel: `_DataModel`, Service: `_Service`, stb.)
70
+ - ESLint: `pnpm lint` (`@futdevpro/dynamo-eslint` config)
71
+
72
+ ## CICD
73
+
74
+ - A push automatikusan triggereli az Overseer pipeline-t
75
+ - A `.dynamo/pipeline.cicd.config.json` 9 step-pel:
76
+ discord-start → pre-flight → install → build → test → **coverage** → npm-publish → pipeline-report → discord-result
77
+ - A `coverage` step a 75% küszöb alatti merge-et blokkolja
78
+ - A `npm-publish` step `skipIfPublished: true` — manual `npm publish` is OK
79
+
80
+ ## Memory + plan-háló
81
+
82
+ A nagyobb feature-ek a `__documentations/plans/dynamo-e2e-foundation/`
83
+ HYPERPLAN.md + MP-N file-okba kerülnek először. Az implementáció után a
84
+ CHANGELOG.md-be kerül a release-summary.
85
+
86
+ ## Kapcsolat
87
+
88
+ - Issues: github.com/futdevpro/dynamo-e2e/issues
89
+ - Maintainer: @itharen (Tahi-Toth Balazs)
90
+ - Discord: #bedrock-builds
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @futdevpro/dynamo-e2e
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/@futdevpro/dynamo-e2e.svg?label=npm)](https://www.npmjs.com/package/@futdevpro/dynamo-e2e)
4
- [![coverage](https://img.shields.io/badge/coverage-98.18%25-brightgreen.svg)](./coverage/)
5
- [![specs](https://img.shields.io/badge/specs-142%2F0-brightgreen.svg)](./src/)
4
+ [![coverage](https://img.shields.io/badge/coverage-98.3%25-brightgreen.svg)](./coverage/)
5
+ [![specs](https://img.shields.io/badge/specs-167%2F0-brightgreen.svg)](./src/)
6
6
  [![hyperplan](https://img.shields.io/badge/hyperplan-109%2F112-brightgreen.svg)](./__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md)
7
7
 
8
8
  End-to-end testing engine for the Dynamo + FDP ecosystem.
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AAC5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAGtG;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,+BAA+B,EACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,6BAA6B,EACzC,SAAS,EAAE,MAAM,GAChB,MAAM;CA+EV"}
1
+ {"version":3,"file":"cwv-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AAC5G,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAGtG;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,+BAA+B,EACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,6BAA6B,EACzC,SAAS,EAAE,MAAM,GAChB,MAAM;CAoFV"}
@@ -23,6 +23,7 @@ class DyE2E_CWVEmission_Util {
23
23
  const assertions = [
24
24
  ['lcp', thresholds.lcp_p75_ms, 'ms'],
25
25
  ['cls', thresholds.cls_p75, ''],
26
+ ['inp', thresholds.inp_p75_ms, 'ms'],
26
27
  ['fcp', thresholds.fcp_p75_ms, 'ms'],
27
28
  ['ttfb', thresholds.ttfb_p75_ms, 'ms'],
28
29
  ]
@@ -34,13 +35,17 @@ class DyE2E_CWVEmission_Util {
34
35
 
35
36
  for (let iter: number = 0; iter < ${iterations}; iter++) {
36
37
  await page.addInitScript({ content: DYE2E_WEB_VITALS_PAGE_SCRIPT });
38
+ if (typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined') {
39
+ await page.addInitScript({ content: DYE2E_INP_PAGE_SCRIPT });
40
+ }
37
41
  const response = await page.goto(${spec_emission_util_1.DyE2E_SpecEmission_Util.valueLiteral(fullPath)});
38
42
  expect(response?.ok()).toBeTruthy();
39
43
  ${readyWait}
40
- // Force snapshot — trigger pagehide via page.evaluate
44
+ // Force snapshot — trigger pagehide via page.evaluate (LCP/CLS + opcionálisan INP)
41
45
  await page.evaluate((): void => {
42
46
  const w = window as any;
43
47
  if (typeof w.__dye2e_cwv_snapshot__ === 'function') { w.__dye2e_cwv_snapshot__(); }
48
+ if (typeof w.__dye2e_inp_snapshot__ === 'function') { w.__dye2e_inp_snapshot__(); }
44
49
  });
45
50
  const events: any[] = await page.evaluate(() => (window as any).__dye2e_cwv_events__ || []);
46
51
  for (const ev of events) {
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":";;;AAEA,yFAA2F;AAE3F;;;;;;;;;;;GAWG;AACH,MAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAsC,EACtC,UAAkB,EAClB,UAAyC,EACzC,SAAiB;QAEjB,MAAM,QAAQ,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpF,MAAM,SAAS,GAAW,KAAK,CAAC,YAAY;YAC1C,CAAC,CAAC,sBAAsB,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,0CAA0C;YAC1H,CAAC,CAAC,6CAA6C,CAAC;QAElD,MAAM,UAAU,GAAW;YACzB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/B,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;SACvC;aACE,MAAM,CAAC,CAAC,CAAuC,EAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAuC,EAAU,EAAE,CAC5E,gBAAgB,GAAG,kCAAkC,GAAG,gBAAgB,GAAG,CAAC,WAAW,EAAE,cAAc,SAAS,GAAG,IAAI,0BAA0B,SAAS,OAAO,CAClK;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,cAAc,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;;;sCAGtG,UAAU;;uCAET,4CAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC;;MAE/E,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA4Ce,4CAAuB,CAAC,YAAY,CAAC,SAAS,CAAC;;;2BAGlD,4CAAuB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;8BACtD,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;;;IAGzE,UAAU;IACV,CAAC;IACH,CAAC;CACF;AAtFD,wDAsFC"}
1
+ {"version":3,"file":"cwv-emission.util.js","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/cwv-emission.util.ts"],"names":[],"mappings":";;;AAEA,yFAA2F;AAE3F;;;;;;;;;;;GAWG;AACH,MAAa,sBAAsB;IAEjC,MAAM,CAAC,cAAc,CACnB,KAAsC,EACtC,UAAkB,EAClB,UAAyC,EACzC,SAAiB;QAEjB,MAAM,QAAQ,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpF,MAAM,SAAS,GAAW,KAAK,CAAC,YAAY;YAC1C,CAAC,CAAC,sBAAsB,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,0CAA0C;YAC1H,CAAC,CAAC,6CAA6C,CAAC;QAElD,MAAM,UAAU,GAAW;YACzB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/B,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;YACpC,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;SACvC;aACE,MAAM,CAAC,CAAC,CAAuC,EAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAuC,EAAU,EAAE,CAC5E,gBAAgB,GAAG,kCAAkC,GAAG,gBAAgB,GAAG,CAAC,WAAW,EAAE,cAAc,SAAS,GAAG,IAAI,0BAA0B,SAAS,OAAO,CAClK;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,cAAc,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;;;sCAGtG,UAAU;;;;;uCAKT,4CAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC;;MAE/E,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA6Ce,4CAAuB,CAAC,YAAY,CAAC,SAAS,CAAC;;;2BAGlD,4CAAuB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;8BACtD,4CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;;;IAGzE,UAAU;IACV,CAAC;IACH,CAAC;CACF;AA3FD,wDA2FC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Wave-3 — INP (Interaction to Next Paint) page-side instrumentation.
3
+ *
4
+ * Az INP a `web-vitals/attribution` v4 lib egyik kulcs-metrikája — a
5
+ * felhasználói interakciók (click, keypress, pointerup) és a következő
6
+ * paint közötti latency. P75-asszertelhető.
7
+ *
8
+ * **PURE JavaScript** — a browser direkt futtatja. Az eredményeket a
9
+ * `window.__dye2e_cwv_events__` tömbbe rakja (összhangban a
10
+ * `DYE2E_WEB_VITALS_PAGE_SCRIPT`-tel).
11
+ *
12
+ * Lefedi: INP via `event` PerformanceObserver-rel (Chrome 96+).
13
+ */
14
+ export declare const DYE2E_INP_PAGE_SCRIPT: string;
15
+ /**
16
+ * Interaction-driver — a Node oldali Playwright-script ami INP-input-ot
17
+ * generál (page.click / keyboard.press / mouse.move). Wave-3 entry-point.
18
+ *
19
+ * NEM az itt definiált — csak a typed shape; az interakció a generated
20
+ * spec.ts-ben jön létre per consumer-projekt.
21
+ */
22
+ export interface DyE2E_INPInteraction_Shape {
23
+ /** 'click' | 'keyboard' | 'pointerdown' — interakció-fajta. */
24
+ type: 'click' | 'keyboard' | 'pointerdown';
25
+ /** Selector vagy testId a target-re. */
26
+ selector?: string;
27
+ /** Keyboard esetén billentyű (pl. 'Enter', 'a'). */
28
+ key?: string;
29
+ /** Pre-action timeout ms-ben (settle előtti vár). */
30
+ preActionTimeout?: number;
31
+ }
32
+ //# sourceMappingURL=inp-interaction-script.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-interaction-script.const.d.ts","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/inp-interaction-script.const.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAyC5B,CAAC;AAET;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,+DAA+D;IAC/D,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;IAC3C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DYE2E_INP_PAGE_SCRIPT = void 0;
4
+ /**
5
+ * Wave-3 — INP (Interaction to Next Paint) page-side instrumentation.
6
+ *
7
+ * Az INP a `web-vitals/attribution` v4 lib egyik kulcs-metrikája — a
8
+ * felhasználói interakciók (click, keypress, pointerup) és a következő
9
+ * paint közötti latency. P75-asszertelhető.
10
+ *
11
+ * **PURE JavaScript** — a browser direkt futtatja. Az eredményeket a
12
+ * `window.__dye2e_cwv_events__` tömbbe rakja (összhangban a
13
+ * `DYE2E_WEB_VITALS_PAGE_SCRIPT`-tel).
14
+ *
15
+ * Lefedi: INP via `event` PerformanceObserver-rel (Chrome 96+).
16
+ */
17
+ exports.DYE2E_INP_PAGE_SCRIPT = `
18
+ (function () {
19
+ var w = window;
20
+ if (!w.__dye2e_cwv_events__) { w.__dye2e_cwv_events__ = []; }
21
+ if (w.__dye2e_inp_setup__) { return; }
22
+ w.__dye2e_inp_setup__ = true;
23
+ var events = w.__dye2e_cwv_events__;
24
+ function pushEvent(metric, value, attribution) {
25
+ events.push({ metric: metric, value: value, attribution: attribution, t: Date.now() });
26
+ }
27
+
28
+ try {
29
+ var longestInteraction = 0;
30
+ var lastTarget = null;
31
+ var po = new PerformanceObserver(function (list) {
32
+ var entries = list.getEntries();
33
+ for (var i = 0; i < entries.length; i++) {
34
+ var e = entries[i];
35
+ var duration = e.duration || 0;
36
+ // INP — az interaction-id-vel rendelkező event-ek
37
+ if (e.interactionId && e.interactionId > 0 && duration > longestInteraction) {
38
+ longestInteraction = duration;
39
+ lastTarget = e.target ? (e.target.tagName + (e.target.id ? '#' + e.target.id : '')) : null;
40
+ }
41
+ }
42
+ });
43
+ po.observe({ type: 'event', buffered: true, durationThreshold: 0 });
44
+
45
+ // Snapshot on pagehide / visibility-change
46
+ var snapshot = function () {
47
+ if (longestInteraction > 0) {
48
+ pushEvent('inp', longestInteraction, { target: lastTarget });
49
+ }
50
+ };
51
+ addEventListener('pagehide', snapshot, true);
52
+ addEventListener('visibilitychange', function () {
53
+ if (document.visibilityState === 'hidden') { snapshot(); }
54
+ }, true);
55
+ w.__dye2e_inp_snapshot__ = snapshot;
56
+ } catch (e) { /* PerformanceObserver / event-timing nem támogatott */ }
57
+ })();
58
+ `.trim();
59
+ //# sourceMappingURL=inp-interaction-script.const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-interaction-script.const.js","sourceRoot":"","sources":["../../../../src/_modules/cwv/_collections/inp-interaction-script.const.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACU,QAAA,qBAAqB,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC5C,CAAC,IAAI,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-suite.generator.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/cwv-suite.generator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAEhG;;;;;;GAMG;AACH,qBAAa,wBAAwB;IAEnC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAkB;IAExD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,GAAG,MAAM;CA6B7D"}
1
+ {"version":3,"file":"cwv-suite.generator.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/cwv-suite.generator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAEhG;;;;;;GAMG;AACH,qBAAa,wBAAwB;IAEnC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAkB;IAExD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,GAAG,MAAM;CAqC7D"}
@@ -4,6 +4,7 @@ exports.DyE2E_CWVSuite_Generator = void 0;
4
4
  const cwv_default_thresholds_const_1 = require("../contracts/_collections/constants/cwv-default-thresholds.const");
5
5
  const spec_emission_util_1 = require("../generators/_collections/spec-emission.util");
6
6
  const cwv_emission_util_1 = require("./_collections/cwv-emission.util");
7
+ const inp_interaction_script_const_1 = require("./_collections/inp-interaction-script.const");
7
8
  const web_vitals_page_script_const_1 = require("./_collections/web-vitals-page-script.const");
8
9
  /**
9
10
  * MP-05 — CWV-suite generator (synthetic measurement).
@@ -21,10 +22,17 @@ class DyE2E_CWVSuite_Generator {
21
22
  const describePrefix = options.describePrefix ?? 'CWV diagnostics';
22
23
  const header = spec_emission_util_1.DyE2E_SpecEmission_Util.headerComment('cwv-diag', options.routes.map((r) => r.path).join(', '), DyE2E_CWVSuite_Generator.STAMP_BUILT_AT, options.headerComment);
23
24
  const routeBlocks = options.routes.map((r) => cwv_emission_util_1.DyE2E_CWVEmission_Util.emitRouteBlock(r, iterations, thresholds, reportDir));
25
+ // Wave-3 — ha LCP/CLS/FCP/TTFB MELLETT INP-t is mérünk, mindkét page-scriptet
26
+ // kell injektálni. A `DyE2E_CWVSuiteGenerate_Options.thresholds.inp_p75_ms`
27
+ // jelenléte signalizálja az INP-mérés-szándékot.
28
+ const wantsInp = typeof thresholds.inp_p75_ms === 'number';
29
+ const inpScriptDecl = wantsInp
30
+ ? `\nconst DYE2E_INP_PAGE_SCRIPT: string = ${JSON.stringify(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT)};`
31
+ : '';
24
32
  return `${header}
25
33
  import { test, expect } from '@playwright/test';
26
34
 
27
- const DYE2E_WEB_VITALS_PAGE_SCRIPT: string = ${JSON.stringify(web_vitals_page_script_const_1.DYE2E_WEB_VITALS_PAGE_SCRIPT)};
35
+ const DYE2E_WEB_VITALS_PAGE_SCRIPT: string = ${JSON.stringify(web_vitals_page_script_const_1.DYE2E_WEB_VITALS_PAGE_SCRIPT)};${inpScriptDecl}
28
36
 
29
37
  test.describe('${spec_emission_util_1.DyE2E_SpecEmission_Util.escapeString(describePrefix)}', (): void => {
30
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"cwv-suite.generator.js","sourceRoot":"","sources":["../../../src/_modules/cwv/cwv-suite.generator.ts"],"names":[],"mappings":";;;AAAA,mHAAuG;AAGvG,sFAAwF;AACxF,wEAA0E;AAC1E,8FAA2F;AAG3F;;;;;;GAMG;AACH,MAAa,wBAAwB;IAEnC,MAAM,CAAU,cAAc,GAAW,cAAc,CAAC;IAExD,MAAM,CAAC,IAAI,CAAC,OAAuC;QACjD,MAAM,UAAU,GAAW,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAkC,OAAO,CAAC,UAAU,IAAI,kDAAmB,CAAC;QAC5F,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;QAChE,MAAM,cAAc,GAAW,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC;QAE3E,MAAM,MAAM,GAAW,4CAAuB,CAAC,aAAa,CAC1D,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAkC,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EACrF,wBAAwB,CAAC,cAAc,EACvC,OAAO,CAAC,aAAa,CACtB,CAAC;QAEF,MAAM,WAAW,GAAa,OAAO,CAAC,MAAM,CAAC,GAAG,CAC9C,CAAC,CAAkC,EAAU,EAAE,CAAC,0CAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAC5H,CAAC;QAEF,OAAO,GAAG,MAAM;;;+CAG2B,IAAI,CAAC,SAAS,CAAC,2DAA4B,CAAC;;iBAE1E,4CAAuB,CAAC,YAAY,CAAC,cAAc,CAAC;;EAEnE,4CAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;;CAG5D,CAAC;IACA,CAAC;;AAhCH,4DAiCC"}
1
+ {"version":3,"file":"cwv-suite.generator.js","sourceRoot":"","sources":["../../../src/_modules/cwv/cwv-suite.generator.ts"],"names":[],"mappings":";;;AAAA,mHAAuG;AAGvG,sFAAwF;AACxF,wEAA0E;AAC1E,8FAAoF;AACpF,8FAA2F;AAG3F;;;;;;GAMG;AACH,MAAa,wBAAwB;IAEnC,MAAM,CAAU,cAAc,GAAW,cAAc,CAAC;IAExD,MAAM,CAAC,IAAI,CAAC,OAAuC;QACjD,MAAM,UAAU,GAAW,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAkC,OAAO,CAAC,UAAU,IAAI,kDAAmB,CAAC;QAC5F,MAAM,SAAS,GAAW,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAC;QAChE,MAAM,cAAc,GAAW,OAAO,CAAC,cAAc,IAAI,iBAAiB,CAAC;QAE3E,MAAM,MAAM,GAAW,4CAAuB,CAAC,aAAa,CAC1D,UAAU,EACV,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAkC,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EACrF,wBAAwB,CAAC,cAAc,EACvC,OAAO,CAAC,aAAa,CACtB,CAAC;QAEF,MAAM,WAAW,GAAa,OAAO,CAAC,MAAM,CAAC,GAAG,CAC9C,CAAC,CAAkC,EAAU,EAAE,CAAC,0CAAsB,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAC5H,CAAC;QAEF,8EAA8E;QAC9E,4EAA4E;QAC5E,iDAAiD;QACjD,MAAM,QAAQ,GAAY,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC;QACpE,MAAM,aAAa,GAAW,QAAQ;YACpC,CAAC,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,oDAAqB,CAAC,GAAG;YACrF,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,GAAG,MAAM;;;+CAG2B,IAAI,CAAC,SAAS,CAAC,2DAA4B,CAAC,IAAI,aAAa;;iBAE3F,4CAAuB,CAAC,YAAY,CAAC,cAAc,CAAC;;EAEnE,4CAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;;CAG5D,CAAC;IACA,CAAC;;AAxCH,4DAyCC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export * from './_collections/cwv-aggregator.util';
5
5
  export * from './_collections/cwv-emission.util';
6
+ export * from './_collections/inp-interaction-script.const';
6
7
  export * from './_collections/web-vitals-page-script.const';
7
8
  export * from './_models/index';
8
9
  export * from './cwv-suite.generator';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAEtC,eAAO,MAAM,iBAAiB,EAAE,MAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAEtC,eAAO,MAAM,iBAAiB,EAAE,MAAuB,CAAC"}
@@ -20,6 +20,7 @@ exports.DYE2E_CWV_VERSION = void 0;
20
20
  */
21
21
  __exportStar(require("./_collections/cwv-aggregator.util"), exports);
22
22
  __exportStar(require("./_collections/cwv-emission.util"), exports);
23
+ __exportStar(require("./_collections/inp-interaction-script.const"), exports);
23
24
  __exportStar(require("./_collections/web-vitals-page-script.const"), exports);
24
25
  __exportStar(require("./_models/index"), exports);
25
26
  __exportStar(require("./cwv-suite.generator"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/cwv/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,qEAAmD;AACnD,mEAAiD;AACjD,8EAA4D;AAC5D,kDAAgC;AAChC,wDAAsC;AAEzB,QAAA,iBAAiB,GAAW,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/cwv/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,qEAAmD;AACnD,mEAAiD;AACjD,8EAA4D;AAC5D,8EAA4D;AAC5D,kDAAgC;AAChC,wDAAsC;AAEzB,QAAA,iBAAiB,GAAW,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inp-emit-integration.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-emit-integration.spec.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-emit-integration.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cwv_suite_generator_1 = require("./cwv-suite.generator");
4
+ describe('| dynamo-e2e | INP emit integration (Wave-3)', () => {
5
+ it('| inp_p75_ms threshold nélkül NEM emit-eli az INP page-script DECLARÁCIÓT', () => {
6
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
7
+ routes: [{ key: 'x', path: '/x' }],
8
+ thresholds: { lcp_p75_ms: 2500, cls_p75: 0.1 },
9
+ });
10
+ expect(spec).not.toContain('const DYE2E_INP_PAGE_SCRIPT: string =');
11
+ expect(spec).not.toContain('__dye2e_inp_setup__');
12
+ });
13
+ it('| inp_p75_ms threshold-tal emit-eli az INP page-script DECLARÁCIÓT', () => {
14
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
15
+ routes: [{ key: 'x', path: '/x' }],
16
+ thresholds: { lcp_p75_ms: 2500, cls_p75: 0.1, inp_p75_ms: 200 },
17
+ });
18
+ expect(spec).toContain('const DYE2E_INP_PAGE_SCRIPT: string =');
19
+ expect(spec).toContain('__dye2e_inp_setup__');
20
+ });
21
+ it('| INP-script feltételes addInitScript hivás', () => {
22
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
23
+ routes: [{ key: 'x', path: '/x' }],
24
+ thresholds: { lcp_p75_ms: 2500, inp_p75_ms: 200 },
25
+ });
26
+ expect(spec).toContain(`typeof DYE2E_INP_PAGE_SCRIPT !== 'undefined'`);
27
+ });
28
+ it('| INP threshold-asszertelt a per-route block-ban (mindig emit-elve)', () => {
29
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
30
+ routes: [{ key: 'x', path: '/x' }],
31
+ thresholds: { inp_p75_ms: 200 },
32
+ });
33
+ expect(spec).toContain('INP threshold 200ms');
34
+ });
35
+ it('| INP snapshot-hook a page.evaluate-ben', () => {
36
+ const spec = cwv_suite_generator_1.DyE2E_CWVSuite_Generator.emit({
37
+ routes: [{ key: 'x', path: '/x' }],
38
+ thresholds: { lcp_p75_ms: 2500 },
39
+ });
40
+ expect(spec).toContain('__dye2e_inp_snapshot__');
41
+ });
42
+ });
43
+ //# sourceMappingURL=inp-emit-integration.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-emit-integration.spec.js","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-emit-integration.spec.ts"],"names":[],"mappings":";;AAAA,+DAAiE;AAEjE,QAAQ,CAAC,8CAA8C,EAAE,GAAS,EAAE;IAElE,EAAE,CAAC,2EAA2E,EAAE,GAAS,EAAE;QACzF,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAS,EAAE;QAClF,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;SAChE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;QAC3D,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;SAClD,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAS,EAAE;QACnF,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAS,EAAE;QACvD,MAAM,IAAI,GAAW,8CAAwB,CAAC,IAAI,CAAC;YACjD,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=inp-script.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-script.spec.d.ts","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-script.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const inp_interaction_script_const_1 = require("./_collections/inp-interaction-script.const");
4
+ describe('| dynamo-e2e | INP page-script (Wave-3)', () => {
5
+ it('| pure JS — semmi TS-syntax', () => {
6
+ // A page-script PURE JavaScript, NEM TypeScript — a browser direkt futtatja.
7
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).not.toContain('as any');
8
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).not.toContain(': void');
9
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).not.toContain('interface ');
10
+ });
11
+ it('| `window.__dye2e_cwv_events__` tömbbe rakja az INP-t', () => {
12
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('__dye2e_cwv_events__');
13
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain(`pushEvent('inp'`);
14
+ });
15
+ it('| PerformanceObserver "event" type-ot figyel + interactionId-vel', () => {
16
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('PerformanceObserver');
17
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain(`type: 'event'`);
18
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('interactionId');
19
+ });
20
+ it('| longestInteraction-t tárol el (P75-asszertelhetö)', () => {
21
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('longestInteraction');
22
+ });
23
+ it('| snapshot pagehide + visibilitychange-en', () => {
24
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain(`'pagehide'`);
25
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain(`'visibilitychange'`);
26
+ });
27
+ it('| re-injection guard (idempotent)', () => {
28
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('__dye2e_inp_setup__');
29
+ });
30
+ it('| try/catch unsupported PerformanceObserver-en', () => {
31
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('try');
32
+ expect(inp_interaction_script_const_1.DYE2E_INP_PAGE_SCRIPT).toContain('catch');
33
+ });
34
+ });
35
+ //# sourceMappingURL=inp-script.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inp-script.spec.js","sourceRoot":"","sources":["../../../src/_modules/cwv/inp-script.spec.ts"],"names":[],"mappings":";;AAAA,8FAAoF;AAEpF,QAAQ,CAAC,yCAAyC,EAAE,GAAS,EAAE;IAE7D,EAAE,CAAC,6BAA6B,EAAE,GAAS,EAAE;QAC3C,6EAA6E;QAC7E,MAAM,CAAC,oDAAqB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,oDAAqB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,oDAAqB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;QACrE,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAChE,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAS,EAAE;QAChF,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/D,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAS,EAAE;QACnE,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;QACzD,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;QACjD,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC9D,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,oDAAqB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { Page } from '@playwright/test';
2
+ /**
3
+ * Wave-2b page-objects — a generator emission-mintázatát ember-olvasható
4
+ * page-object API-vá emelik. Consumer-projekt használhatja direktül vagy
5
+ * a `dye2eTest` fixture-en át.
6
+ */
7
+ export declare class DyE2E_ChipSelectPageObject {
8
+ private readonly page;
9
+ private readonly fieldTestId;
10
+ constructor(page: Page, fieldTestId: string);
11
+ /** Egy chip click-re — option-value-szuffixel a testId-n. */
12
+ clickChip(optionValue: string | number): Promise<void>;
13
+ /** Megnézi, hogy egy chip aktív-e (`.selected` vagy `[aria-selected="true"]`). */
14
+ isSelected(optionValue: string | number): Promise<boolean>;
15
+ }
16
+ export declare class DyE2E_AutocompletePageObject {
17
+ private readonly page;
18
+ private readonly fieldTestId;
19
+ constructor(page: Page, fieldTestId: string);
20
+ /** Input fill + suggestion-list várás. */
21
+ fillAndSuggest(value: string, suggestionsTimeoutMs?: number): Promise<void>;
22
+ /** Egy suggestion click-re — index-szel. */
23
+ selectSuggestion(index: number): Promise<void>;
24
+ }
25
+ export declare class DyE2E_ColorPickerPageObject {
26
+ private readonly page;
27
+ private readonly fieldTestId;
28
+ constructor(page: Page, fieldTestId: string);
29
+ /** Hex-value fill (pl. '#ff00aa'). */
30
+ setColor(hexValue: string): Promise<void>;
31
+ getCurrentColor(): Promise<string>;
32
+ }
33
+ export declare class DyE2E_FilePageObject {
34
+ private readonly page;
35
+ private readonly fieldTestId;
36
+ constructor(page: Page, fieldTestId: string);
37
+ /** Egy vagy több fájl upload Playwright `setInputFiles`-szel. */
38
+ upload(filePaths: string | string[]): Promise<void>;
39
+ /** Egy file-input clear (üres fájl-array). */
40
+ clear(): Promise<void>;
41
+ }
42
+ export declare class DyE2E_RichTextPageObject {
43
+ private readonly page;
44
+ private readonly fieldTestId;
45
+ constructor(page: Page, fieldTestId: string);
46
+ /** Contenteditable scope-on belüli fill (Wave-2 base). */
47
+ fill(text: string): Promise<void>;
48
+ /** Pure-text content read. */
49
+ textContent(): Promise<string>;
50
+ }
51
+ //# sourceMappingURL=wave-2b-page-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-2b-page-objects.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_services/wave-2b-page-objects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;GAIG;AAEH,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM;IAGtC,6DAA6D;IACvD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,kFAAkF;IAC5E,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAMjE;AAED,qBAAa,4BAA4B;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM;IAGtC,0CAA0C;IACpC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,oBAAoB,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxF,4CAA4C;IACtC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIrD;AAED,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM;IAGtC,sCAAsC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CAGzC;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM;IAGtC,iEAAiE;IAC3D,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,8CAA8C;IACxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM;IAGtC,0DAA0D;IACpD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,8BAA8B;IACxB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;CAIrC"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyE2E_RichTextPageObject = exports.DyE2E_FilePageObject = exports.DyE2E_ColorPickerPageObject = exports.DyE2E_AutocompletePageObject = exports.DyE2E_ChipSelectPageObject = void 0;
4
+ /**
5
+ * Wave-2b page-objects — a generator emission-mintázatát ember-olvasható
6
+ * page-object API-vá emelik. Consumer-projekt használhatja direktül vagy
7
+ * a `dye2eTest` fixture-en át.
8
+ */
9
+ class DyE2E_ChipSelectPageObject {
10
+ page;
11
+ fieldTestId;
12
+ constructor(page, fieldTestId) {
13
+ this.page = page;
14
+ this.fieldTestId = fieldTestId;
15
+ }
16
+ /** Egy chip click-re — option-value-szuffixel a testId-n. */
17
+ async clickChip(optionValue) {
18
+ const selector = `[data-testid="${this.fieldTestId}-${optionValue}"]`;
19
+ await this.page.locator(selector).first().click();
20
+ }
21
+ /** Megnézi, hogy egy chip aktív-e (`.selected` vagy `[aria-selected="true"]`). */
22
+ async isSelected(optionValue) {
23
+ const locator = this.page.locator(`[data-testid="${this.fieldTestId}-${optionValue}"]`).first();
24
+ const cls = (await locator.getAttribute('class')) ?? '';
25
+ const aria = (await locator.getAttribute('aria-selected')) ?? '';
26
+ return cls.includes('selected') || aria === 'true';
27
+ }
28
+ }
29
+ exports.DyE2E_ChipSelectPageObject = DyE2E_ChipSelectPageObject;
30
+ class DyE2E_AutocompletePageObject {
31
+ page;
32
+ fieldTestId;
33
+ constructor(page, fieldTestId) {
34
+ this.page = page;
35
+ this.fieldTestId = fieldTestId;
36
+ }
37
+ /** Input fill + suggestion-list várás. */
38
+ async fillAndSuggest(value, suggestionsTimeoutMs = 2_000) {
39
+ await this.page.getByTestId(this.fieldTestId).fill(value);
40
+ // A suggestion-list selector consumer-szintű override-igényes
41
+ // (default: a fieldTestId + '-suggestions'); Wave-3 page-object spec.
42
+ const suggestions = this.page.locator(`[data-testid="${this.fieldTestId}-suggestions"]`).first();
43
+ await suggestions.waitFor({ state: 'visible', timeout: suggestionsTimeoutMs }).catch(() => {
44
+ /* nincs suggestion-list — empty input vagy non-matching */
45
+ });
46
+ }
47
+ /** Egy suggestion click-re — index-szel. */
48
+ async selectSuggestion(index) {
49
+ const selector = `[data-testid="${this.fieldTestId}-suggestion-${index}"]`;
50
+ await this.page.locator(selector).first().click();
51
+ }
52
+ }
53
+ exports.DyE2E_AutocompletePageObject = DyE2E_AutocompletePageObject;
54
+ class DyE2E_ColorPickerPageObject {
55
+ page;
56
+ fieldTestId;
57
+ constructor(page, fieldTestId) {
58
+ this.page = page;
59
+ this.fieldTestId = fieldTestId;
60
+ }
61
+ /** Hex-value fill (pl. '#ff00aa'). */
62
+ async setColor(hexValue) {
63
+ await this.page.getByTestId(this.fieldTestId).fill(hexValue);
64
+ }
65
+ async getCurrentColor() {
66
+ return (await this.page.getByTestId(this.fieldTestId).inputValue()) ?? '';
67
+ }
68
+ }
69
+ exports.DyE2E_ColorPickerPageObject = DyE2E_ColorPickerPageObject;
70
+ class DyE2E_FilePageObject {
71
+ page;
72
+ fieldTestId;
73
+ constructor(page, fieldTestId) {
74
+ this.page = page;
75
+ this.fieldTestId = fieldTestId;
76
+ }
77
+ /** Egy vagy több fájl upload Playwright `setInputFiles`-szel. */
78
+ async upload(filePaths) {
79
+ await this.page.getByTestId(this.fieldTestId).setInputFiles(filePaths);
80
+ }
81
+ /** Egy file-input clear (üres fájl-array). */
82
+ async clear() {
83
+ await this.page.getByTestId(this.fieldTestId).setInputFiles([]);
84
+ }
85
+ }
86
+ exports.DyE2E_FilePageObject = DyE2E_FilePageObject;
87
+ class DyE2E_RichTextPageObject {
88
+ page;
89
+ fieldTestId;
90
+ constructor(page, fieldTestId) {
91
+ this.page = page;
92
+ this.fieldTestId = fieldTestId;
93
+ }
94
+ /** Contenteditable scope-on belüli fill (Wave-2 base). */
95
+ async fill(text) {
96
+ const editor = this.page.locator(`[data-testid="${this.fieldTestId}"] [contenteditable="true"]`).first();
97
+ await editor.fill(text);
98
+ }
99
+ /** Pure-text content read. */
100
+ async textContent() {
101
+ const editor = this.page.locator(`[data-testid="${this.fieldTestId}"] [contenteditable="true"]`).first();
102
+ return (await editor.textContent()) ?? '';
103
+ }
104
+ }
105
+ exports.DyE2E_RichTextPageObject = DyE2E_RichTextPageObject;
106
+ //# sourceMappingURL=wave-2b-page-objects.js.map