@feasibleone/blong-chain 1.10.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/index.ts +87 -2
- package/package.json +3 -3
- package/test-types.ts +93 -0
- package/dist/examples/demo.test.d.ts +0 -6
- package/dist/examples/demo.test.d.ts.map +0 -1
- package/dist/examples/demo.test.js.map +0 -1
- package/dist/examples/error-demo.test.d.ts +0 -14
- package/dist/examples/error-demo.test.d.ts.map +0 -1
- package/dist/examples/error-demo.test.js.map +0 -1
- package/dist/index.d.ts +0 -87
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -915
- package/dist/index.js.map +0 -1
- package/dist/index.test.d.ts +0 -14
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js.map +0 -1
- package/dist/package.json +0 -39
- package/dist/showcase.test.d.ts +0 -19
- package/dist/showcase.test.d.ts.map +0 -1
- package/dist/showcase.test.js.map +0 -1
- package/dist/snapshot-context.test.d.ts +0 -30
- package/dist/snapshot-context.test.d.ts.map +0 -1
- package/dist/snapshot-context.test.js.map +0 -1
- package/dist/test-types.d.ts +0 -379
- package/dist/test-types.d.ts.map +0 -1
- package/dist/test-types.js +0 -2
- package/dist/test-types.js.map +0 -1
- package/dist/timing-analysis.test.d.ts +0 -2
- package/dist/timing-analysis.test.d.ts.map +0 -1
- package/dist/timing-analysis.test.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.11.1](https://github.com/feasibleone/blong/compare/blong-chain-v1.11.0...blong-chain-v1.11.1) (2026-09-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* failed tests ([108caf5](https://github.com/feasibleone/blong/commit/108caf5f3e92151f8b929115e0a8f6b2acdd3d23))
|
|
9
|
+
|
|
10
|
+
## [1.11.0](https://github.com/feasibleone/blong/compare/blong-chain-v1.10.0...blong-chain-v1.11.0) (2026-09-26)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* progress points in test reports ([fb73036](https://github.com/feasibleone/blong/commit/fb730360877eb371ab3d1603ae7bf35976c170dc))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* misc CI failures ([60689af](https://github.com/feasibleone/blong/commit/60689af66dc246ef8f88fef8edbd2b8a16a6c4d9))
|
|
21
|
+
|
|
3
22
|
## [1.10.0](https://github.com/feasibleone/blong/compare/blong-chain-v1.9.0...blong-chain-v1.10.0) (2026-09-24)
|
|
4
23
|
|
|
5
24
|
|
package/index.ts
CHANGED
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
import assert from 'node:assert';
|
|
14
14
|
import {EventEmitter} from 'node:events';
|
|
15
15
|
import PQueue from 'p-queue';
|
|
16
|
+
import {progressTree, reportProgress} from './progress.ts';
|
|
16
17
|
import type {
|
|
17
18
|
IDependencyEdge,
|
|
18
19
|
IDependencyGraph,
|
|
19
20
|
IMeta,
|
|
21
|
+
IProgressEntry,
|
|
20
22
|
IPromiseEntry,
|
|
21
23
|
ISourceLocation,
|
|
22
24
|
IStepError,
|
|
@@ -651,6 +653,43 @@ export class TestExecutor extends EventEmitter {
|
|
|
651
653
|
await Promise.all(stepPromises);
|
|
652
654
|
}
|
|
653
655
|
|
|
656
|
+
/**
|
|
657
|
+
* The invocation's progress list as it stands, for a read at a step boundary (PRD R26/R27).
|
|
658
|
+
*
|
|
659
|
+
* The `$meta` object is the one every step of this run shares — the same object the steps
|
|
660
|
+
* destructure, and the one the handlers they call are handed.
|
|
661
|
+
*/
|
|
662
|
+
private _progressList(): IProgressEntry[] | undefined {
|
|
663
|
+
const progress = (this.realContext.$meta as IMeta | undefined)?.progress;
|
|
664
|
+
return Array.isArray(progress) ? progress : undefined;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* What was announced since `seen`, or `undefined` when nothing was (PRD R26/R27).
|
|
669
|
+
*
|
|
670
|
+
* Two shapes, and both are ordinary. A list that still holds what it held is *appended* to,
|
|
671
|
+
* and the difference between the two boundary reads is the step's own progress. A list that
|
|
672
|
+
* no longer begins with those entries was **replaced**: a step that resets it to scope its
|
|
673
|
+
* own assertions (`$meta.progress = []`, which is how a scenario keeps one step's
|
|
674
|
+
* checkpoints out of the next one's) then owns everything in the new list, including when it
|
|
675
|
+
* happens to end up as long as it started.
|
|
676
|
+
*
|
|
677
|
+
* Best-effort attribution, and deliberately so: steps that run in parallel share the one
|
|
678
|
+
* list, so a point announced while two of them were running is reported by whichever
|
|
679
|
+
* boundary read it. It is never lost, and a scenario whose steps are ordered by their
|
|
680
|
+
* dependencies — which is what a test that asserts on progress is — has one at a time.
|
|
681
|
+
*/
|
|
682
|
+
private _announcedSince(seen: IProgressEntry[] | undefined): IProgressEntry[] | undefined {
|
|
683
|
+
const progress = this._progressList();
|
|
684
|
+
if (progress === undefined || progress.length === 0) {
|
|
685
|
+
return undefined;
|
|
686
|
+
}
|
|
687
|
+
if (!keeps(progress, seen)) {
|
|
688
|
+
return progress;
|
|
689
|
+
}
|
|
690
|
+
return progress.length > seen.length ? progress.slice(seen.length) : undefined;
|
|
691
|
+
}
|
|
692
|
+
|
|
654
693
|
/**
|
|
655
694
|
* Executes a single step function
|
|
656
695
|
*/
|
|
@@ -701,8 +740,6 @@ export class TestExecutor extends EventEmitter {
|
|
|
701
740
|
// Wrap execution function for potential test context wrapping
|
|
702
741
|
// When a TAP sub-test context is supplied, assert is augmented with:
|
|
703
742
|
// assert.snapshot(value, 'name', opts?) — explicit snapshot
|
|
704
|
-
// assert.snapshot({mask?: []}) — deferred: snapshot the
|
|
705
|
-
// step's return value
|
|
706
743
|
// assert.snapshot() — deferred, no extra mask
|
|
707
744
|
// Deferred snapshots are taken after fn() returns, under the step name.
|
|
708
745
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
@@ -760,6 +797,7 @@ export class TestExecutor extends EventEmitter {
|
|
|
760
797
|
this.graph.nodes.get(stepName)!.status = 'running';
|
|
761
798
|
this.graph.nodes.get(stepName)!.startTime = latency.startedAt;
|
|
762
799
|
|
|
800
|
+
const progressBefore = this._progressList();
|
|
763
801
|
this.emit('step:start', stepName, stepProgress);
|
|
764
802
|
|
|
765
803
|
try {
|
|
@@ -821,6 +859,11 @@ export class TestExecutor extends EventEmitter {
|
|
|
821
859
|
// Store result in real context
|
|
822
860
|
this.realContext[stepName] = result;
|
|
823
861
|
|
|
862
|
+
// What this step announced, read at the boundary before the event so a
|
|
863
|
+
// listener that writes the step's result file sees it (see `step:end`).
|
|
864
|
+
const announced = this._announcedSince(progressBefore);
|
|
865
|
+
if (announced !== undefined) stepProgress.progress = announced;
|
|
866
|
+
|
|
824
867
|
// Resolve all promises for this step
|
|
825
868
|
this.promiseManager.resolveStep(stepName, result);
|
|
826
869
|
|
|
@@ -845,6 +888,24 @@ export class TestExecutor extends EventEmitter {
|
|
|
845
888
|
|
|
846
889
|
this.progress.completedSteps++;
|
|
847
890
|
this.emit('step:end', stepName, stepProgress);
|
|
891
|
+
|
|
892
|
+
// A point becomes a sub-test of the step that announced it, and a branch the
|
|
893
|
+
// sub-test holding the points taken inside it — a checkpoint as a *step* in
|
|
894
|
+
// the report, which is what "checkpoints drive test reporting" claims
|
|
895
|
+
// (PRD R26/R27). Rendered from the same entries `blong-allure` maps into
|
|
896
|
+
// Allure steps, so the two reports cannot describe different shapes.
|
|
897
|
+
//
|
|
898
|
+
// The context is checked the way the snapshot handling checks it, because
|
|
899
|
+
// the queue hands the task its own options where there is no test context:
|
|
900
|
+
// only a context that can nest a test gets progress nested in it.
|
|
901
|
+
if (
|
|
902
|
+
typeof stepTestContext?.test === 'function' &&
|
|
903
|
+
stepProgress.progress !== undefined
|
|
904
|
+
) {
|
|
905
|
+
for (const node of progressTree(stepProgress.progress)) {
|
|
906
|
+
await reportProgress(stepTestContext, node);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
848
909
|
} catch (error) {
|
|
849
910
|
// Handle error
|
|
850
911
|
latency.completedAt = Date.now();
|
|
@@ -869,6 +930,12 @@ export class TestExecutor extends EventEmitter {
|
|
|
869
930
|
this.graph.nodes.get(stepName)!.endTime = latency.completedAt;
|
|
870
931
|
this.graph.nodes.get(stepName)!.error = error as Error;
|
|
871
932
|
|
|
933
|
+
// Kept even though the step failed, and especially then: what a failing step
|
|
934
|
+
// announced is the evidence a reader wants, and Allure renders it from here.
|
|
935
|
+
// The tap side leaves it out — sub-tests are not added to a step that threw.
|
|
936
|
+
const announcedOnFailure = this._announcedSince(progressBefore);
|
|
937
|
+
if (announcedOnFailure !== undefined) stepProgress.progress = announcedOnFailure;
|
|
938
|
+
|
|
872
939
|
this.progress.failedSteps++;
|
|
873
940
|
this.emit('step:error', stepName, error as Error, stepProgress);
|
|
874
941
|
this.log?.error?.({err: error}, `step ${stepName} failed`);
|
|
@@ -1117,3 +1184,21 @@ export class TestExecutor extends EventEmitter {
|
|
|
1117
1184
|
|
|
1118
1185
|
// Export all types
|
|
1119
1186
|
export type * from './test-types.js';
|
|
1187
|
+
export {progressTree, reportProgress} from './progress.ts';
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* Whether a progress list still holds what it held, entry for entry and by identity.
|
|
1191
|
+
*
|
|
1192
|
+
* Identity rather than equality, because the entries are objects the recorder pushed: a list
|
|
1193
|
+
* that kept them is one that was spread back with additions, and a list whose first entry is a
|
|
1194
|
+
* different object is one that was reset and announced afresh — which is the difference between
|
|
1195
|
+
* a step *adding* to the invocation's progress and *replacing* it.
|
|
1196
|
+
*/
|
|
1197
|
+
const keeps = (
|
|
1198
|
+
progress: IProgressEntry[],
|
|
1199
|
+
seen: IProgressEntry[] | undefined,
|
|
1200
|
+
): seen is IProgressEntry[] =>
|
|
1201
|
+
progress === seen ||
|
|
1202
|
+
(seen !== undefined &&
|
|
1203
|
+
progress.length >= seen.length &&
|
|
1204
|
+
seen.every((entry, at) => progress[at] === entry));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feasibleone/blong-chain",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.1",
|
|
4
4
|
"description": "Parallel testing with automatic dependencies",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blong",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@types/node": "^24",
|
|
25
25
|
"tap": "^21.6.3",
|
|
26
26
|
"typescript": "^6.0.3",
|
|
27
|
-
"@feasibleone/blong-dev": "1.
|
|
27
|
+
"@feasibleone/blong-dev": "1.7.1"
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "heft build --clean",
|
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
"ci-publish": "node ../../common/scripts/install-run-rush-pnpm.js publish --access public --provenance",
|
|
35
35
|
"ci-test": "blong-dev test '*.test.ts';./test-examples-ci.sh",
|
|
36
36
|
"test": "blong-dev test '*.test.ts';./test-examples-ci.sh",
|
|
37
|
-
"test:examples": "node --test
|
|
37
|
+
"test:examples": "node --test examples/*.test.ts"
|
|
38
38
|
}
|
|
39
39
|
}
|
package/test-types.ts
CHANGED
|
@@ -78,6 +78,15 @@ export type StepArray = (StepFunction | StepArray | SnapshotMarker)[] & {name?:
|
|
|
78
78
|
export interface IMeta {
|
|
79
79
|
/** Optional concurrency limit for parallel step execution */
|
|
80
80
|
concurrency?: number;
|
|
81
|
+
/**
|
|
82
|
+
* What the invocation has announced so far, in the order it announced it (PRD R26/R27).
|
|
83
|
+
*
|
|
84
|
+
* The same array a framework dispatch keeps on its own `$meta`: the handlers a step calls
|
|
85
|
+
* are handed this object, so whatever they announce while it runs appears here — which is
|
|
86
|
+
* the only place the executor can read a step's progress from, and why it reads it at the
|
|
87
|
+
* step's boundaries.
|
|
88
|
+
*/
|
|
89
|
+
progress?: IProgressEntry[];
|
|
81
90
|
/** Additional metadata properties */
|
|
82
91
|
[key: string]: unknown;
|
|
83
92
|
}
|
|
@@ -89,6 +98,14 @@ export interface IMeta {
|
|
|
89
98
|
export interface ITestFrameworkContext {
|
|
90
99
|
/** Creates a nested test scope for proper indentation */
|
|
91
100
|
test: (name: string, fn: (t: unknown) => void | Promise<void>) => unknown;
|
|
101
|
+
/**
|
|
102
|
+
* Writes a comment into the run's output (`# …` in TAP).
|
|
103
|
+
*
|
|
104
|
+
* What a point is reported as: a moment a step passed through is not a test,
|
|
105
|
+
* so it does not deserve a sub-test of its own — but it is what a reader
|
|
106
|
+
* wants to see beside the step, which is what a comment is.
|
|
107
|
+
*/
|
|
108
|
+
comment?: (text: string) => void;
|
|
92
109
|
/** Captures a snapshot of a value under the given name */
|
|
93
110
|
matchSnapshot?: (value: unknown, name: string) => void;
|
|
94
111
|
}
|
|
@@ -201,6 +218,71 @@ export interface IDependencyEdge {
|
|
|
201
218
|
// Progress Tracking Types
|
|
202
219
|
// ============================================================================
|
|
203
220
|
|
|
221
|
+
/**
|
|
222
|
+
* A branch as a progress entry names it (PRD R11/R26).
|
|
223
|
+
*
|
|
224
|
+
* Declared structurally here, matching the framework's own declaration in
|
|
225
|
+
* `core/blong/types.ts` the way {@link IMeta} does, because this package stands at the bottom
|
|
226
|
+
* of the dependency graph with `p-queue` as its only dependency. The names are what a report
|
|
227
|
+
* groups by; the position a log mints for itself is deliberately not here.
|
|
228
|
+
*/
|
|
229
|
+
export interface IRegionMark {
|
|
230
|
+
/** What the branch was about, stable across runs. */
|
|
231
|
+
discriminator: string;
|
|
232
|
+
/** Every candidate considered, in evaluation order. */
|
|
233
|
+
candidates: string[];
|
|
234
|
+
/** The branch taken, or `none` when none of them matched. */
|
|
235
|
+
chosen: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** A milestone an invocation announced (PRD R26). */
|
|
239
|
+
export interface IProgressPoint {
|
|
240
|
+
/** Which of the two shapes this entry is; one array holds both. */
|
|
241
|
+
kind: 'point';
|
|
242
|
+
/** Stable name of the moment, e.g. `total-calculated`. */
|
|
243
|
+
name: string;
|
|
244
|
+
/** What was true there; kept locally, exactly as a record keeps it. */
|
|
245
|
+
data?: unknown;
|
|
246
|
+
/** When it was announced, in epoch milliseconds. */
|
|
247
|
+
timestamp: number;
|
|
248
|
+
/** The branches it was announced *inside*, outermost first. */
|
|
249
|
+
regions?: IRegionMark[];
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** A branch the invocation took, in the same array as the points (PRD R11/R26). */
|
|
253
|
+
export interface IProgressRegion extends IRegionMark {
|
|
254
|
+
/** Which of the two shapes this entry is; one array holds both. */
|
|
255
|
+
kind: 'region';
|
|
256
|
+
/** The values the decision was made from. */
|
|
257
|
+
values: Record<string, unknown>;
|
|
258
|
+
/** The branches this one was itself taken inside, outermost first. */
|
|
259
|
+
regions?: IRegionMark[];
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/** One entry of an invocation's `progress` list. */
|
|
263
|
+
export type IProgressEntry = IProgressPoint | IProgressRegion;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* One node of the progress tree a report is drawn from (PRD R26/R27).
|
|
267
|
+
*
|
|
268
|
+
* `name` is the display name rather than the raw entry, so both renderers label a branch the
|
|
269
|
+
* same way: `<discriminator> = <chosen>` for a region, the point's own name for a point.
|
|
270
|
+
*/
|
|
271
|
+
export interface IProgressNode {
|
|
272
|
+
/** What a report calls it: the point's name, or `<discriminator> = <chosen>`. */
|
|
273
|
+
name: string;
|
|
274
|
+
/** Which of the two shapes it is. */
|
|
275
|
+
kind: 'point' | 'region';
|
|
276
|
+
/**
|
|
277
|
+
* What the point announced, printed beside it when it is small enough to read.
|
|
278
|
+
*
|
|
279
|
+
* A branch carries none: what it has to say is its name.
|
|
280
|
+
*/
|
|
281
|
+
data?: Record<string, unknown>;
|
|
282
|
+
/** The points and branches announced inside it, in the order they were announced. */
|
|
283
|
+
children: IProgressNode[];
|
|
284
|
+
}
|
|
285
|
+
|
|
204
286
|
/**
|
|
205
287
|
* Overall test execution progress
|
|
206
288
|
*/
|
|
@@ -259,6 +341,17 @@ export interface IStepProgress {
|
|
|
259
341
|
result?: unknown;
|
|
260
342
|
/** Error information if step failed */
|
|
261
343
|
error?: IStepError;
|
|
344
|
+
/**
|
|
345
|
+
* What this step announced while it ran (PRD R26/R27), or absent when it announced
|
|
346
|
+
* nothing.
|
|
347
|
+
*
|
|
348
|
+
* Read from the invocation's own list at the step's boundaries rather than reported by the
|
|
349
|
+
* step: the handlers it called announced into the `$meta` every step shares, so the window
|
|
350
|
+
* is the only thing that attributes a point to the step that made it. A report draws these
|
|
351
|
+
* as the step's nested steps — a point as a step, a branch as the group of the points
|
|
352
|
+
* taken inside it.
|
|
353
|
+
*/
|
|
354
|
+
progress?: IProgressEntry[];
|
|
262
355
|
}
|
|
263
356
|
|
|
264
357
|
/**
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo.test.d.ts","sourceRoot":"","sources":["../../examples/demo.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"demo.test.js","sourceRoot":"","sources":["../../examples/demo.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Demonstration of error reporting in nested test contexts
|
|
3
|
-
*
|
|
4
|
-
* This file shows how errors are properly reported with indentation and tracking.
|
|
5
|
-
* Run with: node --test error-demo.test.js
|
|
6
|
-
*
|
|
7
|
-
* You'll see that:
|
|
8
|
-
* 1. Errors appear in the nested test output with proper indentation
|
|
9
|
-
* 2. Error details (message, stack trace) are captured
|
|
10
|
-
* 3. Progress tracking records all error information
|
|
11
|
-
* 4. Other independent steps continue executing
|
|
12
|
-
*/
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=error-demo.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-demo.test.d.ts","sourceRoot":"","sources":["../../examples/error-demo.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-demo.test.js","sourceRoot":"","sources":["../../examples/error-demo.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parallel Test Executor
|
|
3
|
-
*
|
|
4
|
-
* Implements the new parallel test execution framework with:
|
|
5
|
-
* - Thenable proxies for automatic dependency detection
|
|
6
|
-
* - Parallel execution with configurable concurrency
|
|
7
|
-
* - Dependency graph tracking
|
|
8
|
-
* - Live progress tracking
|
|
9
|
-
* - Enhanced error reporting
|
|
10
|
-
* - Latency metrics
|
|
11
|
-
*/
|
|
12
|
-
import { EventEmitter } from 'node:events';
|
|
13
|
-
import type { IDependencyGraph, IMeta, ITestEvents, ITestExecutorConfig, ITestFrameworkContext, ITestLatency, ITestProgress, StepArray } from './test-types.js';
|
|
14
|
-
/**
|
|
15
|
-
* Main test executor class
|
|
16
|
-
*/
|
|
17
|
-
export declare class TestExecutor extends EventEmitter {
|
|
18
|
-
private config;
|
|
19
|
-
private queue;
|
|
20
|
-
private dependencyTracker;
|
|
21
|
-
private log?;
|
|
22
|
-
private progress;
|
|
23
|
-
private graph;
|
|
24
|
-
private latencyMetrics;
|
|
25
|
-
private realContext;
|
|
26
|
-
private promiseManager;
|
|
27
|
-
private testContext?;
|
|
28
|
-
private stepNamesUsed;
|
|
29
|
-
constructor(config?: ITestExecutorConfig);
|
|
30
|
-
/**
|
|
31
|
-
* Executes an array of test steps
|
|
32
|
-
*/
|
|
33
|
-
execute(steps: StepArray, $meta: IMeta, testContext?: ITestFrameworkContext): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Recursively executes steps, handling both functions and nested arrays
|
|
36
|
-
*/
|
|
37
|
-
private _executeSteps;
|
|
38
|
-
/**
|
|
39
|
-
* Executes a single step function
|
|
40
|
-
*/
|
|
41
|
-
private _executeStep;
|
|
42
|
-
/**
|
|
43
|
-
* Counts total number of steps (including nested)
|
|
44
|
-
*/
|
|
45
|
-
private _countSteps;
|
|
46
|
-
/**
|
|
47
|
-
* Collects all step names (including nested)
|
|
48
|
-
*/
|
|
49
|
-
private _collectStepNames;
|
|
50
|
-
/**
|
|
51
|
-
* Checks for duplicate step names and throws an error if found
|
|
52
|
-
*/
|
|
53
|
-
private _checkForDuplicateStepName;
|
|
54
|
-
/**
|
|
55
|
-
* Applies the chain-level `mask` (and optional per-call `extraPaths`) to
|
|
56
|
-
* `value`. Returns the original reference unchanged when no masking is
|
|
57
|
-
* configured. Falls back to the deprecated `maskFn` when supplied.
|
|
58
|
-
*/
|
|
59
|
-
private _applyMask;
|
|
60
|
-
/**
|
|
61
|
-
* Gets the current progress snapshot
|
|
62
|
-
*/
|
|
63
|
-
getProgress(): ITestProgress;
|
|
64
|
-
/**
|
|
65
|
-
* Gets the dependency graph
|
|
66
|
-
*/
|
|
67
|
-
getDependencyGraph(): IDependencyGraph;
|
|
68
|
-
/**
|
|
69
|
-
* Gets latency metrics
|
|
70
|
-
*/
|
|
71
|
-
getLatencyReport(): ITestLatency;
|
|
72
|
-
/**
|
|
73
|
-
* Calculates the critical path (longest dependency chain)
|
|
74
|
-
*/
|
|
75
|
-
private _calculateCriticalPath;
|
|
76
|
-
/**
|
|
77
|
-
* Identifies bottleneck steps that blocked many other steps
|
|
78
|
-
*/
|
|
79
|
-
private _identifyBottlenecks;
|
|
80
|
-
/**
|
|
81
|
-
* Type-safe event emitter
|
|
82
|
-
*/
|
|
83
|
-
on<E extends keyof ITestEvents>(event: E, handler: ITestEvents[E]): this;
|
|
84
|
-
emit<E extends keyof ITestEvents>(event: E, ...args: Parameters<ITestEvents[E]>): boolean;
|
|
85
|
-
}
|
|
86
|
-
export type * from './test-types.js';
|
|
87
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAER,gBAAgB,EAChB,KAAK,EAOL,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EAEZ,aAAa,EAEb,SAAS,EAEZ,MAAM,iBAAiB,CAAC;AAsXzB;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,GAAG,CAAC,CAAc;IAG1B,OAAO,CAAC,QAAQ,CASd;IAGF,OAAO,CAAC,KAAK,CAGX;IAGF,OAAO,CAAC,cAAc,CAAmC;IAGzD,OAAO,CAAC,WAAW,CAA+B;IAGlD,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,WAAW,CAAC,CAAwB;IAG5C,OAAO,CAAC,aAAa,CAAqB;gBAE9B,MAAM,GAAE,mBAAwB;IAqB5C;;OAEG;IACG,OAAO,CACT,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,KAAK,EACZ,WAAW,CAAC,EAAE,qBAAqB,GACpC,OAAO,CAAC,IAAI,CAAC;IAwDhB;;OAEG;YACW,aAAa;IAoH3B;;OAEG;YACW,YAAY;IAmQ1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,WAAW,IAAI,aAAa;IAI5B;;OAEG;IACH,kBAAkB,IAAI,gBAAgB;IAItC;;OAEG;IACH,gBAAgB,IAAI,YAAY;IA4BhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4B5B;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxE,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;CAG5F;AAGD,mBAAmB,iBAAiB,CAAC"}
|