@react-native-harness/cli 1.1.0 → 1.2.0-rc.1

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.
Files changed (100) hide show
  1. package/dist/bundlers/metro.d.ts +5 -0
  2. package/dist/bundlers/metro.d.ts.map +1 -0
  3. package/dist/bundlers/metro.js +71 -0
  4. package/dist/bundlers/webpack.d.ts +2 -0
  5. package/dist/bundlers/webpack.d.ts.map +1 -0
  6. package/dist/bundlers/webpack.js +49 -0
  7. package/dist/commands/test.d.ts +3 -0
  8. package/dist/commands/test.d.ts.map +1 -0
  9. package/dist/commands/test.js +140 -0
  10. package/dist/discovery/index.d.ts +3 -0
  11. package/dist/discovery/index.d.ts.map +1 -0
  12. package/dist/discovery/index.js +1 -0
  13. package/dist/discovery/testDiscovery.d.ts +11 -0
  14. package/dist/discovery/testDiscovery.d.ts.map +1 -0
  15. package/dist/discovery/testDiscovery.js +29 -0
  16. package/dist/errors/appNotInstalledError.d.ts +7 -0
  17. package/dist/errors/appNotInstalledError.d.ts.map +1 -0
  18. package/dist/errors/appNotInstalledError.js +12 -0
  19. package/dist/errors/bridgeTimeoutError.d.ts +7 -0
  20. package/dist/errors/bridgeTimeoutError.d.ts.map +1 -0
  21. package/dist/errors/bridgeTimeoutError.js +12 -0
  22. package/dist/errors/errorHandler.d.ts +2 -0
  23. package/dist/errors/errorHandler.d.ts.map +1 -0
  24. package/dist/errors/errorHandler.js +152 -0
  25. package/dist/errors/errors.d.ts +45 -0
  26. package/dist/errors/errors.d.ts.map +1 -0
  27. package/dist/errors/errors.js +89 -0
  28. package/dist/jest.d.ts +2 -0
  29. package/dist/jest.d.ts.map +1 -0
  30. package/dist/jest.js +7 -0
  31. package/dist/platforms/android/build.d.ts +5 -0
  32. package/dist/platforms/android/build.d.ts.map +1 -0
  33. package/dist/platforms/android/build.js +29 -0
  34. package/dist/platforms/android/device.d.ts +5 -0
  35. package/dist/platforms/android/device.d.ts.map +1 -0
  36. package/dist/platforms/android/device.js +36 -0
  37. package/dist/platforms/android/emulator.d.ts +10 -0
  38. package/dist/platforms/android/emulator.d.ts.map +1 -0
  39. package/dist/platforms/android/emulator.js +116 -0
  40. package/dist/platforms/android/index.d.ts +4 -0
  41. package/dist/platforms/android/index.d.ts.map +1 -0
  42. package/dist/platforms/android/index.js +56 -0
  43. package/dist/platforms/ios/build.d.ts +7 -0
  44. package/dist/platforms/ios/build.d.ts.map +1 -0
  45. package/dist/platforms/ios/build.js +48 -0
  46. package/dist/platforms/ios/device.d.ts +11 -0
  47. package/dist/platforms/ios/device.d.ts.map +1 -0
  48. package/dist/platforms/ios/device.js +51 -0
  49. package/dist/platforms/ios/index.d.ts +4 -0
  50. package/dist/platforms/ios/index.d.ts.map +1 -0
  51. package/dist/platforms/ios/index.js +43 -0
  52. package/dist/platforms/ios/simulator.d.ts +11 -0
  53. package/dist/platforms/ios/simulator.d.ts.map +1 -0
  54. package/dist/platforms/ios/simulator.js +129 -0
  55. package/dist/platforms/platform-adapter.d.ts +10 -0
  56. package/dist/platforms/platform-adapter.d.ts.map +1 -0
  57. package/dist/platforms/platform-adapter.js +1 -0
  58. package/dist/platforms/platform-registry.d.ts +3 -0
  59. package/dist/platforms/platform-registry.d.ts.map +1 -0
  60. package/dist/platforms/platform-registry.js +21 -0
  61. package/dist/platforms/vega/build.d.ts +23 -0
  62. package/dist/platforms/vega/build.d.ts.map +1 -0
  63. package/dist/platforms/vega/build.js +55 -0
  64. package/dist/platforms/vega/device.d.ts +57 -0
  65. package/dist/platforms/vega/device.d.ts.map +1 -0
  66. package/dist/platforms/vega/device.js +206 -0
  67. package/dist/platforms/vega/index.d.ts +4 -0
  68. package/dist/platforms/vega/index.d.ts.map +1 -0
  69. package/dist/platforms/vega/index.js +75 -0
  70. package/dist/platforms/web/index.d.ts +4 -0
  71. package/dist/platforms/web/index.d.ts.map +1 -0
  72. package/dist/platforms/web/index.js +9 -0
  73. package/dist/process.d.ts +3 -0
  74. package/dist/process.d.ts.map +1 -0
  75. package/dist/process.js +28 -0
  76. package/dist/reporters/default-reporter.d.ts +3 -0
  77. package/dist/reporters/default-reporter.d.ts.map +1 -0
  78. package/dist/reporters/default-reporter.js +116 -0
  79. package/dist/reporters/junit-reporter.d.ts +3 -0
  80. package/dist/reporters/junit-reporter.d.ts.map +1 -0
  81. package/dist/reporters/junit-reporter.js +119 -0
  82. package/dist/reporters/live-reporter.d.ts +20 -0
  83. package/dist/reporters/live-reporter.d.ts.map +1 -0
  84. package/dist/reporters/live-reporter.js +176 -0
  85. package/dist/src/reporters/default-reporter.js +135 -0
  86. package/dist/test-reporter-demo.js +95 -0
  87. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  88. package/dist/utils/status-formatter.d.ts +27 -0
  89. package/dist/utils/status-formatter.d.ts.map +1 -0
  90. package/dist/utils/status-formatter.js +54 -0
  91. package/dist/utils.d.ts +6 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.js +26 -0
  94. package/dist/wizard/jestIntegration.d.ts +2 -0
  95. package/dist/wizard/jestIntegration.d.ts.map +1 -0
  96. package/dist/wizard/jestIntegration.js +15 -0
  97. package/dist/wizard/packageManager.d.ts +2 -0
  98. package/dist/wizard/packageManager.d.ts.map +1 -0
  99. package/dist/wizard/packageManager.js +10 -0
  100. 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
