@futdevpro/dynamo-e2e 1.18.16 → 1.18.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/README.md +17 -0
- package/bin/dye2e.js +36 -1
- package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/cli-runner.util.js +9 -1
- package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
- package/build/_modules/presets/_collections/ci-timeout.util.d.ts +21 -0
- package/build/_modules/presets/_collections/ci-timeout.util.d.ts.map +1 -0
- package/build/_modules/presets/_collections/ci-timeout.util.js +34 -0
- package/build/_modules/presets/_collections/ci-timeout.util.js.map +1 -0
- package/build/_modules/presets/_collections/global-setup.factory.d.ts +11 -0
- package/build/_modules/presets/_collections/global-setup.factory.d.ts.map +1 -1
- package/build/_modules/presets/_collections/global-setup.factory.js +54 -9
- package/build/_modules/presets/_collections/global-setup.factory.js.map +1 -1
- package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -1
- package/build/_modules/presets/_collections/playwright-config.factory.js +9 -4
- package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -1
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts +10 -0
- package/build/_modules/presets/_models/interfaces/global-setup-options.interface.d.ts.map +1 -1
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +20 -1
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -1
- package/build/_modules/presets/index.d.ts +2 -1
- package/build/_modules/presets/index.d.ts.map +1 -1
- package/build/_modules/presets/index.js +6 -1
- package/build/_modules/presets/index.js.map +1 -1
- package/build/_modules/runtime/_collections/journey-context.util.d.ts +72 -0
- package/build/_modules/runtime/_collections/journey-context.util.d.ts.map +1 -0
- package/build/_modules/runtime/_collections/journey-context.util.js +137 -0
- package/build/_modules/runtime/_collections/journey-context.util.js.map +1 -0
- package/build/_modules/runtime/_models/journey-context.interface.d.ts +31 -0
- package/build/_modules/runtime/_models/journey-context.interface.d.ts.map +1 -0
- package/build/_modules/runtime/_models/journey-context.interface.js +3 -0
- package/build/_modules/runtime/_models/journey-context.interface.js.map +1 -0
- package/build/_modules/runtime/index.d.ts +2 -0
- package/build/_modules/runtime/index.d.ts.map +1 -1
- package/build/_modules/runtime/index.js +2 -0
- package/build/_modules/runtime/index.js.map +1 -1
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts +1 -1
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js +1 -1
- package/build/_modules/vqa/_collections/index.d.ts +1 -0
- package/build/_modules/vqa/_collections/index.d.ts.map +1 -1
- package/build/_modules/vqa/_collections/index.js +1 -0
- package/build/_modules/vqa/_collections/index.js.map +1 -1
- package/build/_modules/vqa/_collections/utils/review-gate.util.d.ts +36 -0
- package/build/_modules/vqa/_collections/utils/review-gate.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/review-gate.util.js +232 -0
- package/build/_modules/vqa/_collections/utils/review-gate.util.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts +1 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts.map +1 -1
- package/build/_modules/vqa/_models/interfaces/index.js +1 -0
- package/build/_modules/vqa/_models/interfaces/index.js.map +1 -1
- package/build/_modules/vqa/_models/interfaces/review-gate.interface.d.ts +55 -0
- package/build/_modules/vqa/_models/interfaces/review-gate.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/review-gate.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/review-gate.interface.js.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.js +8 -8
- package/build/_modules/vqa/generators/capture-spec.generator.js +1 -1
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts +16 -4
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -1
- package/build/_modules/vqa/generators/review-bundle.generator.js +31 -5
- package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -1
- package/build/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,59 @@
|
|
|
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.21] — 2026-09-25 — VQA aggregate review gate (BFR-FSMED-015, part 3)
|
|
7
|
+
|
|
8
|
+
- Added `DyE2E_VQA_ReviewGate_Util.verify({ bundlePath, findingsPath?, humanReviewPath?, failOn? })` and the CLI
|
|
9
|
+
`dye2e verify-review-bundle --bundle <path> [--findings] [--human-review] [--report <json>] [--fail-on a,b]`
|
|
10
|
+
(exit 0 pass · 1 fail · 2 usage): manifest + captured evidence + finding-set + human-review marker ⇒ ONE release
|
|
11
|
+
verdict with stable codes and a JSON report (`schema: dye2e-vqa-review-gate/1`).
|
|
12
|
+
- Categories (`--fail-on`, default all): `missing` (`VQA-GATE-EVIDENCE-MISSING`, `-FINDINGS-MISSING`) · `orphan`
|
|
13
|
+
(`-EVIDENCE-ORPHAN`: evidence for an undeclared state / viewport) · `invalid` (`-FINDING-INVALID` schema,
|
|
14
|
+
`-FINDING-FOREIGN` other feature / state / viewport, `-FINDING-REF-MISSING` evidence ref not in the bundle) ·
|
|
15
|
+
`blocker` / `high` (`-FINDING-OPEN-BLOCKER` / `-HIGH`; closed = verified / ignored / accepted-risk) · `human-review`
|
|
16
|
+
(`-HUMAN-REVIEW-MISSING` / `-INVALID` / `-REJECTED`; marker `{ reviewer, reviewedAt, verdict }`). A missing /
|
|
17
|
+
unreadable manifest always fails. Issues outside `--fail-on` are still reported (`blocking: false`); an unknown
|
|
18
|
+
`--fail-on` category is a usage error, not a silently weaker gate.
|
|
19
|
+
- The bundle README told the reviewer to reference `screenshots/…` / `dom-snapshots/…`, which the capture never
|
|
20
|
+
writes — it now names the real `states/<stateId>/<viewport>-<orientation>/` files (the gate checks refs exist).
|
|
21
|
+
|
|
22
|
+
## [01.18.20] — 2026-09-25 — Runnable VQA capture (BFR-FSMED-015, part 2)
|
|
23
|
+
|
|
24
|
+
- The review bundle now holds `capture.spec.ts` (was `capture-spec.ts`, which no Playwright `testMatch` picks up) AND
|
|
25
|
+
its own `playwright.config.ts` (`testDir: '.'`, `testMatch: 'capture.spec.ts'`): the bundle lives outside the
|
|
26
|
+
project's `testDir`, so even a correctly named spec gave "No tests found" with the project config.
|
|
27
|
+
- The run command is `DyE2E_VQA_ReviewBundle_Generator.captureCommand(bundlePath)` —
|
|
28
|
+
`VQA_OUT_DIR="<bundle>" npx playwright test --config "<bundle>/playwright.config.ts"`; `dye2e generate-review-bundle`
|
|
29
|
+
prints exactly this. Proven by a spec that runs `playwright test --config … --list` on a generated bundle
|
|
30
|
+
(4 tests discovered) and by running the CLI's printed command.
|
|
31
|
+
- The generated spec imports from `@futdevpro/dynamo-e2e` (root) instead of the `/vqa` subpath, so it resolves under
|
|
32
|
+
`moduleResolution: node` as well; a spec compiles the generated files with `strict` + `moduleResolution: node`.
|
|
33
|
+
- Docs: `vqa-announcement.md` and `vqa-cicd-step-template.md` use the new command (the template's `VQA_OUT_DIR` now
|
|
34
|
+
points at the bundle itself, so the artifacts land where `verifyBundleArtifacts` looks).
|
|
35
|
+
|
|
36
|
+
## [01.18.19] — 2026-09-25 — Journey context + cleanup registry (BFR-FSMED-007)
|
|
37
|
+
|
|
38
|
+
- Added `DyE2E_JourneyContext<TState>` to `/runtime`: typed state handoff between journey steps (`step(name, fn)` merges
|
|
39
|
+
the returned patch; `handoff(patch)`; `require(key)` fails with the key and the completed steps named instead of
|
|
40
|
+
calling an API with `undefined`) and a cleanup registry (`registerCleanup(label, fn)` → `runCleanup()`: LIFO, every
|
|
41
|
+
cleanup isolated, idempotent, and it THROWS naming the leaked labels when any cleanup failed — a leaked entity is a
|
|
42
|
+
red journey, never a silent one). A failed step is recorded and later steps refuse to run; the cleanups still run.
|
|
43
|
+
- `DyE2E_useJourney(test, { name, initialState })`: serial mode + `afterAll → runCleanup()` for a Playwright
|
|
44
|
+
`describe`. The cleanup runs after the test-scoped fixtures are disposed — it must use its own client.
|
|
45
|
+
|
|
46
|
+
## [01.18.18] — 2026-09-25 — Capability-scoped global setup (BFR-FSMED-017)
|
|
47
|
+
|
|
48
|
+
- `DyE2E_getGlobalSetup` new options: `failOnMissingEnv` (the missing `requiredEnvVars` become FATAL, named in the
|
|
49
|
+
error, the probe does not even start — for auth / user-lifecycle suites; default stays warn-only) and
|
|
50
|
+
`reachabilityPath` (probe a documented endpoint, e.g. `api/health`, resolved under the base URL incl. its path
|
|
51
|
+
prefix; default is still the root). Any HTTP answer still counts as reachable.
|
|
52
|
+
- A failed probe now names the probed URL, the timeout and the network cause (`err.cause.code` / message — the
|
|
53
|
+
bare `fetch failed` hid `ECONNREFUSED` / `ENOTFOUND` / TLS), and a timeout is reported as a timeout.
|
|
54
|
+
Exported helpers: `DyE2E_resolveReachabilityUrl`, `DyE2E_describeProbeFailure`.
|
|
55
|
+
- ⚠️ **01.18.17 was never published:** its release commit bumped `package.json` but not `DYE2E_PACKAGE_VERSION`, so the
|
|
56
|
+
CI version-stamp spec failed (1/478) before `npm-publish`. Its content (BFR-OVERSEER-014 preset options:
|
|
57
|
+
`ciTimeoutFactor`, `maxFailuresInCi`, `DyE2E_ciTimeout`) ships in this release.
|
|
58
|
+
|
|
6
59
|
## [01.18.16] — 2026-09-24 — Login-flow notification sweep
|
|
7
60
|
|
|
8
61
|
- Added `DyE2E_NotificationSweep_Util` to `/runtime` and the `dye2e notification-sweep` command (BFR-QA-002): on top of
|
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
|
package/bin/dye2e.js
CHANGED
|
@@ -354,7 +354,7 @@ function main() {
|
|
|
354
354
|
process.stdout.write(' runId: ' + result.runId + '\n');
|
|
355
355
|
process.stdout.write(' files: ' + result.files.length + '\n');
|
|
356
356
|
process.stdout.write('\n next: cd to the project + run\n');
|
|
357
|
-
process.stdout.write('
|
|
357
|
+
process.stdout.write(' ' + DyE2E_VQA_ReviewBundle_Generator.captureCommand(result.bundlePath) + '\n');
|
|
358
358
|
process.exit(0);
|
|
359
359
|
}
|
|
360
360
|
|
|
@@ -437,6 +437,41 @@ function main() {
|
|
|
437
437
|
process.exit(0);
|
|
438
438
|
}
|
|
439
439
|
|
|
440
|
+
if (parsed.command === 'verify-review-bundle') {
|
|
441
|
+
// BFR-FSMED-015 (3. resz) — aggregate release gate: exit 0 = pass, 1 = fail, 2 = usage / unknown category
|
|
442
|
+
const { DyE2E_VQA_ReviewGate_Util } = require('../build/_modules/vqa/_collections/utils/review-gate.util');
|
|
443
|
+
const bundleP = parsed.flags.bundle;
|
|
444
|
+
if (!bundleP) {
|
|
445
|
+
process.stderr.write('[dye2e] error: --bundle <path> required\n');
|
|
446
|
+
process.exit(2);
|
|
447
|
+
}
|
|
448
|
+
let failOn;
|
|
449
|
+
try {
|
|
450
|
+
failOn = DyE2E_VQA_ReviewGate_Util.parseFailOn(parsed.flags['fail-on']);
|
|
451
|
+
} catch (e) {
|
|
452
|
+
process.stderr.write('[dye2e] error: ' + e.message + '\n');
|
|
453
|
+
process.exit(2);
|
|
454
|
+
}
|
|
455
|
+
const report = DyE2E_VQA_ReviewGate_Util.verify({
|
|
456
|
+
bundlePath: path.resolve(process.cwd(), bundleP),
|
|
457
|
+
findingsPath: parsed.flags.findings ? path.resolve(process.cwd(), parsed.flags.findings) : undefined,
|
|
458
|
+
humanReviewPath: parsed.flags['human-review'] ? path.resolve(process.cwd(), parsed.flags['human-review']) : undefined,
|
|
459
|
+
failOn: failOn,
|
|
460
|
+
});
|
|
461
|
+
if (parsed.flags.report) {
|
|
462
|
+
const reportPath = path.resolve(process.cwd(), parsed.flags.report);
|
|
463
|
+
fs.mkdirSync(path.dirname(reportPath), { recursive: true });
|
|
464
|
+
fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
|
|
465
|
+
}
|
|
466
|
+
process.stdout.write((report.verdict === 'pass' ? '✓' : '✗') + ' review gate: ' + report.verdict.toUpperCase() +
|
|
467
|
+
' (' + report.featureId + ', ' + report.findingsTotal + ' findings, fail-on: ' + report.failOn.join(',') + ')\n');
|
|
468
|
+
for (const issue of report.issues) {
|
|
469
|
+
process.stdout.write(' ' + (issue.blocking ? '✗' : '·') + ' ' + issue.code + (issue.ref ? ' [' + issue.ref + ']' : '') +
|
|
470
|
+
' — ' + issue.message + '\n');
|
|
471
|
+
}
|
|
472
|
+
process.exit(report.verdict === 'pass' ? 0 : 1);
|
|
473
|
+
}
|
|
474
|
+
|
|
440
475
|
process.stderr.write(`[dye2e] unknown command: ${parsed.command}\n`);
|
|
441
476
|
process.stderr.write(DyE2E_CliRunner_Util.helpText());
|
|
442
477
|
process.exit(2);
|
|
@@ -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;
|
|
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;IAiHzB;;;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"}
|
|
@@ -57,9 +57,10 @@ Commands:
|
|
|
57
57
|
Visual QA (/vqa) commands:
|
|
58
58
|
validate-manifest Validate a VQA state-manifest JSON
|
|
59
59
|
validate-finding Validate a VQA finding JSON
|
|
60
|
-
generate-review-bundle Manifest -> review bundle (capture
|
|
60
|
+
generate-review-bundle Manifest -> review bundle (capture.spec.ts + its playwright.config.ts, README, summary)
|
|
61
61
|
generate-comparison-bundle Before/after capture sets -> comparison bundle
|
|
62
62
|
bundle-summary Print an existing bundle's summary.md
|
|
63
|
+
verify-review-bundle Aggregate release gate: evidence + findings + human review -> pass / fail + JSON
|
|
63
64
|
|
|
64
65
|
QA commands:
|
|
65
66
|
notification-sweep Login pages -> wrong-password submit -> notification / banner / leak matrix
|
|
@@ -98,6 +99,13 @@ Flags (generate-comparison-bundle):
|
|
|
98
99
|
Flags (bundle-summary):
|
|
99
100
|
--bundle <path> Bundle dir containing manifest.json + summary.md
|
|
100
101
|
|
|
102
|
+
Flags (verify-review-bundle):
|
|
103
|
+
--bundle <path> Review bundle dir (required)
|
|
104
|
+
--findings <path> Finding-set JSON (default: <bundle>/findings/findings.json)
|
|
105
|
+
--human-review <path> { reviewer, reviewedAt, verdict } (default: <bundle>/human-review.json)
|
|
106
|
+
--report <path> Write the JSON gate report here
|
|
107
|
+
--fail-on <a,b> missing,orphan,invalid,blocker,high,human-review (default: all)
|
|
108
|
+
|
|
101
109
|
Flags (generate-form-suite):
|
|
102
110
|
--config <path> Path to JSON config (formSettings, formRoute, ...)
|
|
103
111
|
--out <path> Output spec.ts path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-runner.util.js","sourceRoot":"","sources":["../../../../src/_modules/generators/_collections/cli-runner.util.ts"],"names":[],"mappings":";;;AAAA,kEAAoE;AACpE,0EAA4E;AAC5E,uEAAyE;AAKzE;;;;;GAKG;AACH,MAAa,oBAAoB;IAE/B,MAAM,CAAC,SAAS,CAAC,IAAc;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,OAAO,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAuB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBAClB,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,QAAQ;QACb,OAAO
|
|
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;
|
|
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
|
-
|
|
73
|
+
let timedOut = false;
|
|
74
|
+
const timeoutId = setTimeout(() => {
|
|
75
|
+
timedOut = true;
|
|
76
|
+
controller.abort();
|
|
77
|
+
}, timeoutMs);
|
|
78
|
+
let cause;
|
|
40
79
|
try {
|
|
41
|
-
|
|
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
|
|
50
|
-
'Indítsd el a target környezetet (vagy állítsd az E2E_BASE_URL-t), majd futtasd újra
|
|
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 —
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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 +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,
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,
|
|
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
|
-
/**
|
|
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. */
|
package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map
CHANGED
|
@@ -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
|
|
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 {
|
|
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,
|
|
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,
|
|
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"}
|