@sun-asterisk/sungen 2.6.8 → 2.6.10

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 (84) hide show
  1. package/dist/cli/commands/dashboard.d.ts +2 -1
  2. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  3. package/dist/cli/commands/dashboard.js +9 -9
  4. package/dist/cli/commands/dashboard.js.map +1 -1
  5. package/dist/cli/commands/delivery.d.ts.map +1 -1
  6. package/dist/cli/commands/delivery.js +33 -0
  7. package/dist/cli/commands/delivery.js.map +1 -1
  8. package/dist/cli/index.js +1 -1
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/dashboard/history-store.d.ts +13 -9
  11. package/dist/dashboard/history-store.d.ts.map +1 -1
  12. package/dist/dashboard/history-store.js +19 -28
  13. package/dist/dashboard/history-store.js.map +1 -1
  14. package/dist/dashboard/html-renderer.d.ts +1 -1
  15. package/dist/dashboard/html-renderer.d.ts.map +1 -1
  16. package/dist/dashboard/html-renderer.js +2 -2
  17. package/dist/dashboard/html-renderer.js.map +1 -1
  18. package/dist/dashboard/snapshot-builder.d.ts.map +1 -1
  19. package/dist/dashboard/snapshot-builder.js +38 -2
  20. package/dist/dashboard/snapshot-builder.js.map +1 -1
  21. package/dist/dashboard/templates/index.html +142 -221
  22. package/dist/exporters/csv-exporter.d.ts +4 -0
  23. package/dist/exporters/csv-exporter.d.ts.map +1 -1
  24. package/dist/exporters/csv-exporter.js +35 -26
  25. package/dist/exporters/csv-exporter.js.map +1 -1
  26. package/dist/exporters/feature-parser.d.ts.map +1 -1
  27. package/dist/exporters/feature-parser.js +16 -4
  28. package/dist/exporters/feature-parser.js.map +1 -1
  29. package/dist/exporters/json-exporter.d.ts.map +1 -1
  30. package/dist/exporters/json-exporter.js +28 -20
  31. package/dist/exporters/json-exporter.js.map +1 -1
  32. package/dist/exporters/playwright-report-parser.d.ts.map +1 -1
  33. package/dist/exporters/playwright-report-parser.js +22 -5
  34. package/dist/exporters/playwright-report-parser.js.map +1 -1
  35. package/dist/exporters/scenario-merger.d.ts +23 -1
  36. package/dist/exporters/scenario-merger.d.ts.map +1 -1
  37. package/dist/exporters/scenario-merger.js +39 -0
  38. package/dist/exporters/scenario-merger.js.map +1 -1
  39. package/dist/exporters/step-formatter.d.ts +31 -3
  40. package/dist/exporters/step-formatter.d.ts.map +1 -1
  41. package/dist/exporters/step-formatter.js +52 -19
  42. package/dist/exporters/step-formatter.js.map +1 -1
  43. package/dist/exporters/sun-logo.d.ts +10 -0
  44. package/dist/exporters/sun-logo.d.ts.map +1 -0
  45. package/dist/exporters/sun-logo.js +13 -0
  46. package/dist/exporters/sun-logo.js.map +1 -0
  47. package/dist/exporters/test-data-resolver.d.ts +13 -5
  48. package/dist/exporters/test-data-resolver.d.ts.map +1 -1
  49. package/dist/exporters/test-data-resolver.js +36 -14
  50. package/dist/exporters/test-data-resolver.js.map +1 -1
  51. package/dist/exporters/types.d.ts +16 -0
  52. package/dist/exporters/types.d.ts.map +1 -1
  53. package/dist/exporters/xlsx-exporter.d.ts.map +1 -1
  54. package/dist/exporters/xlsx-exporter.js +169 -99
  55. package/dist/exporters/xlsx-exporter.js.map +1 -1
  56. package/dist/orchestrator/templates/playwright.config.d.ts.map +1 -1
  57. package/dist/orchestrator/templates/playwright.config.js +2 -0
  58. package/dist/orchestrator/templates/playwright.config.js.map +1 -1
  59. package/dist/orchestrator/templates/playwright.config.ts +2 -0
  60. package/dist/orchestrator/templates/specs-base.d.ts.map +1 -1
  61. package/dist/orchestrator/templates/specs-base.js +1 -5
  62. package/dist/orchestrator/templates/specs-base.js.map +1 -1
  63. package/dist/orchestrator/templates/specs-base.ts +1 -5
  64. package/package.json +1 -1
  65. package/src/cli/commands/dashboard.ts +9 -9
  66. package/src/cli/commands/delivery.ts +30 -0
  67. package/src/cli/index.ts +1 -1
  68. package/src/dashboard/history-store.ts +22 -28
  69. package/src/dashboard/html-renderer.ts +6 -2
  70. package/src/dashboard/snapshot-builder.ts +36 -2
  71. package/src/dashboard/templates/index.html +142 -221
  72. package/src/dashboard/types.ts +1 -1
  73. package/src/exporters/csv-exporter.ts +44 -27
  74. package/src/exporters/feature-parser.ts +27 -8
  75. package/src/exporters/json-exporter.ts +31 -21
  76. package/src/exporters/playwright-report-parser.ts +23 -5
  77. package/src/exporters/scenario-merger.ts +65 -1
  78. package/src/exporters/step-formatter.ts +48 -23
  79. package/src/exporters/sun-logo.ts +10 -0
  80. package/src/exporters/test-data-resolver.ts +37 -13
  81. package/src/exporters/types.ts +18 -1
  82. package/src/exporters/xlsx-exporter.ts +176 -101
  83. package/src/orchestrator/templates/playwright.config.ts +2 -0
  84. package/src/orchestrator/templates/specs-base.ts +1 -5
