@futdevpro/dynamo-e2e 1.18.15 → 1.18.18

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 (46) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +40 -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/presets/_collections/ci-timeout.util.d.ts +21 -0
  8. package/build/_modules/presets/_collections/ci-timeout.util.d.ts.map +1 -0
  9. package/build/_modules/presets/_collections/ci-timeout.util.js +34 -0
  10. package/build/_modules/presets/_collections/ci-timeout.util.js.map +1 -0
  11. package/build/_modules/presets/_collections/global-setup.factory.d.ts +11 -0
  12. package/build/_modules/presets/_collections/global-setup.factory.d.ts.map +1 -1
  13. package/build/_modules/presets/_collections/global-setup.factory.js +54 -9
  14. package/build/_modules/presets/_collections/global-setup.factory.js.map +1 -1
  15. package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -1
  16. package/build/_modules/presets/_collections/playwright-config.factory.js +9 -4
  17. package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -1
  18. package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts +10 -0
  19. package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts.map +1 -1
  20. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +20 -1
  21. package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -1
  22. package/build/_modules/presets/index.d.ts +2 -1
  23. package/build/_modules/presets/index.d.ts.map +1 -1
  24. package/build/_modules/presets/index.js +6 -1
  25. package/build/_modules/presets/index.js.map +1 -1
  26. package/build/_modules/runtime/_collections/notification-detector-page-script.const.d.ts +3 -1
  27. package/build/_modules/runtime/_collections/notification-detector-page-script.const.d.ts.map +1 -1
  28. package/build/_modules/runtime/_collections/notification-detector-page-script.const.js +8 -1
  29. package/build/_modules/runtime/_collections/notification-detector-page-script.const.js.map +1 -1
  30. package/build/_modules/runtime/_collections/notification-detector.util.d.ts.map +1 -1
  31. package/build/_modules/runtime/_collections/notification-detector.util.js +3 -1
  32. package/build/_modules/runtime/_collections/notification-detector.util.js.map +1 -1
  33. package/build/_modules/runtime/_collections/notification-sweep.util.d.ts +65 -0
  34. package/build/_modules/runtime/_collections/notification-sweep.util.d.ts.map +1 -0
  35. package/build/_modules/runtime/_collections/notification-sweep.util.js +326 -0
  36. package/build/_modules/runtime/_collections/notification-sweep.util.js.map +1 -0
  37. package/build/_modules/runtime/_models/notification-sweep.interface.d.ts +67 -0
  38. package/build/_modules/runtime/_models/notification-sweep.interface.d.ts.map +1 -0
  39. package/build/_modules/runtime/_models/notification-sweep.interface.js +3 -0
  40. package/build/_modules/runtime/_models/notification-sweep.interface.js.map +1 -0
  41. package/build/_modules/runtime/index.d.ts +2 -0
  42. package/build/_modules/runtime/index.d.ts.map +1 -1
  43. package/build/_modules/runtime/index.js +2 -0
  44. package/build/_modules/runtime/index.js.map +1 -1
  45. package/build/index.js +1 -1
  46. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
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.18] — 2026-09-25 — Capability-scoped global setup (BFR-FSMED-017)
7
+
8
+ - `DyE2E_getGlobalSetup` new options: `failOnMissingEnv` (the missing `requiredEnvVars` become FATAL, named in the
9
+ error, the probe does not even start — for auth / user-lifecycle suites; default stays warn-only) and
10
+ `reachabilityPath` (probe a documented endpoint, e.g. `api/health`, resolved under the base URL incl. its path
11
+ prefix; default is still the root). Any HTTP answer still counts as reachable.
12
+ - A failed probe now names the probed URL, the timeout and the network cause (`err.cause.code` / message — the
13
+ bare `fetch failed` hid `ECONNREFUSED` / `ENOTFOUND` / TLS), and a timeout is reported as a timeout.
14
+ Exported helpers: `DyE2E_resolveReachabilityUrl`, `DyE2E_describeProbeFailure`.
15
+ - ⚠️ **01.18.17 was never published:** its release commit bumped `package.json` but not `DYE2E_PACKAGE_VERSION`, so the
16
+ CI version-stamp spec failed (1/478) before `npm-publish`. Its content (BFR-OVERSEER-014 preset options:
17
+ `ciTimeoutFactor`, `maxFailuresInCi`, `DyE2E_ciTimeout`) ships in this release.
18
+
19
+ ## [01.18.16] — 2026-09-24 — Login-flow notification sweep
20
+
21
+ - Added `DyE2E_NotificationSweep_Util` to `/runtime` and the `dye2e notification-sweep` command (BFR-QA-002): on top of
22
+ the notification detector it opens the login page of every target, submits it with a WRONG password (the error
23
+ branch, no test account needed) and returns one matrix row per project — notifications · error/warning · banners ·
24
+ modal dialogs · raw-technical leaks · console errors. Targets: the QA workspace's `TEST-TARGETS.md` (only
25
+ `https://test.` rows) or JSON.
26
+ - Guards in code: the probe address must be on a reserved or a declared own domain (else it throws before any page is
27
+ opened); the form is submitted only on a test host (else loaded, not submitted, and the row says so).
28
+ - Modal dialogs are recorded (text + leak flag) before they are closed: on 3 of 7 TEST sites a "not the production
29
+ system" notice blocked the login, and on one the dialog was itself a JS error shown to the user.
30
+ - Detector fixes found by the live sweep: a banner's inner elements are no longer counted as more banners (one login
31
+ error was counted 3×), and `HTTP 401`-style status codes and user-visible JS errors (`… is not a function`,
32
+ `TypeError`, `this.x.`) now count as raw technical leaks.
33
+
6
34
  ## [01.18.15] — 2026-09-24 — Live notification detector
