@sun-asterisk/sungen 3.2.6 → 3.2.7
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/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +7 -46
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/dashboard/snapshot-builder.d.ts.map +1 -1
- package/dist/dashboard/snapshot-builder.js +28 -6
- package/dist/dashboard/snapshot-builder.js.map +1 -1
- package/dist/dashboard/templates/index.html +20 -20
- package/dist/dashboard/types.d.ts +18 -0
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/exporters/api-catalog-loader.d.ts +18 -0
- package/dist/exporters/api-catalog-loader.d.ts.map +1 -0
- package/dist/exporters/api-catalog-loader.js +77 -0
- package/dist/exporters/api-catalog-loader.js.map +1 -0
- package/dist/exporters/json-exporter.d.ts +10 -1
- package/dist/exporters/json-exporter.d.ts.map +1 -1
- package/dist/exporters/json-exporter.js +34 -2
- package/dist/exporters/json-exporter.js.map +1 -1
- package/dist/exporters/playwright-report-parser.d.ts +14 -0
- package/dist/exporters/playwright-report-parser.d.ts.map +1 -1
- package/dist/exporters/playwright-report-parser.js +30 -0
- package/dist/exporters/playwright-report-parser.js.map +1 -1
- package/dist/exporters/xlsx-exporter.d.ts +18 -17
- package/dist/exporters/xlsx-exporter.d.ts.map +1 -1
- package/dist/exporters/xlsx-exporter.js +25 -595
- package/dist/exporters/xlsx-exporter.js.map +1 -1
- package/dist/exporters/xlsx-report-builder.d.ts +196 -0
- package/dist/exporters/xlsx-report-builder.d.ts.map +1 -0
- package/dist/exporters/xlsx-report-builder.js +653 -0
- package/dist/exporters/xlsx-report-builder.js.map +1 -0
- package/package.json +3 -3
- package/src/cli/commands/delivery.ts +8 -42
- package/src/dashboard/snapshot-builder.ts +31 -7
- package/src/dashboard/templates/index.html +20 -20
- package/src/dashboard/types.ts +19 -0
- package/src/exporters/api-catalog-loader.ts +44 -0
- package/src/exporters/json-exporter.ts +46 -4
- package/src/exporters/playwright-report-parser.ts +27 -0
- package/src/exporters/xlsx-exporter.ts +34 -658
- package/src/exporters/xlsx-report-builder.ts +806 -0
- package/dist/cli/types.d.ts +0 -9
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/types.js +0 -7
- package/dist/cli/types.js.map +0 -1
- package/dist/generators/gherkin-parser/selector-extractor.d.ts +0 -37
- package/dist/generators/gherkin-parser/selector-extractor.d.ts.map +0 -1
- package/dist/generators/gherkin-parser/selector-extractor.js +0 -108
- package/dist/generators/gherkin-parser/selector-extractor.js.map +0 -1
- package/dist/generators/test-generator/types.d.ts +0 -25
- package/dist/generators/test-generator/types.d.ts.map +0 -1
- package/dist/generators/test-generator/types.js +0 -7
- package/dist/generators/test-generator/types.js.map +0 -1
- package/dist/generators/types.d.ts +0 -119
- package/dist/generators/types.d.ts.map +0 -1
- package/dist/generators/types.js +0 -48
- package/dist/generators/types.js.map +0 -1
- package/dist/orchestrator/figma/node-path-collapser.d.ts +0 -16
- package/dist/orchestrator/figma/node-path-collapser.d.ts.map +0 -1
- package/dist/orchestrator/figma/node-path-collapser.js +0 -37
- package/dist/orchestrator/figma/node-path-collapser.js.map +0 -1
- package/src/cli/types.ts +0 -9
- package/src/generators/gherkin-parser/selector-extractor.ts +0 -142
- package/src/generators/test-generator/types.ts +0 -26
- package/src/generators/types.ts +0 -227
- package/src/orchestrator/figma/node-path-collapser.ts +0 -38
|
@@ -70,6 +70,24 @@ export interface FeatureSnapshot {
|
|
|
70
70
|
locales?: LocaleSnapshot[];
|
|
71
71
|
platform?: 'android' | 'ios';
|
|
72
72
|
executedPlatforms?: ('android' | 'ios')[];
|
|
73
|
+
/** API detail sheet rows (api-kind units only) — precomputed by the snapshot
|
|
74
|
+
* builder with the same buildApiDetailRows call the delivery CLI uses, so the
|
|
75
|
+
* dashboard XLSX export appends an "API detail" sheet identical to delivery's. */
|
|
76
|
+
apiDetail?: ApiDetailRow[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* One endpoint row of the "API detail" sheet (api-kind units). Structural copy
|
|
80
|
+
* of ApiDetailRow in src/exporters/types.ts — kept local so this file stays
|
|
81
|
+
* import-free (it is mirrored verbatim into dashboard/src/types.ts).
|
|
82
|
+
*/
|
|
83
|
+
export interface ApiDetailRow {
|
|
84
|
+
endpoint: string;
|
|
85
|
+
method: string;
|
|
86
|
+
authDatasource: string;
|
|
87
|
+
requestShape: string;
|
|
88
|
+
expectedStatusMatrix: string;
|
|
89
|
+
flowSteps: string;
|
|
90
|
+
concurrencyInvariant: string;
|
|
73
91
|
}
|
|
74
92
|
/**
|
|
75
93
|
* One locale variant of a feature's scenarios. The structure (categories,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,CAAC;IACjC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB;;mFAE+E;IAC/E,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,gBAAgB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,CAAC;IACjC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB;;mFAE+E;IAC/E,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;IAC1C;;uFAEmF;IACnF,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;IACzC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EACN,OAAO,GACP,SAAS,GACT,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,WAAW,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load the apis.yaml endpoint catalog for an api-kind unit — shared by the
|
|
3
|
+
* delivery CLI (CSV/XLSX export) and the dashboard snapshot builder so both
|
|
4
|
+
* surfaces render the identical request/response contract for API test cases.
|
|
5
|
+
*/
|
|
6
|
+
import { ApiCatalogEntry } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Load the apis.yaml catalog for an api-kind unit, merging the shared catalog under
|
|
9
|
+
* the unit catalog. The runtime resolves an endpoint unit-scope-first then falls back
|
|
10
|
+
* to the shared catalog (driver-api api-catalog.ts), so an endpoint defined only in
|
|
11
|
+
* `qa/api/apis.yaml` still runs — we must load it too, or its request block would come
|
|
12
|
+
* back empty (the very bug this feature fixes). Unit wins on a name collision.
|
|
13
|
+
* Returns an empty object when neither file is present (graceful degradation).
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadApiCatalog(cwd: string, kind: 'screen' | 'flow' | 'api', screen: string): Record<string, ApiCatalogEntry>;
|
|
16
|
+
/** Parse one apis.yaml file into an endpoint map, unwrapping the optional `apis:` wrapper. */
|
|
17
|
+
export declare function readApiCatalogFile(catalogPath: string): Record<string, ApiCatalogEntry>;
|
|
18
|
+
//# sourceMappingURL=api-catalog-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-catalog-loader.d.ts","sourceRoot":"","sources":["../../src/exporters/api-catalog-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,EAC/B,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAKjC;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAYvF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Load the apis.yaml endpoint catalog for an api-kind unit — shared by the
|
|
4
|
+
* delivery CLI (CSV/XLSX export) and the dashboard snapshot builder so both
|
|
5
|
+
* surfaces render the identical request/response contract for API test cases.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.loadApiCatalog = loadApiCatalog;
|
|
42
|
+
exports.readApiCatalogFile = readApiCatalogFile;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const yaml_1 = require("yaml");
|
|
46
|
+
/**
|
|
47
|
+
* Load the apis.yaml catalog for an api-kind unit, merging the shared catalog under
|
|
48
|
+
* the unit catalog. The runtime resolves an endpoint unit-scope-first then falls back
|
|
49
|
+
* to the shared catalog (driver-api api-catalog.ts), so an endpoint defined only in
|
|
50
|
+
* `qa/api/apis.yaml` still runs — we must load it too, or its request block would come
|
|
51
|
+
* back empty (the very bug this feature fixes). Unit wins on a name collision.
|
|
52
|
+
* Returns an empty object when neither file is present (graceful degradation).
|
|
53
|
+
*/
|
|
54
|
+
function loadApiCatalog(cwd, kind, screen) {
|
|
55
|
+
if (kind !== 'api')
|
|
56
|
+
return {};
|
|
57
|
+
const shared = readApiCatalogFile(path.join(cwd, 'qa', 'api', 'apis.yaml'));
|
|
58
|
+
const unit = readApiCatalogFile(path.join(cwd, 'qa', 'api', screen, 'api', 'apis.yaml'));
|
|
59
|
+
return { ...shared, ...unit };
|
|
60
|
+
}
|
|
61
|
+
/** Parse one apis.yaml file into an endpoint map, unwrapping the optional `apis:` wrapper. */
|
|
62
|
+
function readApiCatalogFile(catalogPath) {
|
|
63
|
+
if (!fs.existsSync(catalogPath))
|
|
64
|
+
return {};
|
|
65
|
+
try {
|
|
66
|
+
const parsed = (0, yaml_1.parse)(fs.readFileSync(catalogPath, 'utf-8'));
|
|
67
|
+
if (parsed && typeof parsed === 'object') {
|
|
68
|
+
// The runtime loader accepts both a flat map and an `apis:` wrapper — unwrap it
|
|
69
|
+
// here too so both loaders read the same file identically.
|
|
70
|
+
const root = parsed.apis && typeof parsed.apis === 'object' ? parsed.apis : parsed;
|
|
71
|
+
return root;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch { /* malformed yaml — skip */ }
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=api-catalog-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-catalog-loader.js","sourceRoot":"","sources":["../../src/exporters/api-catalog-loader.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeH,wCASC;AAGD,gDAYC;AArCD,uCAAyB;AACzB,2CAA6B;AAC7B,+BAA0C;AAG1C;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,GAAW,EACX,IAA+B,EAC/B,MAAc;IAEd,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IACzF,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,8FAA8F;AAC9F,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,YAAS,EAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAmC,CAAC;QAClG,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,gFAAgF;YAChF,2DAA2D;YAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACnF,OAAO,IAAuC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* richer ScenarioSnapshot / ScreenSnapshot shape used by the dashboard UI.
|
|
6
6
|
*/
|
|
7
7
|
import { MergedScenario } from './scenario-merger';
|
|
8
|
-
import { EnvironmentInfo, PlaywrightResult } from './types';
|
|
8
|
+
import { ApiCatalogEntry, EnvironmentInfo, PlaywrightResult } from './types';
|
|
9
9
|
import { SelectorKeyMap } from './selector-key-resolver';
|
|
10
10
|
import { ScreenSnapshot } from '../dashboard/types';
|
|
11
11
|
export interface BuildScreenSnapshotInput {
|
|
@@ -32,6 +32,15 @@ export interface BuildScreenSnapshotInput {
|
|
|
32
32
|
* link" instead of the VI key "Click [VỀ KUDOS] link".
|
|
33
33
|
*/
|
|
34
34
|
selectorKeyMap?: SelectorKeyMap;
|
|
35
|
+
/**
|
|
36
|
+
* Unit kind. When `'api'`, Steps/Expected are composed from the request
|
|
37
|
+
* contract (Method/API/Header/Body) and response contract (Status + Response)
|
|
38
|
+
* exactly like csv-exporter's buildTestCaseRows — so the dashboard UI and its
|
|
39
|
+
* XLSX export show the same cells as the delivery CSV.
|
|
40
|
+
*/
|
|
41
|
+
kind?: 'screen' | 'flow' | 'api';
|
|
42
|
+
/** apis.yaml catalog (keyed by endpoint name) for api-kind units. */
|
|
43
|
+
apiCatalog?: Record<string, ApiCatalogEntry>;
|
|
35
44
|
}
|
|
36
45
|
/**
|
|
37
46
|
* Build a ScreenSnapshot from merged scenarios.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/json-exporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"json-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/json-exporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgBnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAgC,MAAM,yBAAyB,CAAC;AAEvF,OAAO,EAEL,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC9C,GAAG,EAAE,eAAe,CAAC;IACrB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,cAAc,CAiJnF"}
|
|
@@ -10,6 +10,7 @@ exports.buildScreenSnapshot = buildScreenSnapshot;
|
|
|
10
10
|
const feature_parser_1 = require("./feature-parser");
|
|
11
11
|
const step_formatter_1 = require("./step-formatter");
|
|
12
12
|
const test_data_resolver_1 = require("./test-data-resolver");
|
|
13
|
+
const api_testcase_formatter_1 = require("./api-testcase-formatter");
|
|
13
14
|
const playwright_report_parser_1 = require("./playwright-report-parser");
|
|
14
15
|
const selector_key_resolver_1 = require("./selector-key-resolver");
|
|
15
16
|
const result_variants_1 = require("./result-variants");
|
|
@@ -31,8 +32,39 @@ function buildScreenSnapshot(input) {
|
|
|
31
32
|
? (0, selector_key_resolver_1.substituteSelectorKeysInStep)(text, input.selectorKeyMap, input.testData)
|
|
32
33
|
: text;
|
|
33
34
|
const formatStep = (s) => localize(s.bucket === 'given' ? (0, step_formatter_1.keepActor)(s.text) : (0, step_formatter_1.stripActor)(s.text));
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
let steps = m.resolvedSteps.map(formatStep).filter(Boolean);
|
|
36
|
+
let expectedResults = m.resolvedExpected.map(formatStep).filter(Boolean);
|
|
37
|
+
// API test cases: mirror csv-exporter's request/response rendering so the
|
|
38
|
+
// dashboard (UI + XLSX export) shows the same Steps / Expected results as
|
|
39
|
+
// the delivery CSV. The cells are composed with the CSV's exact single-vs-
|
|
40
|
+
// numbered join, then stored as ONE array entry — the dashboard XLSX
|
|
41
|
+
// adapter's formatList() (1 entry → raw) reproduces the delivery cell
|
|
42
|
+
// byte-for-byte, and the UI renders the block with pre-wrap.
|
|
43
|
+
if (input.kind === 'api' && input.apiCatalog && (0, api_testcase_formatter_1.hasApiCalls)(m.feature.tags)) {
|
|
44
|
+
// Delivery cells substitute {{var}} test-data refs (csv-exporter's localize);
|
|
45
|
+
// scope that to the API branch so non-API snapshot behavior is untouched.
|
|
46
|
+
const localizeApi = (text) => (0, test_data_resolver_1.substituteTestDataVars)(localize(text), input.testData);
|
|
47
|
+
const formatStepApi = (s) => localizeApi(s.bucket === 'given' ? (0, step_formatter_1.keepActor)(s.text) : (0, step_formatter_1.stripActor)(s.text));
|
|
48
|
+
const joinCell = (lines) => lines.length === 0 ? '' :
|
|
49
|
+
lines.length === 1 ? lines[0] :
|
|
50
|
+
lines.map((l, i) => `${i + 1}. ${l}`).join('\n');
|
|
51
|
+
let stepsCell = joinCell(m.resolvedSteps.map(formatStepApi).filter(Boolean));
|
|
52
|
+
let expectedCell = joinCell(m.resolvedExpected.map(formatStepApi).filter(Boolean));
|
|
53
|
+
const apiRequest = (0, api_testcase_formatter_1.formatApiRequest)(m.feature.tags, input.apiCatalog, localizeApi);
|
|
54
|
+
if (apiRequest)
|
|
55
|
+
stepsCell = stepsCell ? `${stepsCell}\n\n${apiRequest}` : apiRequest;
|
|
56
|
+
const apiExpected = (0, api_testcase_formatter_1.formatApiExpected)(m.resolvedExpected, m.feature.tags, localizeApi);
|
|
57
|
+
if (apiExpected)
|
|
58
|
+
expectedCell = apiExpected;
|
|
59
|
+
// Same value-based redaction backstop as the CSV path.
|
|
60
|
+
const secrets = (0, api_testcase_formatter_1.collectSecretValues)(input.testData);
|
|
61
|
+
if (secrets.length > 0) {
|
|
62
|
+
stepsCell = (0, api_testcase_formatter_1.redactSecrets)(stepsCell, secrets);
|
|
63
|
+
expectedCell = (0, api_testcase_formatter_1.redactSecrets)(expectedCell, secrets);
|
|
64
|
+
}
|
|
65
|
+
steps = stepsCell ? [stepsCell] : [];
|
|
66
|
+
expectedResults = expectedCell ? [expectedCell] : [];
|
|
67
|
+
}
|
|
36
68
|
// Dashboard modal uses whitespace-pre-wrap — pass '\n' to render one
|
|
37
69
|
// key/value per line instead of the CSV-friendly "; " join.
|
|
38
70
|
const testDataStr = (0, test_data_resolver_1.formatTestData)(m.feature.referencedVars, input.testData, Infinity, '\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-exporter.js","sourceRoot":"","sources":["../../src/exporters/json-exporter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"json-exporter.js","sourceRoot":"","sources":["../../src/exporters/json-exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
* Parse Playwright results.json (JSON reporter output) to map test titles → execution status.
|
|
3
3
|
*/
|
|
4
4
|
import { PlaywrightResult } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the results.json file for a unit — shared by the delivery CLI and
|
|
7
|
+
* the dashboard snapshot builder so both surfaces resolve execution status
|
|
8
|
+
* from the SAME file (they drifted: the dashboard only looked for the
|
|
9
|
+
* per-feature file and showed every scenario Pending on projects whose
|
|
10
|
+
* playwright.config writes only the default global test-results/results.json).
|
|
11
|
+
*
|
|
12
|
+
* Candidate order (first existing wins):
|
|
13
|
+
* 1. <genDir>/<featureBaseName>-test-result.<SUNGEN_ENV>.json (env runs)
|
|
14
|
+
* 2. <genDir>/<featureBaseName>-test-result.json (per-feature reporter)
|
|
15
|
+
* 3. <cwd>/test-results/results.<SUNGEN_ENV>.json
|
|
16
|
+
* 4. <cwd>/test-results/results.json (playwright default)
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveResultsPath(cwd: string, genDir: string, featureBaseName: string): string | null;
|
|
5
19
|
/**
|
|
6
20
|
* Load and parse results.json. Returns null if file missing or invalid.
|
|
7
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWtG;AAoDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CA0C7F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASvE;AAwCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAc7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUxE;AAQD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAM3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAyB9F"}
|
|
@@ -36,6 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.resolveResultsPath = resolveResultsPath;
|
|
39
40
|
exports.loadPlaywrightReport = loadPlaywrightReport;
|
|
40
41
|
exports.loadReportProjectName = loadReportProjectName;
|
|
41
42
|
exports.statusToTestResult = statusToTestResult;
|
|
@@ -43,6 +44,35 @@ exports.formatExecutedDate = formatExecutedDate;
|
|
|
43
44
|
exports.parseExpectedReceived = parseExpectedReceived;
|
|
44
45
|
exports.formatNote = formatNote;
|
|
45
46
|
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the results.json file for a unit — shared by the delivery CLI and
|
|
50
|
+
* the dashboard snapshot builder so both surfaces resolve execution status
|
|
51
|
+
* from the SAME file (they drifted: the dashboard only looked for the
|
|
52
|
+
* per-feature file and showed every scenario Pending on projects whose
|
|
53
|
+
* playwright.config writes only the default global test-results/results.json).
|
|
54
|
+
*
|
|
55
|
+
* Candidate order (first existing wins):
|
|
56
|
+
* 1. <genDir>/<featureBaseName>-test-result.<SUNGEN_ENV>.json (env runs)
|
|
57
|
+
* 2. <genDir>/<featureBaseName>-test-result.json (per-feature reporter)
|
|
58
|
+
* 3. <cwd>/test-results/results.<SUNGEN_ENV>.json
|
|
59
|
+
* 4. <cwd>/test-results/results.json (playwright default)
|
|
60
|
+
*/
|
|
61
|
+
function resolveResultsPath(cwd, genDir, featureBaseName) {
|
|
62
|
+
const env = process.env.SUNGEN_ENV;
|
|
63
|
+
const candidates = [];
|
|
64
|
+
if (env)
|
|
65
|
+
candidates.push(path.join(genDir, `${featureBaseName}-test-result.${env}.json`));
|
|
66
|
+
candidates.push(path.join(genDir, `${featureBaseName}-test-result.json`));
|
|
67
|
+
if (env)
|
|
68
|
+
candidates.push(path.join(cwd, 'test-results', `results.${env}.json`));
|
|
69
|
+
candidates.push(path.join(cwd, 'test-results', 'results.json'));
|
|
70
|
+
for (const c of candidates) {
|
|
71
|
+
if (fs.existsSync(c))
|
|
72
|
+
return c;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
46
76
|
/**
|
|
47
77
|
* Recursively walk suites and collect (full-title → spec) pairs.
|
|
48
78
|
* Title stack is joined with " > " to match our SpecTest.testTitle format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-report-parser.js","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"playwright-report-parser.js","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
2
|
+
* Node-side wrapper around the shared pure workbook builder
|
|
3
|
+
* (`xlsx-report-builder.ts` — the single source of truth for the BM-2-901-13
|
|
4
|
+
* report rendering, also bundled into the dashboard). This module keeps only:
|
|
5
|
+
* - Node file I/O: `writeXlsx` + the `lockEmbeddedImages` post-process
|
|
6
|
+
* - the CLI version lookup (`getPackageVersion`, fs-based) injected as
|
|
7
|
+
* `opts.sungenVersion`
|
|
8
|
+
* - thin adapters mapping core domain types (ScreenSummary / TestCaseRow /
|
|
9
|
+
* LocaleSheet / ApiCatalogEntry) onto the builder input — pure field
|
|
10
|
+
* mapping, no rendering logic.
|
|
11
|
+
* Public API is unchanged: `renderXlsx`, `renderXlsxMultiSheet`, `writeXlsx`,
|
|
12
|
+
* `buildApiDetailRows`, `addApiDetailSheet`, `ApiDetailContext`, `LocaleSheet`.
|
|
10
13
|
*/
|
|
11
14
|
import ExcelJS from 'exceljs';
|
|
12
15
|
import { ApiCatalogEntry, ApiDetailRow, ScreenSummary, TestCaseRow } from './types';
|
|
16
|
+
import { addApiDetailSheet } from './xlsx-report-builder';
|
|
17
|
+
export { addApiDetailSheet };
|
|
13
18
|
/**
|
|
14
19
|
* Optional context for the supplementary "API detail" worksheet.
|
|
15
20
|
* Passed only when the unit is kind:api. When omitted, only the standard
|
|
@@ -45,20 +50,15 @@ export declare function renderXlsxMultiSheet(sheets: LocaleSheet[]): ExcelJS.Wor
|
|
|
45
50
|
* Build ApiDetailRow[] from the apis.yaml catalog + feature-level annotations.
|
|
46
51
|
* Called once per feature file for api-kind units in the delivery pipeline.
|
|
47
52
|
*
|
|
53
|
+
* Delegates to the pure builder, injecting the feature-parser tag extractors
|
|
54
|
+
* (the builder cannot import feature-parser — it must stay browser-safe).
|
|
55
|
+
*
|
|
48
56
|
* @param catalog Parsed apis.yaml keyed by endpoint name
|
|
49
57
|
* @param scenarios Scenario-level tag arrays from parseFeatureMetadata().scenarios
|
|
50
58
|
*/
|
|
51
59
|
export declare function buildApiDetailRows(catalog: Record<string, ApiCatalogEntry>, scenarios: Array<{
|
|
52
60
|
tags: string[];
|
|
53
61
|
}>): ApiDetailRow[];
|
|
54
|
-
/**
|
|
55
|
-
* Append a second "API detail" worksheet to the workbook.
|
|
56
|
-
* Called only for api-kind units; no effect on the Testcases sheet or other sheets.
|
|
57
|
-
*
|
|
58
|
-
* Columns: Endpoint · Method · Auth/Datasource · Request shape ·
|
|
59
|
-
* Expected-status matrix · Flow steps · Concurrency invariant
|
|
60
|
-
*/
|
|
61
|
-
export declare function addApiDetailSheet(wb: ExcelJS.Workbook, detailRows: ApiDetailRow[]): void;
|
|
62
62
|
/**
|
|
63
63
|
* Write the workbook to `qa/deliverables/<screen>-testcases[.env].xlsx`.
|
|
64
64
|
* When `SUNGEN_ENV` is set, the env name is appended so locale exports don't
|
|
@@ -73,7 +73,8 @@ export declare function writeXlsx(cwd: string, screen: string, wb: ExcelJS.Workb
|
|
|
73
73
|
/**
|
|
74
74
|
* Post-process the workbook buffer: extend `<a:picLocks>` on every drawing
|
|
75
75
|
* with `noMove`, `noResize`, `noSelect`. Combined with the sheet protection
|
|
76
|
-
*
|
|
76
|
+
* set by the builder, the embedded logo can't be dragged, resized, or
|
|
77
|
+
* selected via the UI.
|
|
77
78
|
*/
|
|
78
79
|
export declare function lockEmbeddedImages(buffer: Buffer): Promise<Buffer>;
|
|
79
80
|
//# sourceMappingURL=xlsx-exporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/xlsx-exporter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"xlsx-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/xlsx-exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQpF,OAAO,EAIL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,uDAAuD;IACvD,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,WAAW,EAAE,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,QAAQ,CAMlB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAE5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACnC,YAAY,EAAE,CAMhB;AAED;;;;GAIG;AACH;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,OAAO,CAAC,QAAQ,EACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBxE"}
|