@futdevpro/dynamo-e2e 1.18.16 → 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.
- package/CHANGELOG.md +13 -0
- package/README.md +17 -0
- 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/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
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
|
+
|
|
6
19
|
## [01.18.16] — 2026-09-24 — Login-flow notification sweep
|
|
7
20
|
|
|
8
21
|
- 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
|
|
@@ -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"}
|
package/build/index.js
CHANGED
|
@@ -24,5 +24,5 @@ __exportStar(require("./_modules/cwv/index"), exports);
|
|
|
24
24
|
__exportStar(require("./_modules/vqa/index"), exports);
|
|
25
25
|
__exportStar(require("./_modules/game/index"), exports);
|
|
26
26
|
/** Package-version stamp — npm-publish-time runtime-érték. */
|
|
27
|
-
exports.DYE2E_PACKAGE_VERSION = '01.18.
|
|
27
|
+
exports.DYE2E_PACKAGE_VERSION = '01.18.18';
|
|
28
28
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/dynamo-e2e",
|
|
3
|
-
"version": "01.18.
|
|
3
|
+
"version": "01.18.18",
|
|
4
4
|
"description": "End-to-end testing engine for the Dynamo + FDP ecosystem — auto-generated form-coverage tests, viewport audit matrix, CWV diagnostics. Settings-POJO-first.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "core-package",
|