@react-native-harness/runtime 1.0.0-alpha.1 → 1.0.0-alpha.10
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/bundler/bundle.d.ts.map +1 -1
- package/dist/bundler/bundle.js +7 -1
- package/dist/bundler/errors.d.ts +5 -0
- package/dist/bundler/errors.d.ts.map +1 -1
- package/dist/bundler/errors.js +10 -0
- package/dist/client/factory.d.ts.map +1 -1
- package/dist/client/factory.js +8 -1
- package/dist/initialize.js +8 -6
- package/dist/mocker/registry.d.ts +2 -2
- package/dist/mocker/registry.d.ts.map +1 -1
- package/dist/runner/errors.d.ts +4 -2
- package/dist/runner/errors.d.ts.map +1 -1
- package/dist/runner/errors.js +21 -3
- package/dist/runner/runSuite.d.ts.map +1 -1
- package/dist/runner/runSuite.js +22 -7
- package/dist/symbolicate.d.ts +3 -0
- package/dist/symbolicate.d.ts.map +1 -0
- package/dist/symbolicate.js +18 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/progressLogger.d.ts +8 -0
- package/dist/utils/progressLogger.d.ts.map +1 -0
- package/dist/utils/progressLogger.js +73 -0
- package/package.json +7 -5
- package/src/bundler/bundle.ts +9 -1
- package/src/bundler/errors.ts +10 -0
- package/src/client/factory.ts +8 -1
- package/src/initialize.ts +11 -8
- package/src/mocker/registry.ts +3 -3
- package/src/react-native.d.ts +37 -0
- package/src/runner/errors.ts +35 -5
- package/src/runner/runSuite.ts +27 -9
- package/src/symbolicate.ts +22 -0
- package/src/utils/progressLogger.ts +91 -0
- package/dist/bundler/dev-server.d.ts +0 -2
- package/dist/bundler/dev-server.d.ts.map +0 -1
- package/dist/bundler/dev-server.js +0 -5
- package/dist/exports.d.ts +0 -7
- package/dist/exports.d.ts.map +0 -1
- package/dist/exports.js +0 -6
- package/dist/getEntryComponent.d.ts +0 -6
- package/dist/getEntryComponent.d.ts.map +0 -1
- package/dist/getEntryComponent.js +0 -6
- package/dist/logger.d.ts +0 -6
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -14
- package/dist/mock.d.ts +0 -15
- package/dist/mock.d.ts.map +0 -1
- package/dist/mock.js +0 -37
- package/dist/module.d.ts +0 -3
- package/dist/module.d.ts.map +0 -1
- package/dist/module.js +0 -19
- package/dist/module.web.d.ts +0 -2
- package/dist/module.web.d.ts.map +0 -1
- package/dist/module.web.js +0 -12
- package/dist/rntl/client.d.ts +0 -3
- package/dist/rntl/client.d.ts.map +0 -1
- package/dist/rntl/client.js +0 -8
- package/dist/rntl/describe.d.ts +0 -2
- package/dist/rntl/describe.d.ts.map +0 -1
- package/dist/rntl/describe.js +0 -1
- package/dist/rntl/expect.d.ts +0 -128
- package/dist/rntl/expect.d.ts.map +0 -1
- package/dist/rntl/expect.js +0 -670
- package/dist/rntl/fn.d.ts +0 -2
- package/dist/rntl/fn.d.ts.map +0 -1
- package/dist/rntl/fn.js +0 -1
- package/dist/rntl/mock.d.ts +0 -2
- package/dist/rntl/mock.d.ts.map +0 -1
- package/dist/rntl/mock.js +0 -1
- package/dist/rntl/render.d.ts +0 -4
- package/dist/rntl/render.d.ts.map +0 -1
- package/dist/rntl/render.js +0 -11
- package/dist/rntl/screen.d.ts +0 -45
- package/dist/rntl/screen.d.ts.map +0 -1
- package/dist/rntl/screen.js +0 -31
- package/dist/rntl/spies.d.ts +0 -45
- package/dist/rntl/spies.d.ts.map +0 -1
- package/dist/rntl/spies.js +0 -553
- package/dist/rntl/userEvent.d.ts +0 -22
- package/dist/rntl/userEvent.d.ts.map +0 -1
- package/dist/rntl/userEvent.js +0 -19
- package/dist/runner.d.ts +0 -7
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -201
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -44
- package/dist/state.d.ts +0 -25
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -37
- package/dist/ui/UI.d.ts +0 -13
- package/dist/ui/UI.d.ts.map +0 -1
- package/dist/ui/UI.js +0 -121
package/src/runner/errors.ts
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
import type { SerializedError } from '@react-native-harness/bridge';
|
|
1
|
+
import type { SerializedError, CodeFrame } from '@react-native-harness/bridge';
|
|
2
|
+
import { getCodeFrame } from '../symbolicate.js';
|
|
2
3
|
|
|
3
4
|
export class TestExecutionError extends Error {
|
|
4
5
|
file: string;
|
|
5
6
|
suite: string;
|
|
6
7
|
test: string;
|
|
8
|
+
codeFrame?: CodeFrame;
|
|
7
9
|
|
|
8
|
-
constructor(
|
|
10
|
+
constructor(
|
|
11
|
+
error: unknown,
|
|
12
|
+
file: string,
|
|
13
|
+
suite: string,
|
|
14
|
+
test: string,
|
|
15
|
+
codeFrame?: CodeFrame
|
|
16
|
+
) {
|
|
9
17
|
super('Test execution error');
|
|
10
18
|
this.name = 'TestExecutionError';
|
|
11
19
|
this.file = file;
|
|
12
20
|
this.suite = suite;
|
|
13
21
|
this.test = test;
|
|
14
22
|
this.cause = error;
|
|
23
|
+
this.codeFrame = codeFrame;
|
|
15
24
|
}
|
|
16
25
|
|
|
17
26
|
toSerializedJSON(): SerializedError {
|
|
@@ -19,13 +28,34 @@ export class TestExecutionError extends Error {
|
|
|
19
28
|
this.cause instanceof Error ? this.cause.name : 'Unknown name';
|
|
20
29
|
const causeMessage =
|
|
21
30
|
this.cause instanceof Error ? this.cause.message : 'Unknown message';
|
|
22
|
-
const
|
|
23
|
-
this.cause instanceof Error ? this.cause.stack : undefined;
|
|
31
|
+
const causeCodeFrame = this.codeFrame;
|
|
24
32
|
|
|
25
33
|
return {
|
|
26
34
|
name: causeName,
|
|
27
35
|
message: causeMessage,
|
|
28
|
-
|
|
36
|
+
codeFrame: causeCodeFrame,
|
|
29
37
|
};
|
|
30
38
|
}
|
|
31
39
|
}
|
|
40
|
+
|
|
41
|
+
export const getTestExecutionError = async (
|
|
42
|
+
error: unknown,
|
|
43
|
+
file: string,
|
|
44
|
+
suite: string,
|
|
45
|
+
test: string
|
|
46
|
+
): Promise<TestExecutionError> => {
|
|
47
|
+
try {
|
|
48
|
+
if (error instanceof Error) {
|
|
49
|
+
const codeFrame = await getCodeFrame(error);
|
|
50
|
+
|
|
51
|
+
if (codeFrame) {
|
|
52
|
+
return new TestExecutionError(error, file, suite, test, codeFrame);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return new TestExecutionError(error, file, suite, test);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
// If the stack cannot be symbolicated, return the original error
|
|
59
|
+
return new TestExecutionError(error, file, suite, test);
|
|
60
|
+
}
|
|
61
|
+
};
|
package/src/runner/runSuite.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type {
|
|
|
5
5
|
TestSuiteResult,
|
|
6
6
|
} from '@react-native-harness/bridge';
|
|
7
7
|
import { runHooks } from './hooks.js';
|
|
8
|
-
import {
|
|
8
|
+
import { getTestExecutionError } from './errors.js';
|
|
9
9
|
import { TestRunnerContext } from './types.js';
|
|
10
10
|
|
|
11
11
|
const runTest = async (
|
|
@@ -94,7 +94,7 @@ const runTest = async (
|
|
|
94
94
|
|
|
95
95
|
return result;
|
|
96
96
|
} catch (error) {
|
|
97
|
-
const testError =
|
|
97
|
+
const testError = await getTestExecutionError(
|
|
98
98
|
error,
|
|
99
99
|
context.testFilePath,
|
|
100
100
|
suite.name,
|
|
@@ -173,13 +173,31 @@ export const runSuite = async (
|
|
|
173
173
|
|
|
174
174
|
if (hasFailedTests || hasFailedSuites) {
|
|
175
175
|
status = 'failed';
|
|
176
|
-
} else
|
|
177
|
-
(
|
|
178
|
-
|
|
179
|
-
testResults.length > 0
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
176
|
+
} else {
|
|
177
|
+
// Check if all tests and suites are skipped (and there are some tests/suites to check)
|
|
178
|
+
const allTestsSkipped =
|
|
179
|
+
testResults.length > 0 &&
|
|
180
|
+
testResults.every((result) => result.status === 'skipped');
|
|
181
|
+
const allSuitesSkipped =
|
|
182
|
+
suiteResults.length > 0 &&
|
|
183
|
+
suiteResults.every((result) => result.status === 'skipped');
|
|
184
|
+
const hasAnyContent = testResults.length > 0 || suiteResults.length > 0;
|
|
185
|
+
|
|
186
|
+
if (
|
|
187
|
+
hasAnyContent &&
|
|
188
|
+
((testResults.length > 0 &&
|
|
189
|
+
allTestsSkipped &&
|
|
190
|
+
suiteResults.length === 0) ||
|
|
191
|
+
(suiteResults.length > 0 &&
|
|
192
|
+
allSuitesSkipped &&
|
|
193
|
+
testResults.length === 0) ||
|
|
194
|
+
(testResults.length > 0 &&
|
|
195
|
+
suiteResults.length > 0 &&
|
|
196
|
+
allTestsSkipped &&
|
|
197
|
+
allSuitesSkipped))
|
|
198
|
+
) {
|
|
199
|
+
status = 'skipped';
|
|
200
|
+
}
|
|
183
201
|
}
|
|
184
202
|
|
|
185
203
|
// Emit suite-finished event
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CodeFrame } from '@react-native-harness/bridge';
|
|
2
|
+
import parseErrorStack from 'react-native/Libraries/Core/Devtools/parseErrorStack';
|
|
3
|
+
import symbolicateStackTrace from 'react-native/Libraries/Core/Devtools/symbolicateStackTrace';
|
|
4
|
+
|
|
5
|
+
export const getCodeFrame = async (error: Error): Promise<CodeFrame | null> => {
|
|
6
|
+
const parsedStack = parseErrorStack(error.stack);
|
|
7
|
+
const symbolicatedStack = await symbolicateStackTrace(parsedStack);
|
|
8
|
+
|
|
9
|
+
if (!symbolicatedStack.codeFrame) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Normalize optionality (null -> undefined)
|
|
14
|
+
return {
|
|
15
|
+
...symbolicatedStack.codeFrame,
|
|
16
|
+
location: symbolicatedStack.codeFrame.location
|
|
17
|
+
? {
|
|
18
|
+
...symbolicatedStack.codeFrame.location,
|
|
19
|
+
}
|
|
20
|
+
: undefined,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TestRunnerEvents,
|
|
3
|
+
TestCollectorEvents,
|
|
4
|
+
} from '@react-native-harness/bridge';
|
|
5
|
+
import type { EventEmitter } from './emitter.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Attaches console logging to runtime events to provide progress information.
|
|
9
|
+
* This function handles all test run lifecycle events including start, progress, and completion.
|
|
10
|
+
*/
|
|
11
|
+
export const attachProgressLogger = (
|
|
12
|
+
events: EventEmitter<TestRunnerEvents | TestCollectorEvents>,
|
|
13
|
+
testPath: string
|
|
14
|
+
): void => {
|
|
15
|
+
// Log test run start
|
|
16
|
+
console.log(`🎯 Starting test run for: ${testPath}`);
|
|
17
|
+
|
|
18
|
+
// Handle all runtime events
|
|
19
|
+
events.addListener((event) => {
|
|
20
|
+
switch (event.type) {
|
|
21
|
+
case 'collection-started':
|
|
22
|
+
console.log(`📄 Collecting tests from: ${event.file}`);
|
|
23
|
+
break;
|
|
24
|
+
case 'collection-finished':
|
|
25
|
+
console.log(`✅ Test collection completed in ${event.duration}ms`);
|
|
26
|
+
break;
|
|
27
|
+
case 'file-started':
|
|
28
|
+
console.log(`🚀 Running tests in: ${event.file}`);
|
|
29
|
+
break;
|
|
30
|
+
case 'file-finished':
|
|
31
|
+
console.log(`📋 File completed in ${event.duration}ms: ${event.file}`);
|
|
32
|
+
break;
|
|
33
|
+
case 'suite-started':
|
|
34
|
+
console.log(`📦 Suite started: ${event.name}`);
|
|
35
|
+
break;
|
|
36
|
+
case 'suite-finished':
|
|
37
|
+
const suiteStatus =
|
|
38
|
+
event.status === 'passed'
|
|
39
|
+
? '✅'
|
|
40
|
+
: event.status === 'failed'
|
|
41
|
+
? '❌'
|
|
42
|
+
: '⏭️';
|
|
43
|
+
console.log(
|
|
44
|
+
`${suiteStatus} Suite "${event.name}" ${event.status} (${event.duration}ms)`
|
|
45
|
+
);
|
|
46
|
+
if (event.error) {
|
|
47
|
+
console.log(` Error: ${event.error.message}`);
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
case 'test-started':
|
|
51
|
+
console.log(` 🧪 Running: ${event.name}`);
|
|
52
|
+
break;
|
|
53
|
+
case 'test-finished':
|
|
54
|
+
const testStatus =
|
|
55
|
+
event.status === 'passed'
|
|
56
|
+
? '✅'
|
|
57
|
+
: event.status === 'failed'
|
|
58
|
+
? '❌'
|
|
59
|
+
: event.status === 'skipped'
|
|
60
|
+
? '⏭️'
|
|
61
|
+
: '📝';
|
|
62
|
+
console.log(` ${testStatus} ${event.name} (${event.duration}ms)`);
|
|
63
|
+
if (event.error) {
|
|
64
|
+
console.log(` Error: ${event.error.message}`);
|
|
65
|
+
if (event.error.codeFrame) {
|
|
66
|
+
console.log(` Code frame: ${event.error.codeFrame.content}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
default:
|
|
71
|
+
console.log(`🔔 Event: ${(event as any).type}`, event);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Add completion and error logging through a wrapper
|
|
77
|
+
const originalEmit = events.emit;
|
|
78
|
+
let isCompleted = false;
|
|
79
|
+
|
|
80
|
+
events.emit = (event) => {
|
|
81
|
+
const result = originalEmit.call(events, event);
|
|
82
|
+
|
|
83
|
+
// Check if this is the last event to log completion
|
|
84
|
+
if (!isCompleted && event.type === 'file-finished') {
|
|
85
|
+
console.log(`🏁 Test run completed for: ${testPath}`);
|
|
86
|
+
isCompleted = true;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return result;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/bundler/dev-server.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAO,MAGlC,CAAC"}
|
package/dist/exports.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { UI } from './ui/UI.js';
|
|
2
|
-
export { getEntryComponent } from './getEntryComponent.js';
|
|
3
|
-
export * from './spy/index.js';
|
|
4
|
-
export * from './expect/index.js';
|
|
5
|
-
export * from './collector/index.js';
|
|
6
|
-
export * from './mocker/index.js';
|
|
7
|
-
//# sourceMappingURL=exports.d.ts.map
|
package/dist/exports.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
|
package/dist/exports.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getEntryComponent.d.ts","sourceRoot":"","sources":["../src/getEntryComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAEpC,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,UAAU,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAAI,WAAW,aAAa,QAMzD,CAAC"}
|
package/dist/logger.d.ts
DELETED
package/dist/logger.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;oBACD,OAAO,EAAE;qBAGR,OAAO,EAAE;mBAGX,OAAO,EAAE;CAKzB,CAAC"}
|
package/dist/logger.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const verbose = global.RN_HARNESS.verbose;
|
|
2
|
-
export const logger = {
|
|
3
|
-
info: (...args) => {
|
|
4
|
-
console.info(...args);
|
|
5
|
-
},
|
|
6
|
-
error: (...args) => {
|
|
7
|
-
console.error(...args);
|
|
8
|
-
},
|
|
9
|
-
log: (...args) => {
|
|
10
|
-
if (verbose) {
|
|
11
|
-
console.log(...args);
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
};
|
package/dist/mock.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
type ModuleId = number;
|
|
2
|
-
type Require = {
|
|
3
|
-
(moduleId: number): unknown;
|
|
4
|
-
};
|
|
5
|
-
declare global {
|
|
6
|
-
var __r: Require;
|
|
7
|
-
}
|
|
8
|
-
export type ModuleFactory = () => unknown;
|
|
9
|
-
export declare const mock: (moduleId: ModuleId, factory: ModuleFactory) => void;
|
|
10
|
-
export declare const clearMocks: () => void;
|
|
11
|
-
export declare const getMockRegistry: () => Map<number, ModuleFactory>;
|
|
12
|
-
export declare const getMockImplementation: (moduleId: number) => unknown | null;
|
|
13
|
-
export declare const requireActual: <T = any>(moduleId: ModuleId) => T;
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=mock.d.ts.map
|
package/dist/mock.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,MAAM,CAAC;AACvB,KAAK,OAAO,GAAG;IACb,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B,CAAC;AACF,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,GAAG,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;AAO1C,eAAO,MAAM,IAAI,GAAI,UAAU,QAAQ,EAAE,SAAS,aAAa,KAAG,IAGjE,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,IAG7B,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,GAAG,CAAC,MAAM,EAAE,aAAa,CAE3D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,OAAO,GAAG,IAalE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,GAAG,GAAG,EAAE,UAAU,QAAQ,KAAG,CAC5B,CAAC"}
|
package/dist/mock.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const mockRegistry = new Map();
|
|
2
|
-
const mockCache = new Map();
|
|
3
|
-
const originalRequire = global.__r;
|
|
4
|
-
export const mock = (moduleId, factory) => {
|
|
5
|
-
mockCache.delete(moduleId);
|
|
6
|
-
mockRegistry.set(moduleId, factory);
|
|
7
|
-
};
|
|
8
|
-
export const clearMocks = () => {
|
|
9
|
-
mockRegistry.clear();
|
|
10
|
-
mockCache.clear();
|
|
11
|
-
};
|
|
12
|
-
export const getMockRegistry = () => {
|
|
13
|
-
return mockRegistry;
|
|
14
|
-
};
|
|
15
|
-
export const getMockImplementation = (moduleId) => {
|
|
16
|
-
if (mockCache.has(moduleId)) {
|
|
17
|
-
return mockCache.get(moduleId);
|
|
18
|
-
}
|
|
19
|
-
const factory = mockRegistry.get(moduleId);
|
|
20
|
-
if (!factory) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
const implementation = factory();
|
|
24
|
-
mockCache.set(moduleId, implementation);
|
|
25
|
-
return implementation;
|
|
26
|
-
};
|
|
27
|
-
export const requireActual = (moduleId) => originalRequire(moduleId);
|
|
28
|
-
const mockRequire = (moduleId) => {
|
|
29
|
-
const mockedModule = getMockImplementation(moduleId);
|
|
30
|
-
if (mockedModule) {
|
|
31
|
-
return mockedModule;
|
|
32
|
-
}
|
|
33
|
-
return originalRequire(moduleId);
|
|
34
|
-
};
|
|
35
|
-
Object.setPrototypeOf(mockRequire, Object.getPrototypeOf(originalRequire));
|
|
36
|
-
Object.defineProperties(mockRequire, Object.getOwnPropertyDescriptors(originalRequire));
|
|
37
|
-
global.__r = mockRequire;
|
package/dist/module.d.ts
DELETED
package/dist/module.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAIlE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,IAQhD,CAAC"}
|
package/dist/module.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Platform } from 'react-native';
|
|
2
|
-
const METRO_URL = 'http://localhost:8081';
|
|
3
|
-
const getModuleUrl = (fileName) => {
|
|
4
|
-
const bundleName = fileName.split('.').slice(0, -1).join('.') + '.bundle';
|
|
5
|
-
return `${METRO_URL}/${bundleName}?modulesOnly=true&platform=${Platform.OS}`;
|
|
6
|
-
};
|
|
7
|
-
export const fetchModule = async (fileName) => {
|
|
8
|
-
const url = getModuleUrl(fileName);
|
|
9
|
-
const response = await fetch(url);
|
|
10
|
-
return response.text();
|
|
11
|
-
};
|
|
12
|
-
export const executeModule = (moduleJs) => {
|
|
13
|
-
const __rMatch = moduleJs.match(/__r\((\d+)\)/);
|
|
14
|
-
const __rParam = __rMatch[1];
|
|
15
|
-
// eslint-disable-next-line no-eval
|
|
16
|
-
eval(moduleJs);
|
|
17
|
-
// @ts-ignore - __r is injected by Metro bundler
|
|
18
|
-
__r(Number(__rParam));
|
|
19
|
-
};
|
package/dist/module.web.d.ts
DELETED
package/dist/module.web.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.web.d.ts","sourceRoot":"","sources":["../src/module.web.ts"],"names":[],"mappings":""}
|
package/dist/module.web.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// const context = require.context('../..', false, /\.test.tsx$/);
|
|
2
|
-
export {};
|
|
3
|
-
// export const fetchModule = async (fileName: string): Promise<string> => {
|
|
4
|
-
// return fileName;
|
|
5
|
-
// };
|
|
6
|
-
// export const executeModule = (moduleJs: string): void => {
|
|
7
|
-
// const modulePath = `./${moduleJs}`;
|
|
8
|
-
// if (!context.keys().includes(modulePath)) {
|
|
9
|
-
// throw new Error(`Module ${moduleJs} not found`);
|
|
10
|
-
// }
|
|
11
|
-
// return context(modulePath);
|
|
12
|
-
// };
|
package/dist/rntl/client.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rntl/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,eAAO,MAAM,SAAS,QAAO,YAU5B,CAAC"}
|
package/dist/rntl/client.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { state } from '../state.js';
|
|
2
|
-
export const getClient = () => {
|
|
3
|
-
const client = state.getState().client;
|
|
4
|
-
if (!client) {
|
|
5
|
-
throw new Error('Client not found. Are you sure you are running the test in the react-native-harness environment?');
|
|
6
|
-
}
|
|
7
|
-
return client;
|
|
8
|
-
};
|
package/dist/rntl/describe.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/rntl/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/rntl/describe.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { describe, test, it } from '../collector/functions.js';
|
package/dist/rntl/expect.d.ts
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
declare const ASYMMETRIC_MATCHER: unique symbol;
|
|
2
|
-
interface AsymmetricMatcher {
|
|
3
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
4
|
-
asymmetricMatch(other: unknown): boolean;
|
|
5
|
-
toString(): string;
|
|
6
|
-
}
|
|
7
|
-
declare class AnythingMatcher implements AsymmetricMatcher {
|
|
8
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
9
|
-
asymmetricMatch(other: unknown): boolean;
|
|
10
|
-
toString(): string;
|
|
11
|
-
}
|
|
12
|
-
declare class AnyMatcher implements AsymmetricMatcher {
|
|
13
|
-
private expectedType;
|
|
14
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
15
|
-
constructor(expectedType: new (...args: unknown[]) => unknown);
|
|
16
|
-
asymmetricMatch(other: unknown): boolean;
|
|
17
|
-
toString(): string;
|
|
18
|
-
}
|
|
19
|
-
declare class ArrayContainingMatcher implements AsymmetricMatcher {
|
|
20
|
-
private expectedArray;
|
|
21
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
22
|
-
constructor(expectedArray: unknown[]);
|
|
23
|
-
asymmetricMatch(other: unknown): boolean;
|
|
24
|
-
toString(): string;
|
|
25
|
-
}
|
|
26
|
-
declare class ObjectContainingMatcher implements AsymmetricMatcher {
|
|
27
|
-
private expectedObject;
|
|
28
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
29
|
-
constructor(expectedObject: Record<string, unknown>);
|
|
30
|
-
asymmetricMatch(other: unknown): boolean;
|
|
31
|
-
toString(): string;
|
|
32
|
-
}
|
|
33
|
-
declare class StringContainingMatcher implements AsymmetricMatcher {
|
|
34
|
-
private expectedString;
|
|
35
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
36
|
-
constructor(expectedString: string);
|
|
37
|
-
asymmetricMatch(other: unknown): boolean;
|
|
38
|
-
toString(): string;
|
|
39
|
-
}
|
|
40
|
-
declare class StringMatchingMatcher implements AsymmetricMatcher {
|
|
41
|
-
private expectedPattern;
|
|
42
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
43
|
-
constructor(expectedPattern: string | RegExp);
|
|
44
|
-
asymmetricMatch(other: unknown): boolean;
|
|
45
|
-
toString(): string;
|
|
46
|
-
}
|
|
47
|
-
declare class ArrayOfMatcher implements AsymmetricMatcher {
|
|
48
|
-
private expectedValue;
|
|
49
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
50
|
-
constructor(expectedValue: unknown);
|
|
51
|
-
asymmetricMatch(other: unknown): boolean;
|
|
52
|
-
toString(): string;
|
|
53
|
-
}
|
|
54
|
-
declare class CloseToMatcher implements AsymmetricMatcher {
|
|
55
|
-
private expectedNumber;
|
|
56
|
-
private numDigits;
|
|
57
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
58
|
-
constructor(expectedNumber: number, numDigits?: number);
|
|
59
|
-
asymmetricMatch(other: unknown): boolean;
|
|
60
|
-
toString(): string;
|
|
61
|
-
}
|
|
62
|
-
declare class NotMatcher implements AsymmetricMatcher {
|
|
63
|
-
private innerMatcher;
|
|
64
|
-
[ASYMMETRIC_MATCHER]: true;
|
|
65
|
-
constructor(innerMatcher: AsymmetricMatcher);
|
|
66
|
-
asymmetricMatch(other: unknown): boolean;
|
|
67
|
-
toString(): string;
|
|
68
|
-
}
|
|
69
|
-
interface Matchers {
|
|
70
|
-
toBe(expected: unknown): void;
|
|
71
|
-
toEqual(expected: unknown): void;
|
|
72
|
-
toStrictEqual(expected: unknown): void;
|
|
73
|
-
toBeTruthy(): void;
|
|
74
|
-
toBeFalsy(): void;
|
|
75
|
-
toBeNull(): void;
|
|
76
|
-
toBeUndefined(): void;
|
|
77
|
-
toBeDefined(): void;
|
|
78
|
-
toBeInstanceOf(expected: new (...args: unknown[]) => unknown): void;
|
|
79
|
-
toContain(expected: unknown): void;
|
|
80
|
-
toContainEqual(expected: unknown): void;
|
|
81
|
-
toHaveLength(expected: number): void;
|
|
82
|
-
toHaveProperty(keyPath: string | string[], value?: unknown): void;
|
|
83
|
-
toBeCloseTo(expected: number, numDigits?: number): void;
|
|
84
|
-
toBeGreaterThan(expected: number | bigint): void;
|
|
85
|
-
toBeGreaterThanOrEqual(expected: number | bigint): void;
|
|
86
|
-
toBeLessThan(expected: number | bigint): void;
|
|
87
|
-
toBeLessThanOrEqual(expected: number | bigint): void;
|
|
88
|
-
toBeNaN(): void;
|
|
89
|
-
toMatch(expected: string | RegExp): void;
|
|
90
|
-
toMatchObject(expected: Record<string, unknown>): void;
|
|
91
|
-
toThrow(expected?: string | RegExp | Error): void;
|
|
92
|
-
toHaveBeenCalled(): void;
|
|
93
|
-
toHaveBeenCalledTimes(expected: number): void;
|
|
94
|
-
toHaveBeenCalledWith(...expected: unknown[]): void;
|
|
95
|
-
toHaveBeenLastCalledWith(...expected: unknown[]): void;
|
|
96
|
-
toHaveBeenNthCalledWith(nthCall: number, ...expected: unknown[]): void;
|
|
97
|
-
toHaveReturned(): void;
|
|
98
|
-
toHaveReturnedTimes(expected: number): void;
|
|
99
|
-
toHaveReturnedWith(expected: unknown): void;
|
|
100
|
-
toHaveLastReturnedWith(expected: unknown): void;
|
|
101
|
-
toHaveNthReturnedWith(nthCall: number, expected: unknown): void;
|
|
102
|
-
}
|
|
103
|
-
interface ExpectResult extends Matchers {
|
|
104
|
-
not: Matchers;
|
|
105
|
-
}
|
|
106
|
-
export declare const asymmetricMatchers: {
|
|
107
|
-
anything: () => AnythingMatcher;
|
|
108
|
-
any: (expectedType: new (...args: unknown[]) => unknown) => AnyMatcher;
|
|
109
|
-
arrayContaining: (expectedArray: unknown[]) => ArrayContainingMatcher;
|
|
110
|
-
objectContaining: (expectedObject: Record<string, unknown>) => ObjectContainingMatcher;
|
|
111
|
-
stringContaining: (expectedString: string) => StringContainingMatcher;
|
|
112
|
-
stringMatching: (expectedPattern: string | RegExp) => StringMatchingMatcher;
|
|
113
|
-
arrayOf: (expectedValue: unknown) => ArrayOfMatcher;
|
|
114
|
-
closeTo: (expectedNumber: number, numDigits?: number) => CloseToMatcher;
|
|
115
|
-
not: {
|
|
116
|
-
arrayContaining: (expectedArray: unknown[]) => NotMatcher;
|
|
117
|
-
objectContaining: (expectedObject: Record<string, unknown>) => NotMatcher;
|
|
118
|
-
stringContaining: (expectedString: string) => NotMatcher;
|
|
119
|
-
stringMatching: (expectedPattern: string | RegExp) => NotMatcher;
|
|
120
|
-
arrayOf: (expectedValue: unknown) => NotMatcher;
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
type ExpectStatic = {
|
|
124
|
-
(actual: unknown): ExpectResult;
|
|
125
|
-
} & typeof asymmetricMatchers;
|
|
126
|
-
export declare const expect: ExpectStatic;
|
|
127
|
-
export {};
|
|
128
|
-
//# sourceMappingURL=expect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../src/rntl/expect.ts"],"names":[],"mappings":"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"}
|