Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

callstackincubator/react-native-harness

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

136 Commits

Repository files navigation

harness-banner

Jest-style tool for testing native behavior directly on devices

mit licence npm downloads Chat PRs Welcome

Bridge the testing gap: Jest-style tests in real native environments. Get the convenience of describe/it with full access to native modules.

Features

  • Jest-Style Syntax, Native Power: Write familiar describe/it tests that run in real iOS and Android environments with full native module access.
  • Best of Both Worlds: Unlike Jest (Node.js only) or Maestro (UI-based), get convenient test syntax AND native environment execution.
  • Real Device, Simulator & Web Testing: Execute tests on iOS simulators, Android emulators, or in a browser (Web) — catch platform-specific issues Jest can't see.
  • Native Module Testing: Test native modules, platform APIs, and device-specific functionality that's impossible with JavaScript-only runners.
  • Familiar Test Structure: Use beforeEach, afterEach, describe, it, expect — all the testing patterns you know and love from Jest.
  • Zero Configuration Setup: Drop-in replacement for your existing test workflow with TypeScript support and seamless CI/CD integration.

Quick Configuration Example

// rn-harness.config.mjs
import {
 androidPlatform,
 androidEmulator,
 physicalAndroidDevice,
} from '@react-native-harness/platform-android';
import {
 applePlatform,
 applePhysicalDevice,
 appleSimulator,
} from '@react-native-harness/platform-apple';
const config = {
 entryPoint: './src/main.tsx',
 appRegistryComponentName: 'MyApp',
 runners: [
 androidPlatform({
 name: 'android',
 device: androidEmulator('Pixel_8_API_35'),
 bundleId: 'com.myapp',
 }),
 applePlatform({
 name: 'ios',
 device: appleSimulator('iPhone 16 Pro Max', '18.0'),
 bundleId: 'com.myapp',
 }),
 ],
 defaultRunner: 'android',
};
export default config;

Documentation

The documentation is available at react-native-harness.dev. You can also use the following links to jump to specific topics:

Made with ❤️ at Callstack

react-native-harness 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 hello@callstack.com 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! 🔥

About

Harness brings Jest-style tests to real native environments so you can test TurboModules like you would test your React Native app: with JavaScript.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors

AltStyle によって変換されたページ (->オリジナル) /