@@ -52,11 +52,12 @@ const fs = __importStar(require("fs"));
52
52
  const path = __importStar(require("path"));
53
53
  const exceljs_1 = __importDefault(require("exceljs"));
54
54
  const package_info_1 = require("./package-info");
55
+ const sun_logo_1 = require("./sun-logo");
55
56
  const COL_COUNT = 16;
56
- const HEADER_FILL = 'FF1F4E78'; // deep blue band
57
- const HEADER_FONT = 'FFFFFFFF';
57
+ const HEADER_FILL = 'FFD9D2E9'; // lavender matches the summary-header band on row 6
58
+ const HEADER_FONT = 'FF000000'; // black text reads better on the light lavender
58
59
  const META_FILL = 'FFDCE6F1'; // soft blue for meta rows
59
- const CATEGORY_FILL = 'FFFFF2CC'; // soft yellow for group dividers
60
+ const CATEGORY_FILL = 'FFD9D2E9'; // same lavender for group dividers (Accessing / GUI / Function)
60
61
  const BORDER_COLOR = 'FFBFBFBF';
61
62
  function applyBorder(cell) {
62
63
  cell.border = {
@@ -77,103 +78,172 @@ function renderXlsx(summary, rows, specLink) {
77
78
  const d = new Date();
78
79
  return `${String(d.getDate()).padStart(2, '0')}/${String(d.getMonth() + 1).padStart(2, '0')}/${d.getFullYear()}`;
79
80
  })();
80
- const total = summary.total || 1;
81
- const pct = (n) => `${Math.round((n / total) * 100)}%`;
82
- // -- Column widths (matches CSV column order) --
81
+ // -- Column widths matching template_report.xlsx (Sample sheet) --
83
82
  ws.columns = [
84
- { width: 18 }, // TC ID
85
- { width: 42 }, // Category 1
86
- { width: 14 }, // Category 2
87
- { width: 26 }, // Category 3
88
- { width: 14 }, // Category 4
89
- { width: 36 }, // Pre-condition
90
- { width: 30 }, // Test Data
91
- { width: 46 }, // Steps
92
- { width: 52 }, // Expected results
93
- { width: 10 }, // Priority
94
- { width: 14 }, // Testcase type
95
- { width: 14 }, // Test Result
96
- { width: 14 }, // Executed Date
97
- { width: 16 }, // Test Executor
98
- { width: 38 }, // Test Environment
99
- { width: 40 }, // Note
83
+ { width: 6.38 }, // A — TC ID
84
+ { width: 12.5 }, // B — Screen/Function
85
+ { width: 15.38 }, // C — Big item
86
+ { width: 16.25 }, // D — Medium item
87
+ { width: 17 }, // E — Test Object
88
+ { width: 25.5 }, // F — Pre-condition
89
+ { width: 24.88 }, // G — Test Data
90
+ { width: 24.88 }, // H — Steps
91
+ { width: 41 }, // I — Expected results
92
+ { width: 12 }, // J — Priority
93
+ { width: 13.5 }, // K — Testcase type
94
+ { width: 15.88 }, // L — Test Result
95
+ { width: 13.5 }, // M — Executed Date
96
+ { width: 16.5 }, // N — Test Executor
97
+ { width: 23 }, // O — Test Environment
98
+ { width: 29 }, // P — Note
100
99
  ];
101
- // -- Top metadata band (rows 1-4) --
100
+ // -- Top metadata band (rows 1-4) — 1:1 with template_report.xlsx --
101
+ const TIMES = 'Times New Roman';
102
+ const ARIAL_FONT = 'Arial';
103
+ const BLACK = { argb: 'FF000000' };
104
+ const WHITE = { argb: 'FFFFFFFF' };
105
+ const LAVENDER = { argb: 'FFD9D2E9' };
106
+ const thinBlack = { style: 'thin', color: BLACK };
107
+ const allBordersBlack = { top: thinBlack, left: thinBlack, bottom: thinBlack, right: thinBlack };
108
+ // Ensure rows 1..8 exist before merging.
109
+ for (let r = 1; r <= 8; r++)
110
+ ws.getRow(r);
111
+ ws.mergeCells('A1:C3');
112
+ ws.mergeCells('D1:F3');
113
+ ws.mergeCells('G1:H1');
114
+ ws.mergeCells('G2:H2');
115
+ ws.mergeCells('G3:H3');
116
+ ws.mergeCells('A4:F4');
117
+ ws.mergeCells('G4:H4');
118
+ // A1 (logo band, merged A1:C3) — give it bordering + embed the Sun* logo.
119
+ const a1 = ws.getCell('A1');
120
+ a1.alignment = { horizontal: 'center', vertical: 'middle' };
121
+ a1.border = allBordersBlack;
122
+ // Embed Sun* logo using a oneCellAnchor + explicit pixel `ext`, exactly
123
+ // like the template. tl is offset into the merged band so the logo lands
124
+ // centred in A1:C3 instead of pinned to the top-left corner.
125
+ try {
126
+ const imageId = wb.addImage({
127
+ buffer: Buffer.from(sun_logo_1.SUN_LOGO_PNG_BASE64, 'base64'),
128
+ extension: 'png',
129
+ });
130
+ // A1:C3 ≈ 240 × 60 px. For a 90×50 logo centred horizontally / vertically:
131
+ // left margin = (240 − 90)/2 ≈ 75 px → 9525 EMU/px → 714375 EMU
132
+ // top margin = (60 − 50)/2 ≈ 5 px → 47625 EMU
133
+ // ExcelJS's fractional `col`/`row` clamps to a small EMU range, so we
134
+ // bypass it and write `native*` fields directly (the underlying XML uses
135
+ // the same field names).
136
+ ws.addImage(imageId, {
137
+ tl: { nativeCol: 0, nativeColOff: 714375, nativeRow: 0, nativeRowOff: 47625 },
138
+ ext: { width: 90, height: 50 },
139
+ editAs: 'oneCell',
140
+ });
141
+ }
142
+ catch { /* logo is decorative — never block export */ }
143
+ // D1 (TESTCASE title)
102
144
  const titleLabel = `${summary.screen.toUpperCase()} TESTCASE`;
103
- const titleRow = ws.addRow(['', '', '', titleLabel, '', '', 'No: BM-2-901-13']);
104
- titleRow.getCell(4).font = { bold: true, size: 16 };
105
- titleRow.getCell(4).alignment = { horizontal: 'center', vertical: 'middle' };
106
- ws.mergeCells(titleRow.number, 4, titleRow.number, 6);
107
- titleRow.getCell(7).font = { bold: true };
108
- titleRow.height = 22;
109
- const versionRow = ws.addRow(['', '', '', '', '', '', `Version: ${(0, package_info_1.getPackageVersion)()}`]);
110
- versionRow.getCell(7).font = { bold: true };
111
- const dateRow = ws.addRow(['', '', '', '', '', '', `Issue Date: ${issueDate}`]);
112
- dateRow.getCell(7).font = { bold: true };
113
- const companyRow = ws.addRow([
114
- 'SUN ASTERISK VIETNAM CO., LTD',
115
- '',
116
- '',
117
- '',
118
- '',
119
- '',
120
- 'ISO/IEC 27001:2022 & ISO 9001:2015',
121
- ]);
122
- companyRow.getCell(1).font = { bold: true };
123
- companyRow.getCell(7).font = { bold: true };
124
- ws.addRow([]); // spacer
125
- // -- Summary band --
126
- const summaryHeader = ws.addRow([
127
- '',
128
- '',
129
- 'Total TCs',
130
- 'Passed',
131
- 'Failed',
132
- 'Pending',
133
- 'N/A',
134
- 'Remaining',
135
- ]);
136
- for (let i = 3; i <= 8; i++) {
137
- const c = summaryHeader.getCell(i);
138
- c.font = { bold: true, color: { argb: HEADER_FONT } };
139
- c.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: HEADER_FILL } };
140
- c.alignment = { horizontal: 'center', vertical: 'middle' };
141
- applyBorder(c);
145
+ const d1 = ws.getCell('D1');
146
+ d1.value = titleLabel;
147
+ d1.font = { bold: true, size: 18, name: TIMES };
148
+ d1.alignment = { horizontal: 'center', vertical: 'middle', wrapText: true };
149
+ d1.border = allBordersBlack;
150
+ // G1 — No: BM-2-901-13
151
+ const g1 = ws.getCell('G1');
152
+ g1.value = 'No: BM-2-901-13';
153
+ g1.font = { size: 12, name: TIMES };
154
+ g1.alignment = { vertical: 'middle' };
155
+ g1.border = { top: thinBlack, left: thinBlack, right: thinBlack };
156
+ // G2 Version
157
+ const g2 = ws.getCell('G2');
158
+ g2.value = `Version: ${(0, package_info_1.getPackageVersion)()}`;
159
+ g2.font = { size: 12, name: TIMES };
160
+ g2.alignment = { vertical: 'middle' };
161
+ g2.border = { left: thinBlack, right: thinBlack };
162
+ // G3 Issue Date
163
+ const g3 = ws.getCell('G3');
164
+ g3.value = `Issue Date: ${issueDate}`;
165
+ g3.font = { size: 12, name: TIMES };
166
+ g3.alignment = { vertical: 'middle' };
167
+ g3.border = { left: thinBlack, right: thinBlack, bottom: thinBlack };
168
+ // A4 SUN ASTERISK VIETNAM CO., LTD
169
+ const a4 = ws.getCell('A4');
170
+ a4.value = 'SUN ASTERISK VIETNAM CO., LTD';
171
+ a4.font = { bold: true, size: 10, name: TIMES };
172
+ a4.alignment = { vertical: 'middle' };
173
+ a4.border = allBordersBlack;
174
+ // G4 — ISO/IEC ...
175
+ const g4 = ws.getCell('G4');
176
+ g4.value = 'ISO/IEC 27001:2022 & ISO 9001:2015';
177
+ g4.font = { bold: true, size: 10, name: TIMES };
178
+ g4.alignment = { horizontal: 'right', vertical: 'middle', wrapText: true };
179
+ g4.border = allBordersBlack;
180
+ // -- Row 5: spacer (height 12) --
181
+ ws.getRow(5).height = 12;
182
+ // -- Row 6: Summary headers (cols C..H), lavender fill --
183
+ const sumLabels = {
184
+ C: 'Total TCs', D: 'Passed', E: 'Failed', F: 'Pending', G: 'N/A', H: 'Remaining',
185
+ };
186
+ for (const [col, label] of Object.entries(sumLabels)) {
187
+ const c = ws.getCell(`${col}6`);
188
+ c.value = label;
189
+ c.font = { bold: true, size: 10, color: BLACK, name: ARIAL_FONT };
190
+ c.fill = { type: 'pattern', pattern: 'solid', fgColor: LAVENDER };
191
+ c.alignment = { horizontal: 'center', vertical: 'top' };
192
+ c.border = allBordersBlack;
142
193
  }
