@futdevpro/dynamo-e2e 1.18.15 → 1.18.16

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 (27) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +23 -0
  3. package/bin/dye2e.js +13 -0
  4. package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
  5. package/build/_modules/generators/_collections/cli-runner.util.js +17 -0
  6. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
  7. package/build/_modules/runtime/_collections/notification-detector-page-script.const.d.ts +3 -1
  8. package/build/_modules/runtime/_collections/notification-detector-page-script.const.d.ts.map +1 -1
  9. package/build/_modules/runtime/_collections/notification-detector-page-script.const.js +8 -1
  10. package/build/_modules/runtime/_collections/notification-detector-page-script.const.js.map +1 -1
  11. package/build/_modules/runtime/_collections/notification-detector.util.d.ts.map +1 -1
  12. package/build/_modules/runtime/_collections/notification-detector.util.js +3 -1
  13. package/build/_modules/runtime/_collections/notification-detector.util.js.map +1 -1
  14. package/build/_modules/runtime/_collections/notification-sweep.util.d.ts +65 -0
  15. package/build/_modules/runtime/_collections/notification-sweep.util.d.ts.map +1 -0
  16. package/build/_modules/runtime/_collections/notification-sweep.util.js +326 -0
  17. package/build/_modules/runtime/_collections/notification-sweep.util.js.map +1 -0
  18. package/build/_modules/runtime/_models/notification-sweep.interface.d.ts +67 -0
  19. package/build/_modules/runtime/_models/notification-sweep.interface.d.ts.map +1 -0
  20. package/build/_modules/runtime/_models/notification-sweep.interface.js +3 -0
  21. package/build/_modules/runtime/_models/notification-sweep.interface.js.map +1 -0
  22. package/build/_modules/runtime/index.d.ts +2 -0
  23. package/build/_modules/runtime/index.d.ts.map +1 -1
  24. package/build/_modules/runtime/index.js +2 -0
  25. package/build/_modules/runtime/index.js.map +1 -1
  26. package/build/index.js +1 -1
  27. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
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.16] — 2026-09-24 — Login-flow notification sweep
7
+
8
+ - Added `DyE2E_NotificationSweep_Util` to `/runtime` and the `dye2e notification-sweep` command (BFR-QA-002): on top of
9
+ the notification detector it opens the login page of every target, submits it with a WRONG password (the error
10
+ branch, no test account needed) and returns one matrix row per project — notifications · error/warning · banners ·
11
+ modal dialogs · raw-technical leaks · console errors. Targets: the QA workspace's `TEST-TARGETS.md` (only
12
+ `https://test.` rows) or JSON.
13
+ - Guards in code: the probe address must be on a reserved or a declared own domain (else it throws before any page is
14
+ opened); the form is submitted only on a test host (else loaded, not submitted, and the row says so).
15
+ - Modal dialogs are recorded (text + leak flag) before they are closed: on 3 of 7 TEST sites a "not the production
16
+ system" notice blocked the login, and on one the dialog was itself a JS error shown to the user.
17
+ - Detector fixes found by the live sweep: a banner's inner elements are no longer counted as more banners (one login
18
+ error was counted 3×), and `HTTP 401`-style status codes and user-visible JS errors (`… is not a function`,
19
+ `TypeError`, `this.x.`) now count as raw technical leaks.
20
+
6
21
  ## [01.18.15] — 2026-09-24 — Live notification detector
7
22
 
8
23
  - Added `DyE2E_NotificationDetector_Util` to `/runtime` (BFR-QA-001): `attach(context)` puts a `MutationObserver` into
