@overkill-dev/engine 0.0.40 → 0.0.42

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 (59) hide show
  1. package/clock/overkill-clock.d.ts +30 -0
  2. package/clock/overkill-clock.d.ts.map +1 -0
  3. package/clock/overkill-clock.js +53 -0
  4. package/clock/overkill-clock.js.map +1 -0
  5. package/engine/async-leak-diagnostics.d.ts.map +1 -1
  6. package/engine/async-leak-diagnostics.js +10 -0
  7. package/engine/async-leak-diagnostics.js.map +1 -1
  8. package/engine/case-execution.d.ts +3 -3
  9. package/engine/case-execution.d.ts.map +1 -1
  10. package/engine/case-execution.js +22 -10
  11. package/engine/case-execution.js.map +1 -1
  12. package/engine/engine.d.ts +2 -2
  13. package/engine/engine.d.ts.map +1 -1
  14. package/engine/execution-async-leak-policy.d.ts.map +1 -1
  15. package/engine/execution-async-leak-policy.js +3 -2
  16. package/engine/execution-async-leak-policy.js.map +1 -1
  17. package/engine/execution-global-error-observer.d.ts +20 -0
  18. package/engine/execution-global-error-observer.d.ts.map +1 -0
  19. package/engine/execution-global-error-observer.js +342 -0
  20. package/engine/execution-global-error-observer.js.map +1 -0
  21. package/engine/execution-result.js +5 -1
  22. package/engine/execution-result.js.map +1 -1
  23. package/engine/execution-supervision.d.ts +7 -5
  24. package/engine/execution-supervision.d.ts.map +1 -1
  25. package/engine/execution-supervision.js +47 -29
  26. package/engine/execution-supervision.js.map +1 -1
  27. package/engine/execution-test-plan-cases.js +72 -14
  28. package/engine/execution-test-plan-cases.js.map +1 -1
  29. package/engine/execution.d.ts +2 -2
  30. package/engine/execution.d.ts.map +1 -1
  31. package/engine/execution.js +38 -20
  32. package/engine/execution.js.map +1 -1
  33. package/engine/reporter-dispatcher.d.ts +2 -2
  34. package/engine/reporter-dispatcher.d.ts.map +1 -1
  35. package/engine/reporter-dispatcher.js +1 -0
  36. package/engine/reporter-dispatcher.js.map +1 -1
  37. package/engine/reporter.d.ts +1 -1
  38. package/engine/reporter.d.ts.map +1 -1
  39. package/engine/resource-usage-growth.js +4 -4
  40. package/engine/resource-usage-growth.js.map +1 -1
  41. package/engine/run-result.d.ts +88 -7
  42. package/engine/run-result.d.ts.map +1 -1
  43. package/engine/run-result.js +114 -0
  44. package/engine/run-result.js.map +1 -1
  45. package/engine/run-timings.d.ts +68 -0
  46. package/engine/run-timings.d.ts.map +1 -0
  47. package/engine/run-timings.js +116 -0
  48. package/engine/run-timings.js.map +1 -0
  49. package/engine/test-data.d.ts +4 -0
  50. package/engine/test-data.d.ts.map +1 -1
  51. package/engine/test-data.js +14 -1
  52. package/engine/test-data.js.map +1 -1
  53. package/package.json +3 -2
  54. package/packages/engine/engine.entry-point.d.ts +5 -3
  55. package/packages/engine/engine.entry-point.d.ts.map +1 -1
  56. package/packages/engine/engine.entry-point.js +3 -3
  57. package/packages/engine/engine.entry-point.js.map +1 -1
  58. package/readme.md +3 -1
  59. package/sbom.cdx.json +4 -21
@@ -1,6 +1,7 @@
1
1
  import type { InvalidDeepAssertionOperand } from '../assertion-protocol/evaluation.ts';
2
2
  import type { FailedCheck, NonEmptyReadonlyArray, ResolvableSourceLocation } from '../assertion-protocol/assertion-node-shape.ts';
3
3
  import type { CaseId, WorkId } from './identity.ts';
