@overkill-dev/engine 0.0.28 → 0.0.30
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/assertion-protocol/source-location.d.ts.map +1 -1
- package/assertion-protocol/source-location.js +2 -0
- package/assertion-protocol/source-location.js.map +1 -1
- package/engine/case-execution.d.ts +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +19 -5
- package/engine/case-execution.js.map +1 -1
- package/engine/engine.d.ts +2 -1
- package/engine/engine.d.ts.map +1 -1
- package/engine/engine.js +1 -0
- package/engine/engine.js.map +1 -1
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +11 -8
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +2 -0
- package/engine/execution.js.map +1 -1
- package/engine/reporter.d.ts +4 -3
- package/engine/reporter.d.ts.map +1 -1
- package/engine/reporter.js.map +1 -1
- package/engine/run-result.d.ts +28 -2
- package/engine/run-result.d.ts.map +1 -1
- package/engine/run-result.js.map +1 -1
- package/engine/test-data.d.ts +27 -0
- package/engine/test-data.d.ts.map +1 -0
- package/engine/test-data.js +113 -0
- package/engine/test-data.js.map +1 -0
- package/engine/test-node.d.ts +46 -12
- package/engine/test-node.d.ts.map +1 -1
- package/engine/test-node.js +83 -11
- package/engine/test-node.js.map +1 -1
- package/engine/test-plan.d.ts +11 -6
- package/engine/test-plan.d.ts.map +1 -1
- package/engine/test-plan.js +38 -23
- package/engine/test-plan.js.map +1 -1
- package/package.json +2 -2
- package/packages/engine/engine.entry-point.d.ts +7 -5
- package/packages/engine/engine.entry-point.d.ts.map +1 -1
- package/packages/engine/engine.entry-point.js +4 -0
- package/packages/engine/engine.entry-point.js.map +1 -1
- package/readme.md +28 -14
- package/sbom.cdx.json +4 -4
- package/engine/metadata.d.ts +0 -49
- package/engine/metadata.d.ts.map +0 -1
- package/engine/metadata.js +0 -313
- package/engine/metadata.js.map +0 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
const captureModeValues = ['buffered', 'live'];
|
|
2
|
+
const annotationFields = new Set(['ownership', 'tags']);
|
|
3
|
+
const controlFields = new Set(['capture', 'timeoutMilliseconds']);
|
|
4
|
+
const captureModes = new Set(captureModeValues);
|
|
5
|
+
const defaultTestAnnotations = {
|
|
6
|
+
ownership: [],
|
|
7
|
+
tags: []
|
|
8
|
+
};
|
|
9
|
+
const defaultTestControls = {
|
|
10
|
+
capture: null,
|
|
11
|
+
timeoutMilliseconds: null
|
|
12
|
+
};
|
|
13
|
+
function isRecord(value) {
|
|
14
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
function assertStringValue(value, field) {
|
|
17
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
18
|
+
throw new TypeError(`Annotation field "${field}" must contain non-empty strings.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function assertStringArray(value, field) {
|
|
22
|
+
if (!Array.isArray(value)) {
|
|
23
|
+
throw new TypeError(`Annotation field "${field}" must be an array.`);
|
|
24
|
+
}
|
|
25
|
+
for (const item of value) {
|
|
26
|
+
assertStringValue(item, field);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function assertCaptureMode(value) {
|
|
30
|
+
if (typeof value !== 'string' || !captureModes.has(value)) {
|
|
31
|
+
throw new TypeError('Control field "capture" contains an unknown value.');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function assertTimeoutMilliseconds(value) {
|
|
35
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
36
|
+
throw new TypeError('Control field "timeoutMilliseconds" must be a finite number.');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function assertKnownFields(value, fields, messagePrefix) {
|
|
40
|
+
for (const field of Object.keys(value)) {
|
|
41
|
+
if (!fields.has(field)) {
|
|
42
|
+
throw new TypeError(`${messagePrefix}: ${field}.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function ensureTestAnnotationsInput(value) {
|
|
47
|
+
if (!isRecord(value)) {
|
|
48
|
+
throw new TypeError('Test node annotations must be an object.');
|
|
49
|
+
}
|
|
50
|
+
assertKnownFields(value, annotationFields, 'Unknown annotation field');
|
|
51
|
+
if (Object.hasOwn(value, 'ownership')) {
|
|
52
|
+
assertStringArray(value.ownership, 'ownership');
|
|
53
|
+
}
|
|
54
|
+
if (Object.hasOwn(value, 'tags')) {
|
|
55
|
+
assertStringArray(value.tags, 'tags');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function ensureTestControlsInput(value) {
|
|
59
|
+
if (!isRecord(value)) {
|
|
60
|
+
throw new TypeError('Test node controls must be an object.');
|
|
61
|
+
}
|
|
62
|
+
assertKnownFields(value, controlFields, 'Unknown control field');
|
|
63
|
+
if (Object.hasOwn(value, 'capture')) {
|
|
64
|
+
assertCaptureMode(value.capture);
|
|
65
|
+
}
|
|
66
|
+
if (Object.hasOwn(value, 'timeoutMilliseconds')) {
|
|
67
|
+
assertTimeoutMilliseconds(value.timeoutMilliseconds);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function mergeSetValues(parent, child) {
|
|
71
|
+
return Array.from(new Set([...parent, ...child]));
|
|
72
|
+
}
|
|
73
|
+
function inputField(input, field) {
|
|
74
|
+
return Object.hasOwn(input, field) ? input[field] : undefined;
|
|
75
|
+
}
|
|
76
|
+
function controlField(input, field) {
|
|
77
|
+
return Object.hasOwn(input, field) ? input[field] : undefined;
|
|
78
|
+
}
|
|
79
|
+
export function normalizeTestAnnotations(input) {
|
|
80
|
+
ensureTestAnnotationsInput(input);
|
|
81
|
+
return {
|
|
82
|
+
ownership: inputField(input, 'ownership') ?? [],
|
|
83
|
+
tags: inputField(input, 'tags') ?? []
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function normalizeTestControls(input) {
|
|
87
|
+
ensureTestControlsInput(input);
|
|
88
|
+
return {
|
|
89
|
+
capture: controlField(input, 'capture') ?? null,
|
|
90
|
+
timeoutMilliseconds: controlField(input, 'timeoutMilliseconds') ?? null
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function resolveTestAnnotations(parent, child) {
|
|
94
|
+
const annotations = normalizeTestAnnotations(child);
|
|
95
|
+
return {
|
|
96
|
+
ownership: mergeSetValues(parent.ownership, annotations.ownership),
|
|
97
|
+
tags: mergeSetValues(parent.tags, annotations.tags)
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export function resolveRootTestAnnotations(annotations) {
|
|
101
|
+
return resolveTestAnnotations(defaultTestAnnotations, annotations);
|
|
102
|
+
}
|
|
103
|
+
export function resolveTestControls(parent, child) {
|
|
104
|
+
const controls = normalizeTestControls(child);
|
|
105
|
+
return {
|
|
106
|
+
capture: controls.capture ?? parent.capture,
|
|
107
|
+
timeoutMilliseconds: controls.timeoutMilliseconds ?? parent.timeoutMilliseconds
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function resolveRootTestControls(controls) {
|
|
111
|
+
return resolveTestControls(defaultTestControls, controls);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=test-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-data.js","sourceRoot":"","sources":["../../../../source/engine/test-data.ts"],"names":[],"mappings":"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"}
|
package/engine/test-node.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AssertAssertionNode, AssertionResult } from '../assertion-protocol/assertion-node.ts';
|
|
2
2
|
import type { NonEmptyReadonlyArray, SourceLocation } from '../assertion-protocol/assertion-node-shape.ts';
|
|
3
3
|
import type { AssertAssertionFacade } from './assertion-facade.ts';
|
|
4
|
-
import { type Metadata } from './metadata.ts';
|
|
5
4
|
import type { RequireAssertionFacade } from './require-assertion-facade.ts';
|
|
5
|
+
import { type TestAnnotationsInput, type TestControlsInput, type TestFamily } from './test-data.ts';
|
|
6
6
|
declare const testNodeBrand: unique symbol;
|
|
7
|
+
declare const testNodeFamilyBrand: unique symbol;
|
|
7
8
|
declare const testRootBrand: unique symbol;
|
|
8
9
|
declare const testNodeOwnerBrand: unique symbol;
|
|
9
10
|
declare const testNodeOwnerIdentity: unique symbol;
|
|
@@ -18,46 +19,64 @@ export type TestScope = {
|
|
|
18
19
|
};
|
|
19
20
|
export type TestBody = (scope: TestScope) => AssertionResult | Promise<AssertionResult>;
|
|
20
21
|
export type DefinitionLocations = NonEmptyReadonlyArray<SourceLocation>;
|
|
22
|
+
export type BodyTestCaseExecution = {
|
|
23
|
+
readonly body: TestBody;
|
|
24
|
+
readonly kind: 'body';
|
|
25
|
+
};
|
|
26
|
+
export type SkippedTestCaseExecution = {
|
|
27
|
+
readonly kind: 'skip';
|
|
28
|
+
readonly reason: string;
|
|
29
|
+
};
|
|
30
|
+
export type TestCaseExecution = BodyTestCaseExecution | SkippedTestCaseExecution;
|
|
21
31
|
export type TestCase = {
|
|
22
32
|
readonly [testNodeBrand]: true;
|
|
33
|
+
readonly [testNodeFamilyBrand]: TestFamily | null;
|
|
23
34
|
readonly [testNodeOwnerBrand]: TestNodeOwner;
|
|
24
|
-
readonly
|
|
35
|
+
readonly annotations: TestAnnotationsInput;
|
|
36
|
+
readonly controls: TestControlsInput;
|
|
25
37
|
readonly definitionLocations: DefinitionLocations;
|
|
38
|
+
readonly execution: TestCaseExecution;
|
|
26
39
|
readonly kind: 'test';
|
|
27
|
-
readonly metadata: Metadata;
|
|
28
40
|
readonly title: string;
|
|
29
41
|
};
|
|
30
42
|
export type Suite = {
|
|
31
43
|
readonly [testNodeBrand]: true;
|
|
44
|
+
readonly [testNodeFamilyBrand]: TestFamily | null;
|
|
32
45
|
readonly [testNodeOwnerBrand]: TestNodeOwner;
|
|
46
|
+
readonly annotations: TestAnnotationsInput;
|
|
33
47
|
readonly children: readonly TestNode[];
|
|
48
|
+
readonly controls: TestControlsInput;
|
|
34
49
|
readonly definitionLocations: DefinitionLocations;
|
|
35
50
|
readonly kind: 'suite';
|
|
36
|
-
readonly metadata: Metadata;
|
|
37
51
|
readonly title: string;
|
|
38
52
|
};
|
|
39
53
|
export type TableCase = {
|
|
54
|
+
readonly annotations: TestAnnotationsInput;
|
|
40
55
|
readonly body: TestBody;
|
|
41
|
-
readonly
|
|
56
|
+
readonly controls: TestControlsInput;
|
|
42
57
|
readonly parameters: unknown;
|
|
43
58
|
readonly title: string;
|
|
44
59
|
};
|
|
45
60
|
export type Table = {
|
|
46
61
|
readonly [testNodeBrand]: true;
|
|
62
|
+
readonly [testNodeFamilyBrand]: TestFamily | null;
|
|
47
63
|
readonly [testNodeOwnerBrand]: TestNodeOwner;
|
|
64
|
+
readonly annotations: TestAnnotationsInput;
|
|
48
65
|
readonly cases: readonly TableCase[];
|
|
66
|
+
readonly controls: TestControlsInput;
|
|
49
67
|
readonly definitionLocations: DefinitionLocations;
|
|
50
68
|
readonly kind: 'table';
|
|
51
|
-
readonly metadata: Metadata;
|
|
52
69
|
readonly title: string;
|
|
53
70
|
};
|
|
54
71
|
export type TestNode = Suite | Table | TestCase;
|
|
55
72
|
export type TestRoot = {
|
|
56
73
|
readonly [testRootBrand]: true;
|
|
74
|
+
readonly [testNodeFamilyBrand]: TestFamily | null;
|
|
57
75
|
readonly [testNodeOwnerBrand]: TestNodeOwner;
|
|
76
|
+
readonly annotations: TestAnnotationsInput;
|
|
58
77
|
readonly children: readonly TestNode[];
|
|
78
|
+
readonly controls: TestControlsInput;
|
|
59
79
|
readonly kind: 'root';
|
|
60
|
-
readonly metadata: Metadata;
|
|
61
80
|
readonly title: string;
|
|
62
81
|
};
|
|
63
82
|
export type TestNodeOwner = {
|
|
@@ -66,6 +85,7 @@ export type TestNodeOwner = {
|
|
|
66
85
|
export type TestNodeFactory = {
|
|
67
86
|
readonly createRoot: (options: RootOptions) => TestRoot;
|
|
68
87
|
readonly createSuite: (options: SuiteOptions) => Suite;
|
|
88
|
+
readonly createSkippedTestCase: (options: SkippedTestCaseOptions) => TestCase;
|
|
69
89
|
readonly createTable: (options: TableOptions) => Table;
|
|
70
90
|
readonly createTestCase: (options: TestCaseOptions) => TestCase;
|
|
71
91
|
};
|
|
@@ -74,38 +94,52 @@ export type TestNodeFactoryOptions = {
|
|
|
74
94
|
readonly recordConstructedNode: (node: TestNode) => void;
|
|
75
95
|
};
|
|
76
96
|
export type TestCaseOptions = {
|
|
97
|
+
readonly annotations: TestAnnotationsInput;
|
|
77
98
|
readonly body: TestBody;
|
|
99
|
+
readonly controls: TestControlsInput;
|
|
100
|
+
readonly definitionLocations: DefinitionLocations;
|
|
101
|
+
readonly title: string;
|
|
102
|
+
};
|
|
103
|
+
export type SkippedTestCaseOptions = {
|
|
104
|
+
readonly annotations: TestAnnotationsInput;
|
|
105
|
+
readonly controls: TestControlsInput;
|
|
78
106
|
readonly definitionLocations: DefinitionLocations;
|
|
79
|
-
readonly
|
|
107
|
+
readonly reason: string;
|
|
80
108
|
readonly title: string;
|
|
81
109
|
};
|
|
82
110
|
export type RootOptions = {
|
|
111
|
+
readonly annotations: TestAnnotationsInput;
|
|
83
112
|
readonly children: readonly unknown[];
|
|
84
|
-
readonly
|
|
113
|
+
readonly controls: TestControlsInput;
|
|
85
114
|
readonly title: string;
|
|
86
115
|
};
|
|
87
116
|
export type SuiteOptions = {
|
|
117
|
+
readonly annotations: TestAnnotationsInput;
|
|
88
118
|
readonly children: readonly unknown[];
|
|
119
|
+
readonly controls: TestControlsInput;
|
|
89
120
|
readonly definitionLocations: DefinitionLocations;
|
|
90
|
-
readonly metadata: Metadata;
|
|
91
121
|
readonly title: string;
|
|
92
122
|
};
|
|
93
123
|
export type TableCaseOptions = {
|
|
124
|
+
readonly annotations: TestAnnotationsInput;
|
|
94
125
|
readonly body: TestBody;
|
|
95
|
-
readonly
|
|
126
|
+
readonly controls: TestControlsInput;
|
|
96
127
|
readonly parameters: unknown;
|
|
97
128
|
readonly title: string;
|
|
98
129
|
};
|
|
99
130
|
export type TableOptions = {
|
|
131
|
+
readonly annotations: TestAnnotationsInput;
|
|
100
132
|
readonly cases: readonly TableCaseOptions[];
|
|
133
|
+
readonly controls: TestControlsInput;
|
|
101
134
|
readonly definitionLocations: DefinitionLocations;
|
|
102
|
-
readonly metadata: Metadata;
|
|
103
135
|
readonly title: string;
|
|
104
136
|
};
|
|
105
137
|
export declare function createTestNodeOwner(): TestNodeOwner;
|
|
106
138
|
export declare function defaultTestNodeOwner(): TestNodeOwner;
|
|
107
139
|
export declare function isTestNode(value: unknown): value is TestNode;
|
|
108
140
|
export declare function isTestRoot(value: unknown): value is TestRoot;
|
|
141
|
+
export declare function testNodeFamily(node: TestNode | TestRoot): TestFamily | null;
|
|
142
|
+
export declare function stampTestNodeFamily(node: TestNode | TestRoot, family: TestFamily): void;
|
|
109
143
|
export declare function isOwnedTestNode(value: unknown, owner: TestNodeOwner): value is TestNode;
|
|
110
144
|
export declare function ensureOwnedTestRoot(value: unknown, owner: TestNodeOwner, plainObjectMessage: string, foreignRootMessage: string): asserts value is TestRoot;
|
|
111
145
|
export declare function createTestNodeFactory(factoryOptions: TestNodeFactoryOptions): TestNodeFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,eAAe,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAE3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"test-node.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
|
package/engine/test-node.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ensureValidSourceLocation } from "../assertion-protocol/source-location.js";
|
|
2
|
-
import {
|
|
2
|
+
import { normalizeTestAnnotations, normalizeTestControls } from "./test-data.js";
|
|
3
3
|
const testNodeBrand = Symbol.for('@overkill-dev/engine/TestNode');
|
|
4
|
+
const testNodeFamilyBrand = Symbol.for('@overkill-dev/engine/TestNodeFamily');
|
|
4
5
|
const testRootBrand = Symbol.for('@overkill-dev/engine/TestRoot');
|
|
5
6
|
const testNodeOwnerBrand = Symbol.for('@overkill-dev/engine/TestNodeOwner');
|
|
6
7
|
const testNodeOwnerIdentity = Symbol.for('@overkill-dev/engine/TestNodeOwnerIdentity');
|
|
@@ -36,6 +37,19 @@ function ensureTestBody(body) {
|
|
|
36
37
|
throw new TypeError('Test case body must be a function.');
|
|
37
38
|
}
|
|
38
39
|
}
|
|
40
|
+
function ensureSkipReasonValue(reason) {
|
|
41
|
+
if (typeof reason !== 'string') {
|
|
42
|
+
throw new TypeError('Skipped test reason must be a string.');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function readSkipReason(reason) {
|
|
46
|
+
ensureSkipReasonValue(reason);
|
|
47
|
+
const trimmedReason = reason.trim();
|
|
48
|
+
if (trimmedReason.length === 0) {
|
|
49
|
+
throw new TypeError('Skipped test reason must not be empty.');
|
|
50
|
+
}
|
|
51
|
+
return trimmedReason;
|
|
52
|
+
}
|
|
39
53
|
function ensureDefinitionLocations(definitionLocations) {
|
|
40
54
|
if (definitionLocations.length === 0) {
|
|
41
55
|
throw new TypeError('Test node definition locations must contain at least one location.');
|
|
@@ -50,6 +64,29 @@ export function isTestNode(value) {
|
|
|
50
64
|
export function isTestRoot(value) {
|
|
51
65
|
return typeof value === 'object' && value !== null && Object.hasOwn(value, testRootBrand);
|
|
52
66
|
}
|
|
67
|
+
export function testNodeFamily(node) {
|
|
68
|
+
return node[testNodeFamilyBrand];
|
|
69
|
+
}
|
|
70
|
+
function assertCompatibleTestFamily(node, family) {
|
|
71
|
+
const currentFamily = testNodeFamily(node);
|
|
72
|
+
if (currentFamily !== null && currentFamily !== family) {
|
|
73
|
+
throw new TypeError(`Test node already belongs to test family "${currentFamily}".`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export function stampTestNodeFamily(node, family) {
|
|
77
|
+
assertCompatibleTestFamily(node, family);
|
|
78
|
+
Object.defineProperty(node, testNodeFamilyBrand, {
|
|
79
|
+
configurable: true,
|
|
80
|
+
enumerable: true,
|
|
81
|
+
value: family,
|
|
82
|
+
writable: true
|
|
83
|
+
});
|
|
84
|
+
if (node.kind === 'root' || node.kind === 'suite') {
|
|
85
|
+
for (const child of node.children) {
|
|
86
|
+
stampTestNodeFamily(child, family);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
53
90
|
export function isOwnedTestNode(value, owner) {
|
|
54
91
|
return isTestNode(value) && value[testNodeOwnerBrand] === owner;
|
|
55
92
|
}
|
|
@@ -84,16 +121,40 @@ export function createTestNodeFactory(factoryOptions) {
|
|
|
84
121
|
function createTestCase(options) {
|
|
85
122
|
ensureTitleValue(options.title);
|
|
86
123
|
ensureTitle(options.title);
|
|
87
|
-
|
|
124
|
+
normalizeTestAnnotations(options.annotations);
|
|
125
|
+
normalizeTestControls(options.controls);
|
|
88
126
|
ensureTestBody(options.body);
|
|
89
127
|
ensureDefinitionLocations(options.definitionLocations);
|
|
90
128
|
const testCase = {
|
|
91
129
|
[testNodeBrand]: true,
|
|
130
|
+
[testNodeFamilyBrand]: null,
|
|
131
|
+
[testNodeOwnerBrand]: owner,
|
|
132
|
+
annotations: options.annotations,
|
|
133
|
+
controls: options.controls,
|
|
134
|
+
definitionLocations: options.definitionLocations,
|
|
135
|
+
execution: { body: options.body, kind: 'body' },
|
|
136
|
+
kind: 'test',
|
|
137
|
+
title: options.title
|
|
138
|
+
};
|
|
139
|
+
recordConstructedNode(testCase);
|
|
140
|
+
return testCase;
|
|
141
|
+
}
|
|
142
|
+
function createSkippedTestCase(options) {
|
|
143
|
+
ensureTitleValue(options.title);
|
|
144
|
+
ensureTitle(options.title);
|
|
145
|
+
normalizeTestAnnotations(options.annotations);
|
|
146
|
+
normalizeTestControls(options.controls);
|
|
147
|
+
ensureDefinitionLocations(options.definitionLocations);
|
|
148
|
+
const reason = readSkipReason(options.reason);
|
|
149
|
+
const testCase = {
|
|
150
|
+
[testNodeBrand]: true,
|
|
151
|
+
[testNodeFamilyBrand]: null,
|
|
92
152
|
[testNodeOwnerBrand]: owner,
|
|
93
|
-
|
|
153
|
+
annotations: options.annotations,
|
|
154
|
+
controls: options.controls,
|
|
94
155
|
definitionLocations: options.definitionLocations,
|
|
156
|
+
execution: { kind: 'skip', reason },
|
|
95
157
|
kind: 'test',
|
|
96
|
-
metadata: options.metadata,
|
|
97
158
|
title: options.title
|
|
98
159
|
};
|
|
99
160
|
recordConstructedNode(testCase);
|
|
@@ -102,34 +163,40 @@ export function createTestNodeFactory(factoryOptions) {
|
|
|
102
163
|
function createRoot(options) {
|
|
103
164
|
ensureTitleValue(options.title);
|
|
104
165
|
ensureTitle(options.title);
|
|
105
|
-
|
|
166
|
+
normalizeTestAnnotations(options.annotations);
|
|
167
|
+
normalizeTestControls(options.controls);
|
|
106
168
|
const children = options.children.map(function validateChild(child) {
|
|
107
169
|
return toTestNode(child, owner, 'Root children must be engine-created TestNode values.', 'Root children must be created by the same engine instance.');
|
|
108
170
|
});
|
|
109
171
|
return {
|
|
110
172
|
[testRootBrand]: true,
|
|
173
|
+
[testNodeFamilyBrand]: null,
|
|
111
174
|
[testNodeOwnerBrand]: owner,
|
|
175
|
+
annotations: options.annotations,
|
|
112
176
|
children,
|
|
177
|
+
controls: options.controls,
|
|
113
178
|
kind: 'root',
|
|
114
|
-
metadata: options.metadata,
|
|
115
179
|
title: options.title
|
|
116
180
|
};
|
|
117
181
|
}
|
|
118
182
|
function createSuite(options) {
|
|
119
183
|
ensureTitleValue(options.title);
|
|
120
184
|
ensureTitle(options.title);
|
|
121
|
-
|
|
185
|
+
normalizeTestAnnotations(options.annotations);
|
|
186
|
+
normalizeTestControls(options.controls);
|
|
122
187
|
ensureDefinitionLocations(options.definitionLocations);
|
|
123
188
|
const children = options.children.map(function validateChild(child) {
|
|
124
189
|
return toTestNode(child, owner, 'Suite children must be engine-created TestNode values.', 'Suite children must be created by the same engine instance.');
|
|
125
190
|
});
|
|
126
191
|
const suite = {
|
|
127
192
|
[testNodeBrand]: true,
|
|
193
|
+
[testNodeFamilyBrand]: null,
|
|
128
194
|
[testNodeOwnerBrand]: owner,
|
|
195
|
+
annotations: options.annotations,
|
|
129
196
|
children,
|
|
197
|
+
controls: options.controls,
|
|
130
198
|
definitionLocations: options.definitionLocations,
|
|
131
199
|
kind: 'suite',
|
|
132
|
-
metadata: options.metadata,
|
|
133
200
|
title: options.title
|
|
134
201
|
};
|
|
135
202
|
recordConstructedNode(suite);
|
|
@@ -139,23 +206,27 @@ export function createTestNodeFactory(factoryOptions) {
|
|
|
139
206
|
for (const tableCase of cases) {
|
|
140
207
|
ensureTitleValue(tableCase.title);
|
|
141
208
|
ensureTitle(tableCase.title);
|
|
142
|
-
|
|
209
|
+
normalizeTestAnnotations(tableCase.annotations);
|
|
210
|
+
normalizeTestControls(tableCase.controls);
|
|
143
211
|
ensureTestBody(tableCase.body);
|
|
144
212
|
}
|
|
145
213
|
}
|
|
146
214
|
function createTable(options) {
|
|
147
215
|
ensureTitleValue(options.title);
|
|
148
216
|
ensureTitle(options.title);
|
|
149
|
-
|
|
217
|
+
normalizeTestAnnotations(options.annotations);
|
|
218
|
+
normalizeTestControls(options.controls);
|
|
150
219
|
ensureDefinitionLocations(options.definitionLocations);
|
|
151
220
|
ensureTableCases(options.cases);
|
|
152
221
|
const table = {
|
|
153
222
|
[testNodeBrand]: true,
|
|
223
|
+
[testNodeFamilyBrand]: null,
|
|
154
224
|
[testNodeOwnerBrand]: owner,
|
|
225
|
+
annotations: options.annotations,
|
|
155
226
|
cases: options.cases,
|
|
227
|
+
controls: options.controls,
|
|
156
228
|
definitionLocations: options.definitionLocations,
|
|
157
229
|
kind: 'table',
|
|
158
|
-
metadata: options.metadata,
|
|
159
230
|
title: options.title
|
|
160
231
|
};
|
|
161
232
|
recordConstructedNode(table);
|
|
@@ -164,6 +235,7 @@ export function createTestNodeFactory(factoryOptions) {
|
|
|
164
235
|
return {
|
|
165
236
|
createRoot,
|
|
166
237
|
createSuite,
|
|
238
|
+
createSkippedTestCase,
|
|
167
239
|
createTable,
|
|
168
240
|
createTestCase
|
|
169
241
|
};
|
package/engine/test-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-node.js","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"test-node.js","sourceRoot":"","sources":["../../../../source/engine/test-node.ts"],"names":[],"mappings":"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"}
|
package/engine/test-plan.d.ts
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import type { NonEmptyReadonlyArray, SourceLocation } from '../assertion-protocol/assertion-node-shape.ts';
|
|
2
2
|
import { type CaseId } from './identity.ts';
|
|
3
|
-
import { type
|
|
3
|
+
import { type TestAnnotations, type TestAnnotationsInput, type TestControls, type TestControlsInput, type TestFamily } from './test-data.ts';
|
|
4
4
|
import type { OrphanedNode } from './run-result.ts';
|
|
5
|
-
import { type RootOptions, type TestBody, type TestNode, type TestNodeOwner, type TestRoot } from './test-node.ts';
|
|
5
|
+
import { type RootOptions, type TestBody, type TestCaseExecution, type TestNode, type TestNodeOwner, type TestRoot } from './test-node.ts';
|
|
6
6
|
export type TestPlanCaseBody = TestBody;
|
|
7
|
+
export type TestPlanCaseExecution = TestCaseExecution;
|
|
7
8
|
export type TestPlanSuitePathEntry = {
|
|
8
9
|
readonly definitionLocations: NonEmptyReadonlyArray<SourceLocation>;
|
|
9
10
|
readonly title: string;
|
|
10
11
|
};
|
|
11
12
|
export type TestPlanCase = {
|
|
12
|
-
readonly
|
|
13
|
+
readonly annotations: TestAnnotations;
|
|
14
|
+
readonly controls: TestControls;
|
|
13
15
|
readonly definitionLocations: NonEmptyReadonlyArray<SourceLocation>;
|
|
16
|
+
readonly execution: TestPlanCaseExecution;
|
|
14
17
|
readonly id: CaseId;
|
|
15
|
-
readonly metadata: ResolvedMetadata;
|
|
16
18
|
readonly suitePath: readonly TestPlanSuitePathEntry[];
|
|
19
|
+
readonly testFamily: TestFamily | null;
|
|
17
20
|
};
|
|
18
21
|
export type TestPlan = {
|
|
19
22
|
readonly defined: number;
|
|
@@ -23,12 +26,14 @@ export type TestPlan = {
|
|
|
23
26
|
readonly root: TestPlanRoot;
|
|
24
27
|
};
|
|
25
28
|
type TestPlanRoot = {
|
|
26
|
-
readonly
|
|
29
|
+
readonly annotations: TestAnnotations;
|
|
30
|
+
readonly controls: TestControls;
|
|
27
31
|
readonly title: string;
|
|
28
32
|
};
|
|
29
33
|
export type TestPlanFactory = (root: TestRoot) => TestPlan;
|
|
30
34
|
type TestPlanRootOptions = {
|
|
31
|
-
readonly
|
|
35
|
+
readonly annotations: TestAnnotationsInput;
|
|
36
|
+
readonly controls: TestControlsInput;
|
|
32
37
|
readonly title: string;
|
|
33
38
|
};
|
|
34
39
|
export type TestPlanFromTestFilesOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAE3G,OAAO,EAA+C,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,
|
|
1
|
+
{"version":3,"file":"test-plan.d.ts","sourceRoot":"","sources":["../../../../source/engine/test-plan.ts"],"names":[],"mappings":"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"}
|