+ };
@@ -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,2 @@
1
+ export declare const showJestIntegrationNotes: () => void;
2
+ //# sourceMappingURL=jestIntegration.d.ts.map
@@ -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,2 @@
1
+ export declare const detectPackageManager: () => "pnpm" | "yarn" | "npm";
2
+ //# sourceMappingURL=packageManager.d.ts.map
@@ -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",
3
+ "version": "1.2.0-rc.1",
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/bridge": "1.1.0",
26
- "@react-native-harness/tools": "1.1.0",
27
- "@react-native-harness/config": "1.1.0",
28
- "@react-native-harness/platforms": "1.1.0"
25
+ "@react-native-harness/tools": "1.2.0-rc.1",
26
+ "@react-native-harness/bridge": "1.2.0-rc.1",
27
+ "@react-native-harness/config": "1.2.0-rc.1",
28
+ "@react-native-harness/platforms": "1.2.0-rc.1"
29
29
  },
30
30
  "devDependencies": {
31
31
  "jest-cli": "^30.2.0",
32
- "@react-native-harness/platform-android": "1.1.0",
33
- "@react-native-harness/platform-apple": "1.1.0",
34
- "@react-native-harness/platform-web": "1.1.0"
32
+ "@react-native-harness/platform-android": "1.2.0-rc.1",
33
+ "@react-native-harness/platform-apple": "1.2.0-rc.1",
34
+ "@react-native-harness/platform-web": "1.2.0-rc.1"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "jest-cli": "*"