@futdevpro/dynamo-e2e 1.18.25 → 1.18.29

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 (93) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +149 -139
  3. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.d.ts +4 -0
  4. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.d.ts.map +1 -1
  5. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.js +39 -3
  6. package/build/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.js.map +1 -1
  7. package/build/_modules/contracts/_enums/field-test-case-type.enum.d.ts +5 -0
  8. package/build/_modules/contracts/_enums/field-test-case-type.enum.d.ts.map +1 -1
  9. package/build/_modules/contracts/_enums/field-test-case-type.enum.js +5 -0
  10. package/build/_modules/contracts/_enums/field-test-case-type.enum.js.map +1 -1
  11. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts +9 -1
  12. package/build/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.d.ts.map +1 -1
  13. package/build/_modules/generators/_collections/field-emission.util.d.ts +11 -0
  14. package/build/_modules/generators/_collections/field-emission.util.d.ts.map +1 -1
  15. package/build/_modules/generators/_collections/field-emission.util.js +43 -6
  16. package/build/_modules/generators/_collections/field-emission.util.js.map +1 -1
  17. package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
  18. package/build/_modules/generators/_collections/form-level-emission.util.js +5 -6
  19. package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
  20. package/build/_modules/generators/_collections/json-schema.util.d.ts.map +1 -1
  21. package/build/_modules/generators/_collections/json-schema.util.js +2 -0
  22. package/build/_modules/generators/_collections/json-schema.util.js.map +1 -1
  23. package/build/_modules/generators/_collections/test-case-filter.util.d.ts +6 -0
  24. package/build/_modules/generators/_collections/test-case-filter.util.d.ts.map +1 -1
  25. package/build/_modules/generators/_collections/test-case-filter.util.js +36 -0
  26. package/build/_modules/generators/_collections/test-case-filter.util.js.map +1 -1
  27. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +13 -0
  28. package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
  29. package/build/_modules/generators/form-suite.generator.d.ts.map +1 -1
  30. package/build/_modules/generators/form-suite.generator.js +4 -1
  31. package/build/_modules/generators/form-suite.generator.js.map +1 -1
  32. package/build/_modules/runtime/_collections/notification-detector-page-script.const.js +136 -136
  33. package/build/_modules/ui-check/_collections/constants/ui-check-page-scripts.const.d.ts +6 -0
  34. package/build/_modules/ui-check/_collections/constants/ui-check-page-scripts.const.d.ts.map +1 -0
  35. package/build/_modules/ui-check/_collections/constants/ui-check-page-scripts.const.js +208 -0
  36. package/build/_modules/ui-check/_collections/constants/ui-check-page-scripts.const.js.map +1 -0
  37. package/build/_modules/ui-check/_collections/detectors/dead-control.detector.d.ts +29 -0
  38. package/build/_modules/ui-check/_collections/detectors/dead-control.detector.d.ts.map +1 -0
  39. package/build/_modules/ui-check/_collections/detectors/dead-control.detector.js +101 -0
  40. package/build/_modules/ui-check/_collections/detectors/dead-control.detector.js.map +1 -0
  41. package/build/_modules/ui-check/_collections/detectors/nested-scroll.detector.d.ts +25 -0
  42. package/build/_modules/ui-check/_collections/detectors/nested-scroll.detector.d.ts.map +1 -0
  43. package/build/_modules/ui-check/_collections/detectors/nested-scroll.detector.js +47 -0
  44. package/build/_modules/ui-check/_collections/detectors/nested-scroll.detector.js.map +1 -0
  45. package/build/_modules/ui-check/_collections/detectors/non-toggling-control.detector.d.ts +33 -0
  46. package/build/_modules/ui-check/_collections/detectors/non-toggling-control.detector.d.ts.map +1 -0
  47. package/build/_modules/ui-check/_collections/detectors/non-toggling-control.detector.js +119 -0
  48. package/build/_modules/ui-check/_collections/detectors/non-toggling-control.detector.js.map +1 -0
  49. package/build/_modules/ui-check/_collections/ui-check-default-detectors.const.d.ts +20 -0
  50. package/build/_modules/ui-check/_collections/ui-check-default-detectors.const.d.ts.map +1 -0
  51. package/build/_modules/ui-check/_collections/ui-check-default-detectors.const.js +30 -0
  52. package/build/_modules/ui-check/_collections/ui-check-default-detectors.const.js.map +1 -0
  53. package/build/_modules/ui-check/_collections/ui-check-guard.util.d.ts +60 -0
  54. package/build/_modules/ui-check/_collections/ui-check-guard.util.d.ts.map +1 -0
  55. package/build/_modules/ui-check/_collections/ui-check-guard.util.js +144 -0
  56. package/build/_modules/ui-check/_collections/ui-check-guard.util.js.map +1 -0
  57. package/build/_modules/ui-check/_collections/ui-check-page.util.d.ts +61 -0
  58. package/build/_modules/ui-check/_collections/ui-check-page.util.d.ts.map +1 -0
  59. package/build/_modules/ui-check/_collections/ui-check-page.util.js +152 -0
  60. package/build/_modules/ui-check/_collections/ui-check-page.util.js.map +1 -0
  61. package/build/_modules/ui-check/_collections/ui-check-runner.util.d.ts +41 -0
  62. package/build/_modules/ui-check/_collections/ui-check-runner.util.d.ts.map +1 -0
  63. package/build/_modules/ui-check/_collections/ui-check-runner.util.js +128 -0
  64. package/build/_modules/ui-check/_collections/ui-check-runner.util.js.map +1 -0
  65. package/build/_modules/ui-check/_models/ui-check-context.interface.d.ts +39 -0
  66. package/build/_modules/ui-check/_models/ui-check-context.interface.d.ts.map +1 -0
  67. package/build/_modules/ui-check/_models/ui-check-context.interface.js +3 -0
  68. package/build/_modules/ui-check/_models/ui-check-context.interface.js.map +1 -0
  69. package/build/_modules/ui-check/_models/ui-check-detector.interface.d.ts +32 -0
  70. package/build/_modules/ui-check/_models/ui-check-detector.interface.d.ts.map +1 -0
  71. package/build/_modules/ui-check/_models/ui-check-detector.interface.js +3 -0
  72. package/build/_modules/ui-check/_models/ui-check-detector.interface.js.map +1 -0
  73. package/build/_modules/ui-check/_models/ui-check-finding.interface.d.ts +30 -0
  74. package/build/_modules/ui-check/_models/ui-check-finding.interface.d.ts.map +1 -0
  75. package/build/_modules/ui-check/_models/ui-check-finding.interface.js +3 -0
  76. package/build/_modules/ui-check/_models/ui-check-finding.interface.js.map +1 -0
  77. package/build/_modules/ui-check/_models/ui-check-report.interface.d.ts +38 -0
  78. package/build/_modules/ui-check/_models/ui-check-report.interface.d.ts.map +1 -0
  79. package/build/_modules/ui-check/_models/ui-check-report.interface.js +3 -0
  80. package/build/_modules/ui-check/_models/ui-check-report.interface.js.map +1 -0
  81. package/build/_modules/ui-check/index.d.ts +27 -0
  82. package/build/_modules/ui-check/index.d.ts.map +1 -0
  83. package/build/_modules/ui-check/index.js +43 -0
  84. package/build/_modules/ui-check/index.js.map +1 -0
  85. package/build/_modules/vqa/generators/review-bundle.generator.d.ts +16 -0
  86. package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -1
  87. package/build/_modules/vqa/generators/review-bundle.generator.js +11 -0
  88. package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -1
  89. package/build/index.d.ts +1 -0
  90. package/build/index.d.ts.map +1 -1
  91. package/build/index.js +2 -1
  92. package/build/index.js.map +1 -1
  93. package/package.json +10 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,52 @@
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.18.29] — 2026-10-20 — Form suites never bend to the product: no green placeholder, no silent skip (BFR-FLEET-013)
7
+
8
+ - **No green placeholder.** The form-level "fill all fields → submit" and "disabled state" cases, and a field case
9
+ with a `transformed` expectation, emitted `expect(true).toBe(true)` — counted as passed while measuring nothing. They
10
+ are now `test.fixme` (visible as "not yet tested", never green).
11
+ - **No silent skip.** `skipCases` no longer drops cases from the spec: each is emitted as a visibly skipped test —
12
+ `test.skip(true, '<skipCode>: <skipReason>')` with the two new override fields, or `test.fixme(true, 'UNJUSTIFIED
13
+ SKIP …')` without them. A skip always stays in the report.
14
+ - **A checkbox that opens a dialog** (`toggleDialogClose`, a RegExp source of the dialog's own button): after every
15
+ press the generated case closes the dialog the user's way, so the next press reaches the checkbox. Measured on the
16
+ Master Prompter TEST registration (Terms checkbox, 2026-10-20): without it `toggle-twice` / `rapid-toggle` fail —
17
+ the dialog's backdrop takes the press, i.e. the case measured the dialog —, with it all three toggle cases pass.
18
+ - Tests: 5 emission specs (no placeholder, visible skip with / without justification, dialog closing per press);
19
+ suite 581 specs.
20
+
21
+ ## [01.18.28] — 2026-10-20 — `/ui-check`: scripted, per-error-class UI detectors that return VERDICTS (BFR-FLEET-012)
22
+
23
+ - New sub-export `@futdevpro/dynamo-e2e/ui-check`. The `/vqa` layer collects evidence for a reviewer; this layer fails the
24
+ run. `DyE2E_UICheckRunner_Util.run(page, context, { detectors, waivers })` ⇒ a report; `assertClean(report)` throws
25
+ with every finding's measurement (`measured` / `expected` / raw `details`).
26
+ - The DEFAULT list (`DyE2E_UICheckDefaultDetectors_Const`) holds only detectors proven on a real, human-identified
27
+ defect — firing before its fix, silent after it: `dead-control` (a control that changes nothing when pressed; the
28
+ registration-page close "X", `BL-QA-FDPUI-001`). Candidates (`DyE2E_UICheckCandidateDetectors_Const`, opt-in):
29
+ `nested-scroll` (two-level scrolling of the main content, fires on `BL-QA-FDPUI-003`; the "after the fix" half waits
30
+ for the fix) and `non-toggling-control` (a checkbox / switch whose first or second press does not flip it; the
31
+ owner's defect was not reproducible on 2026-10-20). Proofs: `__documentations/UI-CHECK-DETECTORS.md`.
32
+ - Safety of the interactive detectors (code, not advice): test host + anonymous / throwaway account only; payment,
33
+ e-mail, delete, logout, publish controls are never pressed; every mutating request is aborted during a press (a
34
+ `mutationAllow` exception still hard-blocks payment / e-mail URLs and bodies with a non-reserved address); every
35
+ WebSocket opened during the check is mocked, so a socket action cannot reach the server either.
36
+ - A detector is switched off only with a coded, dated waiver (`BL-` / `BFR-` / `BUG-` / `CFR-` code, reason,
37
+ expiry); an expired waiver stops applying and is listed. A crashed detector fails the check.
38
+ - Also in this release (01.18.27 was tagged but never published — its constant / CHANGELOG step was missed, so the
39
+ version guard stayed red): the form generator's **field `pattern` rule** (BFR-ADVENTOR-078, `2fdc980`) — "valid"
40
+ values that break a field's `pattern` become `invalid` / pattern cases, plus pattern-mismatch cases per class. The
41
+ version constant follows the release again.
42
+ - Tests: 24 real-browser + Node specs (each defect alone in a minimal fixture, with its fixed twin); suite 575 specs.
43
+
44
+ ## [01.18.26] — 2026-10-05 — VQA: `captureRun()` — the capture run as `{ command, args, env }` (BFR-MASTERPROMPTER-093)
45
+
46
+ - Added `captureRun(bundlePath)` next to `captureCommand`: `{ command: 'npx', args: [ 'playwright', 'test', '--config',
47
+ <path> ], env: { VQA_OUT_DIR } }`. The POSIX `captureCommand` line (`VQA_OUT_DIR=… npx …`) fails under `cmd.exe`; the
48
+ structured form runs through `spawn` on every shell. `captureCommand` is unchanged.
49
+ - The package-version constant `DYE2E_PACKAGE_VERSION` follows the release (the guard spec checks it against
50
+ `package.json`).
51
+
6
52
  ## [01.18.25] — 2026-09-29 — Form suite: a failed setup names the status + URL; configurable `test` import (BFR-ADVENTOR-038)
7
53
 
8
54
  - Every generated setup hook's load check now carries the route, the HTTP status and the final URL in its failure
package/README.md CHANGED
@@ -1,139 +1,149 @@
1
- # @futdevpro/dynamo-e2e
2
-
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.37%25-brightgreen.svg)](./coverage/)
5
- [![specs](https://img.shields.io/badge/specs-254%2F0-brightgreen.svg)](./src/)
6
- [![hyperplan](https://img.shields.io/badge/hyperplan-109%2F112-brightgreen.svg)](./__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md)
7
-
8
- End-to-end testing engine for the Dynamo + FDP ecosystem.
9
-
10
- ## What
11
-
12
- A Dynamo bedrock-package that turns Forms v2 Settings POJOs into Playwright
13
- test suites — **auto-generated**, **typed**, **overridable**, **diffable**.
14
-
15
- Three layers in one package:
16
-
17
- 1. **Form-coverage** — every field-type has a pre-curated positive + negative
18
- input matrix; the generator emits ~20-50 tests per form from a single
19
- Settings POJO.
20
- 2. **Viewport matrix** *(Wave-2)* — auto-fan-out tests over 7 standard
21
- viewports + overflow/touch-target a11y detection.
22
- 3. **Core Web Vitals diagnostics** *(Wave-3)* — synthetic LCP / CLS / INP /
23
- TTFB measurement + percentile aggregation + attribution.
24
-
25
- ## Status
26
-
27
- **Wave-1..4 + MP-10/MP-11** (2026-06-10) — Layer A contracts, Layer B
28
- generators (form-suite + viewport-suite + CWV-suite), Layer C runtime
29
- fixtures + page-objects, Overseer CICD pipeline registered, **75%+ test
30
- coverage gate** active (statements **97.84%**, branches **87.13%**,
31
- functions **98.55%**, lines **97.84%**). 104 specs, 0 failures.
32
-
33
- Plan-net: `__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md`
34
- (11 MPs, 4900+ LOC planning).
35
-
36
- ## Install
37
-
38
- ```bash
39
- pnpm add -D @futdevpro/dynamo-e2e @playwright/test
40
- ```
41
-
42
- `@futdevpro/fsm-dynamo` is a peer-dep — bring your own (or no Settings
43
- POJO source if you only use the runtime presets).
44
-
45
- ## Quick start
46
-
47
- ```typescript
48
- import { DyFM_TextFieldNew_Settings } from '@futdevpro/fsm-dynamo/ngx-models';
49
- import { DyE2E_FormSuite_Generator } from '@futdevpro/dynamo-e2e/generators';
50
-
51
- const settings = new DyFM_FormNew_Settings({
52
- key: 'login',
53
- fields: [
54
- new DyFM_TextFieldNew_Settings({ key: 'email', /* ... */ }),
55
- ],
56
- });
57
-
58
- const specSource = DyE2E_FormSuite_Generator.emit({
59
- formSettings: settings,
60
- formRoute: '/login',
61
- formSelector: 'dynamo-form-new',
62
- });
63
-
64
- // → write specSource to `e2e/tests/generated/login-form.spec.ts`
65
- ```
66
-
67
- ## Sub-exports
68
-
69
- - `@futdevpro/dynamo-e2e/contracts` — POJO types
70
- - `@futdevpro/dynamo-e2e/generators` — Node-only emission engine
71
- - `@futdevpro/dynamo-e2e/runtime` — Playwright fixtures + page-objects (Wave-4) + the live notification detector
72
- (`DyE2E_NotificationDetector_Util`, see below)
73
- - `@futdevpro/dynamo-e2e/presets` — pre-built suites + `DyE2E_getPlaywrightConfig` / `DyE2E_getGlobalSetup` playwright-config factory (fleet e2e-config SSOT)
74
- - `@futdevpro/dynamo-e2e/game` — capability-gated deterministic game seam, failure artifacts and bidirectional journey-catalog validation
75
- - `@futdevpro/dynamo-e2e/cwv` — Core Web Vitals (Wave-3)
76
-
77
- ## Playwright preset — CI timeouts and the failure budget
78
-
79
- ```ts
80
- import { DyE2E_getPlaywrightConfig, DyE2E_ciTimeout } from '@futdevpro/dynamo-e2e/presets';
81
-
82
- export default DyE2E_getPlaywrightConfig({
83
- defaultBaseUrl: 'https://test.example.hu',
84
- ciTimeoutFactor: 3, // CI only: timeout / expectTimeout / actionTimeout / navigationTimeout × 3 (default 1)
85
- maxFailuresInCi: 1, // CI only: stop after the first failure (default: unset = unchanged)
86
- });
87
- ```
88
-
89
- > ⚠️ **A call-site `{ timeout }` overrides the config.** `expect(x).toBeVisible({ timeout: 15_000 })` ignores the preset's
90
- > `expect.timeout` (and its `ciTimeoutFactor`). Scale those values with `DyE2E_ciTimeout(15_000)` — unchanged locally,
91
- > × `E2E_CI_TIMEOUT_FACTOR` (or 3) under `CI`. Measured: a shared CI runner was 2.3–4.7× slower than a local machine,
92
- > and a smoke suite with hard-coded call-site timeouts stayed red for months while its config "looked right".
93
-
94
- ## Live notification detector (`/runtime`)
95
-
96
- Records every user-visible notification — DyNX `dynamo-notification-card` / `dynamo-notifications-area`, mat-snackbar
97
- (`red-` / `yellow-` / `blue-` / `green-snackbar`), `[role=alert]` — at the moment it APPEARS, so a toast that
98
- auto-dismissed before the end of the test is still in the report. It also snapshots the visible error banners (with a
99
- `rawTechnicalLeak` flag for texts like `Http failure response`, `/api/`, `[object Object]`) and collects the page's
100
- `console` errors/warnings and uncaught `pageerror`s.
101
-
102
- ```ts
103
- import { DyE2E_NotificationDetector_Util } from '@futdevpro/dynamo-e2e/runtime';
104
-
105
- await DyE2E_NotificationDetector_Util.attach(context); // before the first navigation
106
- // ... the flow ...
107
- const report = await DyE2E_NotificationDetector_Util.collect(page);
108
- expect(report.notifications.filter((n) => n.type === 'error')).toEqual([]);
109
- console.log(DyE2E_NotificationDetector_Util.summarize(report, 'login'));
110
- ```
111
-
112
- Captures survive a full-page navigation (they are reported to Node through a Playwright binding). The page-side code
113
- is plain JavaScript, so no `__name` shim is needed under `tsx` / esbuild. `collect()` throws on a context without
114
- `attach()` — an empty report would otherwise read as "no notifications".
115
-
116
- ## Login-flow notification sweep (`/runtime` + CLI)
117
-
118
- Built on the detector: opens the login page of many projects, submits it with a WRONG password (so the ERROR branch
119
- is measured without a test account) and prints one matrix row per project — notifications · error/warning · banners ·
120
- modal dialogs · raw-technical leaks · console errors. Framework-level defects show up only when many projects are
121
- measured the same way.
122
-
123
- ```bash
124
- dye2e notification-sweep --targets TEST-TARGETS.md --json sweep.json # or a JSON [{ key, loginUrl | baseUrl }]
125
- dye2e notification-sweep --targets targets.json --only a,b --fail-on-leak # exit 1 on a raw technical leak
126
- ```
127
- ```ts
128
- const outcomes = await DyE2E_NotificationSweep_Util.sweep(browser, targets, { settleMs: 5000 });
129
- console.log(DyE2E_NotificationSweep_Util.matrix(outcomes.map((o) => o.row)));
130
- ```
131
-
132
- Guards in code, not in docs: the probe address must be on a reserved domain (`example.com`, `*.test`, `*.invalid` …)
133
- or on one you declare with `ownDomains` — anything else throws before a page is opened; the form is submitted only on
134
- a test host (`test.*`, `*.test`, `localhost` …, or `allowSubmitHosts`) — anything else is loaded but NOT submitted,
135
- and the row says so. `real: true` / `--real` uses `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD`; without them the row says
136
- it fell back to the probe. Modal dialogs (a "not the production system" notice, an error dialog) are RECORDED —
137
- text + leak flag — before they are closed; a non-modal cookie bar is left alone.
138
-
139
- Detailed game-preset contract: [`__documentations/game-preset.md`](__documentations/game-preset.md).
1
+ # @futdevpro/dynamo-e2e
2
+
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.37%25-brightgreen.svg)](./coverage/)
5
+ [![specs](https://img.shields.io/badge/specs-254%2F0-brightgreen.svg)](./src/)
6
+ [![hyperplan](https://img.shields.io/badge/hyperplan-109%2F112-brightgreen.svg)](./__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md)
7
+
8
+ End-to-end testing engine for the Dynamo + FDP ecosystem.
9
+
10
+ ## What
11
+
12
+ A Dynamo bedrock-package that turns Forms v2 Settings POJOs into Playwright
13
+ test suites — **auto-generated**, **typed**, **overridable**, **diffable**.
14
+
15
+ Three layers in one package:
16
+
17
+ 1. **Form-coverage** — every field-type has a pre-curated positive + negative
18
+ input matrix; the generator emits ~20-50 tests per form from a single
19
+ Settings POJO.
20
+ 2. **Viewport matrix** *(Wave-2)* — auto-fan-out tests over 7 standard
21
+ viewports + overflow/touch-target a11y detection.
22
+ 3. **Core Web Vitals diagnostics** *(Wave-3)* — synthetic LCP / CLS / INP /
23
+ TTFB measurement + percentile aggregation + attribution.
24
+
25
+ ## Status
26
+
27
+ **Wave-1..4 + MP-10/MP-11** (2026-06-10) — Layer A contracts, Layer B
28
+ generators (form-suite + viewport-suite + CWV-suite), Layer C runtime
29
+ fixtures + page-objects, Overseer CICD pipeline registered, **75%+ test
30
+ coverage gate** active (statements **97.84%**, branches **87.13%**,
31
+ functions **98.55%**, lines **97.84%**). 104 specs, 0 failures.
32
+
33
+ Plan-net: `__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md`
34
+ (11 MPs, 4900+ LOC planning).
35
+
36
+ ## Install
37
+
38
+ ```bash
39
+ pnpm add -D @futdevpro/dynamo-e2e @playwright/test
40
+ ```
41
+
42
+ `@futdevpro/fsm-dynamo` is a peer-dep — bring your own (or no Settings
43
+ POJO source if you only use the runtime presets).
44
+
45
+ ## Quick start
46
+
47
+ ```typescript
48
+ import { DyFM_TextFieldNew_Settings } from '@futdevpro/fsm-dynamo/ngx-models';
49
+ import { DyE2E_FormSuite_Generator } from '@futdevpro/dynamo-e2e/generators';
50
+
51
+ const settings = new DyFM_FormNew_Settings({
52
+ key: 'login',
53
+ fields: [
54
+ new DyFM_TextFieldNew_Settings({ key: 'email', /* ... */ }),
55
+ ],
56
+ });
57
+
58
+ const specSource = DyE2E_FormSuite_Generator.emit({
59
+ formSettings: settings,
60
+ formRoute: '/login',
61
+ formSelector: 'dynamo-form-new',
62
+ });
63
+
64
+ // → write specSource to `e2e/tests/generated/login-form.spec.ts`
65
+ ```
66
+
67
+ ## Sub-exports
68
+
69
+ - `@futdevpro/dynamo-e2e/contracts` — POJO types
70
+ - `@futdevpro/dynamo-e2e/generators` — Node-only emission engine
71
+ - `@futdevpro/dynamo-e2e/runtime` — Playwright fixtures + page-objects (Wave-4) + the live notification detector
72
+ (`DyE2E_NotificationDetector_Util`, see below)
73
+ - `@futdevpro/dynamo-e2e/presets` — pre-built suites + `DyE2E_getPlaywrightConfig` / `DyE2E_getGlobalSetup` playwright-config factory (fleet e2e-config SSOT)
74
+ - `@futdevpro/dynamo-e2e/game` — capability-gated deterministic game seam, failure artifacts and bidirectional journey-catalog validation
75
+ - `@futdevpro/dynamo-e2e/cwv` — Core Web Vitals (Wave-3)
76
+ - `@futdevpro/dynamo-e2e/ui-check` — scripted, per-error-class UI detectors that return VERDICTS (a control that does
77
+ nothing, two-level scrolling, a checkbox that does not toggle); a growing default list, coded waivers, a safety guard
78
+ for pressing controls. Catalog + proofs: [`__documentations/UI-CHECK-DETECTORS.md`](__documentations/UI-CHECK-DETECTORS.md)
79
+
80
+ ```ts
81
+ import { DyE2E_UICheckRunner_Util } from '@futdevpro/dynamo-e2e/ui-check';
82
+
83
+ const report = await DyE2E_UICheckRunner_Util.run(page, { url: page.url(), accountKind: 'anonymous' });
84
+ DyE2E_UICheckRunner_Util.assertClean(report); // throws with every finding's measurement
85
+ ```
86
+
87
+ ## Playwright preset — CI timeouts and the failure budget
88
+
89
+ ```ts
90
+ import { DyE2E_getPlaywrightConfig, DyE2E_ciTimeout } from '@futdevpro/dynamo-e2e/presets';
91
+
92
+ export default DyE2E_getPlaywrightConfig({
93
+ defaultBaseUrl: 'https://test.example.hu',
94
+ ciTimeoutFactor: 3, // CI only: timeout / expectTimeout / actionTimeout / navigationTimeout × 3 (default 1)
95
+ maxFailuresInCi: 1, // CI only: stop after the first failure (default: unset = unchanged)
96
+ });
97
+ ```
98
+
99
+ > ⚠️ **A call-site `{ timeout }` overrides the config.** `expect(x).toBeVisible({ timeout: 15_000 })` ignores the preset's
100
+ > `expect.timeout` (and its `ciTimeoutFactor`). Scale those values with `DyE2E_ciTimeout(15_000)` — unchanged locally,
101
+ > × `E2E_CI_TIMEOUT_FACTOR` (or 3) under `CI`. Measured: a shared CI runner was 2.3–4.7× slower than a local machine,
102
+ > and a smoke suite with hard-coded call-site timeouts stayed red for months while its config "looked right".
103
+
104
+ ## Live notification detector (`/runtime`)
105
+
106
+ Records every user-visible notification — DyNX `dynamo-notification-card` / `dynamo-notifications-area`, mat-snackbar
107
+ (`red-` / `yellow-` / `blue-` / `green-snackbar`), `[role=alert]` — at the moment it APPEARS, so a toast that
108
+ auto-dismissed before the end of the test is still in the report. It also snapshots the visible error banners (with a
109
+ `rawTechnicalLeak` flag for texts like `Http failure response`, `/api/`, `[object Object]`) and collects the page's
110
+ `console` errors/warnings and uncaught `pageerror`s.
111
+
112
+ ```ts
113
+ import { DyE2E_NotificationDetector_Util } from '@futdevpro/dynamo-e2e/runtime';
114
+
115
+ await DyE2E_NotificationDetector_Util.attach(context); // before the first navigation
116
+ // ... the flow ...
117
+ const report = await DyE2E_NotificationDetector_Util.collect(page);
118
+ expect(report.notifications.filter((n) => n.type === 'error')).toEqual([]);
119
+ console.log(DyE2E_NotificationDetector_Util.summarize(report, 'login'));
120
+ ```
121
+
122
+ Captures survive a full-page navigation (they are reported to Node through a Playwright binding). The page-side code
123
+ is plain JavaScript, so no `__name` shim is needed under `tsx` / esbuild. `collect()` throws on a context without
124
+ `attach()` — an empty report would otherwise read as "no notifications".
125
+
126
+ ## Login-flow notification sweep (`/runtime` + CLI)
127
+
128
+ Built on the detector: opens the login page of many projects, submits it with a WRONG password (so the ERROR branch
129
+ is measured without a test account) and prints one matrix row per project — notifications · error/warning · banners ·
130
+ modal dialogs · raw-technical leaks · console errors. Framework-level defects show up only when many projects are
131
+ measured the same way.
132
+
133
+ ```bash
134
+ dye2e notification-sweep --targets TEST-TARGETS.md --json sweep.json # or a JSON [{ key, loginUrl | baseUrl }]
135
+ dye2e notification-sweep --targets targets.json --only a,b --fail-on-leak # exit 1 on a raw technical leak
136
+ ```
137
+ ```ts
138
+ const outcomes = await DyE2E_NotificationSweep_Util.sweep(browser, targets, { settleMs: 5000 });
139
+ console.log(DyE2E_NotificationSweep_Util.matrix(outcomes.map((o) => o.row)));
140
+ ```
141
+
142
+ Guards in code, not in docs: the probe address must be on a reserved domain (`example.com`, `*.test`, `*.invalid` …)
143
+ or on one you declare with `ownDomains` — anything else throws before a page is opened; the form is submitted only on
144
+ a test host (`test.*`, `*.test`, `localhost` …, or `allowSubmitHosts`) — anything else is loaded but NOT submitted,
145
+ and the row says so. `real: true` / `--real` uses `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD`; without them the row says
146
+ it fell back to the probe. Modal dialogs (a "not the production system" notice, an error dialog) are RECORDED —
147
+ text + leak flag — before they are closed; a non-modal cookie bar is left alone.
148
+
149
+ Detailed game-preset contract: [`__documentations/game-preset.md`](__documentations/game-preset.md).
@@ -2,6 +2,10 @@ import { DyE2E_FieldTestCaseSet_DataModel } from '../../_models/data-models/fiel
2
2
  /**
3
3
  * Curated test-case matrix `password` field-type-ra. Minden text-case + a
4
4
  * password-specifikus reveal-toggle interakció (Wave-2: külön suite).
5
+ *
6
+ * BFR-ADVENTOR-078 — the "valid" values meet a typical strong rule (lower + upper case, digit, special character,
7
+ * 8+ characters), and four `pattern-mismatch` cases break one class each. Those are kept only on a field that declares
8
+ * a `pattern`; there, any other "valid" value that breaks the rule is shaped into an `invalid` / `pattern` case.
5
9
  */
6
10
  export declare const PASSWORD_FIELD_TEST_CASES: DyE2E_FieldTestCaseSet_DataModel<string>;
7
11
  //# sourceMappingURL=password-field-test-cases.const.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-field-test-cases.const.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAE5G;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,gCAAgC,CAAC,MAAM,CAgG7E,CAAC"}
1
+ {"version":3,"file":"password-field-test-cases.const.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAE5G;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,gCAAgC,CAAC,MAAM,CAgI7E,CAAC"}
@@ -8,6 +8,10 @@ const field_test_case_set_data_model_1 = require("../../_models/data-models/fiel
8
8
  /**
9
9
  * Curated test-case matrix `password` field-type-ra. Minden text-case + a
10
10
  * password-specifikus reveal-toggle interakció (Wave-2: külön suite).
11
+ *
12
+ * BFR-ADVENTOR-078 — the "valid" values meet a typical strong rule (lower + upper case, digit, special character,
13
+ * 8+ characters), and four `pattern-mismatch` cases break one class each. Those are kept only on a field that declares
14
+ * a `pattern`; there, any other "valid" value that breaks the rule is shaped into an `invalid` / `pattern` case.
11
15
  */
12
16
  exports.PASSWORD_FIELD_TEST_CASES = new field_test_case_set_data_model_1.DyE2E_FieldTestCaseSet_DataModel({
13
17
  fieldTypeKey: 'password',
@@ -31,14 +35,14 @@ exports.PASSWORD_FIELD_TEST_CASES = new field_test_case_set_data_model_1.DyE2E_F
31
35
  id: 'pw:unicode-basic',
32
36
  type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.unicodeBasic,
33
37
  description: 'unicode jelszó',
34
- inputValue: 'JelszóBiztos123',
38
+ inputValue: 'JelszóBiztos123!',
35
39
  expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.valid,
36
40
  }),
37
41
  new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
38
42
  id: 'pw:unicode-emoji',
39
43
  type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.unicodeEmoji,
40
44
  description: 'emoji jelszóban',
41
- inputValue: 'Pw🔐Strong',
45
+ inputValue: 'Pw🔐Strong1!',
42
46
  expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.valid,
43
47
  }),
44
48
  new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
@@ -84,7 +88,7 @@ exports.PASSWORD_FIELD_TEST_CASES = new field_test_case_set_data_model_1.DyE2E_F
84
88
  id: 'pw:zero-width',
85
89
  type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.zeroWidthChars,
86
90
  description: 'zero-width karakterek jelszóban',
87
- inputValue: 'Secure​Pw‌123',
91
+ inputValue: 'Secure​Pw‌123!',
88
92
  expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.valid,
89
93
  notes: 'A jelszó-egyezésnek konzisztensnek kell lennie (store==login normalize).',
90
94
  }),
@@ -104,6 +108,38 @@ exports.PASSWORD_FIELD_TEST_CASES = new field_test_case_set_data_model_1.DyE2E_F
104
108
  expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.valid,
105
109
  notes: 'Nem szennyezheti a headert; ne torjon (500).',
106
110
  }),
111
+ new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
112
+ id: 'pw:pattern-no-digit',
113
+ type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.patternMismatch,
114
+ description: 'no digit (pattern rule)',
115
+ inputValue: 'NoDigitsHere!',
116
+ expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid,
117
+ expectedErrorKey: 'pattern',
118
+ }),
119
+ new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
120
+ id: 'pw:pattern-no-special',
121
+ type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.patternMismatch,
122
+ description: 'no special character (pattern rule)',
123
+ inputValue: 'NoSpecial123',
124
+ expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid,
125
+ expectedErrorKey: 'pattern',
126
+ }),
127
+ new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
128
+ id: 'pw:pattern-no-upper',
129
+ type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.patternMismatch,
130
+ description: 'no upper-case letter (pattern rule)',
131
+ inputValue: 'noupper123!',
132
+ expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid,
133
+ expectedErrorKey: 'pattern',
134
+ }),
135
+ new field_test_case_data_model_1.DyE2E_FieldTestCase_DataModel({
136
+ id: 'pw:pattern-no-lower',
137
+ type: field_test_case_type_enum_1.DyE2E_FieldTestCase_Type.patternMismatch,
138
+ description: 'no lower-case letter (pattern rule)',
139
+ inputValue: 'NOLOWER123!',
140
+ expectation: test_expectation_type_enum_1.DyE2E_TestExpectation_Type.invalid,
141
+ expectedErrorKey: 'pattern',
142
+ }),
107
143
  ],