143
- const summaryCounts = ws.addRow([
144
- '',
145
- '',
146
- summary.total,
147
- summary.passed,
148
- summary.failed,
149
- summary.pending,
150
- summary.na,
151
- summary.pending + summary.na,
152
- ]);
153
- for (let i = 3; i <= 8; i++) {
154
- const c = summaryCounts.getCell(i);
155
- c.font = { bold: true };
156
- c.alignment = { horizontal: 'center' };
157
- c.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: META_FILL } };
158
- applyBorder(c);
194
+ ws.getRow(6).height = 12;
195
+ // -- Row 7: Counts (cols C..H), live formulas referencing the data area --
196
+ // Data table starts at row 15 (col header at row 14, divider at row 14? actually
197
+ // header at row 13 + divider at 14 + first data at 15). The formulas read col L
198
+ // (Test Result) for status counts, col A (TC ID) for total via COUNTA.
199
+ const COUNT_RANGE_END = 10000;
200
+ const r7Values = {
201
+ C: { formula: `COUNTA(A15:A${COUNT_RANGE_END})`, result: summary.total },
202
+ D: { formula: `COUNTIF(L15:L${COUNT_RANGE_END},"Passed")`, result: summary.passed },
203
+ E: { formula: `COUNTIF(L15:L${COUNT_RANGE_END},"Failed")`, result: summary.failed },
204
+ F: { formula: `COUNTIF(L15:L${COUNT_RANGE_END},"Pending")`, result: summary.pending },
205
+ G: { formula: `COUNTIF(L15:L${COUNT_RANGE_END},"N/A")`, result: summary.na },
206
+ H: { formula: 'C7-D7-G7', result: summary.failed + summary.pending },
207
+ };
208
+ for (const [col, val] of Object.entries(r7Values)) {
209
+ const c = ws.getCell(`${col}7`);
210
+ c.value = val;
211
+ c.font = { size: 10, color: BLACK, name: ARIAL_FONT };
212
+ c.fill = { type: 'pattern', pattern: 'solid', fgColor: WHITE };
213
+ c.alignment = { horizontal: 'center', vertical: 'top' };
214
+ c.border = allBordersBlack;
215
+ if (col === 'H')
216
+ c.numFmt = '#,##0';
159
217
  }