4
+ import type { RunTimings } from './run-timings.ts';
4
5
  type RunnerErrorSubtypeByName = {
5
6
  readonly attributionDrift: 'attribution-drift';
6
7
  readonly crash: 'crash';
@@ -11,6 +12,7 @@ type RunnerErrorSubtypeByName = {
11
12
  readonly resourceExhaustion: 'resource-exhaustion';
12
13
  readonly runtimeState: 'runtime-state';
13
14
  readonly runtimePolicy: 'runtime-policy';
15
+ readonly uncaughtException: 'uncaught-exception';
14
16
  readonly unhandledRejection: 'unhandled-rejection';
15
17
  };
16
18
  type RunnerErrorSubtype = RunnerErrorSubtypeByName[keyof RunnerErrorSubtypeByName];
@@ -68,10 +70,16 @@ type CleanupErrorTestFailure = {
68
70
  };
69
71
  readonly kind: 'cleanup-error';
70
72
  };
73
+ export type HedgedDuplicateConflictFailure = {
74
+ readonly artifact: RunArtifactId;
75
+ readonly kind: 'hedged-duplicate-conflict';
76
+ readonly summary: string;
77
+ };
71
78
  type TestFailureTypes = readonly [
72
79
  AssertionTestFailure,
73
80
  BodyErrorTestFailure,
74
81
  CleanupErrorTestFailure,
82
+ HedgedDuplicateConflictFailure,
75
83
  TestContractFailure,
76
84
  TimeoutTestFailure
77
85
  ];
@@ -98,9 +106,65 @@ export type RunnerError = {
98
106
  readonly attributedTo: CaseId | null;
99
107
  readonly attributedToWork?: WorkId | null;
100
108
  readonly cause: unknown;
109
+ readonly diagnostics: readonly RunnerErrorDiagnostic[];
101
110
  readonly message: string;
102
111
  readonly subtype: RunnerErrorSubtype;
103
112
  };