108
144
  });
109
145
  //# sourceMappingURL=password-field-test-cases.const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-field-test-cases.const.js","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"password-field-test-cases.const.js","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_collections/test-case-sets/password-field-test-cases.const.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export declare enum DyE2E_FieldTestCase_Type {
48
48
  leadingSpaces = "leading-spaces",
49
49
  /** Case-variáció (`VALUE` vs `value`) — case-insensitivity / dup-bypass-check. */
50
50
  caseVariant = "case-variant",
51
+ /**
52
+ * BFR-ADVENTOR-078 — a value that breaks the field's `pattern` rule (e.g. a password without a digit). Emitted only
53
+ * when the field declares a `pattern`; otherwise dropped.
54
+ */
55
+ patternMismatch = "pattern-mismatch",
51
56
  zero = "zero",
52
57
  one = "one",
53
58
  negativeOne = "negative-one",
@@ -1 +1 @@
1
- {"version":3,"file":"field-test-case-type.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/contracts/_enums/field-test-case-type.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,oBAAY,wBAAwB;IAElC,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;IACtC,eAAe,qBAAqB;IACpC,cAAc,oBAAoB;IAGlC,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,SAAS,cAAc;IAGvB,KAAK,UAAU;IACf,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;IACtC,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,MAAM,YAAY;IAClB,iBAAiB,wBAAwB;IACzC,SAAS,eAAe;IACxB,kBAAkB,yBAAyB;IAC3C,8FAA8F;IAC9F,cAAc,qBAAqB;IACnC,mGAAmG;IACnG,SAAS,cAAc;IACvB,0FAA0F;IAC1F,sBAAsB,6BAA6B;IACnD,qFAAqF;IACrF,kBAAkB,yBAAyB;IAG3C,UAAU,gBAAgB;IAC1B,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,kFAAkF;IAClF,WAAW,iBAAiB;IAG5B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,WAAW,iBAAiB;IAC5B,cAAc,qBAAqB;IACnC,cAAc,qBAAqB;IACnC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,SAAS,eAAe;IACxB,SAAS,eAAe;IACxB,YAAY,kBAAkB;IAG9B,QAAQ,cAAc;IACtB,aAAa,qBAAqB;IAClC,SAAS,eAAe;IACxB,eAAe,sBAAsB;IACrC,SAAS,eAAe;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,QAAQ,eAAe;IACvB,gBAAgB,uBAAuB;IACvC,WAAW,kBAAkB;IAG7B,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;IACjC,cAAc,qBAAqB;IACnC,WAAW,kBAAkB;IAG7B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,gBAAgB,sBAAsB;IACtC,kBAAkB,wBAAwB;IAG1C,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAG5B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;IAGzC,gEAAgE;IAChE,MAAM,WAAW;CAClB"}
1
+ {"version":3,"file":"field-test-case-type.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/contracts/_enums/field-test-case-type.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,oBAAY,wBAAwB;IAElC,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;IACtC,eAAe,qBAAqB;IACpC,cAAc,oBAAoB;IAGlC,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,SAAS,cAAc;IAGvB,KAAK,UAAU;IACf,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;IACtC,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,MAAM,YAAY;IAClB,iBAAiB,wBAAwB;IACzC,SAAS,eAAe;IACxB,kBAAkB,yBAAyB;IAC3C,8FAA8F;IAC9F,cAAc,qBAAqB;IACnC,mGAAmG;IACnG,SAAS,cAAc;IACvB,0FAA0F;IAC1F,sBAAsB,6BAA6B;IACnD,qFAAqF;IACrF,kBAAkB,yBAAyB;IAG3C,UAAU,gBAAgB;IAC1B,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,kFAAkF;IAClF,WAAW,iBAAiB;IAC5B;;;OAGG;IACH,eAAe,qBAAqB;IAGpC,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,WAAW,iBAAiB;IAC5B,cAAc,qBAAqB;IACnC,cAAc,qBAAqB;IACnC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,SAAS,eAAe;IACxB,SAAS,eAAe;IACxB,YAAY,kBAAkB;IAG9B,QAAQ,cAAc;IACtB,aAAa,qBAAqB;IAClC,SAAS,eAAe;IACxB,eAAe,sBAAsB;IACrC,SAAS,eAAe;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,QAAQ,eAAe;IACvB,gBAAgB,uBAAuB;IACvC,WAAW,kBAAkB;IAG7B,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;IACjC,cAAc,qBAAqB;IACnC,WAAW,kBAAkB;IAG7B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,gBAAgB,sBAAsB;IACtC,kBAAkB,wBAAwB;IAG1C,UAAU,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAG5B,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;IAC5B,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;IAGzC,gEAAgE;IAChE,MAAM,WAAW;CAClB"}
@@ -56,6 +56,11 @@ var DyE2E_FieldTestCase_Type;
56
56
  DyE2E_FieldTestCase_Type["leadingSpaces"] = "leading-spaces";