160
- const summaryPct = ws.addRow([
161
- '',
162
- '',
163
- '',
164
- pct(summary.passed),
165
- pct(summary.failed),
166
- pct(summary.pending),
167
- pct(summary.na),
168
- pct(summary.pending + summary.na),
169
- ]);
170
- for (let i = 4; i <= 8; i++) {
171
- const c = summaryPct.getCell(i);
172
- c.alignment = { horizontal: 'center' };
173
- c.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: META_FILL } };
174
- applyBorder(c);
218
+ ws.getRow(7).height = 12;
219
+ // C8 has no value in the template but still needs a border so the band
220
+ // visually closes underneath "Total TCs".
221
+ const c8 = ws.getCell('C8');
222
+ c8.font = { size: 10, color: BLACK, name: ARIAL_FONT };
223
+ c8.fill = { type: 'pattern', pattern: 'solid', fgColor: WHITE };
224
+ c8.alignment = { horizontal: 'center', vertical: 'top' };
225
+ c8.border = allBordersBlack;
226
+ // -- Row 8: Percentages (cols D..H), formula = count / (Total − N/A) --
227
+ const r8Values = {
228
+ D: { formula: 'IFERROR(D7/(C7-G7),0)', result: summary.passed / Math.max(1, summary.total - summary.na) },
229
+ E: { formula: 'IFERROR(E7/(C7-G7),0)', result: summary.failed / Math.max(1, summary.total - summary.na) },
230
+ F: { formula: 'IFERROR(F7/(C7-G7),0)', result: summary.pending / Math.max(1, summary.total - summary.na) },
231
+ G: { formula: 'IFERROR(G7/(C7-G7),0)', result: summary.na / Math.max(1, summary.total - summary.na) },
232
+ H: { formula: 'IFERROR(H7/(C7-G7),0)', result: (summary.failed + summary.pending) / Math.max(1, summary.total - summary.na) },
233
+ };
234
+ for (const [col, val] of Object.entries(r8Values)) {
235
+ const c = ws.getCell(`${col}8`);
236
+ c.value = val;
237
+ c.font = { size: 10, color: BLACK, name: ARIAL_FONT };
238
+ c.fill = { type: 'pattern', pattern: 'solid', fgColor: WHITE };
239
+ c.alignment = { horizontal: 'center', vertical: 'top' };
240
+ c.border = allBordersBlack;
241
+ c.numFmt = '0%';
175
242
  }