package/README.md CHANGED
@@ -96,4 +96,27 @@ Captures survive a full-page navigation (they are reported to Node through a Pla
96
96
  is plain JavaScript, so no `__name` shim is needed under `tsx` / esbuild. `collect()` throws on a context without
97
97
  `attach()` — an empty report would otherwise read as "no notifications".
98
98
 
99
+ ## Login-flow notification sweep (`/runtime` + CLI)
100
+
101
+ Built on the detector: opens the login page of many projects, submits it with a WRONG password (so the ERROR branch
102
+ is measured without a test account) and prints one matrix row per project — notifications · error/warning · banners ·
103
+ modal dialogs · raw-technical leaks · console errors. Framework-level defects show up only when many projects are
104
+ measured the same way.
105
+
106
+ ```bash
107
+ dye2e notification-sweep --targets TEST-TARGETS.md --json sweep.json # or a JSON [{ key, loginUrl | baseUrl }]
108
+ dye2e notification-sweep --targets targets.json --only a,b --fail-on-leak # exit 1 on a raw technical leak
109
+ ```
110
+ ```ts
111
+ const outcomes = await DyE2E_NotificationSweep_Util.sweep(browser, targets, { settleMs: 5000 });
112
+ console.log(DyE2E_NotificationSweep_Util.matrix(outcomes.map((o) => o.row)));
113
+ ```
114
+
115
+ Guards in code, not in docs: the probe address must be on a reserved domain (`example.com`, `*.test`, `*.invalid` …)
116
+ or on one you declare with `ownDomains` — anything else throws before a page is opened; the form is submitted only on
117
+ a test host (`test.*`, `*.test`, `localhost` …, or `allowSubmitHosts`) — anything else is loaded but NOT submitted,
118
+ and the row says so. `real: true` / `--real` uses `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD`; without them the row says
119
+ it fell back to the probe. Modal dialogs (a "not the production system" notice, an error dialog) are RECORDED —
120
+ text + leak flag — before they are closed; a non-modal cookie bar is left alone.
121
+
99
122
  Detailed game-preset contract: [`__documentations/game-preset.md`](__documentations/game-preset.md).
package/bin/dye2e.js CHANGED
@@ -403,6 +403,19 @@ function main() {
403
403
  process.exit(0);
404
404
  }
405
405
 
406
+ if (parsed.command === 'notification-sweep') {
407
+ // BFR-QA-002 — the logic is TypeScript (runtime module); needs @playwright/test in the consumer
408
+ const { DyE2E_NotificationSweep_Util } = require('../build/_modules/runtime/_collections/notification-sweep.util');
409
+ DyE2E_NotificationSweep_Util.runCli(parsed.flags).then(
410
+ (code) => process.exit(code),
411
+ (error) => {
412
+ process.stderr.write('[dye2e] notification-sweep failed: ' + (error && error.stack ? error.stack : error) + '\n');
413
+ process.exit(1);
414
+ },
415
+ );
416
+ return;
417
+ }
418
+
406
419
  if (parsed.command === 'bundle-summary') {
407
420
  const bundleP = parsed.flags.bundle;
408
421
  if (!bundleP) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runner.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAE/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAsBpF,MAAM,CAAC,QAAQ,IAAI,MAAM;IAwFzB;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA0D/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,GAAG;QAC9H,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IA2CD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB9D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,EAChF,UAAU,EAAE,MAAM,GACjB,MAAM;CAaV"}
1
+ {"version":3,"file":"cli-runner.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,qBAAa,oBAAoB;IAE/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAsBpF,MAAM,CAAC,QAAQ,IAAI,MAAM;IAyGzB;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA0D/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,GAAG;QAC9H,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IA2CD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB9D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,EAChF,UAAU,EAAE,MAAM,GACjB,MAAM;CAaV"}
@@ -61,6 +61,23 @@ Visual QA (/vqa) commands:
61
61
  generate-comparison-bundle Before/after capture sets -> comparison bundle
62
62
  bundle-summary Print an existing bundle's summary.md
63
63
 
64
+ QA commands:
65
+ notification-sweep Login pages -> wrong-password submit -> notification / banner / leak matrix
66
+
67
+ Flags (notification-sweep):
68
+ --targets <path> TEST-TARGETS.md (only https://test. rows) or JSON [{ key, loginUrl | baseUrl }] (required)
69
+ --only <a,b> Only these target keys
70
+ --login-paths <k=/p,..> Per-target login path (default /landing/login)
71
+ --no-submit Only load the login pages
72
+ --real Use E2E_PERSISTENT_USER_EMAIL / _PASSWORD (else the wrong-password probe)
73
+ --probe-email <addr> Probe address — reserved domain or one of --own-domains ONLY
74
+ --own-domains <d,..> Your own e-mail domains allowed for the probe address
75
+ --allow-hosts <h,..> Extra hosts the form may be submitted to (default: test.*, *.test, localhost)
76
+ --settle-ms / --after-submit-ms <ms> Waits (default 5000 / 9000)
77
+ --json <out> Write rows + full reports as JSON
78
+ --fail-on-leak Exit 1 if any page shows a raw technical leak
79
+ --executable-path <exe> Chromium to launch (or DYE2E_CHROMIUM_EXECUTABLE_PATH)
80
+
64
81
  Flags (preset):
65
82
  --name <preset> Print this preset as JSON (omit to list all)
66
83
 
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runner.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-runner.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,9 @@ export declare const DYE2E_NOTIFICATION_BINDING_NAME: string;
22
22
  export declare const DYE2E_NOTIFICATION_DETECTOR_PAGE_SCRIPT: string;
23
23
  /**
24
24
  * Page-side expression: the visible error banners / inline error texts at this moment (not toasts — e.g. a login
25
- * form showing a raw HTTP error). Only really visible elements, deduplicated by tag + text. PURE JavaScript.
25
+ * form showing a raw HTTP error). Only really visible elements, deduplicated by tag + text; an element INSIDE an
26
+ * already counted banner is part of it, not a new one (measured: a `role=alert` box with its `.error-text` and icon
27
+ * was counted three times). PURE JavaScript.
26
28
  */
27
29
  export declare const DYE2E_VISIBLE_ERRORS_PAGE_EXPRESSION: string;
28
30
  //# sourceMappingURL=notification-detector-page-script.const.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-detector-page-script.const.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector-page-script.const.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAyC,CAAC;AAExF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uCAAuC,EAAE,MA6GrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC,EAAE,MAsBlD,CAAC"}
1
+ {"version":3,"file":"notification-detector-page-script.const.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector-page-script.const.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAyC,CAAC;AAExF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uCAAuC,EAAE,MA6GrD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,EAAE,MA2BlD,CAAC"}
@@ -134,7 +134,9 @@ exports.DYE2E_NOTIFICATION_DETECTOR_PAGE_SCRIPT = `
134
134
  `;
135
135
  /**
136
136
  * Page-side expression: the visible error banners / inline error texts at this moment (not toasts — e.g. a login
137
- * form showing a raw HTTP error). Only really visible elements, deduplicated by tag + text. PURE JavaScript.
137
+ * form showing a raw HTTP error). Only really visible elements, deduplicated by tag + text; an element INSIDE an
138
+ * already counted banner is part of it, not a new one (measured: a `role=alert` box with its `.error-text` and icon
139
+ * was counted three times). PURE JavaScript.
138
140
  */
139
141
  exports.DYE2E_VISIBLE_ERRORS_PAGE_EXPRESSION = `
140
142
  (function () {
@@ -142,6 +144,7 @@ exports.DYE2E_VISIBLE_ERRORS_PAGE_EXPRESSION = `
142
144
  '.text-red-200', '.text-red-500', '.text-red-600', '.text-red-700', '[role="alert"]'];
143
145
  var out = [];
144
146
  var seen = {};
147
+ var picked = [];
145
148
  var found = document.querySelectorAll(selectors.join(','));
146
149
  for (var i = 0; i < found.length; i++) {
147
150
  var el = found[i];
@@ -153,7 +156,11 @@ exports.DYE2E_VISIBLE_ERRORS_PAGE_EXPRESSION = `
153
156
  style.visibility !== 'hidden' && style.display !== 'none';
154
157
  var key = el.tagName + '|' + text;
155
158
  if (!visible || seen[key]) { continue; }
159
+ var inside = false;
160
+ for (var j = 0; j < picked.length; j++) { if (picked[j].contains(el)) { inside = true; break; } }
161
+ if (inside) { continue; }
156
162
  seen[key] = true;
163
+ picked.push(el);
157
164
  out.push({ tag: el.tagName.toLowerCase(), cls: String(el.className || '').slice(0, 120), text: text.slice(0, 260) });
158
165
  }
159
166
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"notification-detector-page-script.const.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector-page-script.const.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,+BAA+B,GAAW,gCAAgC,CAAC;AAExF;;;;;;;;;;;;;;;GAeG;AACU,QAAA,uCAAuC,GAAW;;;;;;uBAMxC,uCAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGrD,CAAC;AAEF;;;GAGG;AACU,QAAA,oCAAoC,GAAW;;;;;;;;;;;;;;;;;;;;;;CAsB3D,CAAC"}
1
+ {"version":3,"file":"notification-detector-page-script.const.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector-page-script.const.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,+BAA+B,GAAW,gCAAgC,CAAC;AAExF;;;;;;;;;;;;;;;GAeG;AACU,QAAA,uCAAuC,GAAW;;;;;;uBAMxC,uCAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGrD,CAAC;AAEF;;;;;GAKG;AACU,QAAA,oCAAoC,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-detector.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAGL,kCAAkC,EAGlC,4BAA4B,EAC7B,MAAM,0CAA0C,CAAC;AAqBlD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,+BAA+B;IAE1C,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAI7C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAA0D;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC2B;IAE7D;;;;OAIG;WACU,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3D;;;;OAIG;WACU,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAiC7E,8GAA8G;WACjG,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAenF,iHAAiH;IACjH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhD,gEAAgE;IAChE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,kCAAkC,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;IA+BxF,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAC,SAAS;IAgBxB,OAAO,CAAC,MAAM,CAAC,OAAO;CAQvB"}
1
+ {"version":3,"file":"notification-detector.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAGL,kCAAkC,EAGlC,4BAA4B,EAC7B,MAAM,0CAA0C,CAAC;AAqBlD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,+BAA+B;IAE1C,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAM7C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAA0D;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC2B;IAE7D;;;;OAIG;WACU,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3D;;;;OAIG;WACU,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAiC7E,8GAA8G;WACjG,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAenF,iHAAiH;IACjH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhD,gEAAgE;IAChE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,kCAAkC,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM;IA+BxF,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAC,SAAS;IAgBxB,OAAO,CAAC,MAAM,CAAC,OAAO;CAQvB"}
@@ -22,7 +22,9 @@ const notification_detector_page_script_const_1 = require("./notification-detect
22
22
  class DyE2E_NotificationDetector_Util {
23
23
  /** Texts that expose internals to the user instead of a human message. */
24
24
  static rawTechnicalLeakPattern = new RegExp('(Http failure response|Unauthorized|Internal Server|undefined|\\[object Object\\]|/api/|-api/|' +
25
- 'status of \\d{3}|ERR_|Cannot (GET|POST|read))', 'i');
25
+ 'status of \\d{3}|\\bHTTP \\d{3}\\b|ERR_|Cannot (GET|POST|read)|' +
26
+ // JS errors shown to the user (measured on a TEST site: "…: this.rendering_CS.noServer… is not a function")
27
+ 'is not a function|is not defined|TypeError|\\bthis\\.[A-Za-z_$][\\w$]*\\.)', 'i');
26
28
  static attachedContexts = new WeakSet();
27
29
  static pageStates = new WeakMap();
28
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"notification-detector.util.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-detector.util.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-detector.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Browser } from '@playwright/test';
2
+ import { DyE2E_SweepOptions_Interface, DyE2E_SweepOutcome_Interface, DyE2E_SweepRow_Interface, DyE2E_SweepTarget_Interface } from '../_models/notification-sweep.interface';
3
+ /**
4
+ * Login-flow notification sweep (BFR-QA-002) — on top of `DyE2E_NotificationDetector_Util` (BFR-QA-001): opens the
5
+ * login page of every target, submits it with a WRONG password by default (so the ERROR branch is measured without
6
+ * a test account), and returns one matrix row per project: notifications · error/warning · visible banners ·
7
+ * raw-technical leaks · console errors. Framework-level defects (e.g. the raw `Http failure … 401` banner on the
8
+ * login of 5+ projects) only show when many projects are measured the same way.
9
+ *
10
+ * Two guards are CODE, not advice:
11
+ * - the probe e-mail must be on a reserved, undeliverable domain (`example.com`, `*.example`, `*.test`, `*.invalid`,
12
+ * `*.localhost`, `*.local`) or on a domain you declare your own (`ownDomains`) — `core-test-email-own-or-reserved-only`;
13
+ * - the form is submitted only on a test host (`test.*`, `*.test`, `localhost`, `127.0.0.1` …, or `allowSubmitHosts`)
14
+ * — anything else is loaded but NOT submitted, and the row says so.
15
+ * `real: true` uses the registered test account from `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD`; without them the row
16
+ * says it fell back to the probe. No account is ever created.
17
+ */
18
+ export declare class DyE2E_NotificationSweep_Util {
19
+ /** The default probe e-mail — a reserved, undeliverable domain. */
20
+ static readonly defaultProbeEmail: string;
21
+ /** The default probe password (deliberately wrong). */
22
+ static readonly defaultProbePassword: string;
23
+ /** Login paths that differ from the FDP default `/landing/login` (measured). */
24
+ static readonly defaultLoginPaths: Record<string, string>;
25
+ /** The e-mail / user-name field. */
26
+ static readonly emailSelector: string;
27
+ /** The submit button. */
28
+ static readonly submitSelector: string;
29
+ /** Whether an e-mail may be used as a probe: reserved domain, or one of `ownDomains` (or a subdomain of it). */
30
+ static isAllowedProbeEmail(email: string, ownDomains?: string[]): boolean;
31
+ /** Whether the form of `url` may be submitted: a test host, or one of `allowHosts`. */
32
+ static isSubmitAllowed(url: string, allowHosts?: string[]): boolean;
33
+ /**
34
+ * Targets from a file: JSON (`[{ key, loginUrl }]` or `[{ key, baseUrl, loginPath? }]`), or the QA workspace's
35
+ * `TEST-TARGETS.md` table (`| **key** | \`https://test.…\` |` — only `https://test.` rows, PROD is never a target).
36
+ */
37
+ static readTargets(file: string, loginPaths?: Record<string, string>): DyE2E_SweepTarget_Interface[];
38
+ /** Sweeps the targets one by one (a fresh context each) and returns the rows with their full reports. */
39
+ static sweep(browser: Browser, targets: DyE2E_SweepTarget_Interface[], options?: DyE2E_SweepOptions_Interface): Promise<DyE2E_SweepOutcome_Interface[]>;
40
+ /** The matrix of a sweep as text. */
41
+ static matrix(rows: DyE2E_SweepRow_Interface[]): string;
42
+ /**
43
+ * `dye2e notification-sweep` — flags: `--targets <md|json>` (required) · `--only a,b` · `--login-paths k=/p,…` ·
44
+ * `--no-submit` · `--real` · `--probe-email` · `--own-domains d,…` · `--allow-hosts h,…` · `--settle-ms` ·
45
+ * `--after-submit-ms` · `--json <out>` · `--fail-on-leak` · `--executable-path`.
46
+ * @returns the process exit code (2 = no targets / bad input, 1 = `--fail-on-leak` and a leak, 0 otherwise).
47
+ */
48
+ static runCli(flags: Record<string, string>): Promise<number>;
49
+ /** One target: fresh context, detector, load, (guarded) submit, collect. */
50
+ private static sweepOne;
51
+ /**
52
+ * Records, then closes the MODAL dialogs (cdk overlay, `aria-modal="true"`, `alertdialog`) — measured 2026-09-24:
53
+ * - on 3 of 7 TEST sites a "This is NOT the production system" notice covered the login (every click hit it);
54
+ * - on one, the modal WAS the finding: "An unexpected error occurred: this.… is not a function" on page load —
55
+ * so every dialog is recorded (text + raw-technical-leak flag) BEFORE it is closed, never silently swept away.
56
+ * A non-modal `role="dialog"` (a cookie-consent bar) does not block the page and is left alone. Escape first, then
57
+ * the dialog's own action button; a modal that stays open stops the loop (named in the note).
58
+ */
59
+ private static captureModalDialogs;
60
+ /** Fills the login form and submits it; a missing field is a note, not a crash. */
61
+ private static submitLogin;
62
+ /** CLI flags → sweep options. */
63
+ private static optionsFromFlags;
64
+ }
65
+ //# sourceMappingURL=notification-sweep.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-sweep.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-sweep.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA2C,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAGL,4BAA4B,EAC5B,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAGjD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,4BAA4B;IAEvC,mEAAmE;IACnE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAmC;IAE5E,uDAAuD;IACvD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAA6B;IAEzE,gFAAgF;IAChF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAqC;IAE9F,oCAAoC;IACpC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CACgE;IAErG,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CACqE;IAE3G,gHAAgH;IAChH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,OAAO;IAa7E,uFAAuF;IACvF,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,OAAO;IAcvE;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,2BAA2B,EAAE;IAqCxG,yGAAyG;WAC5F,KAAK,CAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,2BAA2B,EAAE,EACtC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAgB1C,qCAAqC;IACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,wBAAwB,EAAE,GAAG,MAAM;IAgBvD;;;;;OAKG;WACU,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDnE,4EAA4E;mBACvD,QAAQ;IAkF7B;;;;;;;OAOG;mBACkB,mBAAmB;IAyCxC,mFAAmF;mBAC9D,WAAW;IAqBhC,iCAAiC;IACjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAiBhC"}
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DyE2E_NotificationSweep_Util = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const test_1 = require("@playwright/test");
29
+ const notification_detector_util_1 = require("./notification-detector.util");
30
+ /**
31
+ * Login-flow notification sweep (BFR-QA-002) — on top of `DyE2E_NotificationDetector_Util` (BFR-QA-001): opens the
32
+ * login page of every target, submits it with a WRONG password by default (so the ERROR branch is measured without
33
+ * a test account), and returns one matrix row per project: notifications · error/warning · visible banners ·
34
+ * raw-technical leaks · console errors. Framework-level defects (e.g. the raw `Http failure … 401` banner on the
35
+ * login of 5+ projects) only show when many projects are measured the same way.
36
+ *
37
+ * Two guards are CODE, not advice:
38
+ * - the probe e-mail must be on a reserved, undeliverable domain (`example.com`, `*.example`, `*.test`, `*.invalid`,
39
+ * `*.localhost`, `*.local`) or on a domain you declare your own (`ownDomains`) — `core-test-email-own-or-reserved-only`;
40
+ * - the form is submitted only on a test host (`test.*`, `*.test`, `localhost`, `127.0.0.1` …, or `allowSubmitHosts`)
41
+ * — anything else is loaded but NOT submitted, and the row says so.
42
+ * `real: true` uses the registered test account from `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD`; without them the row
43
+ * says it fell back to the probe. No account is ever created.
44
+ */
45
+ class DyE2E_NotificationSweep_Util {
46
+ /** The default probe e-mail — a reserved, undeliverable domain. */
47
+ static defaultProbeEmail = 'dye2e-sweep-probe@example.com';
48
+ /** The default probe password (deliberately wrong). */
49
+ static defaultProbePassword = 'Dye2e-Wrong-Password-1!';
50
+ /** Login paths that differ from the FDP default `/landing/login` (measured). */
51
+ static defaultLoginPaths = { 'fdp-token-service': '/login' };
52
+ /** The e-mail / user-name field. */
53
+ static emailSelector = 'input[type="email"], input[formcontrolname*="mail" i], input[name*="mail" i], input[type="text"]';
54
+ /** The submit button. */
55
+ static submitSelector = 'button[type="submit"], button:has-text("Login"), button:has-text("Log in"), button:has-text("Belépés")';
56
+ /** Whether an e-mail may be used as a probe: reserved domain, or one of `ownDomains` (or a subdomain of it). */
57
+ static isAllowedProbeEmail(email, ownDomains = []) {
58
+ const domain = (email.split('@')[1] ?? '').trim().toLowerCase();
59
+ if (!domain || !/^[a-z0-9.-]+$/.test(domain)) {
60
+ return false;
61
+ }
62
+ const reserved = ['example.com', 'example.net', 'example.org'].includes(domain)
63
+ || ['.example', '.test', '.invalid', '.localhost', '.local'].some((tld) => domain.endsWith(tld));
64
+ return reserved || ownDomains.some((own) => domain === own.toLowerCase() || domain.endsWith('.' + own.toLowerCase()));
65
+ }
66
+ /** Whether the form of `url` may be submitted: a test host, or one of `allowHosts`. */
67
+ static isSubmitAllowed(url, allowHosts = []) {
68
+ let host;
69
+ try {
70
+ host = new URL(url).hostname.toLowerCase();
71
+ }
72
+ catch (error) {
73
+ return false;
74
+ }
75
+ return host.startsWith('test.') || ['localhost', '127.0.0.1', '[::1]'].includes(host)
76
+ || ['.test', '.localhost'].some((tld) => host.endsWith(tld))
77
+ || allowHosts.some((allowed) => host === allowed.toLowerCase());
78
+ }
79
+ /**
80
+ * Targets from a file: JSON (`[{ key, loginUrl }]` or `[{ key, baseUrl, loginPath? }]`), or the QA workspace's
81
+ * `TEST-TARGETS.md` table (`| **key** | \`https://test.…\` |` — only `https://test.` rows, PROD is never a target).
82
+ */
83
+ static readTargets(file, loginPaths = {}) {
84
+ const text = fs.readFileSync(file, 'utf8');
85
+ const paths = { ...DyE2E_NotificationSweep_Util.defaultLoginPaths, ...loginPaths };
86
+ if (file.toLowerCase().endsWith('.json')) {
87
+ const parsed = JSON.parse(text);
88
+ if (!Array.isArray(parsed)) {
89
+ throw new Error(`notification-sweep: ${file} must be a JSON array of { key, loginUrl } / { key, baseUrl }`);
90
+ }
91
+ return parsed.map((entry, index) => {
92
+ const key = typeof entry.key === 'string' ? entry.key : '';
93
+ const base = typeof entry.baseUrl === 'string' ? entry.baseUrl.replace(/\/+$/, '') : '';
94
+ const loginUrl = typeof entry.loginUrl === 'string' ? entry.loginUrl
95
+ : base + (typeof entry.loginPath === 'string' ? entry.loginPath : paths[key] ?? '/landing/login');
96
+ if (!key || !/^https?:\/\//.test(loginUrl)) {
97
+ throw new Error(`notification-sweep: ${file} entry #${index} needs a "key" and a "loginUrl" or "baseUrl"`);
98
+ }
99
+ return { key: key, loginUrl: loginUrl };
100
+ });
101
+ }
102
+ const targets = [];
103
+ const row = /^\|\s*\*\*([a-z0-9-]+)\*\*\s*\|\s*`(https:\/\/test\.[^`\s]+)`/gim;
104
+ let match = row.exec(text);
105
+ while (match) {
106
+ targets.push({ key: match[1], loginUrl: match[2].replace(/\/+$/, '') + (paths[match[1]] ?? '/landing/login') });
107
+ match = row.exec(text);
108
+ }
109
+ return targets;
110
+ }
111
+ /** Sweeps the targets one by one (a fresh context each) and returns the rows with their full reports. */
112
+ static async sweep(browser, targets, options = {}) {
113
+ const probeEmail = options.probeEmail ?? DyE2E_NotificationSweep_Util.defaultProbeEmail;
114
+ if (!DyE2E_NotificationSweep_Util.isAllowedProbeEmail(probeEmail, options.ownDomains)) {
115
+ throw new Error(`notification-sweep: the probe e-mail "${probeEmail}" is not on a reserved (example.com, *.test, `
116
+ + '*.invalid …) or declared own domain (`ownDomains`) — a test must never write to a real, foreign address.');
117
+ }
118
+ const outcomes = [];
119
+ for (const target of targets) {
120
+ outcomes.push(await DyE2E_NotificationSweep_Util.sweepOne(browser, target, options, probeEmail));
121
+ }
122
+ return outcomes;
123
+ }
124
+ /** The matrix of a sweep as text. */
125
+ static matrix(rows) {
126
+ const lines = [
127
+ '=================== NOTIFICATION SWEEP ===================',
128
+ 'project | mode | notif | err/warn | banner | dialog | leak | console | note',
129
+ ];
130
+ rows.forEach((r) => {
131
+ lines.push(r.key.padEnd(20) + ' | ' + r.mode.padEnd(9) + ' | ' + String(r.notifications).padEnd(5) + ' | '
132
+ + String(r.errorOrWarning).padEnd(8) + ' | ' + String(r.banners).padEnd(6) + ' | ' + String(r.dialogs).padEnd(6)
133
+ + ' | ' + String(r.leaks).padEnd(4)
134
+ + ' | ' + String(r.consoleErrors).padEnd(7) + ' | ' + r.note);
135
+ });
136
+ return lines.join('\n');
137
+ }
138
+ /**
139
+ * `dye2e notification-sweep` — flags: `--targets <md|json>` (required) · `--only a,b` · `--login-paths k=/p,…` ·
140
+ * `--no-submit` · `--real` · `--probe-email` · `--own-domains d,…` · `--allow-hosts h,…` · `--settle-ms` ·
141
+ * `--after-submit-ms` · `--json <out>` · `--fail-on-leak` · `--executable-path`.
142
+ * @returns the process exit code (2 = no targets / bad input, 1 = `--fail-on-leak` and a leak, 0 otherwise).
143
+ */
144
+ static async runCli(flags) {
145
+ if (!flags.targets) {
146
+ process.stderr.write('[dye2e] error: --targets <TEST-TARGETS.md | targets.json> required\n');
147
+ return 2;
148
+ }
149
+ const list = (value) => (value ?? '').split(',').map((s) => s.trim()).filter(Boolean);
150
+ const loginPaths = {};
151
+ list(flags['login-paths']).forEach((pair) => {
152
+ const [key, loginPath] = pair.split('=');
153
+ loginPaths[key] = loginPath;
154
+ });
155
+ const only = list(flags.only);
156
+ const targets = DyE2E_NotificationSweep_Util.readTargets(flags.targets, loginPaths)
157
+ .filter((t) => !only.length || only.includes(t.key));
158
+ if (!targets.length) {
159
+ process.stderr.write(`[dye2e] error: no target in ${flags.targets}${only.length ? ' after --only' : ''}\n`);
160
+ return 2;
161
+ }
162
+ const executablePath = flags['executable-path'] || process.env.DYE2E_CHROMIUM_EXECUTABLE_PATH;
163
+ const browser = await test_1.chromium.launch(executablePath ? { executablePath: executablePath } : {});
164
+ let outcomes;
165
+ try {
166
+ outcomes = await DyE2E_NotificationSweep_Util.sweep(browser, targets, DyE2E_NotificationSweep_Util.optionsFromFlags(flags, list));
167
+ }
168
+ finally {
169
+ await browser.close();
170
+ }
171
+ outcomes.forEach((o) => {
172
+ process.stdout.write('\n### ' + o.row.key + ' -> ' + o.row.reachedUrl + (o.row.note ? ' [' + o.row.note + ']' : '')
173
+ + '\n' + notification_detector_util_1.DyE2E_NotificationDetector_Util.summarize(o.report, o.row.key) + '\n');
174
+ });
175
+ const rows = outcomes.map((o) => o.row);
176
+ process.stdout.write('\n' + DyE2E_NotificationSweep_Util.matrix(rows) + '\n');
177
+ if (flags.json) {
178
+ fs.writeFileSync(flags.json, JSON.stringify({ generatedAt: new Date().toISOString(), outcomes: outcomes }, null, 2));
179
+ }
180
+ return flags['fail-on-leak'] && rows.some((r) => r.leaks > 0) ? 1 : 0;
181
+ }
182
+ /** One target: fresh context, detector, load, (guarded) submit, collect. */
183
+ static async sweepOne(browser, target, options, probeEmail) {
184
+ const context = await browser.newContext({ ignoreHTTPSErrors: true, viewport: { width: 1280, height: 900 } });
185
+ const notes = [];
186
+ const dialogs = [];
187
+ let mode = options.submit === false ? 'no-submit' : 'probe';
188
+ let submitted = false;
189
+ let page;
190
+ try {
191
+ if (options.prepareContext) {
192
+ await options.prepareContext(context);
193
+ }
194
+ await notification_detector_util_1.DyE2E_NotificationDetector_Util.attach(context);
195
+ page = await context.newPage();
196
+ await page.goto(target.loginUrl, { waitUntil: 'domcontentloaded', timeout: options.navigationTimeoutMs ?? 45_000 });
197
+ await page.waitForTimeout(options.settleMs ?? 5_000);
198
+ // a modal on load is RECORDED (it may be the finding itself), then closed so the form can be used
199
+ await DyE2E_NotificationSweep_Util.captureModalDialogs(page, 'load', notes, dialogs);
200
+ if (mode !== 'no-submit' && !DyE2E_NotificationSweep_Util.isSubmitAllowed(page.url(), options.allowSubmitHosts)) {
201
+ notes.push('submit-refused: ' + new URL(page.url()).hostname + ' is not a test host');
202
+ mode = 'no-submit';
203
+ }
204
+ if (mode !== 'no-submit') {
205
+ let email = probeEmail;
206
+ let password = options.probePassword ?? DyE2E_NotificationSweep_Util.defaultProbePassword;
207
+ if (options.real) {
208
+ if (process.env.E2E_PERSISTENT_USER_EMAIL && process.env.E2E_PERSISTENT_USER_PASSWORD) {
209
+ email = process.env.E2E_PERSISTENT_USER_EMAIL;
210
+ password = process.env.E2E_PERSISTENT_USER_PASSWORD;
211
+ mode = 'real';
212
+ }
213
+ else {
214
+ notes.push('real requested, E2E_PERSISTENT_USER_EMAIL/_PASSWORD not set: wrong-password probe used');
215
+ }
216
+ }
217
+ submitted = await DyE2E_NotificationSweep_Util.submitLogin(page, email, password, notes);
218
+ if (submitted) {
219
+ await page.waitForTimeout(options.afterSubmitMs ?? 9_000);
220
+ await DyE2E_NotificationSweep_Util.captureModalDialogs(page, 'after-submit', notes, dialogs);
221
+ }
222
+ }
223
+ }
224
+ catch (error) {
225
+ notes.push('flow-error: ' + (error instanceof Error ? error.message : String(error)).split('\n')[0].slice(0, 140));
226
+ }
227
+ const report = page
228
+ ? await notification_detector_util_1.DyE2E_NotificationDetector_Util.collect(page)
229
+ : { notifications: [], visibleErrors: [], consoleErrors: [], pageErrors: [] };
230
+ const reachedUrl = page ? page.url() : target.loginUrl;
231
+ await context.close();
232
+ const leakingDialogs = dialogs.filter((d) => d.rawTechnicalLeak).length;
233
+ return {
234
+ report: report,
235
+ dialogs: dialogs,
236
+ row: {
237
+ key: target.key,
238
+ loginUrl: target.loginUrl,
239
+ reachedUrl: reachedUrl,
240
+ mode: mode,
241
+ submitted: submitted,
242
+ notifications: report.notifications.length,
243
+ errorOrWarning: report.notifications.filter((n) => n.type === 'error' || n.type === 'warning').length,
244
+ banners: report.visibleErrors.length,
245
+ dialogs: dialogs.length,
246
+ leaks: report.visibleErrors.filter((e) => e.rawTechnicalLeak).length
247
+ + leakingDialogs,
248
+ consoleErrors: report.consoleErrors.filter((c) => c.type === 'error').length,
249
+ pageErrors: report.pageErrors.length,
250
+ note: notes.join(' · '),
251
+ },
252
+ };
253
+ }
254
+ /**
255
+ * Records, then closes the MODAL dialogs (cdk overlay, `aria-modal="true"`, `alertdialog`) — measured 2026-09-24:
256
+ * - on 3 of 7 TEST sites a "This is NOT the production system" notice covered the login (every click hit it);
257
+ * - on one, the modal WAS the finding: "An unexpected error occurred: this.… is not a function" on page load —
258
+ * so every dialog is recorded (text + raw-technical-leak flag) BEFORE it is closed, never silently swept away.
259
+ * A non-modal `role="dialog"` (a cookie-consent bar) does not block the page and is left alone. Escape first, then
260
+ * the dialog's own action button; a modal that stays open stops the loop (named in the note).
261
+ */
262
+ static async captureModalDialogs(page, phase, notes, dialogs) {
263
+ for (let round = 0; round < 3; round++) {
264
+ const dialog = page.locator('.cdk-overlay-container [role="dialog"]:visible, '
265
+ + '.cdk-overlay-container mat-dialog-container:visible, [role="dialog"][aria-modal="true"]:visible, '
266
+ + '[role="alertdialog"]:visible').first();
267
+ if (!await dialog.count()) {
268
+ return;
269
+ }
270
+ const fullText = ((await dialog.textContent()) ?? '').replace(/\s+/g, ' ').trim().slice(0, 300);
271
+ const text = fullText.slice(0, 70);
272
+ dialogs.push({
273
+ phase: phase,
274
+ text: fullText,
275
+ rawTechnicalLeak: notification_detector_util_1.DyE2E_NotificationDetector_Util.isRawTechnicalLeak(fullText),
276
+ });
277
+ await page.keyboard.press('Escape');
278
+ await page.waitForTimeout(300);
279
+ if (await dialog.isVisible()) {
280
+ const action = dialog.locator('mat-dialog-actions button, [mat-dialog-actions] button, button').last();
281
+ if (await action.count()) {
282
+ await action.click({ timeout: 3_000 }).catch(() => undefined);
283
+ await page.waitForTimeout(300);
284
+ }
285
+ }
286
+ const stillOpen = await dialog.isVisible();
287
+ notes.push(phase + ' dialog: "' + text + '"' + (stillOpen ? ' (it stayed open)' : ' (closed)'));
288
+ if (stillOpen) {
289
+ return;
290
+ }
291
+ }
292
+ }
293
+ /** Fills the login form and submits it; a missing field is a note, not a crash. */
294
+ static async submitLogin(page, email, password, notes) {
295
+ const passwordField = page.locator('input[type="password"]').first();
296
+ if (!await passwordField.count()) {
297
+ notes.push('submit-skip: no password field on the page');
298
+ return false;
299
+ }
300
+ await page.locator(DyE2E_NotificationSweep_Util.emailSelector).first().fill(email, { timeout: 8_000 });
301
+ await passwordField.fill(password, { timeout: 8_000 });
302
+ const button = page.locator(DyE2E_NotificationSweep_Util.submitSelector).first();
303
+ if (await button.count()) {
304
+ await button.click({ timeout: 8_000 });
305
+ }
306
+ else {
307
+ await passwordField.press('Enter');
308
+ }
309
+ return true;
310
+ }
311
+ /** CLI flags → sweep options. */
312
+ static optionsFromFlags(flags, list) {
313
+ const number = (value) => (value && !Number.isNaN(Number(value)) ? Number(value) : undefined);
314
+ return {
315
+ submit: !flags['no-submit'],
316
+ real: !!flags.real,
317
+ probeEmail: flags['probe-email'],
318
+ ownDomains: list(flags['own-domains']),
319
+ allowSubmitHosts: list(flags['allow-hosts']),
320
+ settleMs: number(flags['settle-ms']),
321
+ afterSubmitMs: number(flags['after-submit-ms']),
322
+ };
323
+ }
324
+ }
325
+ exports.DyE2E_NotificationSweep_Util = DyE2E_NotificationSweep_Util;
326
+ //# sourceMappingURL=notification-sweep.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-sweep.util.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_collections/notification-sweep.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { BrowserContext } from '@playwright/test';
2
+ import { DyE2E_NotificationReport_Interface } from './notification-report.interface';
3
+ /** One project of a notification sweep: a name and its login page. */
4
+ export interface DyE2E_SweepTarget_Interface {
5
+ key: string;
6
+ loginUrl: string;
7
+ }
8
+ /** How a target was driven. */
9
+ export type DyE2E_SweepMode = 'probe' | 'real' | 'no-submit';
10
+ /** One matrix row of a sweep (BFR-QA-002). */
11
+ export interface DyE2E_SweepRow_Interface {
12
+ key: string;
13
+ loginUrl: string;
14
+ /** Where the page ended up after the flow. */
15
+ reachedUrl: string;
16
+ mode: DyE2E_SweepMode;
17
+ /** The login form was really submitted. */
18
+ submitted: boolean;
19
+ notifications: number;
20
+ errorOrWarning: number;
21
+ banners: number;
22
+ /** Modal dialogs seen (on load or after the submit) — each recorded before it was closed. */
23
+ dialogs: number;
24
+ /** Banners AND dialogs that leak raw technical detail (`Http failure response`, `/api/`, `… is not a function`). */
25
+ leaks: number;
26
+ consoleErrors: number;
27
+ pageErrors: number;
28
+ /** Why something was skipped / refused / fell back (empty = the full flow ran). */
29
+ note: string;
30
+ }
31
+ /** A modal dialog the sweep met (and closed) — it may be the finding itself. */
32
+ export interface DyE2E_SweepDialog_Interface {
33
+ phase: 'load' | 'after-submit';
34
+ /** Whitespace-collapsed text, capped at 300 chars. */
35
+ text: string;
36
+ rawTechnicalLeak: boolean;
37
+ }
38
+ /** A row plus the full detector report and the dialogs behind it. */
39
+ export interface DyE2E_SweepOutcome_Interface {
40
+ row: DyE2E_SweepRow_Interface;
41
+ report: DyE2E_NotificationReport_Interface;
42
+ dialogs: DyE2E_SweepDialog_Interface[];
43
+ }
44
+ /** Options of a sweep. */
45
+ export interface DyE2E_SweepOptions_Interface {
46
+ /** Submit the login form (default `true`); `false` = only load the page. */
47
+ submit?: boolean;
48
+ /** Use the registered test account from `E2E_PERSISTENT_USER_EMAIL` / `_PASSWORD` (default `false`). */
49
+ real?: boolean;
50
+ /** Probe e-mail (default `dye2e-sweep-probe@example.com`); must be on a reserved or an `ownDomains` domain. */
51
+ probeEmail?: string;
52
+ /** Probe password (default: a fixed wrong password). */
53
+ probePassword?: string;
54
+ /** Your own e-mail domains, allowed for `probeEmail` besides the reserved ones. */
55
+ ownDomains?: string[];
56
+ /** Hosts the form may be submitted to besides the test hosts (`test.*`, `*.test`, `localhost` …). */
57
+ allowSubmitHosts?: string[];
58
+ /** Wait after the page load before submitting (default 5000 ms). */
59
+ settleMs?: number;
60
+ /** Wait after the submit for the notifications (default 9000 ms). */
61
+ afterSubmitMs?: number;
62
+ /** Per-navigation timeout (default 45000 ms). */
63
+ navigationTimeoutMs?: number;
64
+ /** Called for every new context before the detector is attached (routing mocks, headers …). */
65
+ prepareContext?: (context: BrowserContext) => Promise<void>;
66
+ }
67
+ //# sourceMappingURL=notification-sweep.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-sweep.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/runtime/_models/notification-sweep.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AAErF,sEAAsE;AACtE,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+BAA+B;AAC/B,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAE7D,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,OAAO,EAAE,MAAM,CAAC;IAChB,oHAAoH;IACpH,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC;IAC/B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,qEAAqE;AACrE,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,wBAAwB,CAAC;IAC9B,MAAM,EAAE,kCAAkC,CAAC;IAC3C,OAAO,EAAE,2BAA2B,EAAE,CAAC;CACxC;AAED,0BAA0B;AAC1B,MAAM,WAAW,4BAA4B;IAC3C,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wGAAwG;IACxG,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+GAA+G;IAC/G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+FAA+F;IAC/F,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=notification-sweep.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-sweep.interface.js","sourceRoot":"","sources":["../../../../src/_modules/runtime/_models/notification-sweep.interface.ts"],"names":[],"mappings":""}
@@ -15,10 +15,12 @@
15
15
  export * from './_collections/assertion-helpers.util';
16
16
  export * from './_collections/notification-detector-page-script.const';
17
17
  export * from './_collections/notification-detector.util';
18
+ export * from './_collections/notification-sweep.util';
18
19
  export * from './_collections/unique-generator.util';
19
20
  export * from './_collections/wait-helpers.util';
20
21
  export * from './_models/index';
21
22
  export * from './_models/notification-report.interface';
23
+ export * from './_models/notification-sweep.interface';
22
24
  export * from './_models/test-user.interface';
23
25
  export * from './_services/dialog-page-object';
24
26
  export * from './_services/field-page-object';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,cAAc,uCAAuC,CAAC;AACtD,cAAc,wDAAwD,CAAC;AACvE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,yCAAyC,CAAC;AACxD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAE3B,eAAO,MAAM,qBAAqB,EAAE,MAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,cAAc,uCAAuC,CAAC;AACtD,cAAc,wDAAwD,CAAC;AACvE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAE3B,eAAO,MAAM,qBAAqB,EAAE,MAAwB,CAAC"}
@@ -32,10 +32,12 @@ exports.DYE2E_RUNTIME_VERSION = void 0;
32
32
  __exportStar(require("./_collections/assertion-helpers.util"), exports);
33
33
  __exportStar(require("./_collections/notification-detector-page-script.const"), exports);
34
34
  __exportStar(require("./_collections/notification-detector.util"), exports);
35
+ __exportStar(require("./_collections/notification-sweep.util"), exports);
35
36
  __exportStar(require("./_collections/unique-generator.util"), exports);
36
37
  __exportStar(require("./_collections/wait-helpers.util"), exports);
37
38
  __exportStar(require("./_models/index"), exports);
38
39
  __exportStar(require("./_models/notification-report.interface"), exports);
40
+ __exportStar(require("./_models/notification-sweep.interface"), exports);
39
41
  __exportStar(require("./_models/test-user.interface"), exports);
40
42
  __exportStar(require("./_services/dialog-page-object"), exports);
41
43
  __exportStar(require("./_services/field-page-object"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;GAaG;AACH,wEAAsD;AACtD,yFAAuE;AACvE,4EAA0D;AAC1D,uEAAqD;AACrD,mEAAiD;AACjD,kDAAgC;AAChC,0EAAwD;AACxD,gEAA8C;AAC9C,iEAA+C;AAC/C,gEAA8C;AAC9C,+DAA6C;AAC7C,iEAA+C;AAC/C,6DAA2C;AAC3C,qEAAmD;AACnD,8DAA4C;AAC5C,gEAA8C;AAC9C,mEAAiD;AACjD,6CAA2B;AAEd,QAAA,qBAAqB,GAAW,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/runtime/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;GAaG;AACH,wEAAsD;AACtD,yFAAuE;AACvE,4EAA0D;AAC1D,yEAAuD;AACvD,uEAAqD;AACrD,mEAAiD;AACjD,kDAAgC;AAChC,0EAAwD;AACxD,yEAAuD;AACvD,gEAA8C;AAC9C,iEAA+C;AAC/C,gEAA8C;AAC9C,+DAA6C;AAC7C,iEAA+C;AAC/C,6DAA2C;AAC3C,qEAAmD;AACnD,8DAA4C;AAC5C,gEAA8C;AAC9C,mEAAiD;AACjD,6CAA2B;AAEd,QAAA,qBAAqB,GAAW,eAAe,CAAC"}
package/build/index.js CHANGED
@@ -24,5 +24,5 @@ __exportStar(require("./_modules/cwv/index"), exports);
24
24
  __exportStar(require("./_modules/vqa/index"), exports);
25
25
  __exportStar(require("./_modules/game/index"), exports);
26
26
  /** Package-version stamp — npm-publish-time runtime-érték. */
27
- exports.DYE2E_PACKAGE_VERSION = '01.18.15';
27
+ exports.DYE2E_PACKAGE_VERSION = '01.18.16';
28
28
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/dynamo-e2e",
3
- "version": "01.18.15",
3
+ "version": "01.18.16",
4
4
  "description": "End-to-end testing engine for the Dynamo + FDP ecosystem — auto-generated form-coverage tests, viewport audit matrix, CWV diagnostics. Settings-POJO-first.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "core-package",