testeranto 0.9.21 → 0.15.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/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # testeranto
2
2
 
3
+ ![demo](testerantoDemo.gif)
4
+
3
5
  home: [adamwong246.github.io/testeranto](https://adamwong246.github.io/testeranto/)
4
6
 
5
7
  source: [github.com/adamwong246/testeranto](https://github.com/adamwong246/testeranto)
@@ -10,8 +12,6 @@ dev: [github.dev/adamwong246/testeranto](https://github.dev/adamwong246/testeran
10
12
 
11
13
  example repo: [kokomo bay](https://github.com/ChromaPDX/kokomoBay)
12
14
 
13
- example report: [kokomoBay acceptance tests](https://chromapdx.github.io/kokomoBay/report.html)
14
-
15
15
  ## tl;dr
16
16
 
17
17
  - Do you like BDD?
package/bin/report.sh CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env sh
2
2
 
3
- # yarn nodemon --config nodemon.json ./node_modules/testeranto/src/build.ts testeranto.config.json
4
3
  cp ./node_modules/testeranto/dist/reporter.css ./dist/reporter.css
5
4
  cp ./node_modules/testeranto/dist/reporter.js ./dist/reporter.js
6
5
  cp ./node_modules/testeranto/dist/reporter.html ./dist/reporter.html
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env sh
2
+
3
+ ts-node --swc --esm ./node_modules/testeranto/src/testeranto.mts $1
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "testeranto",
3
3
  "description": "teeny tiny tightly-typed typescript tests",
4
- "version": "0.9.21",
5
- "main": "./src/index.ts",
6
- "types": "./src/index.ts",
4
+ "version": "0.15.0",
5
+ "type": "module",
6
+ "types": "./src/index.d.mts",
7
+ "main": "./src/index.mjs",
7
8
  "repository": "git@github.com:adamwong246/testeranto.git",
8
9
  "homepage": "https://github.com/adamwong246/testeranto",
9
10
  "author": "adam wong <adamwong246@gmail.com>",
@@ -15,11 +16,11 @@
15
16
  "ATDD"
16
17
  ],
17
18
  "bin": {
18
- "testerantoBuild": "./bin/build.sh",
19
- "testerantoWatch": "./bin/watch.sh",
20
- "testerantoReport": "./bin/report.sh"
19
+ "testerantoReport": "./bin/report.sh",
20
+ "testeranto": "./bin/testeranto.sh"
21
21
  },
22
22
  "scripts": {
23
+ "build": "tsc",
23
24
  "bundle:reporter": "esbuild ./src/Report.tsx --bundle --outfile=./dist/reporter.js",
24
25
  "simpleserver": "cd dist && python -m SimpleHTTPServer 8080",
25
26
  "clean:dist": "rm -rf ./dist/results && rm -rf ./dist/tests && rm -f ./dist/reporter.css && rm -f ./dist/reporter.js && rm -f ./dist/*.jpg ",
@@ -28,27 +29,31 @@
28
29
  "tableflip": "yarn clean && yarn bundle:reporter"
29
30
  },
30
31
  "dependencies": {
31
- "@types/react-dom": "^18.0.6",
32
+ "@swc/core": "^1.3.26",
33
+ "@types/node": "^18.14.0",
32
34
  "@types/react": "^18.0.21",
33
- "babel-loader": "^8.2.5",
34
- "eslint-plugin-react": "^7.31.11",
35
- "nodemon": "^2.0.20",
36
- "react-dom": "^18.2.0",
37
- "react-redux": "^8.0.4",
38
- "react-test-renderer": "^18.2.0",
39
- "react": "18.2.0",
35
+ "@types/react-dom": "^18.0.6",
40
36
  "@typescript-eslint/eslint-plugin": "^5.46.0",
41
37
  "@typescript-eslint/parser": "^5.46.0",
38
+ "babel-loader": "^8.2.5",
42
39
  "bootstrap": "^5.2.3",
43
40
  "cancelable-promise": "^4.3.1",
44
- "esbuild": "^0.16.5",
41
+ "esbuild": "0.17.5",
45
42
  "eslint": "^8.29.0",
43
+ "eslint-plugin-react": "^7.31.11",
46
44
  "fresh-require": "^1.0.3",
45
+ "fs.promises.exists": "^1.1.4",
46
+ "graphology": "^0.25.1",
47
47
  "graphology-dag": "^0.2.0",
48
48
  "graphology-types": "^0.24.5",
49
- "graphology": "^0.25.1",
49
+ "nodemon": "^2.0.20",
50
+ "pm2": "^5.2.2",
51
+ "react": "18.2.0",
50
52
  "react-bootstrap": "^2.7.0",
53
+ "react-dom": "^18.2.0",
54
+ "react-redux": "^8.0.4",
55
+ "react-test-renderer": "^18.2.0",
51
56
  "ts-node": "^10.9.1",
52
57
  "typescript": "4.8.2"
53
58
  }
54
- }
59
+ }
package/src/Report.tsx CHANGED
@@ -31,7 +31,7 @@ export function Report() {
31
31
 
32
32
  const getData = async () => {
33
33
 
34
- const configs = await (await fetch('testeranto.config.json')).json();
34
+ const configs = await (await fetch('testeranto.config.js')).json();
35
35
  const features = await (await fetch('TesterantoFeatures.json')).json();
36
36
  const featureTests = await (await fetch('results/featureTestJoin.json')).json();
37
37
  const summaries = await (await fetch('report.json')).json();
@@ -0,0 +1,277 @@
1
+ /// <reference types="node" />
2
+ declare const DirectedGraph: any, UndirectedGraph: any;
3
+ export declare class BaseFeature {
4
+ name: string;
5
+ constructor(name: string);
6
+ }
7
+ declare abstract class TesterantoGraph {
8
+ name: string;
9
+ abstract graph: any;
10
+ constructor(name: string);
11
+ }
12
+ export declare class TesterantoGraphUndirected implements TesterantoGraph {
13
+ name: string;
14
+ graph: typeof UndirectedGraph;
15
+ constructor(name: string);
16
+ connect(a: any, b: any, relation?: string): void;
17
+ }
18
+ export declare class TesterantoGraphDirected implements TesterantoGraph {
19
+ name: string;
20
+ graph: typeof DirectedGraph;
21
+ constructor(name: string);
22
+ connect(to: any, from: any, relation?: string): void;
23
+ }
24
+ export declare class TesterantoGraphDirectedAcyclic implements TesterantoGraph {
25
+ name: string;
26
+ graph: typeof DirectedGraph;
27
+ constructor(name: string);
28
+ connect(to: any, from: any, relation?: string): void;
29
+ }
30
+ export declare class TesterantoFeatures {
31
+ features: Record<string, BaseFeature>;
32
+ graphs: {
33
+ undirected: TesterantoGraphUndirected[];
34
+ directed: TesterantoGraphDirected[];
35
+ dags: TesterantoGraphDirectedAcyclic[];
36
+ };
37
+ constructor(features: Record<string, BaseFeature>, graphs: {
38
+ undirected: TesterantoGraphUndirected[];
39
+ directed: TesterantoGraphDirected[];
40
+ dags: TesterantoGraphDirectedAcyclic[];
41
+ });
42
+ networks(): (TesterantoGraphUndirected | TesterantoGraphDirected | TesterantoGraphDirectedAcyclic)[];
43
+ toObj(): {
44
+ features: {
45
+ inNetworks: {
46
+ network: string;
47
+ neighbors: any;
48
+ }[];
49
+ name: string;
50
+ }[];
51
+ networks: ({
52
+ name: string;
53
+ graph: any;
54
+ } | {
55
+ name: string;
56
+ graph: any;
57
+ } | {
58
+ name: string;
59
+ graph: any;
60
+ })[];
61
+ };
62
+ }
63
+ export declare type ITTestResourceRequirement = {
64
+ "ports": number;
65
+ };
66
+ declare type ITTestResource = {
67
+ "ports": number[];
68
+ };
69
+ export declare type IT_FeatureNetwork = {
70
+ name: string;
71
+ };
72
+ export declare type IT = {
73
+ toObj(): object;
74
+ aborter: () => any;
75
+ name: string;
76
+ givens: BaseGiven<unknown, unknown, unknown, unknown, unknown>[];
77
+ checks: BaseCheck<unknown, unknown, unknown, unknown, ITTestShape, unknown>[];
78
+ };
79
+ export declare type ITestJob = {
80
+ toObj(): object;
81
+ test: IT;
82
+ runner: (testResource: any) => Promise<boolean>;
83
+ testResource: ITTestResourceRequirement;
84
+ };
85
+ export declare type ITestResults = Promise<{
86
+ test: IT;
87
+ }>[];
88
+ export declare type Modify<T, R> = Omit<T, keyof R> & R;
89
+ export declare type ITTestShape = {
90
+ suites: any;
91
+ givens: any;
92
+ whens: any;
93
+ thens: any;
94
+ checks: any;
95
+ };
96
+ export declare type ITestSpecification<ITestShape extends ITTestShape, IFeatureShape> = (Suite: {
97
+ [K in keyof ITestShape["suites"]]: (name: string, givens: BaseGiven<unknown, unknown, unknown, unknown, unknown>[], checks: BaseCheck<unknown, unknown, unknown, unknown, ITestShape, IFeatureShape>[]) => BaseSuite<unknown, unknown, unknown, unknown, unknown, ITestShape, IFeatureShape>;
98
+ }, Given: {
99
+ [K in keyof ITestShape["givens"]]: (features: (keyof IFeatureShape)[], whens: BaseWhen<unknown, unknown, unknown>[], thens: BaseThen<unknown, unknown, unknown>[], ...xtras: ITestShape["givens"][K]) => BaseGiven<unknown, unknown, unknown, unknown, unknown>;
100
+ }, When: {
101
+ [K in keyof ITestShape["whens"]]: (...xtras: ITestShape["whens"][K]) => BaseWhen<unknown, unknown, unknown>;
102
+ }, Then: {
103
+ [K in keyof ITestShape["thens"]]: (...xtras: ITestShape["thens"][K]) => BaseThen<unknown, unknown, unknown>;
104
+ }, Check: {
105
+ [K in keyof ITestShape["checks"]]: (name: string, features: (keyof IFeatureShape)[], callbackA: (whens: {
106
+ [K in keyof ITestShape["whens"]]: (...unknown: any[]) => BaseWhen<unknown, unknown, unknown>;
107
+ }, thens: {
108
+ [K in keyof ITestShape["thens"]]: (...unknown: any[]) => BaseThen<unknown, unknown, unknown>;
109
+ }) => unknown, ...xtras: ITestShape["checks"][K]) => BaseCheck<unknown, unknown, unknown, unknown, ITestShape, IFeatureShape>;
110
+ }) => any[];
111
+ export declare type ITestImplementation<IState, ISelection, IWhenShape, IThenShape, ITestShape extends ITTestShape> = {
112
+ Suites: {
113
+ [K in keyof ITestShape["suites"]]: string;
114
+ };
115
+ Givens: {
116
+ [K in keyof ITestShape["givens"]]: (...Ig: ITestShape["givens"][K]) => IState;
117
+ };
118
+ Whens: {
119
+ [K in keyof ITestShape["whens"]]: (...Iw: ITestShape["whens"][K]) => (zel: ISelection) => IWhenShape;
120
+ };
121
+ Thens: {
122
+ [K in keyof ITestShape["thens"]]: (...It: ITestShape["thens"][K]) => (ssel: ISelection) => IThenShape;
123
+ };
124
+ Checks: {
125
+ [K in keyof ITestShape["checks"]]: (...Ic: ITestShape["checks"][K]) => IState;
126
+ };
127
+ };
128
+ declare class TestArtifact {
129
+ binary: Buffer | string;
130
+ constructor(binary: any);
131
+ }
132
+ export declare abstract class BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITestShape extends ITTestShape, IFeatureShape> {
133
+ name: string;
134
+ givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[];
135
+ checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>[];
136
+ store: IStore;
137
+ aborted: boolean;
138
+ fails: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[];
139
+ testResourceConfiguration: ITTestResource;
140
+ constructor(name: string, givens?: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks?: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>[]);
141
+ aborter(): Promise<void>;
142
+ toObj(): {
143
+ name: string;
144
+ givens: {
145
+ name: string;
146
+ whens: {
147
+ name: string;
148
+ error: boolean;
149
+ }[];
150
+ thens: {
151
+ name: string;
152
+ error: boolean;
153
+ }[];
154
+ errors: Error;
155
+ features: (keyof IFeatureShape)[];
156
+ testArtifacts: Record<string, any[]>;
157
+ }[];
158
+ fails: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[];
159
+ };
160
+ setup(s: IInput): Promise<ISubject>;
161
+ test(t: IThenShape): unknown;
162
+ run(input: any, testResourceConfiguration: ITTestResource): Promise<boolean>;
163
+ }
164
+ export declare abstract class BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape> {
165
+ name: string;
166
+ features: (keyof IFeatureShape)[];
167
+ whens: BaseWhen<IStore, ISelection, IThenShape>[];
168
+ thens: BaseThen<ISelection, IStore, IThenShape>[];
169
+ error: Error;
170
+ abort: boolean;
171
+ store: IStore;
172
+ testArtifacts: Record<string, any[]>;
173
+ constructor(name: string, features: (keyof IFeatureShape)[], whens: BaseWhen<IStore, ISelection, IThenShape>[], thens: BaseThen<ISelection, IStore, IThenShape>[]);
174
+ toObj(): {
175
+ name: string;
176
+ whens: {
177
+ name: string;
178
+ error: boolean;
179
+ }[];
180
+ thens: {
181
+ name: string;
182
+ error: boolean;
183
+ }[];
184
+ errors: Error;
185
+ features: (keyof IFeatureShape)[];
186
+ testArtifacts: Record<string, any[]>;
187
+ };
188
+ abstract givenThat(subject: ISubject, testResourceConfiguration?: any): Promise<IStore>;
189
+ saveTestArtifact(k: string, testArtifact: TestArtifact): void;
190
+ artifactSaver: {
191
+ png: (testArtifact: any) => void;
192
+ };
193
+ aborter(ndx: number): Promise<unknown>;
194
+ afterEach(store: IStore, ndx: number, cb: any): Promise<unknown>;
195
+ give(subject: ISubject, index: number, testResourceConfiguration: any, tester: any): Promise<IStore>;
196
+ }
197
+ export declare abstract class BaseWhen<IStore, ISelection, IThenShape> {
198
+ name: string;
199
+ actioner: (x: ISelection) => IThenShape;
200
+ error: boolean;
201
+ abort: boolean;
202
+ constructor(name: string, actioner: (xyz: ISelection) => IThenShape);
203
+ abstract andWhen(store: IStore, actioner: (x: ISelection) => IThenShape, testResource: any): any;
204
+ toObj(): {
205
+ name: string;
206
+ error: boolean;
207
+ };
208
+ aborter(): boolean;
209
+ test(store: IStore, testResourceConfiguration?: any): Promise<any>;
210
+ }
211
+ export declare abstract class BaseThen<ISelection, IStore, IThenShape> {
212
+ name: string;
213
+ thenCB: (storeState: ISelection) => IThenShape;
214
+ error: boolean;
215
+ abort: boolean;
216
+ constructor(name: string, thenCB: (val: ISelection) => IThenShape);
217
+ toObj(): {
218
+ name: string;
219
+ error: boolean;
220
+ };
221
+ abstract butThen(store: any, testResourceConfiguration?: any): Promise<ISelection>;
222
+ aborter(): boolean;
223
+ test(store: IStore, testResourceConfiguration: any): Promise<IThenShape | undefined>;
224
+ }
225
+ export declare abstract class BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape extends ITTestShape, IFeatureShape> {
226
+ name: string;
227
+ features: (keyof IFeatureShape)[];
228
+ checkCB: (whens: any, thens: any) => any;
229
+ whens: {
230
+ [K in keyof ITestShape["whens"]]: (p: any, tc: any) => BaseWhen<IStore, ISelection, IThenShape>;
231
+ };
232
+ thens: {
233
+ [K in keyof ITestShape["thens"]]: (p: any, tc: any) => BaseThen<ISelection, IStore, IThenShape>;
234
+ };
235
+ constructor(name: string, features: (keyof IFeatureShape)[], checkCB: (whens: any, thens: any) => any, whens: any, thens: any);
236
+ abstract checkThat(subject: ISubject, testResourceConfiguration?: any): Promise<IStore>;
237
+ afterEach(store: IStore, ndx: number, cb?: any): Promise<unknown>;
238
+ check(subject: ISubject, ndx: number, testResourceConfiguration: any, tester: any): Promise<void>;
239
+ }
240
+ export declare abstract class TesterantoLevelZero<IInput, ISubject, IStore, ISelection, SuiteExtensions, GivenExtensions, WhenExtensions, ThenExtensions, CheckExtensions, IThenShape, IFeatureShape> {
241
+ readonly cc: IStore;
242
+ constructorator: IStore;
243
+ suitesOverrides: Record<keyof SuiteExtensions, (name: string, givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>[]) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>;
244
+ givenOverides: Record<keyof GivenExtensions, (name: string, features: (keyof IFeatureShape)[], whens: BaseWhen<IStore, ISelection, IThenShape>[], thens: BaseThen<ISelection, IStore, IThenShape>[], ...xtraArgs: any[]) => BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>>;
245
+ whenOverides: Record<keyof WhenExtensions, (any: any) => BaseWhen<IStore, ISelection, IThenShape>>;
246
+ thenOverides: Record<keyof ThenExtensions, (selection: ISelection, expectation: any) => BaseThen<ISelection, IStore, IThenShape>>;
247
+ checkOverides: Record<keyof CheckExtensions, (feature: string, callback: (whens: any, thens: any) => any, ...xtraArgs: any[]) => BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>;
248
+ constructor(cc: IStore, suitesOverrides: Record<keyof SuiteExtensions, (name: string, givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>[]) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>, givenOverides: Record<keyof GivenExtensions, (name: string, features: (keyof IFeatureShape)[], whens: BaseWhen<IStore, ISelection, IThenShape>[], thens: BaseThen<ISelection, IStore, IThenShape>[], ...xtraArgs: any[]) => BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>>, whenOverides: Record<keyof WhenExtensions, (c: any) => BaseWhen<IStore, ISelection, IThenShape>>, thenOverides: Record<keyof ThenExtensions, (selection: ISelection, expectation: any) => BaseThen<ISelection, IStore, IThenShape>>, checkOverides: Record<keyof CheckExtensions, (feature: string, callback: (whens: any, thens: any) => any, ...xtraArgs: any[]) => BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>);
249
+ Suites(): Record<keyof SuiteExtensions, (name: string, givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>[]) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>;
250
+ Given(): Record<keyof GivenExtensions, (name: string, features: (keyof IFeatureShape)[], whens: BaseWhen<IStore, ISelection, IThenShape>[], thens: BaseThen<ISelection, IStore, IThenShape>[], ...xtraArgs: any[]) => BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>>;
251
+ When(): Record<keyof WhenExtensions, (arg0: IStore, ...arg1: any) => BaseWhen<IStore, ISelection, IThenShape>>;
252
+ Then(): Record<keyof ThenExtensions, (selection: ISelection, expectation: any) => BaseThen<ISelection, IStore, IThenShape>>;
253
+ Check(): Record<keyof CheckExtensions, (feature: string, callback: (whens: any, thens: any) => any, whens: any, thens: any) => BaseCheck<ISubject, IStore, ISelection, IThenShape, ITTestShape, IFeatureShape>>;
254
+ }
255
+ export declare abstract class TesterantoLevelOne<ITestShape extends ITTestShape, IInitialState, ISelection, IStore, ISubject, IWhenShape, IThenShape, IInput, IFeatureShape> {
256
+ constructor(testImplementation: ITestImplementation<IInitialState, ISelection, IWhenShape, IThenShape, ITestShape>, testSpecification: (Suite: {
257
+ [K in keyof ITestShape["suites"]]: (feature: string, givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>[]) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>;
258
+ }, Given: {
259
+ [K in keyof ITestShape["givens"]]: (name: string, features: (keyof IFeatureShape)[], whens: BaseWhen<IStore, ISelection, IThenShape>[], thens: BaseThen<ISelection, IStore, IThenShape>[], ...a: ITestShape["givens"][K]) => BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>;
260
+ }, When: {
261
+ [K in keyof ITestShape["whens"]]: (...a: ITestShape["whens"][K]) => BaseWhen<IStore, ISelection, IThenShape>;
262
+ }, Then: {
263
+ [K in keyof ITestShape["thens"]]: (...a: ITestShape["thens"][K]) => BaseThen<ISelection, IStore, IThenShape>;
264
+ }, Check: {
265
+ [K in keyof ITestShape["checks"]]: (name: string, features: (keyof IFeatureShape)[], cbz: (...any: any[]) => Promise<void>) => any;
266
+ }) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>[], input: IInput, suiteKlasser: (name: string, givens: BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>[], checks: BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>[]) => BaseSuite<IInput, ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>, givenKlasser: (n: any, f: any, w: any, t: any, z?: any) => BaseGiven<ISubject, IStore, ISelection, IThenShape, IFeatureShape>, whenKlasser: (s: any, o: any) => BaseWhen<IStore, ISelection, IThenShape>, thenKlasser: (s: any, o: any) => BaseThen<IStore, ISelection, IThenShape>, checkKlasser: (n: any, f: any, cb: any, w: any, t: any) => BaseCheck<ISubject, IStore, ISelection, IThenShape, ITestShape, IFeatureShape>, testResource: any);
267
+ }
268
+ export declare const Testeranto: <TestShape extends ITTestShape, Input, Subject, Store, Selection_1, WhenShape, ThenShape, InitialStateShape, IFeatureShape>(input: Input, testSpecification: ITestSpecification<TestShape, IFeatureShape>, testImplementation: any, testResource: ITTestResourceRequirement, testInterface: {
269
+ actionHandler?: ((b: (...any: any[]) => any) => any) | undefined;
270
+ afterEach?: ((store: Store, ndx: number, cb: any) => unknown) | undefined;
271
+ andWhen: (store: Store, actioner: any, testResource: ITTestResource) => Promise<Selection_1>;
272
+ assertioner?: ((t: ThenShape) => any) | undefined;
273
+ beforeAll?: ((input: Input) => Promise<Subject>) | undefined;
274
+ beforeEach?: ((subject: Subject, initialValues: any, testResource: ITTestResource) => Promise<Store>) | undefined;
275
+ butThen?: ((store: Store, callback: any, testResource: ITTestResource) => Promise<Selection_1>) | undefined;
276
+ }) => Promise<void>;
277
+ export {};