@futdevpro/dynamo-e2e 1.18.18 → 1.18.22

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 (58) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/bin/dye2e.js +85 -1
  3. package/build/_modules/coverage/_collections/coverage-catalog.util.d.ts +22 -0
  4. package/build/_modules/coverage/_collections/coverage-catalog.util.d.ts.map +1 -0
  5. package/build/_modules/coverage/_collections/coverage-catalog.util.js +217 -0
  6. package/build/_modules/coverage/_collections/coverage-catalog.util.js.map +1 -0
  7. package/build/_modules/coverage/_models/coverage-catalog.interface.d.ts +75 -0
  8. package/build/_modules/coverage/_models/coverage-catalog.interface.d.ts.map +1 -0
  9. package/build/_modules/coverage/_models/coverage-catalog.interface.js +8 -0
  10. package/build/_modules/coverage/_models/coverage-catalog.interface.js.map +1 -0
  11. package/build/_modules/coverage/index.d.ts +3 -0
  12. package/build/_modules/coverage/index.d.ts.map +1 -0
  13. package/build/_modules/coverage/index.js +20 -0
  14. package/build/_modules/coverage/index.js.map +1 -0
  15. package/build/_modules/generators/_collections/cli-runner.util.d.ts.map +1 -1
  16. package/build/_modules/generators/_collections/cli-runner.util.js +20 -1
  17. package/build/_modules/generators/_collections/cli-runner.util.js.map +1 -1
  18. package/build/_modules/runtime/_collections/journey-context.util.d.ts +72 -0
  19. package/build/_modules/runtime/_collections/journey-context.util.d.ts.map +1 -0
  20. package/build/_modules/runtime/_collections/journey-context.util.js +137 -0
  21. package/build/_modules/runtime/_collections/journey-context.util.js.map +1 -0
  22. package/build/_modules/runtime/_models/journey-context.interface.d.ts +31 -0
  23. package/build/_modules/runtime/_models/journey-context.interface.d.ts.map +1 -0
  24. package/build/_modules/runtime/_models/journey-context.interface.js +3 -0
  25. package/build/_modules/runtime/_models/journey-context.interface.js.map +1 -0
  26. package/build/_modules/runtime/index.d.ts +2 -0
  27. package/build/_modules/runtime/index.d.ts.map +1 -1
  28. package/build/_modules/runtime/index.js +2 -0
  29. package/build/_modules/runtime/index.js.map +1 -1
  30. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts +1 -1
  31. package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js +1 -1
  32. package/build/_modules/vqa/_collections/index.d.ts +1 -0
  33. package/build/_modules/vqa/_collections/index.d.ts.map +1 -1
  34. package/build/_modules/vqa/_collections/index.js +1 -0
  35. package/build/_modules/vqa/_collections/index.js.map +1 -1
  36. package/build/_modules/vqa/_collections/utils/review-gate.util.d.ts +36 -0
  37. package/build/_modules/vqa/_collections/utils/review-gate.util.d.ts.map +1 -0
  38. package/build/_modules/vqa/_collections/utils/review-gate.util.js +232 -0
  39. package/build/_modules/vqa/_collections/utils/review-gate.util.js.map +1 -0
  40. package/build/_modules/vqa/_models/interfaces/index.d.ts +1 -0
  41. package/build/_modules/vqa/_models/interfaces/index.d.ts.map +1 -1
  42. package/build/_modules/vqa/_models/interfaces/index.js +1 -0
  43. package/build/_modules/vqa/_models/interfaces/index.js.map +1 -1
  44. package/build/_modules/vqa/_models/interfaces/review-gate.interface.d.ts +55 -0
  45. package/build/_modules/vqa/_models/interfaces/review-gate.interface.d.ts.map +1 -0
  46. package/build/_modules/vqa/_models/interfaces/review-gate.interface.js +3 -0
  47. package/build/_modules/vqa/_models/interfaces/review-gate.interface.js.map +1 -0
  48. package/build/_modules/vqa/generators/ai-agent-readme.template.js +8 -8
  49. package/build/_modules/vqa/generators/capture-spec.generator.js +1 -1
  50. package/build/_modules/vqa/generators/review-bundle.generator.d.ts +16 -4
  51. package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -1
  52. package/build/_modules/vqa/generators/review-bundle.generator.js +31 -5
  53. package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -1
  54. package/build/index.d.ts +1 -0
  55. package/build/index.d.ts.map +1 -1
  56. package/build/index.js +2 -1
  57. package/build/index.js.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DyE2E_VQA_ReviewGate_Util = exports.DYE2E_VQA_CLOSED_FINDING_STATUSES = exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ const finding_status_enum_1 = require("../../_enums/finding-status.enum");