57
57
  /** Case-variáció (`VALUE` vs `value`) — case-insensitivity / dup-bypass-check. */
58
58
  DyE2E_FieldTestCase_Type["caseVariant"] = "case-variant";
59
+ /**
60
+ * BFR-ADVENTOR-078 — a value that breaks the field's `pattern` rule (e.g. a password without a digit). Emitted only
61
+ * when the field declares a `pattern`; otherwise dropped.
62
+ */
63
+ DyE2E_FieldTestCase_Type["patternMismatch"] = "pattern-mismatch";
59
64
  // ─── Numerikus edge ──────────────────────────────────────────────
60
65
  DyE2E_FieldTestCase_Type["zero"] = "zero";
61
66
  DyE2E_FieldTestCase_Type["one"] = "one";
@@ -1 +1 @@
1
- {"version":3,"file":"field-test-case-type.enum.js","sourceRoot":"","sources":["../../../../src/_modules/contracts/_enums/field-test-case-type.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACH,IAAY,wBAoGX;AApGD,WAAY,wBAAwB;IAClC,oEAAoE;IACpE,sDAA0B,CAAA;IAC1B,kEAAsC,CAAA;IACtC,gEAAoC,CAAA;IACpC,8DAAkC,CAAA;IAElC,oEAAoE;IACpE,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,iDAAqB,CAAA;IACrB,mDAAuB,CAAA;IAEvB,oEAAoE;IACpE,2CAAe,CAAA;IACf,0DAA8B,CAAA;IAC9B,0DAA8B,CAAA;IAC9B,sDAA0B,CAAA;IAC1B,kEAAsC,CAAA;IACtC,0DAA8B,CAAA;IAC9B,0DAA8B,CAAA;IAC9B,8CAAkB,CAAA;IAClB,qEAAyC,CAAA;IACzC,oDAAwB,CAAA;IACxB,uEAA2C,CAAA;IAC3C,8FAA8F;IAC9F,+DAAmC,CAAA;IACnC,mGAAmG;IACnG,mDAAuB,CAAA;IACvB,0FAA0F;IAC1F,+EAAmD,CAAA;IACnD,qFAAqF;IACrF,uEAA2C,CAAA;IAE3C,mEAAmE;IACnE,sDAA0B,CAAA;IAC1B,kDAAsB,CAAA;IACtB,iDAAqB,CAAA;IACrB,mDAAuB,CAAA;IACvB,8DAAkC,CAAA;IAClC,4DAAgC,CAAA;IAChC,kFAAkF;IAClF,wDAA4B,CAAA;IAE5B,oEAAoE;IACpE,yCAAa,CAAA;IACb,uCAAW,CAAA;IACX,wDAA4B,CAAA;IAC5B,+DAAmC,CAAA;IACnC,+DAAmC,CAAA;IACnC,qDAAyB,CAAA;IACzB,iDAAqB,CAAA;IACrB,uCAAW,CAAA;IACX,oDAAwB,CAAA;IACxB,oDAAwB,CAAA;IACxB,0DAA8B,CAAA;IAE9B,oEAAoE;IACpE,kDAAsB,CAAA;IACtB,8DAAkC,CAAA;IAClC,oDAAwB,CAAA;IACxB,iEAAqC,CAAA;IACrC,oDAAwB,CAAA;IACxB,iDAAqB,CAAA;IACrB,yCAAa,CAAA;IACb,mDAAuB,CAAA;IACvB,mEAAuC,CAAA;IACvC,yDAA6B,CAAA;IAE7B,oEAAoE;IACpE,+DAAmC,CAAA;IACnC,6DAAiC,CAAA;IACjC,+DAAmC,CAAA;IACnC,yDAA6B,CAAA;IAE7B,oEAAoE;IACpE,wDAA4B,CAAA;IAC5B,sDAA0B,CAAA;IAC1B,8DAAkC,CAAA;IAClC,0DAA8B,CAAA;IAC9B,wDAA4B,CAAA;IAC5B,kEAAsC,CAAA;IACtC,sEAA0C,CAAA;IAE1C,oEAAoE;IACpE,sDAA0B,CAAA;IAC1B,wDAA4B,CAAA;IAC5B,wDAA4B,CAAA;IAE5B,mEAAmE;IACnE,wDAA4B,CAAA;IAC5B,wDAA4B,CAAA;IAC5B,0DAA8B,CAAA;IAC9B,qEAAyC,CAAA;IAEzC,oEAAoE;IACpE,gEAAgE;IAChE,6CAAiB,CAAA;AACnB,CAAC,EApGW,wBAAwB,wCAAxB,wBAAwB,QAoGnC"}
1
+ {"version":3,"file":"field-test-case-type.enum.js","sourceRoot":"","sources":["../../../../src/_modules/contracts/_enums/field-test-case-type.enum.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACH,IAAY,wBAyGX;AAzGD,WAAY,wBAAwB;IAClC,oEAAoE;IACpE,sDAA0B,CAAA;IAC1B,kEAAsC,CAAA;IACtC,gEAAoC,CAAA;IACpC,8DAAkC,CAAA;IAElC,oEAAoE;IACpE,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,kDAAsB,CAAA;IACtB,iDAAqB,CAAA;IACrB,mDAAuB,CAAA;IAEvB,oEAAoE;IACpE,2CAAe,CAAA;IACf,0DAA8B,CAAA;IAC9B,0DAA8B,CAAA;IAC9B,sDAA0B,CAAA;IAC1B,kEAAsC,CAAA;IACtC,0DAA8B,CAAA;IAC9B,0DAA8B,CAAA;IAC9B,8CAAkB,CAAA;IAClB,qEAAyC,CAAA;IACzC,oDAAwB,CAAA;IACxB,uEAA2C,CAAA;IAC3C,8FAA8F;IAC9F,+DAAmC,CAAA;IACnC,mGAAmG;IACnG,mDAAuB,CAAA;IACvB,0FAA0F;IAC1F,+EAAmD,CAAA;IACnD,qFAAqF;IACrF,uEAA2C,CAAA;IAE3C,mEAAmE;IACnE,sDAA0B,CAAA;IAC1B,kDAAsB,CAAA;IACtB,iDAAqB,CAAA;IACrB,mDAAuB,CAAA;IACvB,8DAAkC,CAAA;IAClC,4DAAgC,CAAA;IAChC,kFAAkF;IAClF,wDAA4B,CAAA;IAC5B;;;OAGG;IACH,gEAAoC,CAAA;IAEpC,oEAAoE;IACpE,yCAAa,CAAA;IACb,uCAAW,CAAA;IACX,wDAA4B,CAAA;IAC5B,+DAAmC,CAAA;IACnC,+DAAmC,CAAA;IACnC,qDAAyB,CAAA;IACzB,iDAAqB,CAAA;IACrB,uCAAW,CAAA;IACX,oDAAwB,CAAA;IACxB,oDAAwB,CAAA;IACxB,0DAA8B,CAAA;IAE9B,oEAAoE;IACpE,kDAAsB,CAAA;IACtB,8DAAkC,CAAA;IAClC,oDAAwB,CAAA;IACxB,iEAAqC,CAAA;IACrC,oDAAwB,CAAA;IACxB,iDAAqB,CAAA;IACrB,yCAAa,CAAA;IACb,mDAAuB,CAAA;IACvB,mEAAuC,CAAA;IACvC,yDAA6B,CAAA;IAE7B,oEAAoE;IACpE,+DAAmC,CAAA;IACnC,6DAAiC,CAAA;IACjC,+DAAmC,CAAA;IACnC,yDAA6B,CAAA;IAE7B,oEAAoE;IACpE,wDAA4B,CAAA;IAC5B,sDAA0B,CAAA;IAC1B,8DAAkC,CAAA;IAClC,0DAA8B,CAAA;IAC9B,wDAA4B,CAAA;IAC5B,kEAAsC,CAAA;IACtC,sEAA0C,CAAA;IAE1C,oEAAoE;IACpE,sDAA0B,CAAA;IAC1B,wDAA4B,CAAA;IAC5B,wDAA4B,CAAA;IAE5B,mEAAmE;IACnE,wDAA4B,CAAA;IAC5B,wDAA4B,CAAA;IAC5B,0DAA8B,CAAA;IAC9B,qEAAyC,CAAA;IAEzC,oEAAoE;IACpE,gEAAgE;IAChE,6CAAiB,CAAA;AACnB,CAAC,EAzGW,wBAAwB,wCAAxB,wBAAwB,QAyGnC"}
@@ -10,8 +10,16 @@ import { DyE2E_TestRunMode_Type } from '../../_enums/test-run-mode-type.enum';
10
10
  export interface DyE2E_FieldTestSuite_Override {
11
11
  /** A field-Settings `key`-je, amire ez az override vonatkozik. */
12
12
  fieldKey: string;
13
- /** Ezeket az eseteket dobja el a generator. */
13
+ /**
14
+ * These cases are NOT run — but they are still EMITTED, as visibly skipped tests (BFR-FLEET-013): with
15
+ * `skipReason` + `skipCode` as `test.skip(true, '<code>: <reason>')`, without them as
16
+ * `test.fixme(true, 'UNJUSTIFIED SKIP …')`. A skip never disappears from the report.
17
+ */
14
18
  skipCases?: DyE2E_FieldTestCase_Type[];
19
+ /** Why the `skipCases` cannot run (one sentence, measured). */
20
+ skipReason?: string;
21
+ /** The open defect behind the skip: a `BL-` / `BFR-` / `BUG-` / `CFR-` trace code. */
22
+ skipCode?: string;
15
23
  /** Csak ezek emit-elődnek (whitelist). Ha megadva, `skipCases` ignorálódik. */
16
24
  onlyCases?: DyE2E_FieldTestCase_Type[];
17
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"form-test-suite-settings.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACvC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACvC;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,wBAAwB,CAAC;QAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,OAAO,EAAE,sBAAsB,CAAC;IAChC,mDAAmD;IACnD,cAAc,CAAC,EAAE,6BAA6B,EAAE,CAAC;IACjD,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"form-test-suite-settings.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/contracts/_models/interfaces/form-test-suite-settings.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACvC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACvC;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,wBAAwB,CAAC;QAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,OAAO,EAAE,sBAAsB,CAAC;IAChC,mDAAmD;IACnD,cAAc,CAAC,EAAE,6BAA6B,EAAE,CAAC;IACjD,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
@@ -1,4 +1,5 @@
1
1
  import { DyE2E_FieldTestCase_DataModel } from '../../contracts/_models/data-models/field-test-case.data-model';
2
+ import { DyE2E_FieldTestSuite_Override } from '../../contracts/_models/interfaces/form-test-suite-settings.interface';
2
3
  import { DyE2E_FieldSettings_Shape, DyE2E_FormSettings_Shape } from '../_models/form-settings-shape.interface';
3
4
  /**
4
5
  * Per-test-case spec-blokk emission. Egyetlen `it(...)` ágat ad vissza.
@@ -15,6 +16,16 @@ import { DyE2E_FieldSettings_Shape, DyE2E_FormSettings_Shape } from '../_models/
15
16
  export declare class DyE2E_FieldEmission_Util {
16
17
  /** Egy `it(...)` blokkot ad vissza, behúzva a `test.describe`-on belüli szintre (4 space). */
17
18
  static emitTestCase<T>(form: DyE2E_FormSettings_Shape, field: DyE2E_FieldSettings_Shape, testCase: DyE2E_FieldTestCase_DataModel<T>): string;
19
+ /**
20
+ * BFR-FLEET-013 — the generated lines that close the dialog a press of `field` opened, with the dialog's own button
21
+ * (`field.toggleDialogClose`, a case-insensitive RegExp source). Empty when the field opens no dialog.
22
+ */
23
+ static closeToggleDialog(field: DyE2E_FieldSettings_Shape): string;
24
+ /**
25
+ * BFR-FLEET-013 — a case `skipCases` removed, emitted as a VISIBLY skipped test: with `skipReason` + `skipCode` it is
26
+ * a `test.skip` carrying both, without them a `test.fixme` that names the missing justification.
27
+ */
28
+ static emitSkippedCase<T>(field: DyE2E_FieldSettings_Shape, testCase: DyE2E_FieldTestCase_DataModel<T>, override: DyE2E_FieldTestSuite_Override): string;
18
29
  /**
19
30
  * BFR-ADVENTOR-035 — the extra case of a confirm field (`matchField`): the referenced field and this one get
20
31
  * DIFFERENT values ⇒ this field must show its error. Emitted once per confirm field, next to its own cases.
@@ -1 +1 @@
1
- {"version":3,"file":"field-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/field-emission.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAE/G,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EAEzB,MAAM,0CAA0C,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,qBAAa,wBAAwB;IAEnC,8FAA8F;IAC9F,MAAM,CAAC,YAAY,CAAC,CAAC,EACnB,IAAI,EAAE,wBAAwB,EAC9B,KAAK,EAAE,yBAAyB,EAChC,QAAQ,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACzC,MAAM;IAaT;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,yBAAyB,GAAG,MAAM;IAuBtG,gHAAgH;IAChH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgB/B,4GAA4G;IAC5G,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAC,eAAe;IAuI9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAOnC,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,aAAa;CA8D7B"}
1
+ {"version":3,"file":"field-emission.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/field-emission.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gEAAgE,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AAEtH,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EAEzB,MAAM,0CAA0C,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,qBAAa,wBAAwB;IAEnC,8FAA8F;IAC9F,MAAM,CAAC,YAAY,CAAC,CAAC,EACnB,IAAI,EAAE,wBAAwB,EAC9B,KAAK,EAAE,yBAAyB,EAChC,QAAQ,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACzC,MAAM;IAaT;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,MAAM;IAkBlE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EACtB,KAAK,EAAE,yBAAyB,EAChC,QAAQ,EAAE,6BAA6B,CAAC,CAAC,CAAC,EAC1C,QAAQ,EAAE,6BAA6B,GACtC,MAAM;IAaT;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,yBAAyB,GAAG,MAAM;IAuBtG,gHAAgH;IAChH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgB/B,4GAA4G;IAC5G,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAC,eAAe;IA0I9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAOnC,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,aAAa;CA8D7B"}