@flemist/test-variants 1.0.7 → 2.0.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/dist/bundle/browser.js +437 -212
- package/dist/lib/index.cjs +10 -2
- package/dist/lib/index.d.ts +6 -2
- package/dist/lib/index.mjs +9 -2
- package/dist/lib/test-variants/argsToString.cjs +17 -0
- package/dist/lib/test-variants/argsToString.d.ts +2 -0
- package/dist/lib/test-variants/argsToString.mjs +13 -0
- package/dist/lib/test-variants/createTestVariants.cjs +71 -188
- package/dist/lib/test-variants/createTestVariants.d.ts +8 -30
- package/dist/lib/test-variants/createTestVariants.mjs +71 -188
- package/dist/lib/test-variants/createTestVariants.perf.cjs +32 -20
- package/dist/lib/test-variants/createTestVariants.perf.mjs +32 -20
- package/dist/lib/test-variants/prime.cjs +65 -0
- package/dist/lib/test-variants/prime.d.ts +3 -0
- package/dist/lib/test-variants/prime.mjs +59 -0
- package/dist/lib/test-variants/prime.perf.cjs +30 -0
- package/dist/lib/test-variants/prime.perf.d.ts +1 -0
- package/dist/lib/test-variants/prime.perf.mjs +28 -0
- package/dist/lib/test-variants/saveErrorVariants.cjs +97 -0
- package/dist/lib/test-variants/saveErrorVariants.d.ts +9 -0
- package/dist/lib/test-variants/saveErrorVariants.mjs +69 -0
- package/dist/lib/test-variants/testVariantsCreateTestRun.cjs +80 -0
- package/dist/lib/test-variants/testVariantsCreateTestRun.d.ts +22 -0
- package/dist/lib/test-variants/testVariantsCreateTestRun.mjs +76 -0
- package/dist/lib/test-variants/testVariantsIterable.cjs +67 -0
- package/dist/lib/test-variants/testVariantsIterable.d.ts +12 -0
- package/dist/lib/test-variants/testVariantsIterable.mjs +63 -0
- package/dist/lib/test-variants/testVariantsRun.cjs +235 -0
- package/dist/lib/test-variants/testVariantsRun.d.ts +33 -0
- package/dist/lib/test-variants/testVariantsRun.mjs +211 -0
- package/dist/lib/test-variants/types.cjs +2 -0
- package/dist/lib/test-variants/types.d.ts +18 -0
- package/dist/lib/test-variants/types.mjs +1 -0
- package/package.json +12 -9
package/dist/lib/index.cjs
CHANGED
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var testVariants_saveErrorVariants = require('./test-variants/saveErrorVariants.cjs');
|
|
5
6
|
var testVariants_createTestVariants = require('./test-variants/createTestVariants.cjs');
|
|
6
7
|
require('tslib');
|
|
7
|
-
require('
|
|
8
|
+
require('fs');
|
|
9
|
+
require('path');
|
|
10
|
+
require('./test-variants/testVariantsIterable.cjs');
|
|
11
|
+
require('./test-variants/testVariantsCreateTestRun.cjs');
|
|
12
|
+
require('@flemist/async-utils');
|
|
13
|
+
require('./test-variants/argsToString.cjs');
|
|
14
|
+
require('./test-variants/testVariantsRun.cjs');
|
|
8
15
|
require('@flemist/abort-controller-fast');
|
|
9
16
|
require('@flemist/time-limits');
|
|
10
|
-
require('
|
|
17
|
+
require('./garbage-collect/garbageCollect.cjs');
|
|
11
18
|
|
|
12
19
|
|
|
13
20
|
|
|
21
|
+
exports.generateErrorVariantFilePath = testVariants_saveErrorVariants.generateErrorVariantFilePath;
|
|
14
22
|
exports.createTestVariants = testVariants_createTestVariants.createTestVariants;
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export type
|
|
2
|
-
export {
|
|
1
|
+
export { type Obj, type GenerateErrorVariantFilePathOptions, type SaveErrorVariantsOptions, } from "./test-variants/types";
|
|
2
|
+
export { generateErrorVariantFilePath, } from "./test-variants/saveErrorVariants";
|
|
3
|
+
export { type TestVariantsTemplate, type TestVariantsTemplates, type TestVariantsTemplatesExt, } from "./test-variants/testVariantsIterable";
|
|
4
|
+
export { type ErrorEvent, type OnErrorCallback, type TestVariantsTest, type TestVariantsTestResult, type TestVariantsCreateTestRunOptions, type TestVariantsTestRun, type TestVariantsTestRunResult, } from "./test-variants/testVariantsCreateTestRun";
|
|
5
|
+
export { type TestVariantsFindBestErrorOptions, type TestVariantsRunOptions, type TestVariantsBestError, type TestVariantsRunResult, } from "./test-variants/testVariantsRun";
|
|
6
|
+
export { type TestVariantsSetArgs, type TestVariantsCall, createTestVariants, } from './test-variants/createTestVariants';
|
package/dist/lib/index.mjs
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
export { generateErrorVariantFilePath } from './test-variants/saveErrorVariants.mjs';
|
|
1
2
|
export { createTestVariants } from './test-variants/createTestVariants.mjs';
|
|
2
3
|
import 'tslib';
|
|
3
|
-
import '
|
|
4
|
+
import 'fs';
|
|
5
|
+
import 'path';
|
|
6
|
+
import './test-variants/testVariantsIterable.mjs';
|
|
7
|
+
import './test-variants/testVariantsCreateTestRun.mjs';
|
|
8
|
+
import '@flemist/async-utils';
|
|
9
|
+
import './test-variants/argsToString.mjs';
|
|
10
|
+
import './test-variants/testVariantsRun.mjs';
|
|
4
11
|
import '@flemist/abort-controller-fast';
|
|
5
12
|
import '@flemist/time-limits';
|
|
6
|
-
import '
|
|
13
|
+
import './garbage-collect/garbageCollect.mjs';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
function argsToString(args) {
|
|
6
|
+
return JSON.stringify(args, (_, value) => {
|
|
7
|
+
if (value
|
|
8
|
+
&& typeof value === 'object'
|
|
9
|
+
&& !Array.isArray(value)
|
|
10
|
+
&& value.constructor !== Object) {
|
|
11
|
+
return value + '';
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}, 2);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.argsToString = argsToString;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function argsToString(args) {
|
|
2
|
+
return JSON.stringify(args, (_, value) => {
|
|
3
|
+
if (value
|
|
4
|
+
&& typeof value === 'object'
|
|
5
|
+
&& !Array.isArray(value)
|
|
6
|
+
&& value.constructor !== Object) {
|
|
7
|
+
return value + '';
|
|
8
|
+
}
|
|
9
|
+
return value;
|
|
10
|
+
}, 2);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { argsToString };
|
|
@@ -3,201 +3,84 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
6
|
+
var testVariants_testVariantsIterable = require('./testVariantsIterable.cjs');
|
|
7
|
+
var testVariants_testVariantsCreateTestRun = require('./testVariantsCreateTestRun.cjs');
|
|
8
|
+
var testVariants_testVariantsRun = require('./testVariantsRun.cjs');
|
|
9
|
+
require('@flemist/async-utils');
|
|
10
|
+
require('./argsToString.cjs');
|
|
11
|
+
require('@flemist/abort-controller-fast');
|
|
12
|
+
require('@flemist/time-limits');
|
|
13
|
+
require('../garbage-collect/garbageCollect.cjs');
|
|
14
|
+
require('./saveErrorVariants.cjs');
|
|
15
|
+
require('fs');
|
|
16
|
+
require('path');
|
|
10
17
|
|
|
11
|
-
/* eslint-disable @typescript-eslint/no-shadow */
|
|
12
|
-
function isPromiseLike(value) {
|
|
13
|
-
return typeof value === 'object'
|
|
14
|
-
&& value
|
|
15
|
-
&& typeof value.then === 'function';
|
|
16
|
-
}
|
|
17
18
|
function createTestVariants(test) {
|
|
18
19
|
return function testVariantsArgs(args) {
|
|
19
|
-
return function testVariantsCall(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const argsKeys = Object.keys(args);
|
|
24
|
-
const argsValues = Object.values(args);
|
|
25
|
-
const argsLength = argsKeys.length;
|
|
26
|
-
const variantArgs = {};
|
|
27
|
-
function getArgValues(nArg) {
|
|
28
|
-
let argValues = argsValues[nArg];
|
|
29
|
-
if (typeof argValues === 'function') {
|
|
30
|
-
argValues = argValues(variantArgs);
|
|
31
|
-
}
|
|
32
|
-
return argValues;
|
|
33
|
-
}
|
|
34
|
-
const indexes = [];
|
|
35
|
-
const values = [];
|
|
36
|
-
for (let nArg = 0; nArg < argsLength; nArg++) {
|
|
37
|
-
indexes[nArg] = -1;
|
|
38
|
-
values[nArg] = [];
|
|
39
|
-
}
|
|
40
|
-
values[0] = getArgValues(0);
|
|
41
|
-
function nextVariant() {
|
|
42
|
-
for (let nArg = argsLength - 1; nArg >= 0; nArg--) {
|
|
43
|
-
const index = indexes[nArg] + 1;
|
|
44
|
-
if (index < values[nArg].length) {
|
|
45
|
-
indexes[nArg] = index;
|
|
46
|
-
variantArgs[argsKeys[nArg]] = values[nArg][index];
|
|
47
|
-
for (nArg++; nArg < argsLength; nArg++) {
|
|
48
|
-
const argValues = getArgValues(nArg);
|
|
49
|
-
if (argValues.length === 0) {
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
indexes[nArg] = 0;
|
|
53
|
-
values[nArg] = argValues;
|
|
54
|
-
variantArgs[argsKeys[nArg]] = argValues[0];
|
|
55
|
-
}
|
|
56
|
-
if (nArg >= argsLength) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
let iterations = 0;
|
|
64
|
-
let iterationsAsync = 0;
|
|
65
|
-
let debug = false;
|
|
66
|
-
let debugIteration = 0;
|
|
67
|
-
let isNewError = true;
|
|
68
|
-
function onError(error, iterations, variantArgs) {
|
|
69
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const _isNewError = isNewError;
|
|
71
|
-
isNewError = false;
|
|
72
|
-
if (_isNewError) {
|
|
73
|
-
abortControllerParallel.abort(error);
|
|
74
|
-
console.error(`error variant: ${iterations}\r\n${JSON.stringify(variantArgs, (_, value) => {
|
|
75
|
-
if (value
|
|
76
|
-
&& typeof value === 'object'
|
|
77
|
-
&& !Array.isArray(value)
|
|
78
|
-
&& value.constructor !== Object) {
|
|
79
|
-
return value + '';
|
|
80
|
-
}
|
|
81
|
-
return value;
|
|
82
|
-
}, 2)}`);
|
|
83
|
-
console.error(error);
|
|
84
|
-
}
|
|
85
|
-
// rerun failed variant 5 times for debug
|
|
86
|
-
const time0 = Date.now();
|
|
87
|
-
// eslint-disable-next-line no-debugger
|
|
88
|
-
debugger;
|
|
89
|
-
if (Date.now() - time0 > 50 && debugIteration < 5) {
|
|
90
|
-
console.log('DEBUG ITERATION: ' + debugIteration);
|
|
91
|
-
debug = true;
|
|
92
|
-
yield next();
|
|
93
|
-
debugIteration++;
|
|
94
|
-
}
|
|
95
|
-
if (_isNewError) {
|
|
96
|
-
if (onErrorCallback) {
|
|
97
|
-
onErrorCallback({
|
|
98
|
-
iteration: iterations,
|
|
99
|
-
variant: variantArgs,
|
|
100
|
-
error,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function onCompleted() {
|
|
108
|
-
if (logCompleted) {
|
|
109
|
-
console.log('variants: ' + iterations);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
let prevLogTime = Date.now();
|
|
113
|
-
let prevGC_Time = prevLogTime;
|
|
114
|
-
let prevGC_Iterations = iterations;
|
|
115
|
-
let prevGC_IterationsAsync = iterationsAsync;
|
|
116
|
-
const parallel = _parallel === true
|
|
117
|
-
? Math.pow(2, 31)
|
|
118
|
-
: !_parallel || _parallel <= 0
|
|
119
|
-
? 1
|
|
120
|
-
: _parallel;
|
|
121
|
-
const pool = parallel <= 1
|
|
122
|
-
? null
|
|
123
|
-
: new timeLimits.Pool(parallel);
|
|
124
|
-
function runTest(_iterations, variantArgs, abortSignal) {
|
|
125
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
try {
|
|
127
|
-
const promiseOrIterations = test(variantArgs, abortSignal);
|
|
128
|
-
if (isPromiseLike(promiseOrIterations)) {
|
|
129
|
-
const value = yield promiseOrIterations;
|
|
130
|
-
const newIterations = typeof value === 'number' ? value : 1;
|
|
131
|
-
iterationsAsync += newIterations;
|
|
132
|
-
iterations += newIterations;
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
iterations += typeof promiseOrIterations === 'number' ? promiseOrIterations : 1;
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
yield onError(err, _iterations, variantArgs);
|
|
139
|
-
}
|
|
20
|
+
return function testVariantsCall(options) {
|
|
21
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const testRun = testVariants_testVariantsCreateTestRun.testVariantsCreateTestRun(test, {
|
|
23
|
+
onError: options === null || options === void 0 ? void 0 : options.onError,
|
|
140
24
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
144
|
-
while (!(abortSignalExternal === null || abortSignalExternal === void 0 ? void 0 : abortSignalExternal.aborted) && (debug || nextVariant())) {
|
|
145
|
-
const _iterations = iterations;
|
|
146
|
-
const _variantArgs = !pool
|
|
147
|
-
? variantArgs
|
|
148
|
-
: Object.assign({}, variantArgs);
|
|
149
|
-
const now = (logInterval || GC_Interval) && Date.now();
|
|
150
|
-
if (logInterval && now - prevLogTime >= logInterval) {
|
|
151
|
-
// the log is required to prevent the karma browserNoActivityTimeout
|
|
152
|
-
console.log(iterations);
|
|
153
|
-
prevLogTime = now;
|
|
154
|
-
}
|
|
155
|
-
if (GC_Iterations && iterations - prevGC_Iterations >= GC_Iterations
|
|
156
|
-
|| GC_IterationsAsync && iterationsAsync - prevGC_IterationsAsync >= GC_IterationsAsync
|
|
157
|
-
|| GC_Interval && now - prevGC_Time >= GC_Interval) {
|
|
158
|
-
prevGC_Iterations = iterations;
|
|
159
|
-
prevGC_IterationsAsync = iterationsAsync;
|
|
160
|
-
prevGC_Time = now;
|
|
161
|
-
yield garbageCollect_garbageCollect.garbageCollect(1);
|
|
162
|
-
}
|
|
163
|
-
if (abortSignalExternal === null || abortSignalExternal === void 0 ? void 0 : abortSignalExternal.aborted) {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
if (!pool || abortSignalParallel.aborted) {
|
|
167
|
-
yield runTest(_iterations, _variantArgs, abortSignalExternal);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
if (!pool.hold(1)) {
|
|
171
|
-
yield pool.holdWait(1);
|
|
172
|
-
}
|
|
173
|
-
void (() => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
174
|
-
try {
|
|
175
|
-
if (abortSignalParallel === null || abortSignalParallel === void 0 ? void 0 : abortSignalParallel.aborted) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
yield runTest(_iterations, _variantArgs, abortSignalParallel);
|
|
179
|
-
}
|
|
180
|
-
finally {
|
|
181
|
-
void pool.release(1);
|
|
182
|
-
}
|
|
183
|
-
}))();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
if (pool) {
|
|
187
|
-
yield pool.holdWait(parallel);
|
|
188
|
-
void pool.release(parallel);
|
|
189
|
-
}
|
|
190
|
-
if (abortSignalAll === null || abortSignalAll === void 0 ? void 0 : abortSignalAll.aborted) {
|
|
191
|
-
throw abortSignalAll.reason;
|
|
192
|
-
}
|
|
193
|
-
onCompleted();
|
|
194
|
-
yield garbageCollect_garbageCollect.garbageCollect(1);
|
|
195
|
-
return iterations;
|
|
25
|
+
const variants = testVariants_testVariantsIterable.testVariantsIterable({
|
|
26
|
+
argsTemplates: args,
|
|
196
27
|
});
|
|
197
|
-
|
|
198
|
-
|
|
28
|
+
return testVariants_testVariantsRun.testVariantsRun(testRun, variants, options);
|
|
29
|
+
});
|
|
199
30
|
};
|
|
200
31
|
};
|
|
201
32
|
}
|
|
33
|
+
/*
|
|
34
|
+
export class TestVariants<Args extends Obj> {
|
|
35
|
+
private readonly _test: TestVariantsTest<Args>
|
|
36
|
+
test(args: Args, abortSignal: IAbortSignalFast) {
|
|
37
|
+
return this._test(args, abortSignal)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
test: TestVariantsTest<Args>,
|
|
42
|
+
) {
|
|
43
|
+
this.test = test
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
createVariants<ArgsExtra extends Obj>(
|
|
47
|
+
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
48
|
+
): Iterable<Args> {
|
|
49
|
+
return testVariantsIterable<Args, ArgsExtra>(argsTemplates)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
createTestRun(
|
|
53
|
+
options?: null | TestVariantsCreateTestRunOptions<Args>,
|
|
54
|
+
) {
|
|
55
|
+
return testVariantsCreateTestRun<Args>(this._test, options)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
testAll<ArgsExtra extends Obj>(
|
|
59
|
+
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
60
|
+
): TestVariantsCall<Args>
|
|
61
|
+
testAll(
|
|
62
|
+
variants: Iterable<Args>,
|
|
63
|
+
): TestVariantsCall<Args>
|
|
64
|
+
testAll<ArgsExtra extends Obj>(
|
|
65
|
+
variantsOrTemplates: Iterable<Args> | TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
66
|
+
): TestVariantsCall<Args> {
|
|
67
|
+
const variants = Symbol.iterator in variantsOrTemplates
|
|
68
|
+
? variantsOrTemplates as Iterable<Args>
|
|
69
|
+
: this.createVariants(variantsOrTemplates as TestVariantsTemplatesExt<Args, ArgsExtra>)
|
|
70
|
+
|
|
71
|
+
const _this = this
|
|
72
|
+
|
|
73
|
+
return function testVariantsCall(
|
|
74
|
+
options?: null | TestVariantsRunOptions & TestVariantsCreateTestRunOptions<Args>,
|
|
75
|
+
) {
|
|
76
|
+
const testRun = _this.createTestRun({
|
|
77
|
+
onError: options?.onError,
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
return testVariantsRun<Args>(testRun, variants, options)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
*/
|
|
202
85
|
|
|
203
86
|
exports.createTestVariants = createTestVariants;
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
export declare type TestVariantsCall<
|
|
7
|
-
export declare type TestVariantsSetArgs<
|
|
8
|
-
|
|
9
|
-
}>) => TestVariantsCall<TArgs>;
|
|
10
|
-
export declare type TestVariantsCallParams<TArgs> = {
|
|
11
|
-
/** Wait for garbage collection after iterations */
|
|
12
|
-
GC_Iterations?: number;
|
|
13
|
-
/** Same as GC_Iterations but only for async test variants, required for 10000 and more of Promise rejections */
|
|
14
|
-
GC_IterationsAsync?: number;
|
|
15
|
-
/** Wait for garbage collection after time interval, required to prevent the karma browserDisconnectTimeout */
|
|
16
|
-
GC_Interval?: number;
|
|
17
|
-
/** console log current iterations, required to prevent the karma browserNoActivityTimeout */
|
|
18
|
-
logInterval?: number;
|
|
19
|
-
/** console log iterations on test completed */
|
|
20
|
-
logCompleted?: boolean;
|
|
21
|
-
onError?: (event: {
|
|
22
|
-
iteration: number;
|
|
23
|
-
variant: TArgs;
|
|
24
|
-
error: any;
|
|
25
|
-
}) => void;
|
|
26
|
-
abortSignal?: IAbortSignalFast;
|
|
27
|
-
parallel?: null | number | boolean;
|
|
28
|
-
};
|
|
29
|
-
export declare function createTestVariants<TArgs extends object>(test: (args: TArgs, abortSignal: IAbortSignalFast) => Promise<number | void> | number | void): TestVariantsSetArgs<TArgs>;
|
|
30
|
-
export {};
|
|
1
|
+
import { type PromiseOrValue } from '@flemist/async-utils';
|
|
2
|
+
import { TestVariantsTemplatesExt } from "./testVariantsIterable";
|
|
3
|
+
import { TestVariantsCreateTestRunOptions, TestVariantsTest } from "./testVariantsCreateTestRun";
|
|
4
|
+
import { TestVariantsRunOptions, TestVariantsRunResult } from "./testVariantsRun";
|
|
5
|
+
import { Obj } from "./types";
|
|
6
|
+
export declare type TestVariantsCall<Args extends Obj> = <SavedArgs = Args>(options?: null | TestVariantsRunOptions<Args, SavedArgs> & TestVariantsCreateTestRunOptions<Args>) => PromiseOrValue<TestVariantsRunResult<Args>>;
|
|
7
|
+
export declare type TestVariantsSetArgs<Args extends Obj> = <ArgsExtra extends Obj>(args: TestVariantsTemplatesExt<Omit<Args, 'seed'>, Omit<ArgsExtra, 'seed'>>) => TestVariantsCall<Args>;
|
|
8
|
+
export declare function createTestVariants<Args extends Obj>(test: TestVariantsTest<Args>): TestVariantsSetArgs<Args>;
|