113
+ type RunnerErrorDiagnostic = {
114
+ readonly label: string;
115
+ readonly value: string;
116
+ };
117
+ type PermissionDeniedRunnerErrorBoundaryByName = {
118
+ readonly inProcess: 'in-process';
119
+ readonly none: null;
120
+ readonly supervisedChild: 'supervised-child';
121
+ readonly workerPoolHost: 'worker-pool-host';
122
+ readonly workerPoolWorker: 'worker-pool-worker';
123
+ };
124
+ type PermissionDeniedRunnerErrorBoundary = PermissionDeniedRunnerErrorBoundaryByName[keyof PermissionDeniedRunnerErrorBoundaryByName];
125
+ export type PermissionDeniedRunnerErrorPhase = 'body' | 'collection' | 'load' | 'out-of-test' | 'run' | null;
126
+ type PermissionDeniedRunnerErrorHook = 'uncaughtException' | 'unhandledRejection' | null;
127
+ type PermissionDeniedRunnerErrorSource = 'diagnostic-channel' | 'throw';
128
+ type SerializedPermissionDeniedError = {
129
+ readonly code: string | null;
130
+ readonly message: string;
131
+ readonly name: string;
132
+ readonly permission: string | null;
133
+ readonly resource: string | null;
134
+ readonly stack: string | null;
135
+ };
136
+ export type PermissionDeniedRunnerErrorCause = {
137
+ readonly boundary: PermissionDeniedRunnerErrorBoundary;
138
+ readonly capability: string | null;
139
+ readonly diagnosticChannel: string | null;
140
+ readonly error: SerializedPermissionDeniedError | null;
141
+ readonly hook: PermissionDeniedRunnerErrorHook;
142
+ readonly kind: 'node-permission-denial';
143
+ readonly permission: string | null;
144
+ readonly phase: PermissionDeniedRunnerErrorPhase;
145
+ readonly resource: string | null;
146
+ readonly source: PermissionDeniedRunnerErrorSource;
147
+ };
148
+ export type PermissionDeniedRunnerError = RunnerError & {
149
+ readonly cause: PermissionDeniedRunnerErrorCause;
150
+ readonly subtype: 'permission';
151
+ };
152
+ export type PermissionDeniedRunnerErrorContext = {
153
+ readonly attributedTo: CaseId | null;
154
+ readonly attributedToWork: WorkId | null;
155
+ readonly boundary: PermissionDeniedRunnerErrorBoundary;
156
+ readonly diagnosticChannel: string | null;
157
+ readonly hook: PermissionDeniedRunnerErrorHook;
158
+ readonly phase: PermissionDeniedRunnerErrorPhase;
159
+ };
160
+ export type PermissionDeniedDiagnostic = {
161
+ readonly channel: string;
162
+ readonly fallbackCapability: string | null;
163
+ readonly message: unknown;
164
+ };
165
+ export declare function permissionDeniedRunnerErrorFromThrown(error: unknown, context: PermissionDeniedRunnerErrorContext): PermissionDeniedRunnerError | null;
166
+ export declare function permissionDeniedRunnerErrorFromDiagnostic(diagnostic: PermissionDeniedDiagnostic, context: PermissionDeniedRunnerErrorContext): PermissionDeniedRunnerError;
167
+ export declare function isPermissionDeniedRunnerError(error: RunnerError): error is PermissionDeniedRunnerError;
104
168
  export type CaseRunnerErrorOptions = {
105
169
  readonly cause: unknown;
106
170
  readonly subtype: RunnerErrorSubtype;
@@ -129,11 +193,12 @@ export type RunPlanStatus = 'empty-selection' | 'empty-shard' | 'planned';
129
193
  export declare function runStatusFromSummary(summary: RunSummary, runnerErrors: readonly RunnerError[]): RunStatus;
130
194
  export declare function runStatusFromPlan(summary: RunSummary, runnerErrors: readonly RunnerError[], planStatus: RunPlanStatus): RunStatus;
131
195
  export type PerTestResult = {
196
+ readonly definitionLocations: NonEmptyReadonlyArray<ResolvableSourceLocation>;
132
197
  readonly id: CaseId;
133
198
  readonly outcome: TestOutcome | null;
134
199
  readonly verdict: TestVerdict;
135
200
  readonly workId: WorkId;
136
- readonly wallTimeMs: number;
201
+ readonly durationMicroseconds: number;
137
202
  };
138
203
  export type RunArtifactScope = {
139
204
  readonly activeCases: readonly CaseId[];
@@ -146,21 +211,37 @@ export type RunArtifactScope = {
146
211
  export type RunArtifactId = {
147
212
  readonly scope: RunArtifactScope;
148
213
  readonly sequence: number;
149
- readonly subtype: 'log-capture';
214
+ readonly subtype: 'hedged-conflict' | 'log-capture';
150
215
  };
151
216
  export type CapturedOutputArtifactPayload = {
152
217
  readonly byteLength: number;
153
- readonly capturedAtMilliseconds: number;
218
+ readonly capturedAtMicroseconds: number;
154
219
  readonly kind: 'captured-output';
155
220
  readonly stream: 'stderr' | 'stdout';
156
221
  readonly text: string;
157
222
  readonly truncated: boolean;
158
223
  };
159
- export type RunArtifact = {
224
+ export type HedgedConflictEvidence = {
225
+ readonly outcome: TestOutcome | null;
226
+ readonly verdict: TestVerdict;
227
+ };
228
+ export type HedgedConflictArtifactPayload = {
229
+ readonly authoritative: HedgedConflictEvidence;
230
+ readonly conflicting: HedgedConflictEvidence;
231
+ readonly kind: 'hedged-conflict';
232
+ readonly work: WorkId;
233
+ };
234
+ export type CapturedOutputArtifact = {
160
235
  readonly id: RunArtifactId;
161
236
  readonly payload: CapturedOutputArtifactPayload;
162
- readonly source: 'boundary-captured';
237
+ readonly source: 'boundary-captured' | 'native';
238
+ };
239
+ export type HedgedConflictArtifact = {
240
+ readonly id: RunArtifactId;
241
+ readonly payload: HedgedConflictArtifactPayload;
242
+ readonly source: 'native';
163
243
  };
244
+ export type RunArtifact = CapturedOutputArtifact | HedgedConflictArtifact;
164
245
  export type SuiteRunCounts = {
165
246
  readonly discovered: number;
166
247
  readonly executed: number;
@@ -169,7 +250,7 @@ export type SuiteRunCounts = {
169
250
  export type ResourceUsageSnapshot = {
170
251
  readonly activeResourceCount: number;
171
252
  readonly activeResourceTypes: readonly string[];
172
- readonly capturedAtMilliseconds: number;
253
+ readonly capturedAtMicroseconds: number;
173
254
  readonly javaScriptEngineHeapBytes: number;
174
255
  readonly residentSetBytes: number;
175
256
  };
@@ -203,7 +284,7 @@ export type RunResult = {
203
284
  readonly runnerErrors: readonly RunnerError[];
204
285
  readonly status: RunStatus;
205
286
  readonly summary: RunSummary;
206
- readonly wallTimeMs: number;
287
+ readonly timings: RunTimings;
207
288
  };
208
289
  export declare function verdictFromOutcome(outcome: TestOutcome): TestVerdict;
209
290
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../../../../source/engine/run-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../../../../source/engine/run-result.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,119 @@ export function invalidDeepAssertionOperandFailure(actual) {
7
7
  summary: 'Deep assertions require non-primitive operands.'
8
8
  };
9
9
  }
10
+ const permissionCapabilities = {
11
+ ChildProcess: 'child-process',
12
+ FileSystemRead: 'fs-read',
13
+ FileSystemWrite: 'fs-write',
14
+ Inspector: 'inspector',
15
+ Network: 'net',
16
+ OpenSSLStore: 'openssl-store',
17
+ WASI: 'wasi',
18
+ WorkerThreads: 'worker'
19
+ };
20
+ function readStringProperty(value, property) {
21
+ if (value === null || typeof value !== 'object') {
22
+ return null;
23
+ }
24
+ const propertyValue = Reflect.get(value, property);
25
+ return typeof propertyValue === 'string' ? propertyValue : null;
26
+ }
27
+ function accessDeniedErrorCode(error) {
28
+ return readStringProperty(error, 'code');
29
+ }
30
+ function permissionCapability(permission, fallback) {
31
+ if (permission === null) {
32
+ return fallback;
33
+ }
34
+ return permissionCapabilities[permission] ?? fallback;
35
+ }
36
+ function serializedDeniedError(error) {
37
+ if (error instanceof Error) {
38
+ return {
39
+ code: accessDeniedErrorCode(error),
40
+ message: error.message,
41
+ name: error.name,
42
+ permission: readStringProperty(error, 'permission'),
43
+ resource: readStringProperty(error, 'resource'),
44
+ stack: error.stack ?? null
45
+ };
46
+ }
47
+ return {
48
+ code: accessDeniedErrorCode(error),
49
+ message: String(error),
50
+ name: 'Error',
51
+ permission: readStringProperty(error, 'permission'),
52
+ resource: readStringProperty(error, 'resource'),
53
+ stack: null
54
+ };
55
+ }
56
+ function permissionDeniedMessage(permission, resource) {
57
+ const permissionLabel = permission ?? 'unknown permission';
58
+ return resource === null
59
+ ? `Permission denied: ${permissionLabel}.`
60
+ : `Permission denied: ${permissionLabel} for ${resource}.`;
61
+ }
62
+ function permissionDeniedCause(input) {
63
+ const permission = readStringProperty(input.error, 'permission') ??
64
+ readStringProperty(input.diagnosticMessage, 'permission');
65
+ const resource = readStringProperty(input.error, 'resource') ??
66
+ readStringProperty(input.diagnosticMessage, 'resource');
67
+ return {
68
+ boundary: input.context.boundary,
69
+ capability: permissionCapability(permission, input.capabilityFallback),
70
+ diagnosticChannel: input.context.diagnosticChannel,
71
+ error: input.error === null ? null : serializedDeniedError(input.error),
72
+ hook: input.context.hook,
73
+ kind: 'node-permission-denial',
74
+ permission,
75
+ phase: input.context.phase,
76
+ resource,
77
+ source: input.source
78
+ };
79
+ }
80
+ function permissionDeniedRunnerError(context, cause) {
81
+ return {
82
+ attributedTo: context.attributedTo,
83
+ attributedToWork: context.attributedToWork,
84
+ cause,
85
+ diagnostics: [],
86
+ message: permissionDeniedMessage(cause.permission, cause.resource),
87
+ subtype: 'permission'
88
+ };
89
+ }
90
+ function isAccessDeniedError(error) {
91
+ return accessDeniedErrorCode(error) === 'ERR_ACCESS_DENIED';
92
+ }
93
+ export function permissionDeniedRunnerErrorFromThrown(error, context) {
94
+ if (!isAccessDeniedError(error)) {
95
+ return null;
96
+ }
97
+ return permissionDeniedRunnerError(context, permissionDeniedCause({
98
+ capabilityFallback: null,
99
+ context,
100
+ diagnosticMessage: null,
101
+ error,
102
+ source: 'throw'
103
+ }));
104
+ }
105
+ export function permissionDeniedRunnerErrorFromDiagnostic(diagnostic, context) {
106
+ return permissionDeniedRunnerError(context, permissionDeniedCause({
107
+ capabilityFallback: diagnostic.fallbackCapability,
108
+ context: {
109
+ ...context,
110
+ diagnosticChannel: diagnostic.channel
111
+ },
112
+ diagnosticMessage: diagnostic.message,
113
+ error: null,
114
+ source: 'diagnostic-channel'
115
+ }));
116
+ }
117
+ export function isPermissionDeniedRunnerError(error) {
118
+ return error.subtype === 'permission' &&
119
+ typeof error.cause === 'object' &&
120
+ error.cause !== null &&
121
+ Reflect.get(error.cause, 'kind') === 'node-permission-denial';
122
+ }
10
123
  const caseRunnerErrorBrand = Symbol.for('@overkill-dev/engine/CaseRunnerError');
11
124
  export class CaseRunnerError extends Error {
12
125
  runnerErrorCause;
@@ -25,6 +138,7 @@ export class CaseRunnerError extends Error {
25
138
  attributedTo,
26
139
  attributedToWork,
27
140
  cause: this.runnerErrorCause,
141
+ diagnostics: [],
28
142
  message: this.message,
29
143
  subtype: this.runnerErrorSubtype
30
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"run-result.js","sourceRoot":"","sources":["../../../../source/engine/run-result.ts"],"names":[],"mappings":"AA+FA,MAAM,UAAU,kCAAkC,CAAC,MAAmC;IAClF,OAAO;QACH,MAAM;QACN,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,sCAAsC;QAChD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iDAAiD;KAC7D,CAAC;AACN,CAAC;AA+BD,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAOhF,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACrB,gBAAgB,CAAU;IAC1B,kBAAkB,CAAqB;IAExD,YAAmB,OAAe,EAAE,OAA+B;QAC/D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;QAE1C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,EAAE;YAC9C,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IAEM,WAAW,CAAC,YAAoB,EAAE,gBAAwB;QAC7D,OAAO;YACH,YAAY;YACZ,gBAAgB;YAChB,KAAK,EAAE,IAAI,CAAC,gBAAgB;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,kBAAkB;SACnC,CAAC;IACN,CAAC;CACJ;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,IAAI;QACpD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,UAAU,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,eAAe,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAkBD,SAAS,oBAAoB,CAAC,OAAmB,EAAE,YAAoC;IACnF,OAAO;QACH,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,OAAO,CAAC,OAAO,GAAG,CAAC;QACnB,OAAO,CAAC,MAAM,GAAG,CAAC;QAClB,OAAO,CAAC,OAAO,KAAK,CAAC;QACrB,OAAO,CAAC,iBAAiB,GAAG,CAAC;QAC7B,OAAO,CAAC,aAAa,GAAG,CAAC;KAC5B,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,OAAmB,EACnB,YAAoC;IAEpC,IAAI,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,OAAmB,EACnB,YAAoC,EACpC,UAAyB;IAEzB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QAC5D,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AA0FD,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACnD,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"run-result.js","sourceRoot":"","sources":["../../../../source/engine/run-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export declare const resourceScopes: readonly ["per-case", "per-file", "per-run", "per-suite", "shared-per-worker"];
2
+ export type ResourceScope = typeof resourceScopes[number];
3
+ export type AmbientNoiseEstimate = 'high' | 'low' | 'medium' | 'unknown';
4
+ export type TimingSpanStatus = 'cancelled' | 'failure' | 'success' | 'timeout';
5
+ export declare const runTimingSpanKinds: readonly ["cleanup", "collection.import", "collection.resolve", "command.parse", "config.load", "config.validate", "file.discovery", "filter.apply", "host.entry-startup", "order.apply", "placement.plan", "profile.resolve", "reporter.deliver", "reporter.finish", "reporter.resolve", "resolution.freeze", "resource.acquire", "resource.dispose", "resource.lower", "runtime.expand", "shard.apply", "supervised-process.exit", "supervised-process.ready", "supervised-process.spawn", "supervised-process.teardown", "test-data.propagate", "work-unit.construct", "worker-pool.ready", "worker-pool.shutdown", "worker-pool.start", "worker.assign-work", "worker.create", "worker.import-startup", "worker.ready", "worker.teardown"];
6
+ export type RunTimingSpanKind = typeof runTimingSpanKinds[number];
7
+ export type RunTimingSummary = {
8
+ readonly runnerOverheadWallTimeMicroseconds: number;
9
+ readonly testExecutionWallTimeMicroseconds: number;
10
+ readonly totalWallTimeMicroseconds: number;
11
+ };
12
+ export type RunTimingSpan = {
13
+ readonly durationMicroseconds: number;
14
+ readonly kind: RunTimingSpanKind;
15
+ readonly label: string | null;
16
+ readonly processId: string | null;
17
+ readonly resource: {
18
+ readonly name: string;
19
+ readonly scope: ResourceScope;
20
+ } | null;
21
+ readonly startOffsetMicroseconds: number | null;
22
+ readonly status: TimingSpanStatus;
23
+ readonly workerId: string | null;
24
+ };
25
+ export type RunTimingAggregate = {
26
+ readonly count: number;
27
+ readonly durationMicroseconds: number;
28
+ readonly kind: RunTimingSpanKind;
29
+ };
30
+ export type TimingCollectionOverhead = {
31
+ readonly aggregationMicroseconds: number;
32
+ readonly recordingMicroseconds: number;
33
+ readonly renderingMicroseconds: number;
34
+ readonly serializationMicroseconds: number;
35
+ };
36
+ export type RunPreciseTimingReport = {
37
+ readonly aggregates: readonly RunTimingAggregate[];
38
+ readonly ambientNoise: AmbientNoiseEstimate;
39
+ readonly droppedSpanCount: number;
40
+ readonly overhead: TimingCollectionOverhead;
41
+ readonly slowestSpans: readonly RunTimingSpan[];
42
+ readonly slowestSpanLimit: number;
43
+ readonly spanLimit: number;
44
+ readonly spans: readonly RunTimingSpan[];
45
+ readonly truncated: boolean;
46
+ };
47
+ export type RunTimings = {
48
+ readonly precise: RunPreciseTimingReport | null;
49
+ readonly summary: RunTimingSummary;
50
+ };
51
+ export type RunTimingSummaryInput = {
52
+ readonly testExecutionWallTimeMicroseconds: number;
53
+ readonly totalWallTimeMicroseconds: number;
54
+ };
55
+ export type PreciseTimingReportInput = {
56
+ readonly aggregationMicroseconds: number;
57
+ readonly recordingMicroseconds: number;
58
+ readonly slowestSpanLimit: number;
59
+ readonly spanLimit: number;
60
+ readonly spans: readonly RunTimingSpan[];
61
+ };
62
+ export declare const defaultRunTimingSpanLimit = 5000;
63
+ export declare const defaultRunTimingSlowestSpanLimit = 50;
64
+ export declare const zeroTimingCollectionOverhead: TimingCollectionOverhead;
65
+ export declare function runTimingSummary(input: RunTimingSummaryInput): RunTimingSummary;
66
+ export declare function summaryRunTimings(input: RunTimingSummaryInput): RunTimings;
67
+ export declare function preciseTimingReport(input: PreciseTimingReportInput): RunPreciseTimingReport;
68
+ //# sourceMappingURL=run-timings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-timings.d.ts","sourceRoot":"","sources":["../../../../source/engine/run-timings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ export const resourceScopes = [
2
+ 'per-case',
3
+ 'per-file',
4
+ 'per-run',
5
+ 'per-suite',
6
+ 'shared-per-worker'
7
+ ];
8
+ export const runTimingSpanKinds = [
9
+ 'cleanup',
10
+ 'collection.import',
11
+ 'collection.resolve',
12
+ 'command.parse',
13
+ 'config.load',
14
+ 'config.validate',
15
+ 'file.discovery',
16
+ 'filter.apply',
17
+ 'host.entry-startup',
18
+ 'order.apply',
19
+ 'placement.plan',
20
+ 'profile.resolve',
21
+ 'reporter.deliver',
22
+ 'reporter.finish',
23
+ 'reporter.resolve',
24
+ 'resolution.freeze',
25
+ 'resource.acquire',
26
+ 'resource.dispose',
27
+ 'resource.lower',
28
+ 'runtime.expand',
29
+ 'shard.apply',
30
+ 'supervised-process.exit',
31
+ 'supervised-process.ready',
32
+ 'supervised-process.spawn',
33
+ 'supervised-process.teardown',
34
+ 'test-data.propagate',
35
+ 'work-unit.construct',
36
+ 'worker-pool.ready',
37
+ 'worker-pool.shutdown',
38
+ 'worker-pool.start',
39
+ 'worker.assign-work',
40
+ 'worker.create',
41
+ 'worker.import-startup',
42
+ 'worker.ready',
43
+ 'worker.teardown'
44
+ ];
45
+ export const defaultRunTimingSpanLimit = 5000;
46
+ export const defaultRunTimingSlowestSpanLimit = 50;
47
+ export const zeroTimingCollectionOverhead = Object.freeze({
48
+ aggregationMicroseconds: 0,
49
+ recordingMicroseconds: 0,
50
+ renderingMicroseconds: 0,
51
+ serializationMicroseconds: 0
52
+ });
53
+ export function runTimingSummary(input) {
54
+ const totalWallTimeMicroseconds = Math.max(0, Math.trunc(input.totalWallTimeMicroseconds));
55
+ const testExecutionWallTimeMicroseconds = Math.max(0, Math.min(totalWallTimeMicroseconds, Math.trunc(input.testExecutionWallTimeMicroseconds)));
56
+ return {
57
+ runnerOverheadWallTimeMicroseconds: totalWallTimeMicroseconds - testExecutionWallTimeMicroseconds,
58
+ testExecutionWallTimeMicroseconds,
59
+ totalWallTimeMicroseconds
60
+ };
61
+ }
62
+ export function summaryRunTimings(input) {
63
+ return {
64
+ precise: null,
65
+ summary: runTimingSummary(input)
66
+ };
67
+ }
68
+ function aggregateKey(span) {
69
+ return span.kind;
70
+ }
71
+ function timingAggregates(spans) {
72
+ const aggregates = new Map();
73
+ for (const span of spans) {
74
+ const key = aggregateKey(span);
75
+ const aggregate = aggregates.get(key);
76
+ aggregates.set(key, {
77
+ count: (aggregate?.count ?? 0) + 1,
78
+ durationMicroseconds: (aggregate?.durationMicroseconds ?? 0) + span.durationMicroseconds,
79
+ kind: key
80
+ });
81
+ }
82
+ return Array.from(aggregates.values());
83
+ }
84
+ function slowestTimingSpans(spans, slowestSpanLimit) {
85
+ return spans
86
+ .toSorted(function byDurationThenStart(left, right) {
87
+ const durationDifference = right.durationMicroseconds - left.durationMicroseconds;
88
+ if (durationDifference !== 0) {
89
+ return durationDifference;
90
+ }
91
+ return (left.startOffsetMicroseconds ?? Number.MAX_SAFE_INTEGER) -
92
+ (right.startOffsetMicroseconds ?? Number.MAX_SAFE_INTEGER);
93
+ })
94
+ .slice(0, slowestSpanLimit);
95
+ }
96
+ export function preciseTimingReport(input) {
97
+ const { slowestSpanLimit, spanLimit } = input;
98
+ const retainedSpans = input.spans.slice(0, spanLimit);
99
+ return {
100
+ aggregates: timingAggregates(input.spans),
101
+ ambientNoise: 'unknown',
102
+ droppedSpanCount: Math.max(0, input.spans.length - retainedSpans.length),
103
+ overhead: {
104
+ aggregationMicroseconds: input.aggregationMicroseconds,
105
+ recordingMicroseconds: input.recordingMicroseconds,
106
+ renderingMicroseconds: 0,
107
+ serializationMicroseconds: 0
108
+ },
109
+ slowestSpans: slowestTimingSpans(input.spans, slowestSpanLimit),
110
+ slowestSpanLimit,
111
+ spanLimit,
112
+ spans: retainedSpans,
113
+ truncated: retainedSpans.length < input.spans.length
114
+ };
115
+ }
116
+ //# sourceMappingURL=run-timings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-timings.js","sourceRoot":"","sources":["../../../../source/engine/run-timings.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  declare const captureModeValues: readonly ["buffered", "live"];
2
+ declare const duplicateExecutionControlValues: readonly ["forbidden", "idempotent"];
2
3
  export type TestFamily = 'benchmark' | 'integration' | 'microtest' | 'property' | 'type-test';
3
4
  export type CaptureMode = typeof captureModeValues[number];
5
+ export type DuplicateExecutionControl = typeof duplicateExecutionControlValues[number];
4
6
  export type TestAnnotationsInput = {
5
7
  readonly ownership?: readonly string[];
6
8
  readonly tags?: readonly string[];
@@ -11,10 +13,12 @@ export type TestAnnotations = {
11
13
  };
12
14
  export type TestControlsInput = {
13
15
  readonly capture?: CaptureMode;
16
+ readonly duplicateExecution?: DuplicateExecutionControl;
14
17
  readonly timeoutMilliseconds?: number;
15
18
  };
16
19
  export type TestControls = {
17
20
  readonly capture: CaptureMode | null;
21
+ readonly duplicateExecution: DuplicateExecutionControl | null;
18
22
  readonly timeoutMilliseconds: number | null;
19
23
  };
20
24
  export declare function normalizeTestAnnotations(input: TestAnnotationsInput): TestAnnotations;
@@ -1 +1 @@
1
- {"version":3,"file":"test-data.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-data.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB,+BAAkC,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAC9F,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C,CAAC;AA8GF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAOrF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAO5E;AAED,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC5B,eAAe,CAOjB;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,oBAAoB,GAAG,eAAe,CAE7F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAOhG;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,YAAY,CAEjF"}
1
+ {"version":3,"file":"test-data.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-data.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB,+BAAkC,CAAC;AAC1D,QAAA,MAAM,+BAA+B,sCAAyC,CAAC;AAE/E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAC9F,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,yBAAyB,GAAG,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;AAEvF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IACxD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/C,CAAC;AA0HF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAOrF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAQ5E;AAED,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC5B,eAAe,CAOjB;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,oBAAoB,GAAG,eAAe,CAE7F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,YAAY,CAQhG;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,YAAY,CAEjF"}
@@ -1,13 +1,16 @@
1
1
  const captureModeValues = ['buffered', 'live'];
2
+ const duplicateExecutionControlValues = ['forbidden', 'idempotent'];
2
3
  const annotationFields = new Set(['ownership', 'tags']);
3
- const controlFields = new Set(['capture', 'timeoutMilliseconds']);
4
+ const controlFields = new Set(['capture', 'duplicateExecution', 'timeoutMilliseconds']);
4
5
  const captureModes = new Set(captureModeValues);
6
+ const duplicateExecutionControls = new Set(duplicateExecutionControlValues);
5
7
  const defaultTestAnnotations = {
6
8
  ownership: [],
7
9
  tags: []
8
10
  };
9
11
  const defaultTestControls = {
10
12
  capture: null,
13
+ duplicateExecution: null,
11
14
  timeoutMilliseconds: null
12
15
  };
13
16
  function isRecord(value) {
@@ -31,6 +34,11 @@ function assertCaptureMode(value) {
31
34
  throw new TypeError('Control field "capture" contains an unknown value.');
32
35
  }
33
36
  }
37
+ function assertDuplicateExecutionControl(value) {
38
+ if (typeof value !== 'string' || !duplicateExecutionControls.has(value)) {
39
+ throw new TypeError('Control field "duplicateExecution" contains an unknown value.');
40
+ }
41
+ }
34
42
  function assertTimeoutMilliseconds(value) {
35
43
  if (typeof value !== 'number' || !Number.isFinite(value)) {
36
44
  throw new TypeError('Control field "timeoutMilliseconds" must be a finite number.');
@@ -63,6 +71,9 @@ function ensureTestControlsInput(value) {
63
71
  if (Object.hasOwn(value, 'capture')) {
64
72
  assertCaptureMode(value.capture);
65
73
  }
74
+ if (Object.hasOwn(value, 'duplicateExecution')) {
75
+ assertDuplicateExecutionControl(value.duplicateExecution);
76
+ }
66
77
  if (Object.hasOwn(value, 'timeoutMilliseconds')) {
67
78
  assertTimeoutMilliseconds(value.timeoutMilliseconds);
68
79
  }
@@ -87,6 +98,7 @@ export function normalizeTestControls(input) {
87
98
  ensureTestControlsInput(input);
88
99
  return {
89
100
  capture: controlField(input, 'capture') ?? null,
101
+ duplicateExecution: controlField(input, 'duplicateExecution') ?? null,
90
102
  timeoutMilliseconds: controlField(input, 'timeoutMilliseconds') ?? null
91
103
  };
92
104
  }
@@ -104,6 +116,7 @@ export function resolveTestControls(parent, child) {
104
116
  const controls = normalizeTestControls(child);
105
117
  return {
106
118
  capture: controls.capture ?? parent.capture,
119
+ duplicateExecution: controls.duplicateExecution ?? parent.duplicateExecution,
107
120
  timeoutMilliseconds: controls.timeoutMilliseconds ?? parent.timeoutMilliseconds
108
121
  };
109
122
  }