7
35
 
8
36
  - Added `DyE2E_NotificationDetector_Util` to `/runtime` (BFR-QA-001): `attach(context)` puts a `MutationObserver` into
package/README.md CHANGED
@@ -74,6 +74,23 @@ const specSource = DyE2E_FormSuite_Generator.emit({
74
74
  - `@futdevpro/dynamo-e2e/game` — capability-gated deterministic game seam, failure artifacts and bidirectional journey-catalog validation
75
75
  - `@futdevpro/dynamo-e2e/cwv` — Core Web Vitals (Wave-3)
76
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
+
77
94
  ## Live notification detector (`/runtime`)
78
95
 
79
96
  Records every user-visible notification — DyNX `dynamo-notification-card` / `dynamo-notifications-area`, mat-snackbar
@@ -96,4 +113,27 @@ Captures survive a full-page navigation (they are reported to Node through a Pla
96
113
  is plain JavaScript, so no `__name` shim is needed under `tsx` / esbuild. `collect()` throws on a context without
97
114
  `attach()` — an empty report would otherwise read as "no notifications".
98
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
+
99
139
  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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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * BFR-OVERSEER-014 — a HÍVÁS-HELYI timeout CI-skálázása.
3
+ *
4
+ * A Playwright-ban a hívás-helyi `{ timeout }` felülírja a config `expect.timeout`-ját — ezért a preset
5
+ * `ciTimeoutFactor`-a oda NEM ér el. Mérve (overseer, FR-485): a specek hard-kódolt 12–30 s-os konstansokat adtak át, a
6
+ * megosztott CI-runner 2,3–4,7× lassabb volt ⇒ a smoke hónapokig piros. Ez a segéd egy helyre hozza a három projekt
7
+ * saját megoldását.
8
+ *
9
+ * @param baseMs a terheletlen (lokális) gépre kalibrált érték
10
+ * @param factor a CI-szorzó; default: az `E2E_CI_TIMEOUT_FACTOR` env (ha pozitív szám), különben `3`
11
+ * @returns CI-ben `baseMs × factor`, lokálisan változatlanul `baseMs`
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * await expect(page.getByTestId('job-card')).toBeVisible({ timeout: DyE2E_ciTimeout(15_000) });
16
+ * ```
17
+ */
18
+ export declare function DyE2E_ciTimeout(baseMs: number, factor?: number): number;
19
+ /** A `DyE2E_ciTimeout` alapértelmezett CI-szorzója (a mért 2,3–4,7× lassulás felső sávja alá, kerekítve). */
20
+ export declare const DYE2E_DEFAULT_CI_TIMEOUT_FACTOR: number;
21
+ //# sourceMappingURL=ci-timeout.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-timeout.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/ci-timeout.util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED,6GAA6G;AAC7G,eAAO,MAAM,+BAA+B,EAAE,MAAU,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DYE2E_DEFAULT_CI_TIMEOUT_FACTOR = void 0;
4
+ exports.DyE2E_ciTimeout = DyE2E_ciTimeout;
5
+ /**
6
+ * BFR-OVERSEER-014 — a HÍVÁS-HELYI timeout CI-skálázása.
7
+ *
8
+ * A Playwright-ban a hívás-helyi `{ timeout }` felülírja a config `expect.timeout`-ját — ezért a preset
9
+ * `ciTimeoutFactor`-a oda NEM ér el. Mérve (overseer, FR-485): a specek hard-kódolt 12–30 s-os konstansokat adtak át, a
10
+ * megosztott CI-runner 2,3–4,7× lassabb volt ⇒ a smoke hónapokig piros. Ez a segéd egy helyre hozza a három projekt
11
+ * saját megoldását.
12
+ *
13
+ * @param baseMs a terheletlen (lokális) gépre kalibrált érték
14
+ * @param factor a CI-szorzó; default: az `E2E_CI_TIMEOUT_FACTOR` env (ha pozitív szám), különben `3`
15
+ * @returns CI-ben `baseMs × factor`, lokálisan változatlanul `baseMs`
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * await expect(page.getByTestId('job-card')).toBeVisible({ timeout: DyE2E_ciTimeout(15_000) });
20
+ * ```
21
+ */
22
+ function DyE2E_ciTimeout(baseMs, factor) {
23
+ if (!process.env.CI) {
24
+ return baseMs;
25
+ }
26
+ const envFactor = Number(process.env.E2E_CI_TIMEOUT_FACTOR);
27
+ const effective = factor !== undefined && factor > 0
28
+ ? factor
29
+ : (Number.isFinite(envFactor) && envFactor > 0 ? envFactor : exports.DYE2E_DEFAULT_CI_TIMEOUT_FACTOR);
30
+ return Math.round(baseMs * effective);
31
+ }
32
+ /** A `DyE2E_ciTimeout` alapértelmezett CI-szorzója (a mért 2,3–4,7× lassulás felső sávja alá, kerekítve). */
33
+ exports.DYE2E_DEFAULT_CI_TIMEOUT_FACTOR = 3;
34
+ //# sourceMappingURL=ci-timeout.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-timeout.util.js","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/ci-timeout.util.ts"],"names":[],"mappings":";;;AAiBA,0CAUC;AA3BD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,MAAe;IAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,SAAS,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACpE,MAAM,SAAS,GAAW,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC;QAC1D,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uCAA+B,CAAC,CAAC;IAEhG,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,6GAA6G;AAChG,QAAA,+BAA+B,GAAW,CAAC,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import type { FullConfig } from '@playwright/test';
2
2
  import { DyE2E_GlobalSetup_Options } from '../_models/interfaces/global-setup-options.interface';
3
+ /**
4
+ * BFR-FSMED-017 — the probed URL: `reachabilityPath` resolved against the base URL (a documented health endpoint),
5
+ * or the base URL itself (root HTML) when no path is given.
6
+ */
7
+ export declare function DyE2E_resolveReachabilityUrl(baseUrl: string, reachabilityPath?: string): string;
8
+ /**
9
+ * BFR-FSMED-017 — the network-level cause of a failed probe, for the error message: the undici `fetch` hides the
10
+ * real reason (`ECONNREFUSED`, `ENOTFOUND`, a TLS error, an IPv6-only `localhost` answer) in `err.cause`, and the
11
+ * bare "fetch failed" sends the reader after the wrong problem.
12
+ */
13
+ export declare function DyE2E_describeProbeFailure(err: unknown, timedOut: boolean): string;
3
14
  /**
4
15
  * `DyE2E_getGlobalSetup` — a flotta e2e-global-setup.ts-einek közös magja:
5
16
  * dotenv-load + kötelező-env warn + baseURL-reachability + opcionális login-once hook.
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup.factory.d.ts","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/global-setup.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAKlF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AA0DjG;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,yBAAyB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAyB3G"}
1
+ {"version":3,"file":"global-setup.factory.d.ts","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/global-setup.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA2B,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAKlF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AAKjG;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAS/F;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAclF;AAiED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,yBAAyB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAgC3G"}
@@ -23,6 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DyE2E_resolveReachabilityUrl = DyE2E_resolveReachabilityUrl;
27
+ exports.DyE2E_describeProbeFailure = DyE2E_describeProbeFailure;
26
28
  exports.DyE2E_getGlobalSetup = DyE2E_getGlobalSetup;
27
29
  const test_1 = require("@playwright/test");
28
30
  const dotenv = __importStar(require("dotenv"));
@@ -30,24 +32,62 @@ const fs = __importStar(require("fs"));
30
32
  const path = __importStar(require("path"));
31
33
  /** Üres Playwright storageState — nincs cookie / origin (= unauthenticated fallback). */
32
34
  const EMPTY_AUTH_STATE = { cookies: [], origins: [] };
35
+ /**
36
+ * BFR-FSMED-017 — the probed URL: `reachabilityPath` resolved against the base URL (a documented health endpoint),
37
+ * or the base URL itself (root HTML) when no path is given.
38
+ */
39
+ function DyE2E_resolveReachabilityUrl(baseUrl, reachabilityPath) {
40
+ if (!reachabilityPath) {
41
+ return baseUrl;
42
+ }
43
+ // Relative to the base URL's ORIGIN + path prefix: 'api/health' and '/api/health' both land under the base
44
+ const base = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
45
+ return new URL(reachabilityPath.replace(/^\/+/, ''), base).toString();
46
+ }
47
+ /**
48
+ * BFR-FSMED-017 — the network-level cause of a failed probe, for the error message: the undici `fetch` hides the
49
+ * real reason (`ECONNREFUSED`, `ENOTFOUND`, a TLS error, an IPv6-only `localhost` answer) in `err.cause`, and the
50
+ * bare "fetch failed" sends the reader after the wrong problem.
51
+ */
52
+ function DyE2E_describeProbeFailure(err, timedOut) {
53
+ if (timedOut) {
54
+ return 'timeout (no answer)';
55
+ }
56
+ const error = (err && typeof err === 'object' ? err : {});
57
+ const parts = [
58
+ error.message || String(err),
59
+ error.cause?.code || '',
60
+ error.cause?.message || '',
61
+ ].filter((part, index, all) => !!part && all.indexOf(part) === index);
62
+ return parts.join(' — ');
63
+ }
33
64
  /**
34
65
  * baseURL elérhetőség-ellenőrzés AbortController + fetch timeout-tal.
35
66
  * Ha a target nem él, egyértelmű hibával állunk le (ne 60 spec bukjon obscure timeout-tal).
67
+ * Bármilyen HTTP-válasz (akár 4xx/5xx) = a szerver él; csak a network-error / timeout számít bukásnak.
68
+ * A hiba megnevezi a MÉRT URL-t és a hálózati okot (BFR-FSMED-017: a puszta „nem elérhető" rossz nyomra vitt).
36
69
  */
37
- async function checkBaseUrlReachable(baseUrl, timeoutMs) {
70
+ async function checkBaseUrlReachable(baseUrl, timeoutMs, reachabilityPath) {
71
+ const probeUrl = DyE2E_resolveReachabilityUrl(baseUrl, reachabilityPath);
38
72
  const controller = new AbortController();
39
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
73
+ let timedOut = false;
74
+ const timeoutId = setTimeout(() => {
75
+ timedOut = true;
76
+ controller.abort();
77
+ }, timeoutMs);
78
+ let cause;
40
79
  try {
41
- // Bármilyen HTTP-válasz (akár 4xx/5xx) = a szerver él; csak a network-error számít bukásnak
42
- await fetch(baseUrl, { method: 'GET', signal: controller.signal });
80
+ await fetch(probeUrl, { method: 'GET', signal: controller.signal });
43
81
  clearTimeout(timeoutId);
44
82
  return;
45
83
  }
46
- catch {
84
+ catch (err) {
47
85
  clearTimeout(timeoutId);
86
+ cause = DyE2E_describeProbeFailure(err, timedOut);
48
87
  }
49
- throw new Error(`[E2E] E2E_BASE_URL (${baseUrl}) nem elérhető. ` +
50
- 'Indítsd el a target környezetet (vagy állítsd az E2E_BASE_URL-t), majd futtasd újra az E2E teszteket.');
88
+ throw new Error(`[E2E] E2E_BASE_URL (${baseUrl}) nem elérhető — probe: GET ${probeUrl} (${timeoutMs} ms) → ${cause}. ` +
89
+ 'Indítsd el a target környezetet (vagy állítsd az E2E_BASE_URL-t / a reachabilityPath-t), majd futtasd újra. ' +
90
+ 'Tipp: ha a böngészőben él, de itt nem, a `localhost` IPv4/IPv6 feloldása eltérhet — próbáld `127.0.0.1`-gyel.');
51
91
  }
52
92
  /**
53
93
  * Login-once + storageState mentés (C513 minta): a consumer login-hook-ja viszi végig a
@@ -92,14 +132,19 @@ function DyE2E_getGlobalSetup(opts) {
92
132
  return async (_config) => {
93
133
  // dotenv-load a hívó e2e-mappájából (a config-oldali load-dal idempotens)
94
134
  dotenv.config({ path: path.join(opts.envDir || process.cwd(), '.env') });
95
- // Kötelező env-változók — hiány esetén CSAK warn (a spec-ek fallback-elhetnek)
135
+ // Kötelező env-változók — default: CSAK warn (a spec-ek fallback-elhetnek);
136
+ // `failOnMissingEnv` (BFR-FSMED-017): fail-closed, a hiányzó NEVEKKEL (érték soha nem kerül a hibába)
96
137
  const missing = (opts.requiredEnvVars || []).filter((name) => !process.env[name]);
138
+ if (missing.length && opts.failOnMissingEnv) {
139
+ throw new Error(`[E2E] Global setup: hiányzó kötelező env: ${missing.join(', ')}. ` +
140
+ 'Ez a suite ezeket igényli — töltsd ki a .env-et (.env.example minta), vagy futtass kisebb profilt.');
141
+ }
97
142
  if (missing.length) {
98
143
  console.warn(`[E2E] Global setup: hiányzó env: ${missing.join(', ')}. Töltsd ki a .env-et (.env.example minta).`);
99
144
  }
100
145
  // baseURL-reachability — fail-fast ha a target nem él
101
146
  const baseUrl = process.env.E2E_BASE_URL || opts.defaultBaseUrl;
102
- await checkBaseUrlReachable(baseUrl, opts.reachabilityTimeoutMs ?? 5_000);
147
+ await checkBaseUrlReachable(baseUrl, opts.reachabilityTimeoutMs ?? 5_000, opts.reachabilityPath);
103
148
  if (opts.login) {
104
149
  // Login-once + storageState (C513 minta)
105
150
  await runLoginHook(opts, baseUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup.factory.js","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/global-setup.factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-setup.factory.js","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/global-setup.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oEASC;AAOD,gEAcC;AA2ED,oDAgCC;AAxJD,2CAA4C;AAE5C,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAI7B,yFAAyF;AACzF,MAAM,gBAAgB,GAA+C,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAElG;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,OAAe,EAAE,gBAAyB;IACrF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2GAA2G;IAC3G,MAAM,IAAI,GAAW,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;IAErE,OAAO,IAAI,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,GAAY,EAAE,QAAiB;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GACT,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAsE,CAAC;IACnH,MAAM,KAAK,GAAa;QACtB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE;QACvB,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;KAC3B,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,GAAa,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAEzG,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,SAAiB,EAAE,gBAAyB;IAChG,MAAM,QAAQ,GAAW,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACjF,MAAM,UAAU,GAAoB,IAAI,eAAe,EAAE,CAAC;IAC1D,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B,MAAM,SAAS,GAAmB,UAAU,CAAC,GAAS,EAAE;QACtD,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,EAAE,SAAS,CAAC,CAAC;IACd,IAAI,KAAa,CAAC;IAElB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,OAAO;IACT,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,GAAG,0BAA0B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,+BAA+B,QAAQ,KAAK,SAAS,UAAU,KAAK,IAAI;QACtG,8GAA8G;QAC9G,+GAA+G,CAChH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,IAA+B,EAAE,OAAe;IAC1E,MAAM,OAAO,GAAY,MAAM,eAAQ,CAAC,MAAM,EAAE,CAAC;IACjD,MAAM,OAAO,GAAmB,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACxG,MAAM,IAAI,GAAS,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,2FAA2F;QAC3F,MAAM,IAAI,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,2CAA2C,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CACV,+CAA+C,MAAM,IAAI;YACzD,qEAAqE,CACtE,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAAC,IAA+B;IAClE,OAAO,KAAK,EAAE,OAAmB,EAAiB,EAAE;QAClD,0EAA0E;QAC1E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAEzE,4EAA4E;QAC5E,sGAAsG;QACtG,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7G,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACnE,oGAAoG,CACrG,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,oCAAoC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CACpG,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAW,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;QACxE,MAAM,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,IAAI,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,yCAAyC;YACzC,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,kFAAkF;YAClF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-config.factory.d.ts","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/playwright-config.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,2DAA2D,CAAC;AAG3G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,8BAA8B,GAAG,oBAAoB,CAsGpG"}
1
+ {"version":3,"file":"playwright-config.factory.d.ts","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/playwright-config.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,2DAA2D,CAAC;AAG3G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,8BAA8B,GAAG,oBAAoB,CA4GpG"}
@@ -92,6 +92,9 @@ function DyE2E_getPlaywrightConfig(opts) {
92
92
  })),
93
93
  ];
94
94
  }
95
+ // BFR-OVERSEER-014: CI-ben a preset timeoutjai a `ciTimeoutFactor`-ral szorzódnak (default 1 = változatlan)
96
+ const factor = process.env.CI && opts.ciTimeoutFactor && opts.ciTimeoutFactor > 0 ? opts.ciTimeoutFactor : 1;
97
+ const scaled = (ms) => Math.round(ms * factor);
95
98
  // A közös config-mag — a flotta-configok metszete + opcionális override-ok
96
99
  return (0, test_1.defineConfig)({
97
100
  testDir: opts.testDir || './tests',
@@ -99,15 +102,17 @@ function DyE2E_getPlaywrightConfig(opts) {
99
102
  ...(opts.testIgnore !== undefined ? { testIgnore: opts.testIgnore } : {}),
100
103
  // globalSetup csak ha a consumer adott path-t (require.resolve-olt abszolút path)
101
104
  ...(opts.globalSetupPath ? { globalSetup: opts.globalSetupPath } : {}),
102
- timeout: opts.timeout ?? 60_000,
105
+ timeout: scaled(opts.timeout ?? 60_000),
103
106
  expect: {
104
- timeout: opts.expectTimeout ?? 10_000,
107
+ timeout: scaled(opts.expectTimeout ?? 10_000),
105
108
  },
106
109
  fullyParallel: opts.fullyParallel ?? false,
107
110
  // CI-ben tilos a .only (véletlen szűkített suite = fals zöld)
108
111
  forbidOnly: !!process.env.CI,
109
112
  // Retry CSAK CI-ben (load-flake tolerancia); lokálban a flake jel, nem zaj
110
113
  retries: process.env.CI ? (opts.retriesInCi ?? 0) : 0,
114
+ // BFR-OVERSEER-014: CSAK ha a consumer kérte, és CSAK CI-ben — különben a kulcs nincs a configban (mai viselkedés)
115
+ ...(process.env.CI && opts.maxFailuresInCi !== undefined ? { maxFailures: opts.maxFailuresInCi } : {}),
111
116
  workers: workers,
112
117
  reporter: [
113
118
  ['html'],
@@ -121,8 +126,8 @@ function DyE2E_getPlaywrightConfig(opts) {
121
126
  // kiadott click/fill a nema "Test timeout of 180000ms exceeded"-ig var, a valodi ok (melyik
122
127
  // elem, miert nem kattinthato) nelkul. A default akcio-korlat a passzolo teszteken semmit nem
123
128
  // valtoztat — az akado akcio viszont sajat, beszedes hibaval bukik. Projekt-feluliras: opts.
124
- actionTimeout: opts.actionTimeout ?? 15_000,
125
- navigationTimeout: opts.navigationTimeout ?? 30_000,
129
+ actionTimeout: scaled(opts.actionTimeout ?? 15_000),
130
+ navigationTimeout: scaled(opts.navigationTimeout ?? 30_000),
126
131
  screenshot: 'only-on-failure',
127
132
  trace: 'retain-on-failure',
128
133
  video: 'retain-on-failure',
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-config.factory.js","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/playwright-config.factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playwright-config.factory.js","sourceRoot":"","sources":["../../../../src/_modules/presets/_collections/playwright-config.factory.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,18 @@ export interface DyE2E_GlobalSetup_Options {
10
10
  envDir?: string;
11
11
  /** Kötelező env-változó nevek — hiány esetén warn (NEM fatális; a spec-ek fallback-elhetnek). */
12
12
  requiredEnvVars?: string[];
13
+ /**
14
+ * BFR-FSMED-017: `true` → a hiányzó `requiredEnvVars` FATÁLIS (fail-closed, a hiányzó nevekkel) — auth /
15
+ * user-lifecycle suite-okhoz. Default: `false` (csak warn — backward-compat).
16
+ */
17
+ failOnMissingEnv?: boolean;
13
18
  /** baseURL-reachability-check timeout ms-ben (AbortController + fetch). Default: `5_000`. */
14
19
  reachabilityTimeoutMs?: number;
20
+ /**
21
+ * BFR-FSMED-017: a reachability-probe útvonala a baseURL-hez képest (pl. `api/health` — egy dokumentált
22
+ * endpoint). Default: maga a baseURL (root HTML). Bármilyen HTTP-válasz = él; csak a hálózati hiba / timeout bukik.
23
+ */
24
+ reachabilityPath?: string;
15
25
  /**
16
26
  * Opcionális login-once hook (C513 storageState-reuse minta): a factory nyit egy
17
27
  * chromium page-et és ezt hívja; a hook felelős a login-flow végigviteléért.
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup-options.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/presets/_models/interfaces/global-setup-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,kGAAkG;IAClG,cAAc,EAAE,MAAM,CAAC;IACvB,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6FAA6F;IAC7F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"global-setup-options.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/presets/_models/interfaces/global-setup-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,kGAAkG;IAClG,cAAc,EAAE,MAAM,CAAC;IACvB,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6FAA6F;IAC7F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -36,8 +36,27 @@ export interface DyE2E_PlaywrightConfig_Options {
36
36
  retriesInCi?: number;
37
37
  /** Per-test timeout ms-ben. Default: `60_000`. */
38
38
  timeout?: number;
39
- /** expect() timeout ms-ben. Default: `10_000`. */
39
+ /**
40
+ * expect() timeout ms-ben. Default: `10_000`.
41
+ *
42
+ * ⚠️ BFR-OVERSEER-014: a HÍVÁS-HELYI `{ timeout }` FELÜLÍRJA ezt — ha a specek explicit timeoutot adnak át
43
+ * (`expect(x).toBeVisible({ timeout: 15_000 })`), ez az érték NEM hat. Mérve: az overseer 17 spece mindegyiket
44
+ * átadta, a config „olvasva helyesnek látszott", az e2e-smoke hónapokig piros volt. A hívás-helyi értéket a
45
+ * `DyE2E_ciTimeout(baseMs)` skálázza CI-ben.
46
+ */
40
47
  expectTimeout?: number;
48
+ /**
49
+ * BFR-OVERSEER-014: CI-ben (`process.env.CI`) ennyi hiba után leáll a futás (Playwright `maxFailures`). Default:
50
+ * nincs beállítva (= a mai viselkedés). ⚠️ Indok: `SIGKILL`-nél az összegző NEM fut le, a hiba-törzsek csak ott
51
+ * íródnak ki ⇒ egy korlát nélkül időtúllépésig futó suite logja ELVBŐL nem mondja meg, miért bukott.
52
+ */
53
+ maxFailuresInCi?: number;
54
+ /**
55
+ * BFR-OVERSEER-014: CI-ben a preset ÖSSZES timeoutja (`timeout`, `expectTimeout`, `actionTimeout`,
56
+ * `navigationTimeout`) ezzel szorzódik. Default: `1` (= a mai viselkedés). Mérve: a megosztott runner 2,3–4,7×
57
+ * lassabb egy terheletlen gépnél. ⚠️ A hívás-helyi `{ timeout }`-ra NEM hat — oda `DyE2E_ciTimeout`.
58
+ */
59
+ ciTimeoutFactor?: number;
41
60
  /** BFR-OV-030: akcio-szintu timeout (default 15000 ms) — az akado click/fill BESZEDES hibaval bukjon, ne nema test-timeouttal. */
42
61
  actionTimeout?: number;
43
62
  /** BFR-OV-030: navigacios timeout (default 30000 ms) — ugyanazon okbol. */
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-config-options.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/presets/_models/interfaces/playwright-config-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,wBAAwB,EAAE,CAAC;AAExG;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,oGAAoG;IACpG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kIAAkI;IAClI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACvC,wGAAwG;IACxG,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,0BAA0B,CAAC;CAC3C"}
1
+ {"version":3,"file":"playwright-config-options.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/presets/_models/interfaces/playwright-config-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE3G;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,wBAAwB,EAAE,CAAC;AAExG;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,oGAAoG;IACpG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8GAA8G;IAC9G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kIAAkI;IAClI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACvC,wGAAwG;IACxG,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC;;;;OAIG;IACH,YAAY,CAAC,EAAE,0BAA0B,CAAC;CAC3C"}
@@ -10,7 +10,8 @@
10
10
  export { DyE2E_FormSuite_Generator } from '../generators/form-suite.generator';
11
11
  export type { DyE2E_FormSuiteGenerate_Options } from '../generators/_models/form-suite-generate-options.interface';
12
12
  export { DyE2E_getPlaywrightConfig } from './_collections/playwright-config.factory';
13
- export { DyE2E_getGlobalSetup } from './_collections/global-setup.factory';
13
+ export { DyE2E_ciTimeout, DYE2E_DEFAULT_CI_TIMEOUT_FACTOR } from './_collections/ci-timeout.util';
14
+ export { DyE2E_describeProbeFailure, DyE2E_getGlobalSetup, DyE2E_resolveReachabilityUrl, } from './_collections/global-setup.factory';
14
15
  export { DyE2E_resolveViewportPreset } from './_collections/viewport-preset-resolver.util';
15
16
  export { DYE2E_VIEWPORTS_VISUAL8, DYE2E_VIEWPORTS_NAMED4, DYE2E_VIEWPORTS_SINGLE, } from './_collections/constants/playwright-viewport-presets.const';
16
17
  export type { DyE2E_PlaywrightConfig_Options, DyE2E_ViewportsOption_Type, } from './_models/interfaces/playwright-config-options.interface';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/presets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,+BAA+B,EAAE,MAAM,6DAA6D,CAAC;AAGnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,4DAA4D,CAAC;AACpE,YAAY,EACV,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0DAA0D,CAAC;AAClE,YAAY,EACV,0BAA0B,EAC1B,oCAAoC,EACpC,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAErG,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAAqD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/presets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,YAAY,EAAE,+BAA+B,EAAE,MAAM,6DAA6D,CAAC;AAGnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,4DAA4D,CAAC;AACpE,YAAY,EACV,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0DAA0D,CAAC;AAClE,YAAY,EACV,0BAA0B,EAC1B,oCAAoC,EACpC,0BAA0B,GAC3B,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAErG,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAAqD,CAAC"}
@@ -9,14 +9,19 @@
9
9
  * Wave-1 MVP: vékony re-export a `generators`-ből.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DYE2E_PRESETS_NEXT_WAVES = exports.DYE2E_VIEWPORTS_SINGLE = exports.DYE2E_VIEWPORTS_NAMED4 = exports.DYE2E_VIEWPORTS_VISUAL8 = exports.DyE2E_resolveViewportPreset = exports.DyE2E_getGlobalSetup = exports.DyE2E_getPlaywrightConfig = exports.DyE2E_FormSuite_Generator = void 0;
12
+ exports.DYE2E_PRESETS_NEXT_WAVES = exports.DYE2E_VIEWPORTS_SINGLE = exports.DYE2E_VIEWPORTS_NAMED4 = exports.DYE2E_VIEWPORTS_VISUAL8 = exports.DyE2E_resolveViewportPreset = exports.DyE2E_resolveReachabilityUrl = exports.DyE2E_getGlobalSetup = exports.DyE2E_describeProbeFailure = exports.DYE2E_DEFAULT_CI_TIMEOUT_FACTOR = exports.DyE2E_ciTimeout = exports.DyE2E_getPlaywrightConfig = exports.DyE2E_FormSuite_Generator = void 0;
13
13
  var form_suite_generator_1 = require("../generators/form-suite.generator");
14
14
  Object.defineProperty(exports, "DyE2E_FormSuite_Generator", { enumerable: true, get: function () { return form_suite_generator_1.DyE2E_FormSuite_Generator; } });
15
15
  // Playwright-config preset (flotta e2e-config konszolidáció) — factory + global-setup + viewport-presetek
16
16
  var playwright_config_factory_1 = require("./_collections/playwright-config.factory");
17
17
  Object.defineProperty(exports, "DyE2E_getPlaywrightConfig", { enumerable: true, get: function () { return playwright_config_factory_1.DyE2E_getPlaywrightConfig; } });
18
+ var ci_timeout_util_1 = require("./_collections/ci-timeout.util");
19
+ Object.defineProperty(exports, "DyE2E_ciTimeout", { enumerable: true, get: function () { return ci_timeout_util_1.DyE2E_ciTimeout; } });
20
+ Object.defineProperty(exports, "DYE2E_DEFAULT_CI_TIMEOUT_FACTOR", { enumerable: true, get: function () { return ci_timeout_util_1.DYE2E_DEFAULT_CI_TIMEOUT_FACTOR; } });
18
21
  var global_setup_factory_1 = require("./_collections/global-setup.factory");
22
+ Object.defineProperty(exports, "DyE2E_describeProbeFailure", { enumerable: true, get: function () { return global_setup_factory_1.DyE2E_describeProbeFailure; } });
19
23
  Object.defineProperty(exports, "DyE2E_getGlobalSetup", { enumerable: true, get: function () { return global_setup_factory_1.DyE2E_getGlobalSetup; } });
24
+ Object.defineProperty(exports, "DyE2E_resolveReachabilityUrl", { enumerable: true, get: function () { return global_setup_factory_1.DyE2E_resolveReachabilityUrl; } });
20
25
  var viewport_preset_resolver_util_1 = require("./_collections/viewport-preset-resolver.util");
21
26
  Object.defineProperty(exports, "DyE2E_resolveViewportPreset", { enumerable: true, get: function () { return viewport_preset_resolver_util_1.DyE2E_resolveViewportPreset; } });
22
27
  var playwright_viewport_presets_const_1 = require("./_collections/constants/playwright-viewport-presets.const");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/presets/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,2EAA+E;AAAtE,iIAAA,yBAAyB,OAAA;AAGlC,0GAA0G;AAC1G,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,4EAA2E;AAAlE,4HAAA,oBAAoB,OAAA;AAC7B,8FAA2F;AAAlF,4IAAA,2BAA2B,OAAA;AACpC,gHAIoE;AAHlE,4IAAA,uBAAuB,OAAA;AACvB,2IAAA,sBAAsB,OAAA;AACtB,2IAAA,sBAAsB,OAAA;AAaxB,iEAAiE;AACpD,QAAA,wBAAwB,GAAa,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/presets/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,2EAA+E;AAAtE,iIAAA,yBAAyB,OAAA;AAGlC,0GAA0G;AAC1G,sFAAqF;AAA5E,sIAAA,yBAAyB,OAAA;AAClC,kEAAkG;AAAzF,kHAAA,eAAe,OAAA;AAAE,kIAAA,+BAA+B,OAAA;AACzD,4EAI6C;AAH3C,kIAAA,0BAA0B,OAAA;AAC1B,4HAAA,oBAAoB,OAAA;AACpB,oIAAA,4BAA4B,OAAA;AAE9B,8FAA2F;AAAlF,4IAAA,2BAA2B,OAAA;AACpC,gHAIoE;AAHlE,4IAAA,uBAAuB,OAAA;AACvB,2IAAA,sBAAsB,OAAA;AACtB,2IAAA,sBAAsB,OAAA;AAaxB,iEAAiE;AACpD,QAAA,wBAAwB,GAAa,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC"}
@@ -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;