@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.
- package/CHANGELOG.md +37 -0
- package/CONTRIBUTING.md +90 -0
- package/README.md +2 -2
- package/build/_modules/cwv/_collections/cwv-emission.util.d.ts.map +1 -1
- package/build/_modules/cwv/_collections/cwv-emission.util.js +6 -1
- package/build/_modules/cwv/_collections/cwv-emission.util.js.map +1 -1
- package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts +32 -0
- package/build/_modules/cwv/_collections/inp-interaction-script.const.d.ts.map +1 -0
- package/build/_modules/cwv/_collections/inp-interaction-script.const.js +59 -0
- package/build/_modules/cwv/_collections/inp-interaction-script.const.js.map +1 -0
- package/build/_modules/cwv/cwv-suite.generator.d.ts.map +1 -1
- package/build/_modules/cwv/cwv-suite.generator.js +9 -1
- package/build/_modules/cwv/cwv-suite.generator.js.map +1 -1
- package/build/_modules/cwv/index.d.ts +1 -0
- package/build/_modules/cwv/index.d.ts.map +1 -1
- package/build/_modules/cwv/index.js +1 -0
- package/build/_modules/cwv/index.js.map +1 -1
- package/build/_modules/cwv/inp-emit-integration.spec.d.ts +2 -0
- package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +1 -0
- package/build/_modules/cwv/inp-emit-integration.spec.js +43 -0
- package/build/_modules/cwv/inp-emit-integration.spec.js.map +1 -0
- package/build/_modules/cwv/inp-script.spec.d.ts +2 -0
- package/build/_modules/cwv/inp-script.spec.d.ts.map +1 -0
- package/build/_modules/cwv/inp-script.spec.js +35 -0
- package/build/_modules/cwv/inp-script.spec.js.map +1 -0
- package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts +51 -0
- package/build/_modules/runtime/_services/wave-2b-page-objects.d.ts.map +1 -0
- package/build/_modules/runtime/_services/wave-2b-page-objects.js +106 -0
- package/build/_modules/runtime/_services/wave-2b-page-objects.js.map +1 -0
- package/build/_modules/runtime/fixtures.d.ts +12 -0
- package/build/_modules/runtime/fixtures.d.ts.map +1 -1
- package/build/_modules/runtime/fixtures.js +16 -0
- package/build/_modules/runtime/fixtures.js.map +1 -1
- package/build/_modules/runtime/index.d.ts +1 -0
- package/build/_modules/runtime/index.d.ts.map +1 -1
- package/build/_modules/runtime/index.js +1 -0
- package/build/_modules/runtime/index.js.map +1 -1
- package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +2 -0
- package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +1 -0
- package/build/_modules/runtime/wave-2b-page-objects.spec.js +130 -0
- package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +1 -0
- package/coverage/contracts/_collections/index.html +1 -1
- package/coverage/contracts/_collections/index.ts.html +1 -1
- package/coverage/contracts/_collections/utils/index.html +1 -1
- package/coverage/contracts/_collections/utils/test-id.util.ts.html +1 -1
- package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/index.html +1 -1
- package/coverage/contracts/_enums/index.ts.html +1 -1
- package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/contracts/index.html +1 -1
- package/coverage/contracts/index.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-emission.util.ts.html +103 -88
- package/coverage/cwv/_collections/index.html +22 -7
- package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
- package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/cwv/cwv-suite.generator.ts.html +61 -34
- package/coverage/cwv/index.html +7 -7
- package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/generators/_collections/field-emission.util.ts.html +1 -1
- package/coverage/generators/_collections/form-level-emission.util.ts.html +1 -1
- package/coverage/generators/_collections/index.html +1 -1
- package/coverage/generators/_collections/spec-emission.util.ts.html +33 -33
- package/coverage/generators/_collections/test-case-filter.util.ts.html +1 -1
- package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/generators/form-suite.generator.ts.html +1 -1
- package/coverage/generators/index.html +1 -1
- package/coverage/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/index.html +28 -28
- package/coverage/lcov-report/contracts/_collections/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/index.html +1 -1
- package/coverage/lcov-report/contracts/index.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +103 -88
- package/coverage/lcov-report/cwv/_collections/index.html +22 -7
- package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +304 -0
- package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +61 -34
- package/coverage/lcov-report/cwv/index.html +7 -7
- package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/index.html +1 -1
- package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +33 -33
- package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/form-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/generators/index.html +1 -1
- package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/index.html +28 -28
- package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/index.html +1 -1
- package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +5 -5
- package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/index.html +24 -9
- package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +397 -0
- package/coverage/lcov-report/runtime/index.html +5 -5
- package/coverage/lcov-report/runtime/index.ts.html +7 -4
- package/coverage/lcov.info +463 -186
- package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/runtime/_collections/index.html +1 -1
- package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/runtime/_collections/wait-helpers.util.ts.html +5 -5
- package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/runtime/_services/index.html +24 -9
- package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/runtime/_services/wave-2b-page-objects.ts.html +397 -0
- package/coverage/runtime/index.html +5 -5
- package/coverage/runtime/index.ts.html +7 -4
- package/coverage/tmp/coverage-222216-1781070051665-0.json +1 -0
- package/coverage/tmp/{coverage-221672-1781069317212-0.json → coverage-225712-1781070050591-0.json} +1 -1
- package/package.json +1 -1
- 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)
|
package/CONTRIBUTING.md
ADDED
|
@@ -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
|
[](https://www.npmjs.com/package/@futdevpro/dynamo-e2e)
|
|
4
|
-
[](./coverage/)
|
|
5
|
+
[](./src/)
|
|
6
6
|
[](./__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;
|
|
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
|
|
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":"
|
|
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;;
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|