30
+ const finding_severity_enum_1 = require("../../_enums/finding-severity.enum");
31
+ const review_bundle_generator_1 = require("../../generators/review-bundle.generator");
32
+ const finding_validator_util_1 = require("./finding-validator.util");
33
+ /** BFR-FSMED-015 — every gate category, in report order (the default `failOn`). */
34
+ exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES = ['missing', 'orphan', 'invalid', 'blocker', 'high', 'human-review'];
35
+ /**
36
+ * BFR-FSMED-015 — finding statuses that CLOSE a finding for the release verdict. Everything else (open, in-progress,
37
+ * fixed-but-not-re-audited, ready-for-re-audit, reopened) is still open.
38
+ */
39
+ exports.DYE2E_VQA_CLOSED_FINDING_STATUSES = [
40
+ finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified,
41
+ finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.ignored,
42
+ finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.acceptedRisk,
43
+ ];
44
+ /**
45
+ * BFR-FSMED-015 (part 3) — the aggregate release gate for a VQA review bundle: manifest + captured evidence +
46
+ * finding-set + human-review marker ⇒ ONE verdict with stable codes and a machine-readable report.
47
+ *
48
+ * Checks: missing evidence (`VQA-GATE-EVIDENCE-MISSING`), missing findings file (`VQA-GATE-FINDINGS-MISSING`),
49
+ * orphan evidence (`VQA-GATE-EVIDENCE-ORPHAN`), invalid findings (`VQA-GATE-FINDING-INVALID`,
50
+ * `VQA-GATE-FINDING-FOREIGN`, `VQA-GATE-FINDING-REF-MISSING`), open blocker / high (`VQA-GATE-FINDING-OPEN-BLOCKER` /
51
+ * `-HIGH`), human review (`VQA-GATE-HUMAN-REVIEW-MISSING` / `-INVALID` / `-REJECTED`). A missing / unreadable bundle
52
+ * manifest (`VQA-GATE-MANIFEST-MISSING` / `-INVALID`) always fails — without it nothing can be checked.
53
+ */
54
+ class DyE2E_VQA_ReviewGate_Util {
55
+ /** Runs every check and returns the report; `verdict` is `fail` when any blocking issue exists. */
56
+ static verify(options) {
57
+ const failOn = options.failOn ?? exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES;
58
+ const issues = [];
59
+ const add = (code, category, message, ref) => {
60
+ issues.push({ code: code, category: category, blocking: failOn.includes(category), message: message, ref: ref });
61
+ };
62
+ const manifest = DyE2E_VQA_ReviewGate_Util.readManifest(options.bundlePath, issues);
63
+ let findingsTotal = 0;
64
+ if (manifest) {
65
+ DyE2E_VQA_ReviewGate_Util.checkEvidence(options.bundlePath, manifest, add);
66
+ findingsTotal = DyE2E_VQA_ReviewGate_Util.checkFindings(options, manifest, add);
67
+ DyE2E_VQA_ReviewGate_Util.checkHumanReview(options, add);
68
+ }
69
+ const counts = {
70
+ 'missing': 0, 'orphan': 0, 'invalid': 0, 'blocker': 0, 'high': 0, 'human-review': 0,
71
+ };
72
+ issues.forEach((issue) => {
73
+ counts[issue.category]++;
74
+ });
75
+ return {
76
+ schema: 'dye2e-vqa-review-gate/1',
77
+ bundlePath: options.bundlePath,
78
+ featureId: manifest?.featureId ?? '',
79
+ verdict: issues.some((issue) => issue.blocking) ? 'fail' : 'pass',
80
+ failOn: failOn,
81
+ counts: counts,
82
+ findingsTotal: findingsTotal,
83
+ issues: issues,
84
+ };
85
+ }
86
+ /** Parses a `--fail-on a,b` list; an unknown category throws (a typo must not silently weaken the gate). */
87
+ static parseFailOn(raw) {
88
+ if (!raw) {
89
+ return exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES;
90
+ }
91
+ return raw.split(',').map((part) => {
92
+ const category = exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES
93
+ .find((known) => known === part.trim());
94
+ if (!category) {
95
+ throw new Error(`VQA-GATE-FAIL-ON-UNKNOWN: "${part.trim()}" — valid: ${exports.DYE2E_VQA_REVIEW_GATE_CATEGORIES.join(', ')}`);
96
+ }
97
+ return category;
98
+ });
99
+ }
100
+ /** Reads `<bundle>/manifest.json`; a missing / unreadable one is an always-blocking issue. */
101
+ static readManifest(bundlePath, issues) {
102
+ const manifestPath = path.join(bundlePath, 'manifest.json');
103
+ if (!fs.existsSync(manifestPath)) {
104
+ issues.push({
105
+ code: 'VQA-GATE-MANIFEST-MISSING', category: 'missing', blocking: true, ref: 'manifest.json',
106
+ message: `bundle manifest not found: ${manifestPath}`,
107
+ });
108
+ return undefined;
109
+ }
110
+ try {
111
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
112
+ if (!manifest?.featureId || !Array.isArray(manifest.states) || !Array.isArray(manifest.viewports)) {
113
+ throw new Error('featureId / states / viewports missing');
114
+ }
115
+ return manifest;
116
+ }
117
+ catch (err) {
118
+ issues.push({
119
+ code: 'VQA-GATE-MANIFEST-INVALID', category: 'invalid', blocking: true, ref: 'manifest.json',
120
+ message: `bundle manifest unreadable: ${err instanceof Error ? err.message : String(err)}`,
121
+ });
122
+ return undefined;
123
+ }
124
+ }
125
+ /** Missing capture artifacts + evidence folders the manifest does not declare. */
126
+ static checkEvidence(bundlePath, manifest, add) {
127
+ review_bundle_generator_1.DyE2E_VQA_ReviewBundle_Generator.verifyBundleArtifacts(bundlePath, manifest).missing
128
+ .forEach((ref) => add('VQA-GATE-EVIDENCE-MISSING', 'missing', `capture artifact missing: ${ref}`, ref));
129
+ const statesDir = path.join(bundlePath, 'states');
130
+ if (!fs.existsSync(statesDir)) {
131
+ return;
132
+ }
133
+ const orientations = manifest.orientations && manifest.orientations.length ? manifest.orientations : ['preserve'];
134
+ const stateIds = manifest.states.map((state) => state.stateId);
135
+ const viewportDirs = manifest.viewports.flatMap((viewport) => orientations.map((orientation) => `${viewport.key}-${orientation}`));
136
+ for (const stateDir of DyE2E_VQA_ReviewGate_Util.subdirs(statesDir)) {
137
+ if (!stateIds.includes(stateDir)) {
138
+ add('VQA-GATE-EVIDENCE-ORPHAN', 'orphan', `evidence for a state the manifest does not declare: ${stateDir}`, `states/${stateDir}`);
139
+ continue;
140
+ }
141
+ for (const viewportDir of DyE2E_VQA_ReviewGate_Util.subdirs(path.join(statesDir, stateDir))) {
142
+ if (!viewportDirs.includes(viewportDir)) {
143
+ add('VQA-GATE-EVIDENCE-ORPHAN', 'orphan', `evidence for a viewport / orientation the manifest does not declare: ${stateDir}/${viewportDir}`, `states/${stateDir}/${viewportDir}`);
144
+ }
145
+ }
146
+ }
147
+ }
148
+ /** Finding schema + consistency with the bundle + open blocker / high. Returns the number of findings read. */
149
+ static checkFindings(options, manifest, add) {
150
+ const findingsPath = options.findingsPath ?? path.join(options.bundlePath, 'findings', 'findings.json');
151
+ if (!fs.existsSync(findingsPath)) {
152
+ add('VQA-GATE-FINDINGS-MISSING', 'missing', `finding-set not found (the review did not run, or wrote elsewhere): ${findingsPath}`, findingsPath);
153
+ return 0;
154
+ }
155
+ let findings;
156
+ try {
157
+ const raw = JSON.parse(fs.readFileSync(findingsPath, 'utf-8'));
158
+ const list = Array.isArray(raw) ? raw : raw?.findings;
159
+ if (!Array.isArray(list)) {
160
+ throw new Error('expected an array or { findings: [] }');
161
+ }
162
+ findings = list;
163
+ }
164
+ catch (err) {
165
+ add('VQA-GATE-FINDING-INVALID', 'invalid', `finding-set unreadable: ${err instanceof Error ? err.message : String(err)}`, findingsPath);
166
+ return 0;
167
+ }
168
+ const stateIds = manifest.states.map((state) => state.stateId);
169
+ const viewportKeys = manifest.viewports.map((viewport) => viewport.key);
170
+ findings.forEach((finding, index) => {
171
+ const ref = finding?.findingId || `findings[${index}]`;
172
+ const validation = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(finding);
173
+ if (!validation.ok) {
174
+ add('VQA-GATE-FINDING-INVALID', 'invalid', `schema: ${validation.errors
175
+ .map((e) => `${e.path} ${e.message}`).join('; ')}`, ref);
176
+ }
177
+ // Cross-check against the bundle: a finding about another feature / an undeclared state or viewport is foreign
178
+ if (finding?.featureId !== manifest.featureId || !stateIds.includes(finding?.stateId ?? '')
179
+ || !viewportKeys.includes(finding?.viewport ?? '')) {
180
+ add('VQA-GATE-FINDING-FOREIGN', 'invalid', `feature / state / viewport not in this bundle: ${finding?.featureId} / ${finding?.stateId} / ${finding?.viewport}`, ref);
181
+ }
182
+ // Every evidence reference must point at a file that exists in the bundle
183
+ [finding?.screenshotRef, finding?.domSnapshotRef]
184
+ .filter((evidenceRef) => !!evidenceRef)
185
+ .filter((evidenceRef) => !fs.existsSync(path.join(options.bundlePath, evidenceRef)))
186
+ .forEach((evidenceRef) => add('VQA-GATE-FINDING-REF-MISSING', 'invalid', `evidence reference not in the bundle: ${evidenceRef}`, ref));
187
+ const isOpen = !exports.DYE2E_VQA_CLOSED_FINDING_STATUSES
188
+ .some((status) => status === finding?.status);
189
+ if (isOpen && finding?.severity === finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.blocker) {
190
+ add('VQA-GATE-FINDING-OPEN-BLOCKER', 'blocker', `open blocker (status: ${finding.status})`, ref);
191
+ }
192
+ if (isOpen && finding?.severity === finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high) {
193
+ add('VQA-GATE-FINDING-OPEN-HIGH', 'high', `open high (status: ${finding.status})`, ref);
194
+ }
195
+ });
196
+ return findings.length;
197
+ }
198
+ /** The human-review marker: present, well-formed, approving. */
199
+ static checkHumanReview(options, add) {
200
+ const reviewPath = options.humanReviewPath ?? path.join(options.bundlePath, 'human-review.json');
201
+ if (!fs.existsSync(reviewPath)) {
202
+ add('VQA-GATE-HUMAN-REVIEW-MISSING', 'human-review', `no human review marker: ${reviewPath}`, reviewPath);
203
+ return;
204
+ }
205
+ let review;
206
+ try {
207
+ review = JSON.parse(fs.readFileSync(reviewPath, 'utf-8'));
208
+ }
209
+ catch (err) {
210
+ add('VQA-GATE-HUMAN-REVIEW-INVALID', 'human-review', `human review marker unreadable: ${err instanceof Error ? err.message : String(err)}`, reviewPath);
211
+ return;
212
+ }
213
+ const wellFormed = typeof review?.reviewer === 'string' && !!review.reviewer.trim()
214
+ && typeof review.reviewedAt === 'string' && !Number.isNaN(Date.parse(review.reviewedAt))
215
+ && (review.verdict === 'approved' || review.verdict === 'rejected');
216
+ if (!wellFormed) {
217
+ add('VQA-GATE-HUMAN-REVIEW-INVALID', 'human-review', 'human review marker needs { reviewer, reviewedAt (ISO date), verdict: approved | rejected }', reviewPath);
218
+ return;
219
+ }
220
+ if (review.verdict === 'rejected') {
221
+ add('VQA-GATE-HUMAN-REVIEW-REJECTED', 'human-review', `the human reviewer (${review.reviewer}) rejected`, reviewPath);
222
+ }
223
+ }
224
+ /** The subdirectory names of a directory. */
225
+ static subdirs(dir) {
226
+ return fs.readdirSync(dir, { withFileTypes: true })
227
+ .filter((entry) => entry.isDirectory())
228
+ .map((entry) => entry.name);
229
+ }
230
+ }
231
+ exports.DyE2E_VQA_ReviewGate_Util = DyE2E_VQA_ReviewGate_Util;
232
+ //# sourceMappingURL=review-gate.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-gate.util.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_collections/utils/review-gate.util.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export * from './expected-feedback.interface';
5
5
  export * from './feature-manifest.interface';
