You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# What changed
Harness now has a first-class plugin system. Users can register Harness plugins in rn-harness.config.*, and those plugins can tap into key lifecycle and runtime events during a test run.
# Why this was added
Plugins give us a stable extension point for features that should live outside core Harness. Instead of adding plugin-specific config fields or platform APIs directly to Harness, we can build those features as plugins.
# What Harness plugins are
Harness plugins are user-configured extensions loaded from the Harness config file. A plugin can observe or react to events such as Harness startup, Metro activity, app lifecycle signals, collection, and test execution, and run custom Node.js logic around them.
# What this enables
This is the foundation for custom integrations such as native coverage collection, reporting, or other workflow-specific extensions, while keeping the core Harness API smaller and cleaner.
Copy file name to clipboardExpand all lines: actions/shared/index.cjs
+77-38Lines changed: 77 additions & 38 deletions
Original file line number
Diff line number
Diff line change
@@ -4208,46 +4208,42 @@ var coerce = {
4208
4208
};
4209
4209
varNEVER=INVALID;
4210
4210
4211
-
// ../config/dist/types.js
4212
-
varDEFAULT_METRO_PORT=8081;
4213
-
varRunnerSchema=external_exports.object({
4214
-
name: external_exports.string().min(1,"Runner name is required").regex(/^[a-zA-Z0-9._-]+$/,"Runner name can only contain alphanumeric characters, dots, underscores, and hyphens"),
host: external_exports.string().min(1,"Host is required").optional(),
4225
-
metroPort: external_exports.number().int("Metro port must be an integer").min(1,"Metro port must be at least 1").max(65535,"Metro port must be at most 65535").optional().default(DEFAULT_METRO_PORT),
crashDetectionInterval: external_exports.number().min(100,"Crash detection interval must be at least 100ms").default(500),
4235
-
disableViewFlattening: external_exports.boolean().optional().default(false).describe("Disable view flattening in React Native. This will set collapsable={true} for all View components to ensure they are not flattened by the native layout engine."),
4236
-
coverage: external_exports.object({
4237
-
root: external_exports.string().optional().describe(`Root directory for coverage instrumentation in monorepo setups. Specifies the directory from which coverage data should be collected. Use ".." for create-react-native-library projects where tests run from example/ but source files are in parent directory. Passed to babel-plugin-istanbul's cwd option.`)
4238
-
}).optional(),
4239
-
forwardClientLogs: external_exports.boolean().optional().default(false).describe("Enable forwarding of console.log, console.warn, console.error, and other console method calls from the React Native app to the terminal. When enabled, all console output from your app will be displayed in the test runner terminal with styled level indicators (log, warn, error)."),
4240
-
// Deprecated property - used for migration detection
name: external_exports.string().min(1,"Runner name is required").regex(/^[a-zA-Z0-9._-]+$/,"Runner name can only contain alphanumeric characters, dots, underscores, and hyphens"),
host: external_exports.string().min(1,"Host is required").optional(),
4357
+
metroPort: external_exports.number().int("Metro port must be an integer").min(1,"Metro port must be at least 1").max(65535,"Metro port must be at most 65535").optional().default(DEFAULT_METRO_PORT),
crashDetectionInterval: external_exports.number().min(100,"Crash detection interval must be at least 100ms").default(500),
4367
+
disableViewFlattening: external_exports.boolean().optional().default(false).describe("Disable view flattening in React Native. This will set collapsable={true} for all View components to ensure they are not flattened by the native layout engine."),
4368
+
coverage: external_exports.object({
4369
+
root: external_exports.string().optional().describe(`Root directory for coverage instrumentation in monorepo setups. Specifies the directory from which coverage data should be collected. Use ".." for create-react-native-library projects where tests run from example/ but source files are in parent directory. Passed to babel-plugin-istanbul's cwd option.`)
4370
+
}).optional(),
4371
+
forwardClientLogs: external_exports.boolean().optional().default(false).describe("Enable forwarding of console.log, console.warn, console.error, and other console method calls from the React Native app to the terminal. When enabled, all console output from your app will be displayed in the test runner terminal with styled level indicators (log, warn, error)."),
4372
+
// Deprecated property - used for migration detection
0 commit comments