@autometa/jest-executor 0.0.0 → 0.1.0
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 +20 -0
- package/dist/esm/index.js +244 -92
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +249 -92
- package/dist/index.js.map +1 -0
- package/package.json +12 -12
- package/tsup.config.ts +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @autometa/jest-executor
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 554b77e: Releasing packages
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [554b77e]
|
|
12
|
+
- @autometa/app@0.1.0
|
|
13
|
+
- @autometa/asserters@0.1.0
|
|
14
|
+
- @autometa/config@0.1.0
|
|
15
|
+
- @autometa/errors@0.1.0
|
|
16
|
+
- @autometa/events@0.1.0
|
|
17
|
+
- @autometa/gherkin@0.4.0
|
|
18
|
+
- @autometa/scopes@0.2.0
|
|
19
|
+
- @autometa/test-builder@0.1.0
|
|
20
|
+
- @autometa/types@0.4.0
|
package/dist/esm/index.js
CHANGED
|
@@ -15,9 +15,41 @@ import {
|
|
|
15
15
|
import { getApp } from "@autometa/app";
|
|
16
16
|
import { AutomationError } from "@autometa/errors";
|
|
17
17
|
import { Query } from "@autometa/test-builder";
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
// src/timeout-selector.ts
|
|
20
|
+
import { NullTimeout, Timeout } from "@autometa/scopes";
|
|
21
|
+
function getTimeout(target, config) {
|
|
22
|
+
if (target && !(target instanceof NullTimeout)) {
|
|
23
|
+
return target;
|
|
24
|
+
}
|
|
25
|
+
return Timeout.from(config?.current?.test?.timeout);
|
|
26
|
+
}
|
|
27
|
+
function chooseTimeout(timeout1, timeout2) {
|
|
28
|
+
if (timeout2 instanceof Timeout && !(timeout2 instanceof NullTimeout)) {
|
|
29
|
+
return {
|
|
30
|
+
getTimeout: getTimeout.bind(null, timeout2)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (timeout1 instanceof Timeout && !(timeout1 instanceof NullTimeout)) {
|
|
34
|
+
return {
|
|
35
|
+
getTimeout: getTimeout.bind(null, timeout1)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
getTimeout: getTimeout.bind(null, Timeout.from(0))
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/executor.ts
|
|
44
|
+
import { NullTimeout as NullTimeout2, Timeout as Timeout2 } from "@autometa/scopes";
|
|
45
|
+
function execute({ app, world }, bridge, events, config) {
|
|
46
|
+
config.current;
|
|
19
47
|
const featureTitle = bridge.data.scope.title(bridge.data.gherkin);
|
|
20
48
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
49
|
+
const chosenTimeout = chooseTimeout(
|
|
50
|
+
new NullTimeout2(),
|
|
51
|
+
bridge.data.scope.timeout
|
|
52
|
+
).getTimeout(config);
|
|
21
53
|
beforeAll(() => {
|
|
22
54
|
events.feature.emitStart({
|
|
23
55
|
title: featureTitle,
|
|
@@ -25,20 +57,35 @@ function execute({ app, world }, bridge, events) {
|
|
|
25
57
|
modifier,
|
|
26
58
|
tags: [...bridge.data.gherkin.tags]
|
|
27
59
|
});
|
|
28
|
-
});
|
|
60
|
+
}, chosenTimeout.milliseconds);
|
|
29
61
|
group(featureTitle, () => {
|
|
30
62
|
let localApp;
|
|
31
63
|
const staticApp = getApp(app, world);
|
|
32
64
|
beforeEach(() => {
|
|
33
65
|
localApp = getApp(app, world);
|
|
34
66
|
});
|
|
35
|
-
bootstrapSetupHooks(bridge, staticApp, events);
|
|
36
|
-
bootstrapBeforeHooks(bridge, () => localApp, events
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
67
|
+
bootstrapSetupHooks(bridge, staticApp, events, [config, chosenTimeout]);
|
|
68
|
+
bootstrapBeforeHooks(bridge, bridge, () => localApp, events, [
|
|
69
|
+
config,
|
|
70
|
+
chosenTimeout
|
|
71
|
+
]);
|
|
72
|
+
bootstrapBackground(bridge, bridge, () => localApp, events, [
|
|
73
|
+
config,
|
|
74
|
+
chosenTimeout
|
|
75
|
+
]);
|
|
76
|
+
bootstrapScenarios(bridge, bridge, () => localApp, staticApp, events, [
|
|
77
|
+
config,
|
|
78
|
+
chosenTimeout
|
|
79
|
+
]);
|
|
80
|
+
bootstrapRules(bridge, () => localApp, staticApp, events, [
|
|
81
|
+
config,
|
|
82
|
+
chosenTimeout
|
|
83
|
+
]);
|
|
84
|
+
bootstrapAfterHooks(bridge, bridge, () => localApp, events, [
|
|
85
|
+
config,
|
|
86
|
+
chosenTimeout
|
|
87
|
+
]);
|
|
88
|
+
bootstrapTeardownHooks(bridge, staticApp, events, [config, chosenTimeout]);
|
|
42
89
|
});
|
|
43
90
|
afterAll(() => {
|
|
44
91
|
const failures = Query.find.failed(bridge);
|
|
@@ -51,23 +98,27 @@ function execute({ app, world }, bridge, events) {
|
|
|
51
98
|
});
|
|
52
99
|
});
|
|
53
100
|
}
|
|
54
|
-
function bootstrapBackground(bridge, localApp, events) {
|
|
101
|
+
function bootstrapBackground(root, bridge, localApp, events, [config, timeout]) {
|
|
55
102
|
const background = bridge.background;
|
|
56
103
|
if (!background)
|
|
57
104
|
return;
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (!scenarioBridge) {
|
|
63
|
-
throw new AutomationError(
|
|
64
|
-
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
65
|
-
);
|
|
66
|
-
}
|
|
105
|
+
const chosenTimeout = chooseTimeout(
|
|
106
|
+
timeout,
|
|
107
|
+
bridge.data.scope.timeout
|
|
108
|
+
).getTimeout(config).milliseconds;
|
|
67
109
|
const tags = bridge?.data?.gherkin?.tags ?? [];
|
|
68
110
|
if (tags.has("@skip") || tags.has("@skipped"))
|
|
69
111
|
return;
|
|
70
112
|
beforeEach(async () => {
|
|
113
|
+
const testName = expect.getState().currentTestName;
|
|
114
|
+
if (!testName)
|
|
115
|
+
throw new AutomationError("A Scenario must have a title");
|
|
116
|
+
const scenarioBridge = find(root, testName);
|
|
117
|
+
if (!scenarioBridge) {
|
|
118
|
+
throw new AutomationError(
|
|
119
|
+
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
120
|
+
);
|
|
121
|
+
}
|
|
71
122
|
const title = background.data.scope.title(background.data.gherkin);
|
|
72
123
|
events.before.emitStart({
|
|
73
124
|
title,
|
|
@@ -76,11 +127,20 @@ function bootstrapBackground(bridge, localApp, events) {
|
|
|
76
127
|
const steps = background.steps;
|
|
77
128
|
try {
|
|
78
129
|
for (const step of steps) {
|
|
79
|
-
await step.data.scope.execute(
|
|
130
|
+
await step.data.scope.execute(
|
|
131
|
+
background.data.gherkin,
|
|
132
|
+
step.data.gherkin,
|
|
133
|
+
localApp()
|
|
134
|
+
);
|
|
80
135
|
}
|
|
136
|
+
events.before.emitEnd({
|
|
137
|
+
title,
|
|
138
|
+
tags: [...tags],
|
|
139
|
+
status: "PASSED"
|
|
140
|
+
});
|
|
81
141
|
} catch (e) {
|
|
82
142
|
events.before.emitEnd({
|
|
83
|
-
title
|
|
143
|
+
title,
|
|
84
144
|
tags: [...tags],
|
|
85
145
|
status: "FAILED",
|
|
86
146
|
error: e
|
|
@@ -89,53 +149,83 @@ function bootstrapBackground(bridge, localApp, events) {
|
|
|
89
149
|
Test: ${testName}`;
|
|
90
150
|
throw new AutomationError(message, { cause: e });
|
|
91
151
|
}
|
|
92
|
-
});
|
|
152
|
+
}, chosenTimeout);
|
|
93
153
|
}
|
|
94
|
-
function bootstrapScenarios(bridge, localApp, staticApp, events) {
|
|
154
|
+
function bootstrapScenarios(root, bridge, localApp, staticApp, events, [config, timeout]) {
|
|
95
155
|
const { scenarios } = bridge;
|
|
156
|
+
const chosenTimeout = chooseTimeout(
|
|
157
|
+
timeout,
|
|
158
|
+
bridge.data.scope.timeout
|
|
159
|
+
).getTimeout(config);
|
|
96
160
|
scenarios.forEach((scenario) => {
|
|
97
161
|
if (isOutline(scenario)) {
|
|
98
|
-
bootstrapScenarioOutline(scenario, localApp, staticApp, events
|
|
162
|
+
bootstrapScenarioOutline(root, scenario, localApp, staticApp, events, [
|
|
163
|
+
config,
|
|
164
|
+
chosenTimeout
|
|
165
|
+
]);
|
|
99
166
|
return;
|
|
100
167
|
}
|
|
101
|
-
bootstrapScenario(scenario, localApp, events);
|
|
168
|
+
bootstrapScenario(scenario, localApp, events, [config, chosenTimeout]);
|
|
102
169
|
});
|
|
103
170
|
}
|
|
104
|
-
function bootstrapScenario(bridge, localApp, events) {
|
|
171
|
+
function bootstrapScenario(bridge, localApp, events, [config, timeout]) {
|
|
105
172
|
const { data } = bridge;
|
|
173
|
+
const chosenTimeout = chooseTimeout(
|
|
174
|
+
timeout,
|
|
175
|
+
bridge.data.scope.timeout
|
|
176
|
+
).getTimeout(config);
|
|
106
177
|
const scenarioName = data.scope.title(data.gherkin);
|
|
107
178
|
const test = getTestOrModifier(bridge);
|
|
108
|
-
test(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
113
|
-
try {
|
|
114
|
-
for (const step of bridge.steps) {
|
|
115
|
-
await step.data.scope.execute(step.data.gherkin, localApp());
|
|
116
|
-
}
|
|
117
|
-
} catch (e) {
|
|
118
|
-
events.scenario.emitEnd({
|
|
179
|
+
test(
|
|
180
|
+
scenarioName,
|
|
181
|
+
async () => {
|
|
182
|
+
events.scenario.emitStart({
|
|
119
183
|
title: scenarioName,
|
|
120
|
-
tags: [...data.gherkin.tags]
|
|
121
|
-
status: "FAILED",
|
|
122
|
-
error: e
|
|
184
|
+
tags: [...data.gherkin.tags]
|
|
123
185
|
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
186
|
+
try {
|
|
187
|
+
for (const step of bridge.steps) {
|
|
188
|
+
await step.data.scope.execute(
|
|
189
|
+
bridge.data.gherkin,
|
|
190
|
+
step.data.gherkin,
|
|
191
|
+
localApp()
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
bridge.report = { passed: true };
|
|
195
|
+
events.scenario.emitEnd({
|
|
196
|
+
title: scenarioName,
|
|
197
|
+
tags: [...data.gherkin.tags],
|
|
198
|
+
status: "PASSED"
|
|
199
|
+
});
|
|
200
|
+
} catch (e) {
|
|
201
|
+
events.scenario.emitEnd({
|
|
202
|
+
title: scenarioName,
|
|
203
|
+
tags: [...data.gherkin.tags],
|
|
204
|
+
status: "FAILED",
|
|
205
|
+
error: e
|
|
206
|
+
});
|
|
207
|
+
bridge.report = { passed: false, error: e };
|
|
208
|
+
const message = `${scenarioName} failed to execute.`;
|
|
209
|
+
throw new AutomationError(message, { cause: e });
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
chosenTimeout.milliseconds
|
|
213
|
+
);
|
|
128
214
|
}
|
|
129
215
|
function isOutline(data) {
|
|
130
216
|
return data instanceof ScenarioOutlineBridge;
|
|
131
217
|
}
|
|
132
|
-
function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
218
|
+
function bootstrapScenarioOutline(root, bridge, localApp, staticApp, events, [config, timeout]) {
|
|
133
219
|
const {
|
|
134
220
|
data: { scope, gherkin },
|
|
135
221
|
examples
|
|
136
222
|
} = bridge;
|
|
137
223
|
const title = scope.title(gherkin);
|
|
138
224
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
225
|
+
const chosenTimeout = chooseTimeout(
|
|
226
|
+
timeout,
|
|
227
|
+
bridge.data.scope.timeout
|
|
228
|
+
).getTimeout(config).milliseconds;
|
|
139
229
|
group(title, () => {
|
|
140
230
|
beforeAll(() => {
|
|
141
231
|
events.scenarioOutline.emitStart({
|
|
@@ -144,13 +234,16 @@ function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
|
144
234
|
tags: [...gherkin.tags]
|
|
145
235
|
});
|
|
146
236
|
});
|
|
147
|
-
bootstrapSetupHooks(bridge, staticApp, events);
|
|
148
|
-
bootstrapBeforeHooks(bridge, localApp, events);
|
|
237
|
+
bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]);
|
|
238
|
+
bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]);
|
|
149
239
|
examples.forEach((example) => {
|
|
150
|
-
bootstrapExamples(example, localApp, staticApp, events
|
|
240
|
+
bootstrapExamples(root, example, localApp, staticApp, events, [
|
|
241
|
+
config,
|
|
242
|
+
timeout
|
|
243
|
+
]);
|
|
151
244
|
});
|
|
152
|
-
bootstrapAfterHooks(bridge, localApp, events);
|
|
153
|
-
bootstrapTeardownHooks(bridge, staticApp, events);
|
|
245
|
+
bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]);
|
|
246
|
+
bootstrapTeardownHooks(bridge, staticApp, events, [config, timeout]);
|
|
154
247
|
afterAll(() => {
|
|
155
248
|
const failures = Query.find.failed(bridge);
|
|
156
249
|
const status = modifier === "skip" ? "SKIPPED" : failures.length === 0 ? "PASSED" : "FAILED";
|
|
@@ -160,18 +253,28 @@ function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
|
160
253
|
tags: [...gherkin.tags],
|
|
161
254
|
status
|
|
162
255
|
});
|
|
163
|
-
});
|
|
256
|
+
}, chosenTimeout);
|
|
164
257
|
});
|
|
165
258
|
}
|
|
166
|
-
function bootstrapExamples(example, localApp, staticApp, events) {
|
|
259
|
+
function bootstrapExamples(root, example, localApp, staticApp, events, timeout) {
|
|
167
260
|
const title = example.data.scope.title(example.data.gherkin);
|
|
168
261
|
const [group] = getGroupOrModifier(example);
|
|
169
262
|
group(title, () => {
|
|
170
|
-
bootstrapScenarios(example, localApp, staticApp, events);
|
|
263
|
+
bootstrapScenarios(root, example, localApp, staticApp, events, timeout);
|
|
171
264
|
});
|
|
172
265
|
}
|
|
173
|
-
function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
174
|
-
|
|
266
|
+
function bootstrapRules(bridge, localApp, staticApp, events, [config, timeout]) {
|
|
267
|
+
const chosenTimeout = chooseTimeout(
|
|
268
|
+
timeout,
|
|
269
|
+
bridge.data.scope.timeout
|
|
270
|
+
).getTimeout(config);
|
|
271
|
+
bridge.rules.forEach((rule) => {
|
|
272
|
+
const ruleTimeout = chooseTimeout(
|
|
273
|
+
chosenTimeout,
|
|
274
|
+
rule.data.scope.timeout
|
|
275
|
+
).getTimeout(config);
|
|
276
|
+
const transferTimeout = [config, ruleTimeout];
|
|
277
|
+
const { data } = rule;
|
|
175
278
|
const ruleName = data.scope.title(data.gherkin);
|
|
176
279
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
177
280
|
group(ruleName, () => {
|
|
@@ -182,14 +285,21 @@ function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
|
182
285
|
tags: [...data.gherkin.tags]
|
|
183
286
|
});
|
|
184
287
|
});
|
|
185
|
-
bootstrapSetupHooks(
|
|
186
|
-
bootstrapBeforeHooks(bridge, localApp, events);
|
|
187
|
-
bootstrapBackground(bridge, localApp, events);
|
|
188
|
-
bootstrapScenarios(
|
|
189
|
-
|
|
190
|
-
|
|
288
|
+
bootstrapSetupHooks(rule, staticApp, events, transferTimeout);
|
|
289
|
+
bootstrapBeforeHooks(bridge, rule, localApp, events, transferTimeout);
|
|
290
|
+
bootstrapBackground(bridge, rule, localApp, events, transferTimeout);
|
|
291
|
+
bootstrapScenarios(
|
|
292
|
+
bridge,
|
|
293
|
+
rule,
|
|
294
|
+
localApp,
|
|
295
|
+
staticApp,
|
|
296
|
+
events,
|
|
297
|
+
transferTimeout
|
|
298
|
+
);
|
|
299
|
+
bootstrapAfterHooks(bridge, rule, localApp, events, transferTimeout);
|
|
300
|
+
bootstrapTeardownHooks(rule, staticApp, events, transferTimeout);
|
|
191
301
|
afterAll(() => {
|
|
192
|
-
const failures = Query.find.failed(
|
|
302
|
+
const failures = Query.find.failed(rule);
|
|
193
303
|
const status = modifier === "skip" ? "SKIPPED" : failures.length === 0 ? "PASSED" : "FAILED";
|
|
194
304
|
events.rule.emitEnd({
|
|
195
305
|
title: ruleName,
|
|
@@ -197,7 +307,7 @@ function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
|
197
307
|
tags: [...data.gherkin.tags],
|
|
198
308
|
status
|
|
199
309
|
});
|
|
200
|
-
});
|
|
310
|
+
}, ruleTimeout.milliseconds);
|
|
201
311
|
});
|
|
202
312
|
});
|
|
203
313
|
}
|
|
@@ -221,19 +331,29 @@ function getTestOrModifier({ data }) {
|
|
|
221
331
|
}
|
|
222
332
|
return it;
|
|
223
333
|
}
|
|
224
|
-
function bootstrapBeforeHooks(bridge, localApp, events) {
|
|
334
|
+
function bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]) {
|
|
335
|
+
const chosenTimeout = chooseTimeout(
|
|
336
|
+
timeout,
|
|
337
|
+
bridge.data.scope.timeout
|
|
338
|
+
).getTimeout(config);
|
|
225
339
|
bridge.data.scope.hooks.before.forEach((hook) => {
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const scenarioBridge = find(bridge, testName);
|
|
230
|
-
if (!scenarioBridge) {
|
|
231
|
-
throw new AutomationError(
|
|
232
|
-
`No matching scenario was found matching the test name: ${testName}`
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
340
|
+
const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(
|
|
341
|
+
config
|
|
342
|
+
).milliseconds;
|
|
236
343
|
beforeEach(async () => {
|
|
344
|
+
const testName = expect.getState().currentTestName;
|
|
345
|
+
if (!testName)
|
|
346
|
+
throw new AutomationError("A Scenario must have a title");
|
|
347
|
+
const scenarioBridge = find(root, testName);
|
|
348
|
+
if (!scenarioBridge) {
|
|
349
|
+
throw new AutomationError(
|
|
350
|
+
`No matching scenario was found matching the test name: ${testName}`
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
if (!hook.canExecute(...bridge.data.gherkin.tags)) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
237
357
|
events.before.emitStart({
|
|
238
358
|
title: hook.name,
|
|
239
359
|
tags: [...tags]
|
|
@@ -249,13 +369,24 @@ function bootstrapBeforeHooks(bridge, localApp, events) {
|
|
|
249
369
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
250
370
|
throw new AutomationError(message, { cause: report.error });
|
|
251
371
|
}
|
|
252
|
-
});
|
|
372
|
+
}, hookTimeout);
|
|
253
373
|
});
|
|
254
374
|
}
|
|
255
|
-
function bootstrapSetupHooks(bridge, staticApp, events) {
|
|
375
|
+
function bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]) {
|
|
376
|
+
const chosenTimeout = chooseTimeout(
|
|
377
|
+
timeout,
|
|
378
|
+
bridge.data.scope.timeout
|
|
379
|
+
).getTimeout(config).milliseconds;
|
|
256
380
|
bridge.data.scope.hooks.setup.forEach((hook) => {
|
|
381
|
+
const hookTimeout = chooseTimeout(
|
|
382
|
+
Timeout2.from(chosenTimeout),
|
|
383
|
+
hook.timeout
|
|
384
|
+
).getTimeout(config).milliseconds;
|
|
257
385
|
const tags = bridge.data.gherkin.tags ?? [];
|
|
258
386
|
beforeAll(async () => {
|
|
387
|
+
if (!hook.canExecute(...tags)) {
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
259
390
|
events.setup.emitStart({
|
|
260
391
|
title: hook.name
|
|
261
392
|
});
|
|
@@ -269,22 +400,33 @@ function bootstrapSetupHooks(bridge, staticApp, events) {
|
|
|
269
400
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
270
401
|
throw new AutomationError(message, { cause: report.error });
|
|
271
402
|
}
|
|
272
|
-
});
|
|
403
|
+
}, hookTimeout);
|
|
273
404
|
});
|
|
274
405
|
}
|
|
275
|
-
function bootstrapAfterHooks(bridge, localApp, events) {
|
|
406
|
+
function bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]) {
|
|
407
|
+
const chosenTimeout = chooseTimeout(
|
|
408
|
+
timeout,
|
|
409
|
+
bridge.data.scope.timeout
|
|
410
|
+
).getTimeout(config).milliseconds;
|
|
276
411
|
bridge.data.scope.hooks.after.forEach((hook) => {
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
if (!scenarioBridge) {
|
|
282
|
-
throw new AutomationError(
|
|
283
|
-
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
284
|
-
);
|
|
285
|
-
}
|
|
286
|
-
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
412
|
+
const hookTimeout = chooseTimeout(
|
|
413
|
+
Timeout2.from(chosenTimeout),
|
|
414
|
+
hook.timeout
|
|
415
|
+
).getTimeout(config).milliseconds;
|
|
287
416
|
afterEach(async () => {
|
|
417
|
+
const testName = expect.getState().currentTestName;
|
|
418
|
+
if (!testName)
|
|
419
|
+
throw new AutomationError("A Scenario must have a title");
|
|
420
|
+
const scenarioBridge = find(root, testName);
|
|
421
|
+
if (!scenarioBridge) {
|
|
422
|
+
throw new AutomationError(
|
|
423
|
+
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
|
+
if (!hook.canExecute(...bridge.data.gherkin.tags)) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
288
430
|
events.after.emitStart({
|
|
289
431
|
title: hook.name,
|
|
290
432
|
tags: [...tags]
|
|
@@ -300,12 +442,19 @@ function bootstrapAfterHooks(bridge, localApp, events) {
|
|
|
300
442
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
301
443
|
throw new AutomationError(message, { cause: report.error });
|
|
302
444
|
}
|
|
303
|
-
});
|
|
445
|
+
}, hookTimeout);
|
|
304
446
|
});
|
|
305
447
|
}
|
|
306
|
-
function bootstrapTeardownHooks(bridge, staticApp, event) {
|
|
448
|
+
function bootstrapTeardownHooks(bridge, staticApp, event, [config, timeout]) {
|
|
307
449
|
const tags = bridge.data.gherkin.tags ?? [];
|
|
450
|
+
const chosenTimeout = chooseTimeout(
|
|
451
|
+
timeout,
|
|
452
|
+
bridge.data.scope.timeout
|
|
453
|
+
).getTimeout(config);
|
|
308
454
|
bridge.data.scope.hooks.teardown.forEach((hook) => {
|
|
455
|
+
const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(
|
|
456
|
+
config
|
|
457
|
+
).milliseconds;
|
|
309
458
|
afterAll(async () => {
|
|
310
459
|
event.teardown.emitStart({
|
|
311
460
|
title: hook.name,
|
|
@@ -322,12 +471,15 @@ function bootstrapTeardownHooks(bridge, staticApp, event) {
|
|
|
322
471
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
323
472
|
throw new AutomationError(message, { cause: report.error });
|
|
324
473
|
}
|
|
325
|
-
});
|
|
474
|
+
}, hookTimeout);
|
|
326
475
|
});
|
|
327
476
|
}
|
|
328
477
|
|
|
329
478
|
// src/index.ts
|
|
330
479
|
var src_default = execute;
|
|
331
480
|
export {
|
|
332
|
-
src_default as default
|
|
481
|
+
src_default as default,
|
|
482
|
+
execute,
|
|
483
|
+
getTimeout
|
|
333
484
|
};
|
|
485
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/executor.ts","../../src/timeout-selector.ts","../../src/index.ts"],"sourcesContent":["import {\n ExamplesBridge,\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n find\n} from \"@autometa/test-builder\";\nimport {\n describe,\n it,\n expect,\n beforeEach,\n afterEach,\n afterAll,\n beforeAll\n} from \"@jest/globals\";\nimport { type App, AutometaApp, AutometaWorld, getApp } from \"@autometa/app\";\nimport { Class } from \"@autometa/types\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Query } from \"@autometa/test-builder\";\nimport { Config } from \"@autometa/config\";\nimport { chooseTimeout } from \"./timeout-selector\";\nimport { NullTimeout, Timeout } from \"@autometa/scopes\";\nexport function execute(\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n) {\n config.current;\n const featureTitle = bridge.data.scope.title(bridge.data.gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n const chosenTimeout = chooseTimeout(\n new NullTimeout(),\n bridge.data.scope.timeout\n ).getTimeout(config);\n beforeAll(() => {\n events.feature.emitStart({\n title: featureTitle,\n path: bridge.data.scope.path,\n modifier,\n tags: [...bridge.data.gherkin.tags]\n });\n }, chosenTimeout.milliseconds);\n group(featureTitle, () => {\n let localApp: App;\n const staticApp: App = getApp(app, world);\n beforeEach(() => {\n localApp = getApp(app, world);\n });\n\n bootstrapSetupHooks(bridge, staticApp, events, [config, chosenTimeout]);\n bootstrapBeforeHooks(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapBackground(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapScenarios(bridge, bridge, () => localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapRules(bridge, () => localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapAfterHooks(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapTeardownHooks(bridge, staticApp, events, [config, chosenTimeout]);\n });\n afterAll(() => {\n const failures = Query.find.failed(bridge);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.feature.emitEnd({\n title: featureTitle,\n modifier,\n tags: [...bridge.data.gherkin.tags],\n status: status\n });\n });\n}\n\nexport function bootstrapBackground(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const background = bridge.background;\n if (!background) return;\n\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n\n const tags = bridge?.data?.gherkin?.tags ?? [];\n if (tags.has(\"@skip\") || tags.has(\"@skipped\")) return;\n beforeEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario bridge was found matching the test name: ${testName}`\n );\n }\n const title = background.data.scope.title(background.data.gherkin);\n events.before.emitStart({\n title: title,\n tags: [...tags]\n });\n const steps = background.steps;\n try {\n for (const step of steps) {\n await step.data.scope.execute(\n background.data.gherkin,\n step.data.gherkin,\n localApp()\n );\n }\n events.before.emitEnd({\n title: title,\n tags: [...tags],\n status: \"PASSED\"\n });\n } catch (e) {\n events.before.emitEnd({\n title: title,\n tags: [...tags],\n status: \"FAILED\",\n error: e as Error\n });\n const message = `${title} failed to execute.\nTest: ${testName}`;\n throw new AutomationError(message, { cause: e as Error });\n }\n }, chosenTimeout);\n}\nexport function bootstrapScenarios(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ExamplesBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const { scenarios } = bridge;\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n scenarios.forEach((scenario) => {\n if (isOutline(scenario)) {\n bootstrapScenarioOutline(root, scenario, localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n return;\n }\n bootstrapScenario(scenario, localApp, events, [config, chosenTimeout]);\n });\n}\n\nexport function bootstrapScenario(\n bridge: ScenarioBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const { data } = bridge;\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n const scenarioName = data.scope.title(data.gherkin);\n const test = getTestOrModifier(bridge);\n test(\n scenarioName,\n async () => {\n events.scenario.emitStart({\n title: scenarioName,\n tags: [...data.gherkin.tags]\n });\n try {\n for (const step of bridge.steps) {\n await step.data.scope.execute(\n bridge.data.gherkin,\n step.data.gherkin,\n localApp()\n );\n }\n bridge.report = { passed: true };\n events.scenario.emitEnd({\n title: scenarioName,\n tags: [...data.gherkin.tags],\n status: \"PASSED\"\n });\n } catch (e) {\n events.scenario.emitEnd({\n title: scenarioName,\n tags: [...data.gherkin.tags],\n status: \"FAILED\",\n error: e as Error\n });\n bridge.report = { passed: false, error: e as Error };\n const message = `${scenarioName} failed to execute.`;\n throw new AutomationError(message, { cause: e as Error });\n }\n },\n chosenTimeout.milliseconds\n );\n}\n\nfunction isOutline(\n data: ScenarioBridge | ScenarioOutlineBridge\n): data is ScenarioOutlineBridge {\n return data instanceof ScenarioOutlineBridge;\n}\n\nexport function bootstrapScenarioOutline(\n root: FeatureBridge,\n bridge: ScenarioOutlineBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const {\n data: { scope, gherkin },\n examples\n } = bridge;\n const title = scope.title(gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n group(title, () => {\n beforeAll(() => {\n events.scenarioOutline.emitStart({\n title,\n modifier,\n tags: [...gherkin.tags]\n });\n });\n bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]);\n bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]);\n examples.forEach((example) => {\n bootstrapExamples(root, example, localApp, staticApp, events, [\n config,\n timeout\n ]);\n });\n bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]);\n bootstrapTeardownHooks(bridge, staticApp, events, [config, timeout]);\n afterAll(() => {\n const failures = Query.find.failed(bridge);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.scenarioOutline.emitEnd({\n title,\n modifier,\n tags: [...gherkin.tags],\n status: status\n });\n }, chosenTimeout);\n });\n}\nexport function bootstrapExamples(\n root: FeatureBridge,\n example: ExamplesBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n timeout: [Config, Timeout]\n) {\n const title = example.data.scope.title(example.data.gherkin);\n const [group] = getGroupOrModifier(example);\n group(title, () => {\n bootstrapScenarios(root, example, localApp, staticApp, events, timeout);\n });\n}\n\nexport function bootstrapRules(\n bridge: FeatureBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n bridge.rules.forEach((rule) => {\n const ruleTimeout = chooseTimeout(\n chosenTimeout,\n rule.data.scope.timeout\n ).getTimeout(config);\n const transferTimeout: [Config, Timeout] = [config, ruleTimeout];\n const { data } = rule;\n const ruleName = data.scope.title(data.gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n\n group(ruleName, () => {\n beforeAll(() => {\n events.rule.emitStart({\n title: ruleName,\n modifier,\n tags: [...data.gherkin.tags]\n });\n });\n bootstrapSetupHooks(rule, staticApp, events, transferTimeout);\n bootstrapBeforeHooks(bridge, rule, localApp, events, transferTimeout);\n bootstrapBackground(bridge, rule, localApp, events, transferTimeout);\n bootstrapScenarios(\n bridge,\n rule,\n localApp,\n staticApp,\n events,\n transferTimeout\n );\n bootstrapAfterHooks(bridge, rule, localApp, events, transferTimeout);\n bootstrapTeardownHooks(rule, staticApp, events, transferTimeout);\n\n afterAll(() => {\n const failures = Query.find.failed(rule);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.rule.emitEnd({\n title: ruleName,\n modifier,\n tags: [...data.gherkin.tags],\n status: status\n });\n }, ruleTimeout.milliseconds);\n });\n });\n}\n\nfunction getGroupOrModifier({\n data\n}: RuleBridge | FeatureBridge | ScenarioOutlineBridge | ExamplesBridge) {\n if (data.gherkin.tags?.has(\"@skip\") || data.gherkin.tags?.has(\"@skipped\")) {\n return [describe.skip, \"skip\"] as const;\n }\n if (data.gherkin.tags?.has(\"@only\")) {\n return [describe.only, \"only\"] as const;\n }\n return [describe, undefined] as const;\n}\n\nfunction getTestOrModifier({ data }: ScenarioBridge) {\n if (data.gherkin.tags?.has(\"@skip\") || data.gherkin.tags?.has(\"@skipped\")) {\n return it.skip;\n }\n if (data.gherkin.tags?.has(\"@only\")) {\n return it.only;\n }\n return it;\n}\n\nexport function bootstrapBeforeHooks(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n\n bridge.data.scope.hooks.before.forEach((hook) => {\n const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(\n config\n ).milliseconds;\n\n beforeEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario was found matching the test name: ${testName}`\n );\n }\n if (!hook.canExecute(...bridge.data.gherkin.tags)) {\n return;\n }\n const tags = scenarioBridge?.data?.gherkin?.tags ?? [];\n events.before.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n const report = await hook.execute(localApp(), ...tags);\n events.before.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\nexport function bootstrapSetupHooks(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n bridge.data.scope.hooks.setup.forEach((hook) => {\n const hookTimeout = chooseTimeout(\n Timeout.from(chosenTimeout),\n hook.timeout\n ).getTimeout(config).milliseconds;\n const tags = bridge.data.gherkin.tags ?? [];\n\n beforeAll(async () => {\n if (!hook.canExecute(...tags)) {\n return;\n }\n events.setup.emitStart({\n title: hook.name\n });\n const report = await hook.execute(staticApp, ...tags);\n\n events.setup.emitEnd({\n title: hook.name,\n status: report.status,\n error: report.error\n });\n\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n\nexport function bootstrapAfterHooks(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n bridge.data.scope.hooks.after.forEach((hook) => {\n const hookTimeout = chooseTimeout(\n Timeout.from(chosenTimeout),\n hook.timeout\n ).getTimeout(config).milliseconds;\n afterEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario bridge was found matching the test name: ${testName}`\n );\n }\n if (!hook.canExecute(...bridge.data.gherkin.tags)) {\n return;\n }\n const tags = scenarioBridge?.data?.gherkin?.tags ?? [];\n events.after.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n\n const report = await hook.execute(localApp(), ...tags);\n events.after.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n\nexport function bootstrapTeardownHooks(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n staticApp: App,\n event: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const tags = bridge.data.gherkin.tags ?? [];\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n bridge.data.scope.hooks.teardown.forEach((hook) => {\n const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(\n config\n ).milliseconds;\n afterAll(async () => {\n event.teardown.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n const report = await hook.execute(staticApp, ...tags);\n event.teardown.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n","import { NullTimeout, Timeout } from \"@autometa/scopes\";\nimport { Config } from \"@autometa/config\";\nexport function getTimeout(target: Timeout | undefined, config: Config) {\n if (target && !(target instanceof NullTimeout)) {\n return target;\n }\n return Timeout.from(config?.current?.test?.timeout);\n}\n\nexport function chooseTimeout(\n timeout1: Timeout | undefined,\n timeout2: Timeout | undefined\n) {\n if (timeout2 instanceof Timeout && !(timeout2 instanceof NullTimeout)) {\n return {\n getTimeout: getTimeout.bind(null, timeout2)\n };\n }\n if (timeout1 instanceof Timeout && !(timeout1 instanceof NullTimeout)) {\n return {\n getTimeout: getTimeout.bind(null, timeout1)\n };\n }\n return {\n getTimeout: getTimeout.bind(null, Timeout.from(0))\n };\n}\n","import { execute } from \"./executor\";\nexport { execute } from \"./executor\";\nexport { getTimeout } from \"./timeout-selector\";\nexport default execute;\n"],"mappings":"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","names":["NullTimeout","Timeout"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FeatureBridge } from '@autometa/test-builder';
|
|
2
|
+
import { AutometaApp, AutometaWorld } from '@autometa/app';
|
|
3
|
+
import { Class } from '@autometa/types';
|
|
4
|
+
import { TestEventEmitter } from '@autometa/events';
|
|
5
|
+
import { Config } from '@autometa/config';
|
|
6
|
+
import { Timeout } from '@autometa/scopes';
|
|
7
|
+
|
|
8
|
+
declare function execute({ app, world }: {
|
|
9
|
+
app: Class<AutometaApp>;
|
|
10
|
+
world: Class<AutometaWorld>;
|
|
11
|
+
}, bridge: FeatureBridge, events: TestEventEmitter, config: Config): void;
|
|
12
|
+
|
|
13
|
+
declare function getTimeout(target: Timeout | undefined, config: Config): Timeout;
|
|
14
|
+
|
|
15
|
+
export { execute as default, execute, getTimeout };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,14 @@ import { FeatureBridge } from '@autometa/test-builder';
|
|
|
2
2
|
import { AutometaApp, AutometaWorld } from '@autometa/app';
|
|
3
3
|
import { Class } from '@autometa/types';
|
|
4
4
|
import { TestEventEmitter } from '@autometa/events';
|
|
5
|
+
import { Config } from '@autometa/config';
|
|
6
|
+
import { Timeout } from '@autometa/scopes';
|
|
5
7
|
|
|
6
8
|
declare function execute({ app, world }: {
|
|
7
9
|
app: Class<AutometaApp>;
|
|
8
10
|
world: Class<AutometaWorld>;
|
|
9
|
-
}, bridge: FeatureBridge, events: TestEventEmitter): void;
|
|
11
|
+
}, bridge: FeatureBridge, events: TestEventEmitter, config: Config): void;
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
declare function getTimeout(target: Timeout | undefined, config: Config): Timeout;
|
|
14
|
+
|
|
15
|
+
export { execute as default, execute, getTimeout };
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
default: () => src_default
|
|
23
|
+
default: () => src_default,
|
|
24
|
+
execute: () => execute,
|
|
25
|
+
getTimeout: () => getTimeout
|
|
24
26
|
});
|
|
25
27
|
module.exports = __toCommonJS(src_exports);
|
|
26
28
|
|
|
@@ -30,9 +32,41 @@ var import_globals = require("@jest/globals");
|
|
|
30
32
|
var import_app = require("@autometa/app");
|
|
31
33
|
var import_errors = require("@autometa/errors");
|
|
32
34
|
var import_test_builder2 = require("@autometa/test-builder");
|
|
33
|
-
|
|
35
|
+
|
|
36
|
+
// src/timeout-selector.ts
|
|
37
|
+
var import_scopes = require("@autometa/scopes");
|
|
38
|
+
function getTimeout(target, config) {
|
|
39
|
+
if (target && !(target instanceof import_scopes.NullTimeout)) {
|
|
40
|
+
return target;
|
|
41
|
+
}
|
|
42
|
+
return import_scopes.Timeout.from(config?.current?.test?.timeout);
|
|
43
|
+
}
|
|
44
|
+
function chooseTimeout(timeout1, timeout2) {
|
|
45
|
+
if (timeout2 instanceof import_scopes.Timeout && !(timeout2 instanceof import_scopes.NullTimeout)) {
|
|
46
|
+
return {
|
|
47
|
+
getTimeout: getTimeout.bind(null, timeout2)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (timeout1 instanceof import_scopes.Timeout && !(timeout1 instanceof import_scopes.NullTimeout)) {
|
|
51
|
+
return {
|
|
52
|
+
getTimeout: getTimeout.bind(null, timeout1)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
getTimeout: getTimeout.bind(null, import_scopes.Timeout.from(0))
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/executor.ts
|
|
61
|
+
var import_scopes2 = require("@autometa/scopes");
|
|
62
|
+
function execute({ app, world }, bridge, events, config) {
|
|
63
|
+
config.current;
|
|
34
64
|
const featureTitle = bridge.data.scope.title(bridge.data.gherkin);
|
|
35
65
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
66
|
+
const chosenTimeout = chooseTimeout(
|
|
67
|
+
new import_scopes2.NullTimeout(),
|
|
68
|
+
bridge.data.scope.timeout
|
|
69
|
+
).getTimeout(config);
|
|
36
70
|
(0, import_globals.beforeAll)(() => {
|
|
37
71
|
events.feature.emitStart({
|
|
38
72
|
title: featureTitle,
|
|
@@ -40,20 +74,35 @@ function execute({ app, world }, bridge, events) {
|
|
|
40
74
|
modifier,
|
|
41
75
|
tags: [...bridge.data.gherkin.tags]
|
|
42
76
|
});
|
|
43
|
-
});
|
|
77
|
+
}, chosenTimeout.milliseconds);
|
|
44
78
|
group(featureTitle, () => {
|
|
45
79
|
let localApp;
|
|
46
80
|
const staticApp = (0, import_app.getApp)(app, world);
|
|
47
81
|
(0, import_globals.beforeEach)(() => {
|
|
48
82
|
localApp = (0, import_app.getApp)(app, world);
|
|
49
83
|
});
|
|
50
|
-
bootstrapSetupHooks(bridge, staticApp, events);
|
|
51
|
-
bootstrapBeforeHooks(bridge, () => localApp, events
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
84
|
+
bootstrapSetupHooks(bridge, staticApp, events, [config, chosenTimeout]);
|
|
85
|
+
bootstrapBeforeHooks(bridge, bridge, () => localApp, events, [
|
|
86
|
+
config,
|
|
87
|
+
chosenTimeout
|
|
88
|
+
]);
|
|
89
|
+
bootstrapBackground(bridge, bridge, () => localApp, events, [
|
|
90
|
+
config,
|
|
91
|
+
chosenTimeout
|
|
92
|
+
]);
|
|
93
|
+
bootstrapScenarios(bridge, bridge, () => localApp, staticApp, events, [
|
|
94
|
+
config,
|
|
95
|
+
chosenTimeout
|
|
96
|
+
]);
|
|
97
|
+
bootstrapRules(bridge, () => localApp, staticApp, events, [
|
|
98
|
+
config,
|
|
99
|
+
chosenTimeout
|
|
100
|
+
]);
|
|
101
|
+
bootstrapAfterHooks(bridge, bridge, () => localApp, events, [
|
|
102
|
+
config,
|
|
103
|
+
chosenTimeout
|
|
104
|
+
]);
|
|
105
|
+
bootstrapTeardownHooks(bridge, staticApp, events, [config, chosenTimeout]);
|
|
57
106
|
});
|
|
58
107
|
(0, import_globals.afterAll)(() => {
|
|
59
108
|
const failures = import_test_builder2.Query.find.failed(bridge);
|
|
@@ -66,23 +115,27 @@ function execute({ app, world }, bridge, events) {
|
|
|
66
115
|
});
|
|
67
116
|
});
|
|
68
117
|
}
|
|
69
|
-
function bootstrapBackground(bridge, localApp, events) {
|
|
118
|
+
function bootstrapBackground(root, bridge, localApp, events, [config, timeout]) {
|
|
70
119
|
const background = bridge.background;
|
|
71
120
|
if (!background)
|
|
72
121
|
return;
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if (!scenarioBridge) {
|
|
78
|
-
throw new import_errors.AutomationError(
|
|
79
|
-
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
80
|
-
);
|
|
81
|
-
}
|
|
122
|
+
const chosenTimeout = chooseTimeout(
|
|
123
|
+
timeout,
|
|
124
|
+
bridge.data.scope.timeout
|
|
125
|
+
).getTimeout(config).milliseconds;
|
|
82
126
|
const tags = bridge?.data?.gherkin?.tags ?? [];
|
|
83
127
|
if (tags.has("@skip") || tags.has("@skipped"))
|
|
84
128
|
return;
|
|
85
129
|
(0, import_globals.beforeEach)(async () => {
|
|
130
|
+
const testName = import_globals.expect.getState().currentTestName;
|
|
131
|
+
if (!testName)
|
|
132
|
+
throw new import_errors.AutomationError("A Scenario must have a title");
|
|
133
|
+
const scenarioBridge = (0, import_test_builder.find)(root, testName);
|
|
134
|
+
if (!scenarioBridge) {
|
|
135
|
+
throw new import_errors.AutomationError(
|
|
136
|
+
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
86
139
|
const title = background.data.scope.title(background.data.gherkin);
|
|
87
140
|
events.before.emitStart({
|
|
88
141
|
title,
|
|
@@ -91,11 +144,20 @@ function bootstrapBackground(bridge, localApp, events) {
|
|
|
91
144
|
const steps = background.steps;
|
|
92
145
|
try {
|
|
93
146
|
for (const step of steps) {
|
|
94
|
-
await step.data.scope.execute(
|
|
147
|
+
await step.data.scope.execute(
|
|
148
|
+
background.data.gherkin,
|
|
149
|
+
step.data.gherkin,
|
|
150
|
+
localApp()
|
|
151
|
+
);
|
|
95
152
|
}
|
|
153
|
+
events.before.emitEnd({
|
|
154
|
+
title,
|
|
155
|
+
tags: [...tags],
|
|
156
|
+
status: "PASSED"
|
|
157
|
+
});
|
|
96
158
|
} catch (e) {
|
|
97
159
|
events.before.emitEnd({
|
|
98
|
-
title
|
|
160
|
+
title,
|
|
99
161
|
tags: [...tags],
|
|
100
162
|
status: "FAILED",
|
|
101
163
|
error: e
|
|
@@ -104,53 +166,83 @@ function bootstrapBackground(bridge, localApp, events) {
|
|
|
104
166
|
Test: ${testName}`;
|
|
105
167
|
throw new import_errors.AutomationError(message, { cause: e });
|
|
106
168
|
}
|
|
107
|
-
});
|
|
169
|
+
}, chosenTimeout);
|
|
108
170
|
}
|
|
109
|
-
function bootstrapScenarios(bridge, localApp, staticApp, events) {
|
|
171
|
+
function bootstrapScenarios(root, bridge, localApp, staticApp, events, [config, timeout]) {
|
|
110
172
|
const { scenarios } = bridge;
|
|
173
|
+
const chosenTimeout = chooseTimeout(
|
|
174
|
+
timeout,
|
|
175
|
+
bridge.data.scope.timeout
|
|
176
|
+
).getTimeout(config);
|
|
111
177
|
scenarios.forEach((scenario) => {
|
|
112
178
|
if (isOutline(scenario)) {
|
|
113
|
-
bootstrapScenarioOutline(scenario, localApp, staticApp, events
|
|
179
|
+
bootstrapScenarioOutline(root, scenario, localApp, staticApp, events, [
|
|
180
|
+
config,
|
|
181
|
+
chosenTimeout
|
|
182
|
+
]);
|
|
114
183
|
return;
|
|
115
184
|
}
|
|
116
|
-
bootstrapScenario(scenario, localApp, events);
|
|
185
|
+
bootstrapScenario(scenario, localApp, events, [config, chosenTimeout]);
|
|
117
186
|
});
|
|
118
187
|
}
|
|
119
|
-
function bootstrapScenario(bridge, localApp, events) {
|
|
188
|
+
function bootstrapScenario(bridge, localApp, events, [config, timeout]) {
|
|
120
189
|
const { data } = bridge;
|
|
190
|
+
const chosenTimeout = chooseTimeout(
|
|
191
|
+
timeout,
|
|
192
|
+
bridge.data.scope.timeout
|
|
193
|
+
).getTimeout(config);
|
|
121
194
|
const scenarioName = data.scope.title(data.gherkin);
|
|
122
195
|
const test = getTestOrModifier(bridge);
|
|
123
|
-
test(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
});
|
|
128
|
-
try {
|
|
129
|
-
for (const step of bridge.steps) {
|
|
130
|
-
await step.data.scope.execute(step.data.gherkin, localApp());
|
|
131
|
-
}
|
|
132
|
-
} catch (e) {
|
|
133
|
-
events.scenario.emitEnd({
|
|
196
|
+
test(
|
|
197
|
+
scenarioName,
|
|
198
|
+
async () => {
|
|
199
|
+
events.scenario.emitStart({
|
|
134
200
|
title: scenarioName,
|
|
135
|
-
tags: [...data.gherkin.tags]
|
|
136
|
-
status: "FAILED",
|
|
137
|
-
error: e
|
|
201
|
+
tags: [...data.gherkin.tags]
|
|
138
202
|
});
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
203
|
+
try {
|
|
204
|
+
for (const step of bridge.steps) {
|
|
205
|
+
await step.data.scope.execute(
|
|
206
|
+
bridge.data.gherkin,
|
|
207
|
+
step.data.gherkin,
|
|
208
|
+
localApp()
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
bridge.report = { passed: true };
|
|
212
|
+
events.scenario.emitEnd({
|
|
213
|
+
title: scenarioName,
|
|
214
|
+
tags: [...data.gherkin.tags],
|
|
215
|
+
status: "PASSED"
|
|
216
|
+
});
|
|
217
|
+
} catch (e) {
|
|
218
|
+
events.scenario.emitEnd({
|
|
219
|
+
title: scenarioName,
|
|
220
|
+
tags: [...data.gherkin.tags],
|
|
221
|
+
status: "FAILED",
|
|
222
|
+
error: e
|
|
223
|
+
});
|
|
224
|
+
bridge.report = { passed: false, error: e };
|
|
225
|
+
const message = `${scenarioName} failed to execute.`;
|
|
226
|
+
throw new import_errors.AutomationError(message, { cause: e });
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
chosenTimeout.milliseconds
|
|
230
|
+
);
|
|
143
231
|
}
|
|
144
232
|
function isOutline(data) {
|
|
145
233
|
return data instanceof import_test_builder.ScenarioOutlineBridge;
|
|
146
234
|
}
|
|
147
|
-
function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
235
|
+
function bootstrapScenarioOutline(root, bridge, localApp, staticApp, events, [config, timeout]) {
|
|
148
236
|
const {
|
|
149
237
|
data: { scope, gherkin },
|
|
150
238
|
examples
|
|
151
239
|
} = bridge;
|
|
152
240
|
const title = scope.title(gherkin);
|
|
153
241
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
242
|
+
const chosenTimeout = chooseTimeout(
|
|
243
|
+
timeout,
|
|
244
|
+
bridge.data.scope.timeout
|
|
245
|
+
).getTimeout(config).milliseconds;
|
|
154
246
|
group(title, () => {
|
|
155
247
|
(0, import_globals.beforeAll)(() => {
|
|
156
248
|
events.scenarioOutline.emitStart({
|
|
@@ -159,13 +251,16 @@ function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
|
159
251
|
tags: [...gherkin.tags]
|
|
160
252
|
});
|
|
161
253
|
});
|
|
162
|
-
bootstrapSetupHooks(bridge, staticApp, events);
|
|
163
|
-
bootstrapBeforeHooks(bridge, localApp, events);
|
|
254
|
+
bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]);
|
|
255
|
+
bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]);
|
|
164
256
|
examples.forEach((example) => {
|
|
165
|
-
bootstrapExamples(example, localApp, staticApp, events
|
|
257
|
+
bootstrapExamples(root, example, localApp, staticApp, events, [
|
|
258
|
+
config,
|
|
259
|
+
timeout
|
|
260
|
+
]);
|
|
166
261
|
});
|
|
167
|
-
bootstrapAfterHooks(bridge, localApp, events);
|
|
168
|
-
bootstrapTeardownHooks(bridge, staticApp, events);
|
|
262
|
+
bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]);
|
|
263
|
+
bootstrapTeardownHooks(bridge, staticApp, events, [config, timeout]);
|
|
169
264
|
(0, import_globals.afterAll)(() => {
|
|
170
265
|
const failures = import_test_builder2.Query.find.failed(bridge);
|
|
171
266
|
const status = modifier === "skip" ? "SKIPPED" : failures.length === 0 ? "PASSED" : "FAILED";
|
|
@@ -175,18 +270,28 @@ function bootstrapScenarioOutline(bridge, localApp, staticApp, events) {
|
|
|
175
270
|
tags: [...gherkin.tags],
|
|
176
271
|
status
|
|
177
272
|
});
|
|
178
|
-
});
|
|
273
|
+
}, chosenTimeout);
|
|
179
274
|
});
|
|
180
275
|
}
|
|
181
|
-
function bootstrapExamples(example, localApp, staticApp, events) {
|
|
276
|
+
function bootstrapExamples(root, example, localApp, staticApp, events, timeout) {
|
|
182
277
|
const title = example.data.scope.title(example.data.gherkin);
|
|
183
278
|
const [group] = getGroupOrModifier(example);
|
|
184
279
|
group(title, () => {
|
|
185
|
-
bootstrapScenarios(example, localApp, staticApp, events);
|
|
280
|
+
bootstrapScenarios(root, example, localApp, staticApp, events, timeout);
|
|
186
281
|
});
|
|
187
282
|
}
|
|
188
|
-
function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
189
|
-
|
|
283
|
+
function bootstrapRules(bridge, localApp, staticApp, events, [config, timeout]) {
|
|
284
|
+
const chosenTimeout = chooseTimeout(
|
|
285
|
+
timeout,
|
|
286
|
+
bridge.data.scope.timeout
|
|
287
|
+
).getTimeout(config);
|
|
288
|
+
bridge.rules.forEach((rule) => {
|
|
289
|
+
const ruleTimeout = chooseTimeout(
|
|
290
|
+
chosenTimeout,
|
|
291
|
+
rule.data.scope.timeout
|
|
292
|
+
).getTimeout(config);
|
|
293
|
+
const transferTimeout = [config, ruleTimeout];
|
|
294
|
+
const { data } = rule;
|
|
190
295
|
const ruleName = data.scope.title(data.gherkin);
|
|
191
296
|
const [group, modifier] = getGroupOrModifier(bridge);
|
|
192
297
|
group(ruleName, () => {
|
|
@@ -197,14 +302,21 @@ function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
|
197
302
|
tags: [...data.gherkin.tags]
|
|
198
303
|
});
|
|
199
304
|
});
|
|
200
|
-
bootstrapSetupHooks(
|
|
201
|
-
bootstrapBeforeHooks(bridge, localApp, events);
|
|
202
|
-
bootstrapBackground(bridge, localApp, events);
|
|
203
|
-
bootstrapScenarios(
|
|
204
|
-
|
|
205
|
-
|
|
305
|
+
bootstrapSetupHooks(rule, staticApp, events, transferTimeout);
|
|
306
|
+
bootstrapBeforeHooks(bridge, rule, localApp, events, transferTimeout);
|
|
307
|
+
bootstrapBackground(bridge, rule, localApp, events, transferTimeout);
|
|
308
|
+
bootstrapScenarios(
|
|
309
|
+
bridge,
|
|
310
|
+
rule,
|
|
311
|
+
localApp,
|
|
312
|
+
staticApp,
|
|
313
|
+
events,
|
|
314
|
+
transferTimeout
|
|
315
|
+
);
|
|
316
|
+
bootstrapAfterHooks(bridge, rule, localApp, events, transferTimeout);
|
|
317
|
+
bootstrapTeardownHooks(rule, staticApp, events, transferTimeout);
|
|
206
318
|
(0, import_globals.afterAll)(() => {
|
|
207
|
-
const failures = import_test_builder2.Query.find.failed(
|
|
319
|
+
const failures = import_test_builder2.Query.find.failed(rule);
|
|
208
320
|
const status = modifier === "skip" ? "SKIPPED" : failures.length === 0 ? "PASSED" : "FAILED";
|
|
209
321
|
events.rule.emitEnd({
|
|
210
322
|
title: ruleName,
|
|
@@ -212,7 +324,7 @@ function bootstrapRules(bridge, localApp, staticApp, events) {
|
|
|
212
324
|
tags: [...data.gherkin.tags],
|
|
213
325
|
status
|
|
214
326
|
});
|
|
215
|
-
});
|
|
327
|
+
}, ruleTimeout.milliseconds);
|
|
216
328
|
});
|
|
217
329
|
});
|
|
218
330
|
}
|
|
@@ -236,19 +348,29 @@ function getTestOrModifier({ data }) {
|
|
|
236
348
|
}
|
|
237
349
|
return import_globals.it;
|
|
238
350
|
}
|
|
239
|
-
function bootstrapBeforeHooks(bridge, localApp, events) {
|
|
351
|
+
function bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]) {
|
|
352
|
+
const chosenTimeout = chooseTimeout(
|
|
353
|
+
timeout,
|
|
354
|
+
bridge.data.scope.timeout
|
|
355
|
+
).getTimeout(config);
|
|
240
356
|
bridge.data.scope.hooks.before.forEach((hook) => {
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const scenarioBridge = (0, import_test_builder.find)(bridge, testName);
|
|
245
|
-
if (!scenarioBridge) {
|
|
246
|
-
throw new import_errors.AutomationError(
|
|
247
|
-
`No matching scenario was found matching the test name: ${testName}`
|
|
248
|
-
);
|
|
249
|
-
}
|
|
250
|
-
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
357
|
+
const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(
|
|
358
|
+
config
|
|
359
|
+
).milliseconds;
|
|
251
360
|
(0, import_globals.beforeEach)(async () => {
|
|
361
|
+
const testName = import_globals.expect.getState().currentTestName;
|
|
362
|
+
if (!testName)
|
|
363
|
+
throw new import_errors.AutomationError("A Scenario must have a title");
|
|
364
|
+
const scenarioBridge = (0, import_test_builder.find)(root, testName);
|
|
365
|
+
if (!scenarioBridge) {
|
|
366
|
+
throw new import_errors.AutomationError(
|
|
367
|
+
`No matching scenario was found matching the test name: ${testName}`
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
if (!hook.canExecute(...bridge.data.gherkin.tags)) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
252
374
|
events.before.emitStart({
|
|
253
375
|
title: hook.name,
|
|
254
376
|
tags: [...tags]
|
|
@@ -264,13 +386,24 @@ function bootstrapBeforeHooks(bridge, localApp, events) {
|
|
|
264
386
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
265
387
|
throw new import_errors.AutomationError(message, { cause: report.error });
|
|
266
388
|
}
|
|
267
|
-
});
|
|
389
|
+
}, hookTimeout);
|
|
268
390
|
});
|
|
269
391
|
}
|
|
270
|
-
function bootstrapSetupHooks(bridge, staticApp, events) {
|
|
392
|
+
function bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]) {
|
|
393
|
+
const chosenTimeout = chooseTimeout(
|
|
394
|
+
timeout,
|
|
395
|
+
bridge.data.scope.timeout
|
|
396
|
+
).getTimeout(config).milliseconds;
|
|
271
397
|
bridge.data.scope.hooks.setup.forEach((hook) => {
|
|
398
|
+
const hookTimeout = chooseTimeout(
|
|
399
|
+
import_scopes2.Timeout.from(chosenTimeout),
|
|
400
|
+
hook.timeout
|
|
401
|
+
).getTimeout(config).milliseconds;
|
|
272
402
|
const tags = bridge.data.gherkin.tags ?? [];
|
|
273
403
|
(0, import_globals.beforeAll)(async () => {
|
|
404
|
+
if (!hook.canExecute(...tags)) {
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
274
407
|
events.setup.emitStart({
|
|
275
408
|
title: hook.name
|
|
276
409
|
});
|
|
@@ -284,22 +417,33 @@ function bootstrapSetupHooks(bridge, staticApp, events) {
|
|
|
284
417
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
285
418
|
throw new import_errors.AutomationError(message, { cause: report.error });
|
|
286
419
|
}
|
|
287
|
-
});
|
|
420
|
+
}, hookTimeout);
|
|
288
421
|
});
|
|
289
422
|
}
|
|
290
|
-
function bootstrapAfterHooks(bridge, localApp, events) {
|
|
423
|
+
function bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]) {
|
|
424
|
+
const chosenTimeout = chooseTimeout(
|
|
425
|
+
timeout,
|
|
426
|
+
bridge.data.scope.timeout
|
|
427
|
+
).getTimeout(config).milliseconds;
|
|
291
428
|
bridge.data.scope.hooks.after.forEach((hook) => {
|
|
292
|
-
const
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
if (!scenarioBridge) {
|
|
297
|
-
throw new import_errors.AutomationError(
|
|
298
|
-
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
299
|
-
);
|
|
300
|
-
}
|
|
301
|
-
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
429
|
+
const hookTimeout = chooseTimeout(
|
|
430
|
+
import_scopes2.Timeout.from(chosenTimeout),
|
|
431
|
+
hook.timeout
|
|
432
|
+
).getTimeout(config).milliseconds;
|
|
302
433
|
(0, import_globals.afterEach)(async () => {
|
|
434
|
+
const testName = import_globals.expect.getState().currentTestName;
|
|
435
|
+
if (!testName)
|
|
436
|
+
throw new import_errors.AutomationError("A Scenario must have a title");
|
|
437
|
+
const scenarioBridge = (0, import_test_builder.find)(root, testName);
|
|
438
|
+
if (!scenarioBridge) {
|
|
439
|
+
throw new import_errors.AutomationError(
|
|
440
|
+
`No matching scenario bridge was found matching the test name: ${testName}`
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
if (!hook.canExecute(...bridge.data.gherkin.tags)) {
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
const tags = scenarioBridge?.data?.gherkin?.tags ?? [];
|
|
303
447
|
events.after.emitStart({
|
|
304
448
|
title: hook.name,
|
|
305
449
|
tags: [...tags]
|
|
@@ -315,12 +459,19 @@ function bootstrapAfterHooks(bridge, localApp, events) {
|
|
|
315
459
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
316
460
|
throw new import_errors.AutomationError(message, { cause: report.error });
|
|
317
461
|
}
|
|
318
|
-
});
|
|
462
|
+
}, hookTimeout);
|
|
319
463
|
});
|
|
320
464
|
}
|
|
321
|
-
function bootstrapTeardownHooks(bridge, staticApp, event) {
|
|
465
|
+
function bootstrapTeardownHooks(bridge, staticApp, event, [config, timeout]) {
|
|
322
466
|
const tags = bridge.data.gherkin.tags ?? [];
|
|
467
|
+
const chosenTimeout = chooseTimeout(
|
|
468
|
+
timeout,
|
|
469
|
+
bridge.data.scope.timeout
|
|
470
|
+
).getTimeout(config);
|
|
323
471
|
bridge.data.scope.hooks.teardown.forEach((hook) => {
|
|
472
|
+
const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(
|
|
473
|
+
config
|
|
474
|
+
).milliseconds;
|
|
324
475
|
(0, import_globals.afterAll)(async () => {
|
|
325
476
|
event.teardown.emitStart({
|
|
326
477
|
title: hook.name,
|
|
@@ -337,9 +488,15 @@ function bootstrapTeardownHooks(bridge, staticApp, event) {
|
|
|
337
488
|
const message = `${hook.name}: ${hook.description} failed to execute.`;
|
|
338
489
|
throw new import_errors.AutomationError(message, { cause: report.error });
|
|
339
490
|
}
|
|
340
|
-
});
|
|
491
|
+
}, hookTimeout);
|
|
341
492
|
});
|
|
342
493
|
}
|
|
343
494
|
|
|
344
495
|
// src/index.ts
|
|
345
496
|
var src_default = execute;
|
|
497
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
498
|
+
0 && (module.exports = {
|
|
499
|
+
execute,
|
|
500
|
+
getTimeout
|
|
501
|
+
});
|
|
502
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/executor.ts","../src/timeout-selector.ts"],"sourcesContent":["import { execute } from \"./executor\";\nexport { execute } from \"./executor\";\nexport { getTimeout } from \"./timeout-selector\";\nexport default execute;\n","import {\n ExamplesBridge,\n FeatureBridge,\n RuleBridge,\n ScenarioBridge,\n ScenarioOutlineBridge,\n find\n} from \"@autometa/test-builder\";\nimport {\n describe,\n it,\n expect,\n beforeEach,\n afterEach,\n afterAll,\n beforeAll\n} from \"@jest/globals\";\nimport { type App, AutometaApp, AutometaWorld, getApp } from \"@autometa/app\";\nimport { Class } from \"@autometa/types\";\nimport { AutomationError } from \"@autometa/errors\";\nimport { TestEventEmitter } from \"@autometa/events\";\nimport { Query } from \"@autometa/test-builder\";\nimport { Config } from \"@autometa/config\";\nimport { chooseTimeout } from \"./timeout-selector\";\nimport { NullTimeout, Timeout } from \"@autometa/scopes\";\nexport function execute(\n { app, world }: { app: Class<AutometaApp>; world: Class<AutometaWorld> },\n bridge: FeatureBridge,\n events: TestEventEmitter,\n config: Config\n) {\n config.current;\n const featureTitle = bridge.data.scope.title(bridge.data.gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n const chosenTimeout = chooseTimeout(\n new NullTimeout(),\n bridge.data.scope.timeout\n ).getTimeout(config);\n beforeAll(() => {\n events.feature.emitStart({\n title: featureTitle,\n path: bridge.data.scope.path,\n modifier,\n tags: [...bridge.data.gherkin.tags]\n });\n }, chosenTimeout.milliseconds);\n group(featureTitle, () => {\n let localApp: App;\n const staticApp: App = getApp(app, world);\n beforeEach(() => {\n localApp = getApp(app, world);\n });\n\n bootstrapSetupHooks(bridge, staticApp, events, [config, chosenTimeout]);\n bootstrapBeforeHooks(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapBackground(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapScenarios(bridge, bridge, () => localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapRules(bridge, () => localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapAfterHooks(bridge, bridge, () => localApp, events, [\n config,\n chosenTimeout\n ]);\n bootstrapTeardownHooks(bridge, staticApp, events, [config, chosenTimeout]);\n });\n afterAll(() => {\n const failures = Query.find.failed(bridge);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.feature.emitEnd({\n title: featureTitle,\n modifier,\n tags: [...bridge.data.gherkin.tags],\n status: status\n });\n });\n}\n\nexport function bootstrapBackground(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const background = bridge.background;\n if (!background) return;\n\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n\n const tags = bridge?.data?.gherkin?.tags ?? [];\n if (tags.has(\"@skip\") || tags.has(\"@skipped\")) return;\n beforeEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario bridge was found matching the test name: ${testName}`\n );\n }\n const title = background.data.scope.title(background.data.gherkin);\n events.before.emitStart({\n title: title,\n tags: [...tags]\n });\n const steps = background.steps;\n try {\n for (const step of steps) {\n await step.data.scope.execute(\n background.data.gherkin,\n step.data.gherkin,\n localApp()\n );\n }\n events.before.emitEnd({\n title: title,\n tags: [...tags],\n status: \"PASSED\"\n });\n } catch (e) {\n events.before.emitEnd({\n title: title,\n tags: [...tags],\n status: \"FAILED\",\n error: e as Error\n });\n const message = `${title} failed to execute.\nTest: ${testName}`;\n throw new AutomationError(message, { cause: e as Error });\n }\n }, chosenTimeout);\n}\nexport function bootstrapScenarios(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ExamplesBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const { scenarios } = bridge;\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n scenarios.forEach((scenario) => {\n if (isOutline(scenario)) {\n bootstrapScenarioOutline(root, scenario, localApp, staticApp, events, [\n config,\n chosenTimeout\n ]);\n return;\n }\n bootstrapScenario(scenario, localApp, events, [config, chosenTimeout]);\n });\n}\n\nexport function bootstrapScenario(\n bridge: ScenarioBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const { data } = bridge;\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n const scenarioName = data.scope.title(data.gherkin);\n const test = getTestOrModifier(bridge);\n test(\n scenarioName,\n async () => {\n events.scenario.emitStart({\n title: scenarioName,\n tags: [...data.gherkin.tags]\n });\n try {\n for (const step of bridge.steps) {\n await step.data.scope.execute(\n bridge.data.gherkin,\n step.data.gherkin,\n localApp()\n );\n }\n bridge.report = { passed: true };\n events.scenario.emitEnd({\n title: scenarioName,\n tags: [...data.gherkin.tags],\n status: \"PASSED\"\n });\n } catch (e) {\n events.scenario.emitEnd({\n title: scenarioName,\n tags: [...data.gherkin.tags],\n status: \"FAILED\",\n error: e as Error\n });\n bridge.report = { passed: false, error: e as Error };\n const message = `${scenarioName} failed to execute.`;\n throw new AutomationError(message, { cause: e as Error });\n }\n },\n chosenTimeout.milliseconds\n );\n}\n\nfunction isOutline(\n data: ScenarioBridge | ScenarioOutlineBridge\n): data is ScenarioOutlineBridge {\n return data instanceof ScenarioOutlineBridge;\n}\n\nexport function bootstrapScenarioOutline(\n root: FeatureBridge,\n bridge: ScenarioOutlineBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const {\n data: { scope, gherkin },\n examples\n } = bridge;\n const title = scope.title(gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n group(title, () => {\n beforeAll(() => {\n events.scenarioOutline.emitStart({\n title,\n modifier,\n tags: [...gherkin.tags]\n });\n });\n bootstrapSetupHooks(bridge, staticApp, events, [config, timeout]);\n bootstrapBeforeHooks(root, bridge, localApp, events, [config, timeout]);\n examples.forEach((example) => {\n bootstrapExamples(root, example, localApp, staticApp, events, [\n config,\n timeout\n ]);\n });\n bootstrapAfterHooks(root, bridge, localApp, events, [config, timeout]);\n bootstrapTeardownHooks(bridge, staticApp, events, [config, timeout]);\n afterAll(() => {\n const failures = Query.find.failed(bridge);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.scenarioOutline.emitEnd({\n title,\n modifier,\n tags: [...gherkin.tags],\n status: status\n });\n }, chosenTimeout);\n });\n}\nexport function bootstrapExamples(\n root: FeatureBridge,\n example: ExamplesBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n timeout: [Config, Timeout]\n) {\n const title = example.data.scope.title(example.data.gherkin);\n const [group] = getGroupOrModifier(example);\n group(title, () => {\n bootstrapScenarios(root, example, localApp, staticApp, events, timeout);\n });\n}\n\nexport function bootstrapRules(\n bridge: FeatureBridge,\n localApp: () => App,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n bridge.rules.forEach((rule) => {\n const ruleTimeout = chooseTimeout(\n chosenTimeout,\n rule.data.scope.timeout\n ).getTimeout(config);\n const transferTimeout: [Config, Timeout] = [config, ruleTimeout];\n const { data } = rule;\n const ruleName = data.scope.title(data.gherkin);\n const [group, modifier] = getGroupOrModifier(bridge);\n\n group(ruleName, () => {\n beforeAll(() => {\n events.rule.emitStart({\n title: ruleName,\n modifier,\n tags: [...data.gherkin.tags]\n });\n });\n bootstrapSetupHooks(rule, staticApp, events, transferTimeout);\n bootstrapBeforeHooks(bridge, rule, localApp, events, transferTimeout);\n bootstrapBackground(bridge, rule, localApp, events, transferTimeout);\n bootstrapScenarios(\n bridge,\n rule,\n localApp,\n staticApp,\n events,\n transferTimeout\n );\n bootstrapAfterHooks(bridge, rule, localApp, events, transferTimeout);\n bootstrapTeardownHooks(rule, staticApp, events, transferTimeout);\n\n afterAll(() => {\n const failures = Query.find.failed(rule);\n const status =\n modifier === \"skip\"\n ? \"SKIPPED\"\n : failures.length === 0\n ? \"PASSED\"\n : \"FAILED\";\n events.rule.emitEnd({\n title: ruleName,\n modifier,\n tags: [...data.gherkin.tags],\n status: status\n });\n }, ruleTimeout.milliseconds);\n });\n });\n}\n\nfunction getGroupOrModifier({\n data\n}: RuleBridge | FeatureBridge | ScenarioOutlineBridge | ExamplesBridge) {\n if (data.gherkin.tags?.has(\"@skip\") || data.gherkin.tags?.has(\"@skipped\")) {\n return [describe.skip, \"skip\"] as const;\n }\n if (data.gherkin.tags?.has(\"@only\")) {\n return [describe.only, \"only\"] as const;\n }\n return [describe, undefined] as const;\n}\n\nfunction getTestOrModifier({ data }: ScenarioBridge) {\n if (data.gherkin.tags?.has(\"@skip\") || data.gherkin.tags?.has(\"@skipped\")) {\n return it.skip;\n }\n if (data.gherkin.tags?.has(\"@only\")) {\n return it.only;\n }\n return it;\n}\n\nexport function bootstrapBeforeHooks(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n\n bridge.data.scope.hooks.before.forEach((hook) => {\n const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(\n config\n ).milliseconds;\n\n beforeEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario was found matching the test name: ${testName}`\n );\n }\n if (!hook.canExecute(...bridge.data.gherkin.tags)) {\n return;\n }\n const tags = scenarioBridge?.data?.gherkin?.tags ?? [];\n events.before.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n const report = await hook.execute(localApp(), ...tags);\n events.before.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\nexport function bootstrapSetupHooks(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n staticApp: App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n bridge.data.scope.hooks.setup.forEach((hook) => {\n const hookTimeout = chooseTimeout(\n Timeout.from(chosenTimeout),\n hook.timeout\n ).getTimeout(config).milliseconds;\n const tags = bridge.data.gherkin.tags ?? [];\n\n beforeAll(async () => {\n if (!hook.canExecute(...tags)) {\n return;\n }\n events.setup.emitStart({\n title: hook.name\n });\n const report = await hook.execute(staticApp, ...tags);\n\n events.setup.emitEnd({\n title: hook.name,\n status: report.status,\n error: report.error\n });\n\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n\nexport function bootstrapAfterHooks(\n root: FeatureBridge,\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n localApp: () => App,\n events: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config).milliseconds;\n bridge.data.scope.hooks.after.forEach((hook) => {\n const hookTimeout = chooseTimeout(\n Timeout.from(chosenTimeout),\n hook.timeout\n ).getTimeout(config).milliseconds;\n afterEach(async () => {\n const testName = expect.getState().currentTestName;\n if (!testName) throw new AutomationError(\"A Scenario must have a title\");\n const scenarioBridge = find(root, testName);\n if (!scenarioBridge) {\n throw new AutomationError(\n `No matching scenario bridge was found matching the test name: ${testName}`\n );\n }\n if (!hook.canExecute(...bridge.data.gherkin.tags)) {\n return;\n }\n const tags = scenarioBridge?.data?.gherkin?.tags ?? [];\n events.after.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n\n const report = await hook.execute(localApp(), ...tags);\n events.after.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n\nexport function bootstrapTeardownHooks(\n bridge: FeatureBridge | RuleBridge | ScenarioOutlineBridge,\n staticApp: App,\n event: TestEventEmitter,\n [config, timeout]: [Config, Timeout]\n) {\n const tags = bridge.data.gherkin.tags ?? [];\n const chosenTimeout = chooseTimeout(\n timeout,\n bridge.data.scope.timeout\n ).getTimeout(config);\n bridge.data.scope.hooks.teardown.forEach((hook) => {\n const hookTimeout = chooseTimeout(chosenTimeout, hook.timeout).getTimeout(\n config\n ).milliseconds;\n afterAll(async () => {\n event.teardown.emitStart({\n title: hook.name,\n tags: [...tags]\n });\n const report = await hook.execute(staticApp, ...tags);\n event.teardown.emitEnd({\n title: hook.name,\n tags: [...tags],\n status: report.status,\n error: report.error\n });\n\n if (report.error) {\n const message = `${hook.name}: ${hook.description} failed to execute.`;\n throw new AutomationError(message, { cause: report.error });\n }\n }, hookTimeout);\n });\n}\n","import { NullTimeout, Timeout } from \"@autometa/scopes\";\nimport { Config } from \"@autometa/config\";\nexport function getTimeout(target: Timeout | undefined, config: Config) {\n if (target && !(target instanceof NullTimeout)) {\n return target;\n }\n return Timeout.from(config?.current?.test?.timeout);\n}\n\nexport function chooseTimeout(\n timeout1: Timeout | undefined,\n timeout2: Timeout | undefined\n) {\n if (timeout2 instanceof Timeout && !(timeout2 instanceof NullTimeout)) {\n return {\n getTimeout: getTimeout.bind(null, timeout2)\n };\n }\n if (timeout1 instanceof Timeout && !(timeout1 instanceof NullTimeout)) {\n return {\n getTimeout: getTimeout.bind(null, timeout1)\n };\n }\n return {\n getTimeout: getTimeout.bind(null, Timeout.from(0))\n };\n}\n"],"mappings":"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","names":["import_test_builder","import_scopes"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autometa/jest-executor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
"@typescript-eslint/eslint-plugin": "^5.54.1",
|
|
22
22
|
"@typescript-eslint/parser": "^5.54.1",
|
|
23
23
|
"eslint": "^8.37.0",
|
|
24
|
-
"eslint-config-custom": "0.
|
|
24
|
+
"eslint-config-custom": "0.6.0",
|
|
25
25
|
"eslint-config-prettier": "^8.3.0",
|
|
26
26
|
"jest": "^29.5.0",
|
|
27
27
|
"rimraf": "^4.1.2",
|
|
28
28
|
"ts-jest": "^29.1.1",
|
|
29
29
|
"ts-node": "^10.9.1",
|
|
30
30
|
"tsconfig": " *",
|
|
31
|
-
"tsup": "^
|
|
31
|
+
"tsup": "^7.2.0",
|
|
32
32
|
"typescript": "^4.9.5",
|
|
33
33
|
"vitest": "^0.29.8"
|
|
34
34
|
},
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
"jest": "^29.5.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@autometa/app": "^0.
|
|
41
|
-
"@autometa/asserters": "^0.
|
|
42
|
-
"@autometa/config": "^0.
|
|
43
|
-
"@autometa/errors": "^0.
|
|
44
|
-
"@autometa/events": "^0.0
|
|
45
|
-
"@autometa/gherkin": "^0.
|
|
46
|
-
"@autometa/scopes": "^0.
|
|
47
|
-
"@autometa/test-builder": "^0.
|
|
48
|
-
"@autometa/types": "^0.
|
|
40
|
+
"@autometa/app": "^0.1.0",
|
|
41
|
+
"@autometa/asserters": "^0.1.0",
|
|
42
|
+
"@autometa/config": "^0.1.0",
|
|
43
|
+
"@autometa/errors": "^0.1.0",
|
|
44
|
+
"@autometa/events": "^0.1.0",
|
|
45
|
+
"@autometa/gherkin": "^0.4.0",
|
|
46
|
+
"@autometa/scopes": "^0.2.0",
|
|
47
|
+
"@autometa/test-builder": "^0.1.0",
|
|
48
|
+
"@autometa/types": "^0.4.0"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"test": "vitest run --passWithNoTests",
|
package/tsup.config.ts
CHANGED
|
@@ -4,7 +4,7 @@ export default defineConfig({
|
|
|
4
4
|
clean: true, // clean up the dist folder
|
|
5
5
|
format: ["cjs", "esm"], // generate cjs and esm files
|
|
6
6
|
dts: true,
|
|
7
|
-
sourcemap:
|
|
7
|
+
sourcemap:true, // generate sourcemaps
|
|
8
8
|
skipNodeModulesBundle: true,
|
|
9
9
|
entryPoints: ["src/index.ts"],
|
|
10
10
|
target: "es2020",
|