@git.zone/tstest 1.11.5 → 2.2.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/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/index.js +24 -2
- package/dist_ts/tstest.classes.tap.parser.d.ts +10 -5
- package/dist_ts/tstest.classes.tap.parser.js +239 -99
- package/dist_ts/tstest.classes.tap.parser.old.d.ts +50 -0
- package/dist_ts/tstest.classes.tap.parser.old.js +332 -0
- package/dist_ts/tstest.classes.tstest.d.ts +1 -0
- package/dist_ts/tstest.classes.tstest.js +93 -4
- package/dist_ts/tstest.logging.d.ts +4 -0
- package/dist_ts/tstest.logging.js +36 -1
- package/dist_ts/tstest.plugins.d.ts +2 -1
- package/dist_ts/tstest.plugins.js +3 -2
- package/dist_ts_tapbundle/index.d.ts +1 -3
- package/dist_ts_tapbundle/index.js +3 -5
- package/dist_ts_tapbundle/tapbundle.classes.settingsmanager.d.ts +36 -0
- package/dist_ts_tapbundle/tapbundle.classes.settingsmanager.js +114 -0
- package/dist_ts_tapbundle/tapbundle.classes.tap.d.ts +26 -3
- package/dist_ts_tapbundle/tapbundle.classes.tap.js +218 -22
- package/dist_ts_tapbundle/tapbundle.classes.taptest.d.ts +5 -0
- package/dist_ts_tapbundle/tapbundle.classes.taptest.js +161 -7
- package/dist_ts_tapbundle/tapbundle.classes.taptools.d.ts +14 -0
- package/dist_ts_tapbundle/tapbundle.classes.taptools.js +24 -1
- package/dist_ts_tapbundle/tapbundle.expect.wrapper.d.ts +11 -0
- package/dist_ts_tapbundle/tapbundle.expect.wrapper.js +71 -0
- package/dist_ts_tapbundle/tapbundle.interfaces.d.ts +27 -0
- package/dist_ts_tapbundle/tapbundle.interfaces.js +2 -0
- package/dist_ts_tapbundle/tapbundle.utilities.diff.d.ts +5 -0
- package/dist_ts_tapbundle/tapbundle.utilities.diff.js +179 -0
- package/dist_ts_tapbundle_protocol/index.d.ts +6 -0
- package/dist_ts_tapbundle_protocol/index.js +11 -0
- package/dist_ts_tapbundle_protocol/protocol.emitter.d.ts +55 -0
- package/dist_ts_tapbundle_protocol/protocol.emitter.js +155 -0
- package/dist_ts_tapbundle_protocol/protocol.parser.d.ts +79 -0
- package/dist_ts_tapbundle_protocol/protocol.parser.js +359 -0
- package/dist_ts_tapbundle_protocol/protocol.types.d.ts +111 -0
- package/dist_ts_tapbundle_protocol/protocol.types.js +19 -0
- package/npmextra.json +3 -3
- package/package.json +2 -1
- package/readme.hints.md +166 -5
- package/readme.md +135 -4
- package/readme.plan.md +145 -56
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +22 -1
- package/ts/tspublish.json +1 -1
- package/ts/tstest.classes.tap.parser.ts +271 -110
- package/ts/tstest.classes.tstest.ts +112 -5
- package/ts/tstest.logging.ts +43 -0
- package/ts/tstest.plugins.ts +2 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as plugins from './tapbundle.plugins.js';
|
|
2
2
|
import { tapCreator } from './tapbundle.tapcreator.js';
|
|
3
3
|
import { TapTools, SkipError } from './tapbundle.classes.taptools.js';
|
|
4
|
+
import { ProtocolEmitter } from '../dist_ts_tapbundle_protocol/index.js';
|
|
5
|
+
import { setProtocolEmitter } from './tapbundle.expect.wrapper.js';
|
|
4
6
|
// imported interfaces
|
|
5
7
|
import { Deferred } from '@push.rocks/smartpromise';
|
|
6
8
|
import { HrtMeasurement } from '@push.rocks/smarttime';
|
|
@@ -16,6 +18,7 @@ export class TapTest {
|
|
|
16
18
|
this.testPromise = this.testDeferred.promise;
|
|
17
19
|
this.testResultDeferred = plugins.smartpromise.defer();
|
|
18
20
|
this.testResultPromise = this.testResultDeferred.promise;
|
|
21
|
+
this.protocolEmitter = new ProtocolEmitter();
|
|
19
22
|
this.description = optionsArg.description;
|
|
20
23
|
this.hrtMeasurement = new HrtMeasurement();
|
|
21
24
|
this.parallel = optionsArg.parallel;
|
|
@@ -23,17 +26,80 @@ export class TapTest {
|
|
|
23
26
|
this.tapTools = new TapTools(this);
|
|
24
27
|
this.testFunction = optionsArg.testFunction;
|
|
25
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Emit an event
|
|
31
|
+
*/
|
|
32
|
+
emitEvent(event) {
|
|
33
|
+
console.log(this.protocolEmitter.emitEvent(event));
|
|
34
|
+
}
|
|
26
35
|
/**
|
|
27
36
|
* run the test
|
|
28
37
|
*/
|
|
29
38
|
async run(testKeyArg) {
|
|
30
39
|
this.testKey = testKeyArg;
|
|
31
40
|
const testNumber = testKeyArg + 1;
|
|
41
|
+
// Emit test:queued event
|
|
42
|
+
this.emitEvent({
|
|
43
|
+
eventType: 'test:queued',
|
|
44
|
+
timestamp: Date.now(),
|
|
45
|
+
data: {
|
|
46
|
+
testNumber,
|
|
47
|
+
description: this.description
|
|
48
|
+
}
|
|
49
|
+
});
|
|
32
50
|
// Handle todo tests
|
|
33
51
|
if (this.isTodo) {
|
|
34
|
-
const
|
|
35
|
-
|
|
52
|
+
const testResult = {
|
|
53
|
+
ok: true,
|
|
54
|
+
testNumber,
|
|
55
|
+
description: this.description,
|
|
56
|
+
directive: {
|
|
57
|
+
type: 'todo',
|
|
58
|
+
reason: this.todoReason
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const lines = this.protocolEmitter.emitTest(testResult);
|
|
62
|
+
lines.forEach((line) => console.log(line));
|
|
36
63
|
this.status = 'success';
|
|
64
|
+
// Emit test:completed event for todo test
|
|
65
|
+
this.emitEvent({
|
|
66
|
+
eventType: 'test:completed',
|
|
67
|
+
timestamp: Date.now(),
|
|
68
|
+
data: {
|
|
69
|
+
testNumber,
|
|
70
|
+
description: this.description,
|
|
71
|
+
duration: 0,
|
|
72
|
+
error: undefined
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.testDeferred.resolve(this);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Handle pre-marked skip tests
|
|
79
|
+
if (this.tapTools.isSkipped) {
|
|
80
|
+
const testResult = {
|
|
81
|
+
ok: true,
|
|
82
|
+
testNumber,
|
|
83
|
+
description: this.description,
|
|
84
|
+
directive: {
|
|
85
|
+
type: 'skip',
|
|
86
|
+
reason: this.tapTools.skipReason || 'Marked as skip'
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const lines = this.protocolEmitter.emitTest(testResult);
|
|
90
|
+
lines.forEach((line) => console.log(line));
|
|
91
|
+
this.status = 'skipped';
|
|
92
|
+
// Emit test:completed event for skipped test
|
|
93
|
+
this.emitEvent({
|
|
94
|
+
eventType: 'test:completed',
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
data: {
|
|
97
|
+
testNumber,
|
|
98
|
+
description: this.description,
|
|
99
|
+
duration: 0,
|
|
100
|
+
error: undefined
|
|
101
|
+
}
|
|
102
|
+
});
|
|
37
103
|
this.testDeferred.resolve(this);
|
|
38
104
|
return;
|
|
39
105
|
}
|
|
@@ -42,6 +108,18 @@ export class TapTest {
|
|
|
42
108
|
const maxRetries = this.tapTools.maxRetries;
|
|
43
109
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
44
110
|
this.hrtMeasurement.start();
|
|
111
|
+
// Emit test:started event
|
|
112
|
+
this.emitEvent({
|
|
113
|
+
eventType: 'test:started',
|
|
114
|
+
timestamp: Date.now(),
|
|
115
|
+
data: {
|
|
116
|
+
testNumber,
|
|
117
|
+
description: this.description,
|
|
118
|
+
retry: attempt > 0 ? attempt : undefined
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
// Set protocol emitter for enhanced expect
|
|
122
|
+
setProtocolEmitter(this.protocolEmitter);
|
|
45
123
|
try {
|
|
46
124
|
// Set up timeout if specified
|
|
47
125
|
let timeoutHandle;
|
|
@@ -64,8 +142,30 @@ export class TapTest {
|
|
|
64
142
|
clearTimeout(timeoutHandle);
|
|
65
143
|
}
|
|
66
144
|
this.hrtMeasurement.stop();
|
|
67
|
-
|
|
145
|
+
const testResult = {
|
|
146
|
+
ok: true,
|
|
147
|
+
testNumber,
|
|
148
|
+
description: this.description,
|
|
149
|
+
metadata: {
|
|
150
|
+
time: this.hrtMeasurement.milliSeconds,
|
|
151
|
+
tags: this.tags.length > 0 ? this.tags : undefined,
|
|
152
|
+
file: this.fileName
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const lines = this.protocolEmitter.emitTest(testResult);
|
|
156
|
+
lines.forEach((line) => console.log(line));
|
|
68
157
|
this.status = 'success';
|
|
158
|
+
// Emit test:completed event
|
|
159
|
+
this.emitEvent({
|
|
160
|
+
eventType: 'test:completed',
|
|
161
|
+
timestamp: Date.now(),
|
|
162
|
+
data: {
|
|
163
|
+
testNumber,
|
|
164
|
+
description: this.description,
|
|
165
|
+
duration: this.hrtMeasurement.milliSeconds,
|
|
166
|
+
error: undefined
|
|
167
|
+
}
|
|
168
|
+
});
|
|
69
169
|
this.testDeferred.resolve(this);
|
|
70
170
|
this.testResultDeferred.resolve(testReturnValue);
|
|
71
171
|
return; // Success, exit retry loop
|
|
@@ -74,20 +174,74 @@ export class TapTest {
|
|
|
74
174
|
this.hrtMeasurement.stop();
|
|
75
175
|
// Handle skip
|
|
76
176
|
if (err instanceof SkipError || err.name === 'SkipError') {
|
|
77
|
-
|
|
177
|
+
const testResult = {
|
|
178
|
+
ok: true,
|
|
179
|
+
testNumber,
|
|
180
|
+
description: this.description,
|
|
181
|
+
directive: {
|
|
182
|
+
type: 'skip',
|
|
183
|
+
reason: err.message.replace('Skipped: ', '')
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
const lines = this.protocolEmitter.emitTest(testResult);
|
|
187
|
+
lines.forEach((line) => console.log(line));
|
|
78
188
|
this.status = 'skipped';
|
|
189
|
+
// Emit test:completed event for skipped test
|
|
190
|
+
this.emitEvent({
|
|
191
|
+
eventType: 'test:completed',
|
|
192
|
+
timestamp: Date.now(),
|
|
193
|
+
data: {
|
|
194
|
+
testNumber,
|
|
195
|
+
description: this.description,
|
|
196
|
+
duration: this.hrtMeasurement.milliSeconds,
|
|
197
|
+
error: undefined
|
|
198
|
+
}
|
|
199
|
+
});
|
|
79
200
|
this.testDeferred.resolve(this);
|
|
80
201
|
return;
|
|
81
202
|
}
|
|
82
203
|
lastError = err;
|
|
83
204
|
// If we have retries left, try again
|
|
84
205
|
if (attempt < maxRetries) {
|
|
85
|
-
console.log(
|
|
206
|
+
console.log(this.protocolEmitter.emitComment(`Retry ${attempt + 1}/${maxRetries} for test: ${this.description}`));
|
|
86
207
|
this.tapTools._incrementRetryCount();
|
|
87
208
|
continue;
|
|
88
209
|
}
|
|
89
210
|
// Final failure
|
|
90
|
-
|
|
211
|
+
const testResult = {
|
|
212
|
+
ok: false,
|
|
213
|
+
testNumber,
|
|
214
|
+
description: this.description,
|
|
215
|
+
metadata: {
|
|
216
|
+
time: this.hrtMeasurement.milliSeconds,
|
|
217
|
+
retry: this.tapTools.retryCount,
|
|
218
|
+
maxRetries: maxRetries > 0 ? maxRetries : undefined,
|
|
219
|
+
error: {
|
|
220
|
+
message: lastError.message || String(lastError),
|
|
221
|
+
stack: lastError.stack,
|
|
222
|
+
code: lastError.code
|
|
223
|
+
},
|
|
224
|
+
tags: this.tags.length > 0 ? this.tags : undefined,
|
|
225
|
+
file: this.fileName
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
const lines = this.protocolEmitter.emitTest(testResult);
|
|
229
|
+
lines.forEach((line) => console.log(line));
|
|
230
|
+
// Emit test:completed event for failed test
|
|
231
|
+
this.emitEvent({
|
|
232
|
+
eventType: 'test:completed',
|
|
233
|
+
timestamp: Date.now(),
|
|
234
|
+
data: {
|
|
235
|
+
testNumber,
|
|
236
|
+
description: this.description,
|
|
237
|
+
duration: this.hrtMeasurement.milliSeconds,
|
|
238
|
+
error: {
|
|
239
|
+
message: lastError.message || String(lastError),
|
|
240
|
+
stack: lastError.stack,
|
|
241
|
+
type: 'runtime'
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
91
245
|
this.testDeferred.resolve(this);
|
|
92
246
|
this.testResultDeferred.resolve(err);
|
|
93
247
|
// if the test has already succeeded before
|
|
@@ -107,4 +261,4 @@ export class TapTest {
|
|
|
107
261
|
}
|
|
108
262
|
}
|
|
109
263
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3RhcGJ1bmRsZS90YXBidW5kbGUuY2xhc3Nlcy50YXB0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEUsc0JBQXNCO0FBQ3RCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFTdkQsTUFBTSxPQUFPLE9BQU87SUFtQmxCOztPQUVHO0lBQ0gsWUFBWSxVQUlYO1FBaEJNLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQThCLFFBQVEsQ0FBQztRQUU5QyxpQkFBWSxHQUF5QixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25FLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzVELHVCQUFrQixHQUFnQixPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hFLHNCQUFpQixHQUFlLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7UUFTckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsSUFBSSxD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
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3RhcGJ1bmRsZS90YXBidW5kbGUuY2xhc3Nlcy50YXB0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBbUIsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRSxzQkFBc0I7QUFDdEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVN2RCxNQUFNLE9BQU8sT0FBTztJQW9CbEI7O09BRUc7SUFDSCxZQUFZLFVBSVg7UUFqQk0sV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4QixTQUFJLEdBQWEsRUFBRSxDQUFDO1FBQ3BCLGFBQVEsR0FBOEIsUUFBUSxDQUFDO1FBRTlDLGlCQUFZLEdBQXlCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkUsZ0JBQVcsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDNUQsdUJBQWtCLEdBQWdCLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEUsc0JBQWlCLEdBQWUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMvRCxvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFTOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FB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
|
|
@@ -16,6 +16,8 @@ export declare class TapTools {
|
|
|
16
16
|
testData: any;
|
|
17
17
|
private static _sharedContext;
|
|
18
18
|
private _snapshotPath;
|
|
19
|
+
private _isSkipped;
|
|
20
|
+
private _skipReason?;
|
|
19
21
|
constructor(TapTestArg: TapTest<any>);
|
|
20
22
|
/**
|
|
21
23
|
* allow failure
|
|
@@ -25,6 +27,18 @@ export declare class TapTools {
|
|
|
25
27
|
* skip the rest of the test
|
|
26
28
|
*/
|
|
27
29
|
skip(reason?: string): never;
|
|
30
|
+
/**
|
|
31
|
+
* Mark test as skipped without throwing (for pre-marking)
|
|
32
|
+
*/
|
|
33
|
+
markAsSkipped(reason?: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Check if test is marked as skipped
|
|
36
|
+
*/
|
|
37
|
+
get isSkipped(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get skip reason
|
|
40
|
+
*/
|
|
41
|
+
get skipReason(): string | undefined;
|
|
28
42
|
/**
|
|
29
43
|
* conditionally skip the rest of the test
|
|
30
44
|
*/
|
|
@@ -13,6 +13,8 @@ export class TapTools {
|
|
|
13
13
|
this._retryCount = 0;
|
|
14
14
|
this.testData = {};
|
|
15
15
|
this._snapshotPath = '';
|
|
16
|
+
// Flags for skip/todo
|
|
17
|
+
this._isSkipped = false;
|
|
16
18
|
this.smartjson = plugins.smartjson;
|
|
17
19
|
/**
|
|
18
20
|
* shared context for data sharing between tests
|
|
@@ -50,9 +52,30 @@ export class TapTools {
|
|
|
50
52
|
* skip the rest of the test
|
|
51
53
|
*/
|
|
52
54
|
skip(reason) {
|
|
55
|
+
this._isSkipped = true;
|
|
56
|
+
this._skipReason = reason;
|
|
53
57
|
const skipMessage = reason ? `Skipped: ${reason}` : 'Skipped';
|
|
54
58
|
throw new SkipError(skipMessage);
|
|
55
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Mark test as skipped without throwing (for pre-marking)
|
|
62
|
+
*/
|
|
63
|
+
markAsSkipped(reason) {
|
|
64
|
+
this._isSkipped = true;
|
|
65
|
+
this._skipReason = reason;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if test is marked as skipped
|
|
69
|
+
*/
|
|
70
|
+
get isSkipped() {
|
|
71
|
+
return this._isSkipped;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get skip reason
|
|
75
|
+
*/
|
|
76
|
+
get skipReason() {
|
|
77
|
+
return this._skipReason;
|
|
78
|
+
}
|
|
56
79
|
/**
|
|
57
80
|
* conditionally skip the rest of the test
|
|
58
81
|
*/
|
|
@@ -226,4 +249,4 @@ export class TapTools {
|
|
|
226
249
|
TapTools._fixtureData.clear();
|
|
227
250
|
}
|
|
228
251
|
}
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmNsYXNzZXMudGFwdG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c190YXBidW5kbGUvdGFwYnVuZGxlLmNsYXNzZXMudGFwdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNekQsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sUUFBUTthQVFKLG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWUsQUFBekIsQ0FBMEI7SUFPdkQsWUFBWSxVQUF3QjtRQVY1QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDakIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVsQixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUVuQyxzQkFBc0I7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBc0pwQixjQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUVyQzs7V0FFRztRQUNJLFlBQU8sR0FBRztZQUNmLEdBQUcsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO2dCQUNuQixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxHQUFHLEVBQUUsQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLEVBQUU7Z0JBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsR0FBVyxFQUFFLEVB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { expect as smartExpect } from '@push.rocks/smartexpect';
|
|
2
|
+
import { ProtocolEmitter } from '../dist_ts_tapbundle_protocol/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Set the protocol emitter for enhanced error reporting
|
|
5
|
+
*/
|
|
6
|
+
export declare function setProtocolEmitter(emitter: ProtocolEmitter): void;
|
|
7
|
+
/**
|
|
8
|
+
* Enhanced expect wrapper that captures assertion failures and generates diffs
|
|
9
|
+
*/
|
|
10
|
+
export declare function createEnhancedExpect(): typeof smartExpect;
|
|
11
|
+
export declare const expect: typeof smartExpect;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { expect as smartExpect } from '@push.rocks/smartexpect';
|
|
2
|
+
import { generateDiff } from './tapbundle.utilities.diff.js';
|
|
3
|
+
import { ProtocolEmitter } from '../dist_ts_tapbundle_protocol/index.js';
|
|
4
|
+
// Store the protocol emitter for event emission
|
|
5
|
+
let protocolEmitter = null;
|
|
6
|
+
/**
|
|
7
|
+
* Set the protocol emitter for enhanced error reporting
|
|
8
|
+
*/
|
|
9
|
+
export function setProtocolEmitter(emitter) {
|
|
10
|
+
protocolEmitter = emitter;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Enhanced expect wrapper that captures assertion failures and generates diffs
|
|
14
|
+
*/
|
|
15
|
+
export function createEnhancedExpect() {
|
|
16
|
+
return new Proxy(smartExpect, {
|
|
17
|
+
apply(target, thisArg, argumentsList) {
|
|
18
|
+
const expectation = target.apply(thisArg, argumentsList);
|
|
19
|
+
// Wrap common assertion methods
|
|
20
|
+
const wrappedExpectation = new Proxy(expectation, {
|
|
21
|
+
get(target, prop, receiver) {
|
|
22
|
+
const originalValue = Reflect.get(target, prop, receiver);
|
|
23
|
+
// Wrap assertion methods that compare values
|
|
24
|
+
if (typeof prop === 'string' && typeof originalValue === 'function' && ['toEqual', 'toBe', 'toMatch', 'toContain'].includes(prop)) {
|
|
25
|
+
return function (expected) {
|
|
26
|
+
try {
|
|
27
|
+
return originalValue.apply(target, arguments);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// Enhance the error with diff information
|
|
31
|
+
const actual = argumentsList[0];
|
|
32
|
+
const enhancedError = {
|
|
33
|
+
message: error.message,
|
|
34
|
+
stack: error.stack,
|
|
35
|
+
actual,
|
|
36
|
+
expected,
|
|
37
|
+
type: 'assertion'
|
|
38
|
+
};
|
|
39
|
+
// Generate diff if applicable
|
|
40
|
+
if (prop === 'toEqual' || prop === 'toBe') {
|
|
41
|
+
const diff = generateDiff(expected, actual);
|
|
42
|
+
if (diff) {
|
|
43
|
+
enhancedError.diff = diff;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Emit assertion:failed event if protocol emitter is available
|
|
47
|
+
if (protocolEmitter) {
|
|
48
|
+
const event = {
|
|
49
|
+
eventType: 'assertion:failed',
|
|
50
|
+
timestamp: Date.now(),
|
|
51
|
+
data: {
|
|
52
|
+
error: enhancedError
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
console.log(protocolEmitter.emitEvent(event));
|
|
56
|
+
}
|
|
57
|
+
// Re-throw the enhanced error
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return originalValue;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return wrappedExpectation;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// Create the enhanced expect function
|
|
70
|
+
export const expect = createEnhancedExpect();
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwYnVuZGxlLmV4cGVjdC53cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdGFwYnVuZGxlL3RhcGJ1bmRsZS5leHBlY3Qud3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHekUsZ0RBQWdEO0FBQ2hELElBQUksZUFBZSxHQUEyQixJQUFJLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBd0I7SUFDekQsZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUM1QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU8sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQzVCLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQW9CO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRXpELGdDQUFnQztZQUNoQyxNQUFNLGtCQUFrQixHQUFHLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtnQkFDaEQsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUTtvQkFDeEIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUUxRCw2Q0FBNkM7b0JBQzdDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUNsSSxPQUFPLFVBQVMsUUFBYTs0QkFDM0IsSUFBSSxDQUFDO2dDQUNILE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7NEJBQ2hELENBQUM7NEJBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztnQ0FDcEIsMENBQTBDO2dDQUMxQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ2hDLE1BQU0sYUFBYSxHQUFtQjtvQ0FDcEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29DQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0NBQ2xCLE1BQU07b0NBQ04sUUFBUTtvQ0FDUixJQUFJLEVBQUUsV0FBVztpQ0FDbEIsQ0FBQztnQ0FFRiw4QkFBOEI7Z0NBQzlCLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0NBQzFDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7b0NBQzVDLElBQUksSUFBSSxFQUFFLENBQUM7d0NBQ1QsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0NBQzVCLENBQUM7Z0NBQ0gsQ0FBQztnQ0FFRCwrREFBK0Q7Z0NBQy9ELElBQUksZUFBZSxFQUFFLENBQUM7b0NBQ3BCLE1BQU0sS0FBSyxHQUFHO3dDQUNaLFNBQVMsRUFBRSxrQkFBMkI7d0NBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO3dDQUNyQixJQUFJLEVBQUU7NENBQ0osS0FBSyxFQUFFLGFBQWE7eUNBQ3JCO3FDQUNGLENBQUM7b0NBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0NBQ2hELENBQUM7Z0NBRUQsOEJBQThCO2dDQUM5QixNQUFNLEtBQUssQ0FBQzs0QkFDZCxDQUFDO3dCQUNILENBQUMsQ0FBQztvQkFDSixDQUFDO29CQUVELE9BQU8sYUFBYSxDQUFDO2dCQUN2QixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyJ9
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ITapSettings {
|
|
2
|
+
timeout?: number;
|
|
3
|
+
slowThreshold?: number;
|
|
4
|
+
bail?: boolean;
|
|
5
|
+
retries?: number;
|
|
6
|
+
retryDelay?: number;
|
|
7
|
+
suppressConsole?: boolean;
|
|
8
|
+
verboseErrors?: boolean;
|
|
9
|
+
showTestDuration?: boolean;
|
|
10
|
+
maxConcurrency?: number;
|
|
11
|
+
isolateTests?: boolean;
|
|
12
|
+
beforeAll?: () => Promise<void> | void;
|
|
13
|
+
afterAll?: () => Promise<void> | void;
|
|
14
|
+
beforeEach?: (testName: string) => Promise<void> | void;
|
|
15
|
+
afterEach?: (testName: string, passed: boolean) => Promise<void> | void;
|
|
16
|
+
env?: Record<string, string>;
|
|
17
|
+
enableSnapshots?: boolean;
|
|
18
|
+
snapshotDirectory?: string;
|
|
19
|
+
updateSnapshots?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface ISettingsManager {
|
|
22
|
+
getSettings(): ITapSettings;
|
|
23
|
+
setGlobalSettings(settings: ITapSettings): void;
|
|
24
|
+
setFileSettings(settings: ITapSettings): void;
|
|
25
|
+
setTestSettings(testId: string, settings: ITapSettings): void;
|
|
26
|
+
getTestSettings(testId: string): ITapSettings;
|
|
27
|
+
}
|