176
- ws.addRow([]); // spacer
243
+ ws.getRow(8).height = 12;
244
+ // After rows 1-8 are populated, append a blank row 9 spacer.
245
+ while (ws.rowCount < 9)
246
+ ws.addRow([]);
177
247
  const specRow = ws.addRow(['Spec/Design link:', specLink]);
178
248
  specRow.getCell(1).font = { bold: true };
179
249
  specRow.getCell(2).font = { color: { argb: 'FF1F4E78' }, underline: true };
@@ -183,10 +253,10 @@ function renderXlsx(summary, rows, specLink) {
183
253
  // -- Column header row (bold, filled, wrapped) --
184
254
  const headerRow = ws.addRow([
185
255
  'TC ID*',
186
- '{Category 1}',
187
- '{Category 2}',
188
- '{Category 3}',
189
- '{Category 4}',
256
+ 'Screen/Function',
257
+ 'Big item',
258
+ 'Medium item',
259
+ 'Test Object',
190
260
  'Pre-condition',
191
261
  'Test Data',
192
262
  'Steps*',
@@ -232,10 +302,10 @@ function renderXlsx(summary, rows, specLink) {
232
302
  for (const r of groupRows) {
233
303
  const row = ws.addRow([
234
304
  r.tcId,
235
- r.category1,
236
305
  '',
237
306
  '',
238
307
  '',
308
+ r.category1,
239
309
  r.precondition,
240
310
  r.testData,
241
311
  r.steps,
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx-exporter.js","sourceRoot":"","sources":["../../src/exporters/xlsx-exporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlsx-exporter.js","sourceRoot":"","sources":["../../src/exporters/xlsx-exporter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"playwright.config.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/templates/playwright.config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAKH;;GAEG;;AACH,wBA+FG"}
1
+ {"version":3,"file":"playwright.config.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/templates/playwright.config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAKH;;GAEG;;AACH,wBAiGG"}
@@ -13,6 +13,8 @@ const test_1 = require("@playwright/test");
13
13
  */
14
14
  exports.default = (0, test_1.defineConfig)({
15
15
  testDir: './specs/generated',
16
+ /* Output directory for test artifacts (screenshots, videos, traces). */
17
+ outputDir: './test-results',
16
18
  /* Run tests in files in parallel */
17
19
  fullyParallel: true,
18
20
  /* Fail the build on CI if you accidentally left test.only in the source code. */
@@ -1 +1 @@
1
- {"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../../../src/orchestrator/templates/playwright.config.ts"],"names":[],"mappings":";;AAAA,2CAAyD;AAEzD;;;GAGG;AACH,+BAA+B;AAC/B,2BAA2B;AAC3B,4DAA4D;AAE5D;;GAEG;AACH,kBAAe,IAAA,mBAAY,EAAC;IAC1B,OAAO,EAAE,mBAAmB;IAC5B,oCAAoC;IACpC,aAAa,EAAE,IAAI;IACnB,iFAAiF;IACjF,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC5B,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,EAAE,KAAM;IACf,qEAAqE;IACrE,yGAAyG;IACzG,qGAAqG;IACrG,QAAQ,EAAE;QACR,CAAC,MAAM,CAAC;QACR;YACE,MAAM;YACN;gBACE,UAAU,EACR,OAAO,CAAC,GAAG,CAAC,2BAA2B;oBACvC,2BAA2B;aAC9B;SACF;KACF;IACD,wGAAwG;IACxG,GAAG,EAAE;QACH,4DAA4D;QAC5D,OAAO,EAAE,qBAAqB;QAE9B,4CAA4C;QAC5C,aAAa,EAAE,KAAM;QAErB,+FAA+F;QAC/F,KAAK,EAAE,gBAAgB;QAEvB;;;WAGG;QACH,UAAU,EAAE,iBAAiB;QAE7B;;;WAGG;QACH,8BAA8B;KAC/B;IAED,2CAA2C;IAC3C,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,EAAE,GAAG,cAAO,CAAC,gBAAgB,CAAC,EAAE;SACtC;QAED;;;;;;;;;;;;;;;;;;;;;4CAqBoC;QACpC,IAAI;QACJ,4BAA4B;QAC5B,4DAA4D;QAC5D,KAAK;QACL,IAAI;QACJ,2BAA2B;QAC3B,8DAA8D;QAC9D,KAAK;KACN;IAED,yDAAyD;IACzD,eAAe;IACf,8BAA8B;IAC9B,kCAAkC;IAClC,0CAA0C;IAC1C,KAAK;CACN,CAAC,CAAC"}
1
+ {"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../../../src/orchestrator/templates/playwright.config.ts"],"names":[],"mappings":";;AAAA,2CAAyD;AAEzD;;;GAGG;AACH,+BAA+B;AAC/B,2BAA2B;AAC3B,4DAA4D;AAE5D;;GAEG;AACH,kBAAe,IAAA,mBAAY,EAAC;IAC1B,OAAO,EAAE,mBAAmB;IAC5B,wEAAwE;IACxE,SAAS,EAAE,gBAAgB;IAC3B,oCAAoC;IACpC,aAAa,EAAE,IAAI;IACnB,iFAAiF;IACjF,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC5B,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,EAAE,KAAM;IACf,qEAAqE;IACrE,yGAAyG;IACzG,qGAAqG;IACrG,QAAQ,EAAE;QACR,CAAC,MAAM,CAAC;QACR;YACE,MAAM;YACN;gBACE,UAAU,EACR,OAAO,CAAC,GAAG,CAAC,2BAA2B;oBACvC,2BAA2B;aAC9B;SACF;KACF;IACD,wGAAwG;IACxG,GAAG,EAAE;QACH,4DAA4D;QAC5D,OAAO,EAAE,qBAAqB;QAE9B,4CAA4C;QAC5C,aAAa,EAAE,KAAM;QAErB,+FAA+F;QAC/F,KAAK,EAAE,gBAAgB;QAEvB;;;WAGG;QACH,UAAU,EAAE,iBAAiB;QAE7B;;;WAGG;QACH,8BAA8B;KAC/B;IAED,2CAA2C;IAC3C,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,EAAE,GAAG,cAAO,CAAC,gBAAgB,CAAC,EAAE;SACtC;QAED;;;;;;;;;;;;;;;;;;;;;4CAqBoC;QACpC,IAAI;QACJ,4BAA4B;QAC5B,4DAA4D;QAC5D,KAAK;QACL,IAAI;QACJ,2BAA2B;QAC3B,8DAA8D;QAC9D,KAAK;KACN;IAED,yDAAyD;IACzD,eAAe;IACf,8BAA8B;IAC9B,kCAAkC;IAClC,0CAA0C;IAC1C,KAAK;CACN,CAAC,CAAC"}
@@ -13,6 +13,8 @@ import { defineConfig, devices } from '@playwright/test';
13
13
  */
14
14
  export default defineConfig({
15
15
  testDir: './specs/generated',
16
+ /* Output directory for test artifacts (screenshots, videos, traces). */
17
+ outputDir: './test-results',
16
18
  /* Run tests in files in parallel */
17
19
  fullyParallel: true,
18
20
  /* Fail the build on CI if you accidentally left test.only in the source code. */
@@ -1 +1 @@
1
- {"version":3,"file":"specs-base.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/templates/specs-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,iBAAe,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3E;AAED,QAAA,MAAM,IAAI;yBACa,OAAO;qBACX,IAAI;wGAwBrB,CAAC;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"specs-base.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/templates/specs-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEnE,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,iBAAe,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3E;AAED,QAAA,MAAM,IAAI;yBACa,OAAO;qBACX,IAAI;wGAoBrB,CAAC;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC"}
@@ -58,14 +58,10 @@ async function cleanupPage(page, config) {
58
58
  }
59
59
  const test = test_1.test.extend({
60
60
  screenshotOnFailure: [false, { option: true }],
61
- page: async ({ browser, storageState }, use) => {
62
- const context = storageState
63
- ? await browser.newContext({ storageState })
64
- : await browser.newContext();
61
+ page: async ({ context }, use) => {
65
62
  const page = await context.newPage();
66
63
  await use(page);
67
64
  await page.close();
68
- await context.close();
69
65
  },
70
66
  _autoScreenshot: [async ({ page, screenshotOnFailure }, use, testInfo) => {
71
67
  await use();
@@ -1 +1 @@
1
- {"version":3,"file":"specs-base.js","sourceRoot":"","sources":["../../../src/orchestrator/templates/specs-base.ts"],"names":[],"mappings":";;;AA0FuB,kCAAW;AA1FlC,2CAAmE;AA0FpD,uFA1FQ,aAAM,OA0FR;AAjFrB,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,MAAqB;IAC1D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;SASlC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;SAwBf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,CAGrB;IACD,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE9C,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,YAAY;YAC1B,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;YAC5C,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;YACvE,MAAM,GAAG,EAAE,CAAC;YAEZ,IAAI,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACvE,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE;oBAClC,IAAI,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;oBAC7B,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;CACnB,CAAC,CAAC;AAEM,oBAAI"}
1
+ {"version":3,"file":"specs-base.js","sourceRoot":"","sources":["../../../src/orchestrator/templates/specs-base.ts"],"names":[],"mappings":";;;AAsFuB,kCAAW;AAtFlC,2CAAmE;AAsFpD,uFAtFQ,aAAM,OAsFR;AA7ErB,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,MAAqB;IAC1D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;SASlC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;SAwBf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,CAGrB;IACD,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE9C,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;YACvE,MAAM,GAAG,EAAE,CAAC;YAEZ,IAAI,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACvE,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE;oBAClC,IAAI,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;oBAC7B,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;CACnB,CAAC,CAAC;AAEM,oBAAI"}
@@ -66,14 +66,10 @@ const test = base.extend<{
66
66
  }>({
67
67
  screenshotOnFailure: [false, { option: true }],
68
68
 
69
- page: async ({ browser, storageState }, use) => {
70
- const context = storageState
71
- ? await browser.newContext({ storageState })
72
- : await browser.newContext();
69
+ page: async ({ context }, use) => {
73
70
  const page = await context.newPage();
74
71
  await use(page);
75
72
  await page.close();
76
- await context.close();
77
73
  },
78
74
 
79
75
  _autoScreenshot: [async ({ page, screenshotOnFailure }, use, testInfo) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sun-asterisk/sungen",
3
- "version": "2.6.8",
3
+ "version": "2.6.10",
4
4
  "description": "Deterministic E2E Test Compiler - Gherkin + Selectors → Playwright tests",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Builds qa/dashboard/index.html — a single-file, share-ready test report —
5
5
  * from existing Gherkin features, compiled .spec.ts files, and Playwright
6
- * results. Snapshots are persisted under qa/dashboard/history/ (max 20).
6
+ * results. Snapshots are persisted under qa/dashboard/history/ (never deleted;
7
+ * --max-history only controls how many are included in dashboard stats).
7
8
  */
8
9
 
9
10
  import { Command } from 'commander';
@@ -68,7 +69,7 @@ export function registerDashboardCommand(program: Command): void {
68
69
  .description('Build a single-file HTML dashboard summarising all test cases & results')
69
70
  .argument('[names...]', 'Specific screen or flow names. Omit to include all.')
70
71
  .option('--no-history', 'Do not persist this run under qa/dashboard/history/')
71
- .option('--max-history <n>', `Cap retained history files (default: ${DEFAULT_MAX_HISTORY})`)
72
+ .option('--max-history <n>', `Limit snapshots included in dashboard stats (default: ${DEFAULT_MAX_HISTORY}). Older files are kept on disk.`)
72
73
  .option('--open', 'Open the rendered HTML in the default browser when done')
73
74
  .action(async (names: string[], options: DashboardOptions) => {
74
75
  try {
@@ -103,18 +104,17 @@ export function registerDashboardCommand(program: Command): void {
103
104
  `${COLOR.gray}(${snapshot.screens.length} screens, ${snapshot.summary.total} TCs)${COLOR.reset}`
104
105
  );
105
106
 
106
- // 3. Persist history (unless disabled)
107
+ // 3. Persist history (unless disabled). Files are never deleted —
108
+ // `max` only controls how many feed into the dashboard payload.
109
+ const max = options.maxHistory ? Math.max(1, parseInt(options.maxHistory, 10) || DEFAULT_MAX_HISTORY) : DEFAULT_MAX_HISTORY;
107
110
  if (!options.noHistory) {
108
- const max = options.maxHistory ? Math.max(1, parseInt(options.maxHistory, 10) || DEFAULT_MAX_HISTORY) : DEFAULT_MAX_HISTORY;
109
111
  const result = writeSnapshotToHistory(cwd, snapshot, max);
110
112
  log(` ${COLOR.green}✓${COLOR.reset} history ${path.relative(cwd, result.written)}`);
111
- if (result.pruned.length > 0) {
112
- log(` ${COLOR.gray} pruned ${result.pruned.length} older snapshot(s)${COLOR.reset}`);
113
- }
113
+ log(` ${COLOR.gray} ${result.total} on disk · ${result.included.length} within limit (${max})${result.archived.length > 0 ? ` · ${result.archived.length} archived (kept)` : ''}${COLOR.reset}`);
114
114
  }
115
115
 
116
- // 4. Render HTML
117
- const payload = buildPayload(cwd, snapshot);
116
+ // 4. Render HTML — limit how many history files feed the payload.
117
+ const payload = buildPayload(cwd, snapshot, max);
118
118
  const rendered = renderDashboardHtml(cwd, payload);
119
119
  log(` ${COLOR.green}✓${COLOR.reset} html ${path.relative(cwd, rendered.outputPath)} ${COLOR.gray}(${(rendered.bytes / 1024 / 1024).toFixed(2)} MB)${COLOR.reset}`);
120
120
 
@@ -7,6 +7,7 @@ import { Command } from 'commander';
7
7
  import * as path from 'path';
8
8
  import * as fs from 'fs';
9
9
  import { execSync } from 'child_process';
10
+ import { parse as parseYaml } from 'yaml';
10
11
  import { parseFeatureMetadata } from '../../exporters/feature-parser';
11
12
  import { parseSpecFile } from '../../exporters/spec-parser';
12
13
  import { loadTestData } from '../../exporters/test-data-resolver';
@@ -102,6 +103,26 @@ function resolveTestDataPathForTarget(cwd: string, target: DeliveryTarget): stri
102
103
  return path.join(qaDir(cwd, target), 'test-data', `${target.name}.yaml`);
103
104
  }
104
105
 
106
+ /**
107
+ * Flows record their entry-point URL inside selectors/<name>.yaml under the
108
+ * page-selector block (entry with `type: 'page'`). Return its `value`, or
109
+ * undefined when the file is missing or has no page selector.
110
+ */
111
+ function readFlowPagePath(selectorsFile: string): string | undefined {
112
+ if (!fs.existsSync(selectorsFile)) return undefined;
113
+ try {
114
+ const parsed = parseYaml(fs.readFileSync(selectorsFile, 'utf-8'));
115
+ if (!parsed || typeof parsed !== 'object') return undefined;
116
+ for (const v of Object.values(parsed as Record<string, unknown>)) {
117
+ if (v && typeof v === 'object' && (v as { type?: string }).type === 'page') {
118
+ const value = (v as { value?: unknown }).value;
119
+ if (typeof value === 'string' && value.length > 0) return value;
120
+ }
121
+ }
122
+ } catch { /* malformed YAML — ignore */ }
123
+ return undefined;
124
+ }
125
+
105
126
  function runPreflight(cwd: string, target: DeliveryTarget): PreflightCheck {
106
127
  const base = qaDir(cwd, target);
107
128
  const genBase = generatedDir(cwd, target);
@@ -240,9 +261,18 @@ async function exportTarget(
240
261
  const results = resultsFile ? loadPlaywrightReport(resultsFile) : null;
241
262
 
242
263
  const merged = mergeFeatureAndSpec(feature, spec);
264
+ // Screens get their URL path from the .feature file directly. Flows record
265
+ // it in selectors/<name>.yaml under the page-selector block — fall back to
266
+ // that so the Environment column shows a full URL for flows too.
267
+ let featurePath = feature.featurePath;
268
+ if (!featurePath && target.isFlow) {
269
+ const selectorsFile = path.join(base, 'selectors', `${target.name}.yaml`);
270
+ featurePath = readFlowPagePath(selectorsFile);
271
+ }
243
272
  const rows = buildTestCaseRows({
244
273
  screen: label,
245
274
  featureName: feature.featureName,
275
+ featurePath,
246
276
  merged,
247
277
  testData,
248
278
  results,
package/src/cli/index.ts CHANGED
@@ -21,7 +21,7 @@ async function main() {
21
21
  program
22
22
  .name('sungen')
23
23
  .description('Deterministic E2E Test Compiler — Gherkin + Selectors → Playwright')
24
- .version('2.6.8');
24
+ .version('2.6.10');
25
25
 
26
26
  // Global options
27
27
  program