@react-native-harness/cli 1.1.0-rc.2 → 1.1.0-rc.3
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/bundlers/metro.d.ts +5 -0
- package/dist/bundlers/metro.d.ts.map +1 -0
- package/dist/bundlers/metro.js +71 -0
- package/dist/bundlers/webpack.d.ts +2 -0
- package/dist/bundlers/webpack.d.ts.map +1 -0
- package/dist/bundlers/webpack.js +49 -0
- package/dist/commands/test.d.ts +3 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +140 -0
- package/dist/discovery/index.d.ts +3 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/testDiscovery.d.ts +11 -0
- package/dist/discovery/testDiscovery.d.ts.map +1 -0
- package/dist/discovery/testDiscovery.js +29 -0
- package/dist/errors/appNotInstalledError.d.ts +7 -0
- package/dist/errors/appNotInstalledError.d.ts.map +1 -0
- package/dist/errors/appNotInstalledError.js +12 -0
- package/dist/errors/bridgeTimeoutError.d.ts +7 -0
- package/dist/errors/bridgeTimeoutError.d.ts.map +1 -0
- package/dist/errors/bridgeTimeoutError.js +12 -0
- package/dist/errors/errorHandler.d.ts +2 -0
- package/dist/errors/errorHandler.d.ts.map +1 -0
- package/dist/errors/errorHandler.js +152 -0
- package/dist/errors/errors.d.ts +45 -0
- package/dist/errors/errors.d.ts.map +1 -0
- package/dist/errors/errors.js +89 -0
- package/dist/jest.d.ts +2 -0
- package/dist/jest.d.ts.map +1 -0
- package/dist/jest.js +7 -0
- package/dist/platforms/android/build.d.ts +5 -0
- package/dist/platforms/android/build.d.ts.map +1 -0
- package/dist/platforms/android/build.js +29 -0
- package/dist/platforms/android/device.d.ts +5 -0
- package/dist/platforms/android/device.d.ts.map +1 -0
- package/dist/platforms/android/device.js +36 -0
- package/dist/platforms/android/emulator.d.ts +10 -0
- package/dist/platforms/android/emulator.d.ts.map +1 -0
- package/dist/platforms/android/emulator.js +116 -0
- package/dist/platforms/android/index.d.ts +4 -0
- package/dist/platforms/android/index.d.ts.map +1 -0
- package/dist/platforms/android/index.js +56 -0
- package/dist/platforms/ios/build.d.ts +7 -0
- package/dist/platforms/ios/build.d.ts.map +1 -0
- package/dist/platforms/ios/build.js +48 -0
- package/dist/platforms/ios/device.d.ts +11 -0
- package/dist/platforms/ios/device.d.ts.map +1 -0
- package/dist/platforms/ios/device.js +51 -0
- package/dist/platforms/ios/index.d.ts +4 -0
- package/dist/platforms/ios/index.d.ts.map +1 -0
- package/dist/platforms/ios/index.js +43 -0
- package/dist/platforms/ios/simulator.d.ts +11 -0
- package/dist/platforms/ios/simulator.d.ts.map +1 -0
- package/dist/platforms/ios/simulator.js +129 -0
- package/dist/platforms/platform-adapter.d.ts +10 -0
- package/dist/platforms/platform-adapter.d.ts.map +1 -0
- package/dist/platforms/platform-adapter.js +1 -0
- package/dist/platforms/platform-registry.d.ts +3 -0
- package/dist/platforms/platform-registry.d.ts.map +1 -0
- package/dist/platforms/platform-registry.js +21 -0
- package/dist/platforms/vega/build.d.ts +23 -0
- package/dist/platforms/vega/build.d.ts.map +1 -0
- package/dist/platforms/vega/build.js +55 -0
- package/dist/platforms/vega/device.d.ts +57 -0
- package/dist/platforms/vega/device.d.ts.map +1 -0
- package/dist/platforms/vega/device.js +206 -0
- package/dist/platforms/vega/index.d.ts +4 -0
- package/dist/platforms/vega/index.d.ts.map +1 -0
- package/dist/platforms/vega/index.js +75 -0
- package/dist/platforms/web/index.d.ts +4 -0
- package/dist/platforms/web/index.d.ts.map +1 -0
- package/dist/platforms/web/index.js +9 -0
- package/dist/process.d.ts +3 -0
- package/dist/process.d.ts.map +1 -0
- package/dist/process.js +28 -0
- package/dist/reporters/default-reporter.d.ts +3 -0
- package/dist/reporters/default-reporter.d.ts.map +1 -0
- package/dist/reporters/default-reporter.js +116 -0
- package/dist/reporters/junit-reporter.d.ts +3 -0
- package/dist/reporters/junit-reporter.d.ts.map +1 -0
- package/dist/reporters/junit-reporter.js +119 -0
- package/dist/reporters/live-reporter.d.ts +20 -0
- package/dist/reporters/live-reporter.d.ts.map +1 -0
- package/dist/reporters/live-reporter.js +176 -0
- package/dist/src/reporters/default-reporter.js +135 -0
- package/dist/test-reporter-demo.js +95 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/status-formatter.d.ts +27 -0
- package/dist/utils/status-formatter.d.ts.map +1 -0
- package/dist/utils/status-formatter.js +54 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +26 -0
- package/dist/wizard/jestIntegration.d.ts +2 -0
- package/dist/wizard/jestIntegration.d.ts.map +1 -0
- package/dist/wizard/jestIntegration.js +15 -0
- package/dist/wizard/packageManager.d.ts +2 -0
- package/dist/wizard/packageManager.d.ts.map +1 -0
- package/dist/wizard/packageManager.js +10 -0
- package/package.json +8 -8
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const formatDuration = (duration) => {
|
|
2
|
+
if (duration < 1000) {
|
|
3
|
+
return `${duration}ms`;
|
|
4
|
+
}
|
|
5
|
+
return `${(duration / 1000).toFixed(2)}s`;
|
|
6
|
+
};
|
|
7
|
+
const formatFileName = (file) => {
|
|
8
|
+
// Extract just the filename from the path for cleaner display
|
|
9
|
+
return file.split('/').pop() || file;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Maps every bridge event to a concise, informative status line.
|
|
13
|
+
* Each formatter receives the full event data for type safety.
|
|
14
|
+
*/
|
|
15
|
+
export const statusFormatter = {
|
|
16
|
+
// Test Collection Events
|
|
17
|
+
'collection-started': (event) => `📋 Collecting tests from ${formatFileName(event.file)}`,
|
|
18
|
+
'collection-finished': (event) => `✅ Collected tests from ${formatFileName(event.file)} (${formatDuration(event.duration)})`,
|
|
19
|
+
// Test Runner Events
|
|
20
|
+
'file-started': (event) => `🧪 Running tests in ${formatFileName(event.file)}`,
|
|
21
|
+
'file-finished': (event) => `✅ Finished ${formatFileName(event.file)} (${formatDuration(event.duration)})`,
|
|
22
|
+
'suite-started': (event) => `📦 ${event.name}`,
|
|
23
|
+
'suite-finished': (event) => {
|
|
24
|
+
const icon = event.status === 'failed'
|
|
25
|
+
? '❌'
|
|
26
|
+
: event.status === 'skipped'
|
|
27
|
+
? '⏭️'
|
|
28
|
+
: '✅';
|
|
29
|
+
return `${icon} ${event.name} (${formatDuration(event.duration)})`;
|
|
30
|
+
},
|
|
31
|
+
'test-started': (event) => ` 🔄 ${event.name}`,
|
|
32
|
+
'test-finished': (event) => {
|
|
33
|
+
const icon = event.status === 'failed'
|
|
34
|
+
? '❌'
|
|
35
|
+
: event.status === 'skipped'
|
|
36
|
+
? '⏭️'
|
|
37
|
+
: event.status === 'todo'
|
|
38
|
+
? '📝'
|
|
39
|
+
: '✅';
|
|
40
|
+
return ` ${icon} ${event.name} (${formatDuration(event.duration)})`;
|
|
41
|
+
},
|
|
42
|
+
// Bundler Events
|
|
43
|
+
'module-bundling-started': (event) => `📦 Bundling ${formatFileName(event.file)}`,
|
|
44
|
+
'module-bundling-finished': (event) => `✅ Bundled ${formatFileName(event.file)} (${formatDuration(event.duration)})`,
|
|
45
|
+
'module-bundling-failed': (event) => `❌ Failed to bundle ${formatFileName(event.file)} (${formatDuration(event.duration)})`,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Formats a bridge event into a status line.
|
|
49
|
+
* This function is type-safe and ensures all event types are handled.
|
|
50
|
+
*/
|
|
51
|
+
export const formatEventStatus = (event) => {
|
|
52
|
+
// TypeScript ensures this covers all event types
|
|
53
|
+
return statusFormatter[event.type](event);
|
|
54
|
+
};
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function assert(condition: boolean, message: string): asserts condition;
|
|
2
|
+
export declare class AssertionError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
export declare const isPortAvailable: (port: number) => Promise<boolean>;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAI7E;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAa7D,CAAC"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import net from 'node:net';
|
|
2
|
+
export function assert(condition, message) {
|
|
3
|
+
if (!condition) {
|
|
4
|
+
throw new AssertionError(message);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class AssertionError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'AssertionError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const isPortAvailable = (port) => {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
const server = net.createServer();
|
|
16
|
+
server.once('error', () => {
|
|
17
|
+
server.close();
|
|
18
|
+
resolve(false);
|
|
19
|
+
});
|
|
20
|
+
server.once('listening', () => {
|
|
21
|
+
server.close();
|
|
22
|
+
resolve(true);
|
|
23
|
+
});
|
|
24
|
+
server.listen(port);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jestIntegration.d.ts","sourceRoot":"","sources":["../../src/wizard/jestIntegration.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,YAgBpC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { note } from '@react-native-harness/tools';
|
|
2
|
+
export const showJestIntegrationNotes = () => {
|
|
3
|
+
note(`Update your jest.config.js to include the Harness project:
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
projects: [
|
|
7
|
+
{
|
|
8
|
+
displayName: 'Harness',
|
|
9
|
+
preset: 'react-native-harness',
|
|
10
|
+
testMatch: ['<rootDir>/**/__tests__/**/*.harness.[jt]s?(x)'],
|
|
11
|
+
},
|
|
12
|
+
// ...your other projects
|
|
13
|
+
],
|
|
14
|
+
};`, 'Next Steps');
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.d.ts","sourceRoot":"","sources":["../../src/wizard/packageManager.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,+BAKhC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
export const detectPackageManager = () => {
|
|
4
|
+
const cwd = process.cwd();
|
|
5
|
+
if (fs.existsSync(path.join(cwd, 'pnpm-lock.yaml')))
|
|
6
|
+
return 'pnpm';
|
|
7
|
+
if (fs.existsSync(path.join(cwd, 'yarn.lock')))
|
|
8
|
+
return 'yarn';
|
|
9
|
+
return 'npm';
|
|
10
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-harness/cli",
|
|
3
|
-
"version": "1.1.0-rc.
|
|
3
|
+
"version": "1.1.0-rc.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"tslib": "^2.3.0",
|
|
25
|
-
"@react-native-harness/config": "1.1.0-rc.
|
|
26
|
-
"@react-native-harness/bridge": "1.1.0-rc.
|
|
27
|
-
"@react-native-harness/platforms": "1.1.0-rc.
|
|
28
|
-
"@react-native-harness/tools": "1.1.0-rc.
|
|
25
|
+
"@react-native-harness/config": "1.1.0-rc.3",
|
|
26
|
+
"@react-native-harness/bridge": "1.1.0-rc.3",
|
|
27
|
+
"@react-native-harness/platforms": "1.1.0-rc.3",
|
|
28
|
+
"@react-native-harness/tools": "1.1.0-rc.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"jest-cli": "^30.2.0",
|
|
32
|
-
"@react-native-harness/platform-android": "1.1.0-rc.
|
|
33
|
-
"@react-native-harness/platform-apple": "1.1.0-rc.
|
|
34
|
-
"@react-native-harness/platform-web": "1.1.0-rc.
|
|
32
|
+
"@react-native-harness/platform-android": "1.1.0-rc.3",
|
|
33
|
+
"@react-native-harness/platform-apple": "1.1.0-rc.3",
|
|
34
|
+
"@react-native-harness/platform-web": "1.1.0-rc.3"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"jest-cli": "*"
|