@react-native-harness/plugins
v1.2.0
Published

Readme

Plugins for React Native Harness
@react-native-harness/plugins provides the plugin API for React Native Harness. It lets you define Harness plugins that react to lifecycle and runtime events such as Harness startup, Metro activity, app lifecycle signals, collection, and test execution.
Installation
npm install @react-native-harness/plugins
# or
pnpm add @react-native-harness/plugins
# or
yarn add @react-native-harness/pluginsUsage
Harness plugins are loaded from rn-harness.config.* and can run custom Node.js logic around the Harness lifecycle.
import { definePlugin } from '@react-native-harness/plugins';
export const loggingPlugin = () =>
definePlugin({
name: 'logging-plugin',
hooks: {
harness: {
beforeCreation: async (ctx) => {
ctx.logger.info('Harness is starting for', ctx.platform.platformId);
},
},
run: {
started: async (ctx) => {
ctx.logger.info('Run started', ctx.runId);
},
finished: async (ctx) => {
ctx.logger.info('Run finished', ctx.runId, ctx.status);
},
},
testFile: {
finished: async (ctx) => {
ctx.logger.info('Finished test file', ctx.file, ctx.status);
},
},
},
});Then register the plugin in your Harness config:
import { loggingPlugin } from './logging-plugin';
export default {
entryPoint: './src/test.ts',
appRegistryComponentName: 'App',
runners: [
{
name: 'ios',
runner: '@react-native-harness/platform-ios',
platformId: 'ios',
config: {},
},
],
plugins: [loggingPlugin()],
};Features
- Typed plugin API: Define plugins with
definePlugin()and get typed plugin contexts - Lifecycle plugins API: React to Harness creation and disposal events
- Runtime events: Observe run, Metro, app, collection, suite, and test events
- Sync or async handlers: Plugin handlers can be synchronous or asynchronous
- Plugin-scoped state: Keep per-plugin state across the Harness process lifetime
Requirements
- Node.js runtime
- React Native Harness configuration file
License
MIT
Made with ❤️ at Callstack
@react-native-harness/plugins is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. Callstack is a group of React and React Native geeks, contact us at [email protected] if you need any help with these or just want to say hi!
Like the project? ⚛️ Join the team who does amazing stuff for clients and drives React Native Open Source! 🔥