6
6
  export * from './dom-evidence.interface';
7
7
  export * from './finding.interface';
8
+ export * from './review-gate.interface';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -21,4 +21,5 @@ __exportStar(require("./expected-feedback.interface"), exports);
21
21
  __exportStar(require("./feature-manifest.interface"), exports);
22
22
  __exportStar(require("./dom-evidence.interface"), exports);
23
23
  __exportStar(require("./finding.interface"), exports);
24
+ __exportStar(require("./review-gate.interface"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,+DAA6C;AAC7C,gEAA8C;AAC9C,+DAA6C;AAC7C,2DAAyC;AACzC,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2DAAyC;AACzC,+DAA6C;AAC7C,gEAA8C;AAC9C,+DAA6C;AAC7C,2DAAyC;AACzC,sDAAoC;AACpC,0DAAwC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * BFR-FSMED-015 (3. rész) — a review-gate kategóriái: a `--fail-on` ezek közül választ.
3
+ * - `missing`: hiányzó evidence (capture-artifact) vagy hiányzó findings-fájl
4
+ * - `orphan`: a manifestben nem szereplő state / viewport evidence-mappája
5
+ * - `invalid`: sémahibás finding, vagy olyan feature / state / viewport / fájl-hivatkozás, ami a bundle-ben nincs
6
+ * - `blocker` / `high`: NEM lezárt blocker / high finding
7
+ * - `human-review`: hiányzó, sémahibás vagy elutasító emberi review-jelölő
8
+ */
9
+ export type DyE2E_VQA_ReviewGateCategory_Type = 'missing' | 'orphan' | 'invalid' | 'blocker' | 'high' | 'human-review';
10
+ /** BFR-FSMED-015 — egy gate-lelet stabil kóddal (a kód a gépi feldolgozás kulcsa, a szöveg az emberé). */
11
+ export interface DyE2E_VQA_ReviewGateIssue_Interface {
12
+ /** Stabil kód, pl. `VQA-GATE-EVIDENCE-MISSING`. */
13
+ code: string;
14
+ category: DyE2E_VQA_ReviewGateCategory_Type;
15
+ /** A lelet a `failOn` szerint bukást okoz-e. */
16
+ blocking: boolean;
17
+ message: string;
18
+ /** Bundle-relatív útvonal vagy finding-azonosító, amire a lelet vonatkozik. */
19
+ ref?: string;
20
+ }
21
+ /** BFR-FSMED-015 — az emberi review-jelölő (`human-review.json` a bundle-ben, vagy `--human-review <path>`). */
22
+ export interface DyE2E_VQA_HumanReview_Interface {
23
+ /** Ki nézte át (nem üres). */
24
+ reviewer: string;
25
+ /** Mikor (ISO-8601). */
26
+ reviewedAt: string;
27
+ /** A döntés. */
28
+ verdict: 'approved' | 'rejected';
29
+ notes?: string;
30
+ }
31
+ /** BFR-FSMED-015 — a gate gépileg olvasható eredménye (`--report <path>` JSON). */
32
+ export interface DyE2E_VQA_ReviewGateReport_Interface {
33
+ /** A riport-séma azonosítója. */
34
+ schema: 'dye2e-vqa-review-gate/1';
35
+ bundlePath: string;
36
+ featureId: string;
37
+ verdict: 'pass' | 'fail';
38
+ failOn: DyE2E_VQA_ReviewGateCategory_Type[];
39
+ /** Leletek száma kategóriánként (a nem-blokkolók is). */
40
+ counts: Record<DyE2E_VQA_ReviewGateCategory_Type, number>;
41
+ findingsTotal: number;
42
+ issues: DyE2E_VQA_ReviewGateIssue_Interface[];
43
+ }
44
+ /** BFR-FSMED-015 — a gate bemenete. */
45
+ export interface DyE2E_VQA_ReviewGate_Options {
46
+ /** A review-bundle mappája (benne `manifest.json`). */
47
+ bundlePath: string;
48
+ /** Finding-set JSON (tömb vagy `{ findings: [] }`). Default: `<bundle>/findings/findings.json`. */
49
+ findingsPath?: string;
50
+ /** Emberi review-jelölő. Default: `<bundle>/human-review.json`. */
51
+ humanReviewPath?: string;
52
+ /** Mely kategóriák buktatnak. Default: mind a hat. */
53
+ failOn?: DyE2E_VQA_ReviewGateCategory_Type[];
54
+ }
55
+ //# sourceMappingURL=review-gate.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-gate.interface.d.ts","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/review-gate.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,iCAAiC,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;AAEvH,0GAA0G;AAC1G,MAAM,WAAW,mCAAmC;IAClD,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,gHAAgH;AAChH,MAAM,WAAW,+BAA+B;IAC9C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,OAAO,EAAE,UAAU,GAAG,UAAU,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,oCAAoC;IACnD,iCAAiC;IACjC,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC5C,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,mCAAmC,EAAE,CAAC;CAC/C;AAED,uCAAuC;AACvC,MAAM,WAAW,4BAA4B;IAC3C,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,iCAAiC,EAAE,CAAC;CAC9C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=review-gate.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-gate.interface.js","sourceRoot":"","sources":["../../../../../src/_modules/vqa/_models/interfaces/review-gate.interface.ts"],"names":[],"mappings":""}
@@ -29,12 +29,12 @@ class DyE2E_VQA_AIAgentReadme_Template {
29
29
  1. **Olvasd át a manifest-et** (\`manifest.json\`) — feature-cél, állapotok, viewportok, critical-element-ek.
30
30
  2. **Tekintsd át a \`summary.md\`-t** — feature-state-viewport tábla a bundle szerkezetével.
31
31
  3. **Per (állapot × viewport)** menj végig:
32
- - \`screenshots/<stateId>/<viewport>-full.png\` — full-page kép
33
- - \`screenshots/<stateId>/<viewport>-fold.png\` — above-fold (viewport-only)
34
- - \`crops/<stateId>/<viewport>/<region>.png\` — region-crop-ok (modal, primary-cta, form, error)
35
- - \`dom-snapshots/<stateId>/<viewport>.json\` — DOM-metrikák
36
- - \`evidence/<stateId>/<viewport>.json\` — 16 DOM-detektor strukturált bizonyíték
37
- - \`a11y/<stateId>/<viewport>.json\` — axe-core a11y scan
32
+ *(minden a \`states/<stateId>/<viewport>-<orientation>/\` mappában — ezt írja a \`capture.spec.ts\`)*
33
+ - \`full.png\` — full-page kép
34
+ - \`fold.png\` — above-fold (viewport-only)
35
+ - \`dom-snapshot.json\` — DOM-metrikák
36
+ - \`evidence.json\` — 16 DOM-detektor strukturált bizonyíték
37
+ - \`a11y.json\` — axe-core a11y scan (ha a manifest bekapcsolja)
38
38
  4. **QA-rubric szerint** értékeld az audit-kérdéseket (14 alap + 3 UX-kiegészítő; lásd lent) — és
39
39
  alkalmazd a kötelező **UX kritikus-felhasználó réteget** (mindset + evidence + kimenet-keretezés).
40
40
  5. **Finding-eket írj** a \`findings.md\`-be a megadott schema szerint (lásd lent).
@@ -156,8 +156,8 @@ A finding-eket írd a \`findings.md\` (markdown) ÉS \`findings.json\` (validál
156
156
  "stateId": "<manifest-state-id>",
157
157
  "viewport": "<manifest-viewport-key>",
158
158
  "orientation": "portrait" | "landscape", // opcionális
159
- "screenshotRef": "screenshots/<stateId>/<viewport>-full.png", // bundle-relative
160
- "domSnapshotRef": "dom-snapshots/<stateId>/<viewport>.json", // opcionális
159
+ "screenshotRef": "states/<stateId>/<viewport>-<orientation>/full.png", // bundle-relative, LÉTEZŐ fájl
160
+ "domSnapshotRef": "states/<stateId>/<viewport>-<orientation>/dom-snapshot.json", // opcionális
161
161
  "additionalEvidenceRefs": [], // opcionális extra-utak
162
162
  "description": "<észlelt probléma — Te írod>",
163
163
  "expectedBehavior": "<mit várnánk helyette — Te írod>",
@@ -31,7 +31,7 @@ import {
31
31
  DyE2E_VQA_AntiFlake_Css_Const,${a11yEnabled ? `
32
32
  DyE2E_VQA_Axe_CdnUrl_Const,
33
33
  DyE2E_VQA_AxeRunScript_Const,` : ''}
34
- } from '@futdevpro/dynamo-e2e/vqa';
34
+ } from '@futdevpro/dynamo-e2e';
35
35
 
36
36
  const VQA_OUT_DIR: string = process.env.VQA_OUT_DIR
37
37
  || path.join(process.cwd(), 'review-bundles', '${manifest.featureId}', \`run-\${process.env.VQA_RUN_ID || Date.now()}\`);
@@ -6,13 +6,14 @@ import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/featu
6
6
  * - `README.md` — AI-agent review-instrukció (rubric + finding-schema)
7
7
  * - `summary.md` — feature × state × viewport tábla
8
8
  * - `manifest.json` — a futtatott manifest másolata
9
- * - `capture-spec.ts` — a generált Playwright spec
9
+ * - `capture.spec.ts` + `playwright.config.ts` — a generált Playwright spec és a SAJÁT configja (BFR-FSMED-015)
10
10
  * - `findings/` — üres directory, ahova az AI agent ír (findings.md / findings.json)
11
11
  * - `meta/run-id.txt`, `meta/build-id.txt`, `meta/timing.json`
12
- * - (capture-time után: `screenshots/`, `crops/`, `dom-snapshots/`, `evidence/`, `a11y/`)
12
+ * - (capture-time után: `states/<stateId>/<viewport>-<orientation>/` — full.png, fold.png, dom-snapshot.json, evidence.json, a11y.json)
13
13
  *
14
- * **A capture-spec ELLEN futtatja a user a `playwright test`-et** → az artifact-ok
15
- * a megfelelő helyre kerülnek (a generált spec tudja a `VQA_OUT_DIR`-t).
14
+ * **A futtatás a bundle SAJÁT configjával megy** (`DyE2E_VQA_ReviewBundle_Generator.captureCommand(bundlePath)`):
15
+ * a projekt configjának `testDir`/`testMatch`-e a bundle-t nem látná ("No tests found").
16
+ * Az artifact-ok a megfelelő helyre kerülnek (a generált spec tudja a `VQA_OUT_DIR`-t).
16
17
  *
17
18
  * **scope-LOCK**: NEM csinál AI-call-ot. A bundle "kész AI-agent-re vár".
18
19
  */
@@ -36,7 +37,18 @@ export interface DyE2E_VQA_ReviewBundle_Result {
36
37
  message: string;
37
38
  }[];
38
39
  }
40
+ /** BFR-FSMED-015 — a generált capture-spec fájlneve: `.spec.ts`, hogy a Playwright `testMatch`-e felismerje. */
41
+ export declare const DYE2E_VQA_CAPTURE_SPEC_FILE: string;
42
+ /** BFR-FSMED-015 — a bundle SAJÁT Playwright configja (a bundle a projekt `testDir`-én kívül él). */
43
+ export declare const DYE2E_VQA_CAPTURE_CONFIG_FILE: string;
39
44
  export declare class DyE2E_VQA_ReviewBundle_Generator {
45
+ /**
46
+ * BFR-FSMED-015 — a bizonyítottan futó capture-parancs: a bundle saját configjával (a projekt `testDir` / `testMatch`
47
+ * beállítása nem számít). Futtasd a projekt gyökeréből (ott oldódik fel a `@playwright/test` és a dynamo-e2e).
48
+ */
49
+ static captureCommand(bundlePath: string): string;
50
+ /** BFR-FSMED-015 — a bundle Playwright-configja: csak a saját capture-spec-jét futtatja, a saját mappájából. */
51
+ static emitCaptureConfig(): string;
40
52
  static generate(manifest: DyE2E_VQA_FeatureManifest_Interface, outputBase: string, options?: DyE2E_VQA_ReviewBundle_Options): DyE2E_VQA_ReviewBundle_Result;
41
53
  /** A capture-spec futása UTÁN futtatható; csak ellenőriz hogy a kötelező artifact-ok meg vannak. */
42
54
  static verifyBundleArtifacts(bundlePath: string, manifest: DyE2E_VQA_FeatureManifest_Interface): {
@@ -1 +1 @@
1
- {"version":3,"file":"review-bundle.generator.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/review-bundle.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mCAAmC,EAEpC,MAAM,kDAAkD,CAAC;AAM1D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,8BAA8B;IAC7C,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpE;AAED,qBAAa,gCAAgC;IAE3C,MAAM,CAAC,QAAQ,CACb,QAAQ,EAAE,mCAAmC,EAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B;IA8EhC,oGAAoG;IACpG,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mCAAmC,GAAG;QAC/F,EAAE,EAAE,OAAO,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;IAsBD,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
1
+ {"version":3,"file":"review-bundle.generator.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/review-bundle.generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mCAAmC,EAEpC,MAAM,kDAAkD,CAAC;AAM1D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,8BAA8B;IAC7C,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpE;AAED,gHAAgH;AAChH,eAAO,MAAM,2BAA2B,EAAE,MAA0B,CAAC;AAErE,qGAAqG;AACrG,eAAO,MAAM,6BAA6B,EAAE,MAA+B,CAAC;AAE5E,qBAAa,gCAAgC;IAE3C;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIjD,gHAAgH;IAChH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAclC,MAAM,CAAC,QAAQ,CACb,QAAQ,EAAE,mCAAmC,EAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,8BAA8B,GACvC,6BAA6B;IA+EhC,oGAAoG;IACpG,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,mCAAmC,GAAG;QAC/F,EAAE,EAAE,OAAO,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;IAsBD,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
@@ -23,14 +23,39 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.DyE2E_VQA_ReviewBundle_Generator = void 0;
26
+ exports.DyE2E_VQA_ReviewBundle_Generator = exports.DYE2E_VQA_CAPTURE_CONFIG_FILE = exports.DYE2E_VQA_CAPTURE_SPEC_FILE = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
29
  const manifest_validator_util_1 = require("../_collections/utils/manifest-validator.util");
30
30
  const ai_agent_readme_template_1 = require("./ai-agent-readme.template");
31
31
  const bundle_summary_template_1 = require("./bundle-summary.template");
32
32
  const capture_spec_generator_1 = require("./capture-spec.generator");
33
+ /** BFR-FSMED-015 — a generált capture-spec fájlneve: `.spec.ts`, hogy a Playwright `testMatch`-e felismerje. */
34
+ exports.DYE2E_VQA_CAPTURE_SPEC_FILE = 'capture.spec.ts';
35
+ /** BFR-FSMED-015 — a bundle SAJÁT Playwright configja (a bundle a projekt `testDir`-én kívül él). */
36
+ exports.DYE2E_VQA_CAPTURE_CONFIG_FILE = 'playwright.config.ts';
33
37
  class DyE2E_VQA_ReviewBundle_Generator {
38
+ /**
39
+ * BFR-FSMED-015 — a bizonyítottan futó capture-parancs: a bundle saját configjával (a projekt `testDir` / `testMatch`
40
+ * beállítása nem számít). Futtasd a projekt gyökeréből (ott oldódik fel a `@playwright/test` és a dynamo-e2e).
41
+ */
42
+ static captureCommand(bundlePath) {
43
+ return `VQA_OUT_DIR="${bundlePath}" npx playwright test --config "${path.join(bundlePath, exports.DYE2E_VQA_CAPTURE_CONFIG_FILE)}"`;
44
+ }
45
+ /** BFR-FSMED-015 — a bundle Playwright-configja: csak a saját capture-spec-jét futtatja, a saját mappájából. */
46
+ static emitCaptureConfig() {
47
+ return `// AUTOGEN by @futdevpro/dynamo-e2e/vqa — DyE2E_VQA_ReviewBundle_Generator. DO NOT EDIT.
48
+ import { defineConfig } from '@playwright/test';
49
+
50
+ export default defineConfig({
51
+ testDir: '.',
52
+ testMatch: '${exports.DYE2E_VQA_CAPTURE_SPEC_FILE}',
53
+ fullyParallel: false,
54
+ reporter: 'list',
55
+ use: { ignoreHTTPSErrors: true },
56
+ });
57
+ `;
58
+ }
34
59
  static generate(manifest, outputBase, options) {
35
60
  const validation = manifest_validator_util_1.DyE2E_VQA_ManifestValidator_Util.validate(manifest);
36
61
  if (!validation.ok) {
@@ -66,11 +91,12 @@ class DyE2E_VQA_ReviewBundle_Generator {
66
91
  const summaryPath = path.join(bundlePath, 'summary.md');
67
92
  fs.writeFileSync(summaryPath, bundle_summary_template_1.DyE2E_VQA_BundleSummary_Template.render(manifest, runId));
68
93
  files.push('summary.md');
69
- // capture-spec.ts (a user innen futtatja `playwright test capture-spec.ts`)
94
+ // capture.spec.ts + a bundle saját playwright.config.ts-e (futtatás: `captureCommand(bundlePath)`)
70
95
  if (!options?.skipCaptureSpec) {
71
- const specPath = path.join(bundlePath, 'capture-spec.ts');
72
- fs.writeFileSync(specPath, capture_spec_generator_1.DyE2E_VQA_CaptureSpec_Generator.emit(manifest));
73
- files.push('capture-spec.ts');
96
+ fs.writeFileSync(path.join(bundlePath, exports.DYE2E_VQA_CAPTURE_SPEC_FILE), capture_spec_generator_1.DyE2E_VQA_CaptureSpec_Generator.emit(manifest));
97
+ files.push(exports.DYE2E_VQA_CAPTURE_SPEC_FILE);
98
+ fs.writeFileSync(path.join(bundlePath, exports.DYE2E_VQA_CAPTURE_CONFIG_FILE), DyE2E_VQA_ReviewBundle_Generator.emitCaptureConfig());
99
+ files.push(exports.DYE2E_VQA_CAPTURE_CONFIG_FILE);
74
100
  }
75
101
  // findings/ üres mappa (AI agent írja ide a findings.md + findings.json-t)
76
102
  const findingsDir = path.join(bundlePath, 'findings');
@@ -1 +1 @@
1
- {"version":3,"file":"review-bundle.generator.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/review-bundle.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-bundle.generator.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/review-bundle.generator.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './_modules/presets/index';
5
5
  export * from './_modules/cwv/index';
6
6
  export * from './_modules/vqa/index';
7
7
  export * from './_modules/game/index';
8
+ export * from './_modules/coverage/index';
8
9
  /** Package-version stamp — npm-publish-time runtime-érték. */
9
10
  export declare const DYE2E_PACKAGE_VERSION: string;
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,EAAE,MAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAE1C,8DAA8D;AAC9D,eAAO,MAAM,qBAAqB,EAAE,MAAmB,CAAC"}
package/build/index.js CHANGED
@@ -23,6 +23,7 @@ __exportStar(require("./_modules/presets/index"), exports);
23
23
  __exportStar(require("./_modules/cwv/index"), exports);
24
24
  __exportStar(require("./_modules/vqa/index"), exports);
25
25
  __exportStar(require("./_modules/game/index"), exports);
26
+ __exportStar(require("./_modules/coverage/index"), exports);
26
27
  /** Package-version stamp — npm-publish-time runtime-érték. */
27
- exports.DYE2E_PACKAGE_VERSION = '01.18.18';
28
+ exports.DYE2E_PACKAGE_VERSION = '01.18.22';
28
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,6DAA2C;AAC3C,8DAA4C;AAC5C,2DAAyC;AACzC,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,wDAAsC;AAEtC,8DAA8D;AACjD,QAAA,qBAAqB,GAAW,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,6DAA2C;AAC3C,8DAA4C;AAC5C,2DAAyC;AACzC,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,wDAAsC;AACtC,4DAA0C;AAE1C,8DAA8D;AACjD,QAAA,qBAAqB,GAAW,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/dynamo-e2e",
3
- "version": "01.18.18",
3
+ "version": "01.18.22",
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",