Skip to content

invertase/jet

Repository files navigation


Jet

NPM downloads NPM version License Chat Follow on Twitter

WARNING: Jet uses a feature of react-native called "Javascript Debugging" which relies on the bundle downloading to a local execution environment and executing there, with the results / requests passed asynchronously via WebSocket to the app running on the device. This method of react-native bundle execution will not be available in some unknown future version of react-native so the premise of the module will change completely. This is being worked on in the @mikehardy/jet-next branch.

This repo is in development and does not have a full release version yet. v0.4.x is the latest stable version in it's current form - this works on Android & iOS on React Native ^0.56 through ^0.67 and Detox ^10.0.13 through ^18.


Jet lets you bring your React Native JS code into NodeJS and test it mock free and native testing code free - ideal for testing React Native modules e2e.

Jet extends upon wix/detox and by default the Mocha testing framework.

Detox provides all the functionality you'll need to control your testing app, device and it's UI (if you have one) whilst Jet allows JS code execution in the context of your RN app via Node.js - giving you full access to all the Native api's as you would have inside your app.


Latest supported React Native version: ^0.67.0-rc.2

Supported Detox version: ^18 (for Detox < v18 use jet < v0.7.x)


Features

⏩ Test with JavaScript

Your test suites and your React Native code run inside NodeJS - making testing your modules with NodeJS testing frameworks (Mocha only currently, to be replaced with Jest) possible.

test suite

🐞 Debugging

Supports debugging your test suites and your React Native JS bundle using the standard NodeJS debugger protocol.

debugging

💯 Coverage

Get full code coverage output for your React Native module's JS API using istanbul/nyc coverage tools.

coverage

☕️ Full Detox API support

Supports the full Detox API; reloading or relaunching your app automatically reconnects to your React Native JS bundle.

detox

✨ Full access to React Native bundle context

Jet gives you full access to the JS context of your React Native app inside NodeJS ⚡️.

Quick Setup

$ yarn add jet
$ react-native link jet

in your mocha.opts add

--require jet/platform/node

You can update your package.json scripts with a task for packager-jet:

"packager-jet": "REACT_DEBUGGER='echo nope' react-native start",

Before starting your tests launch the packager-jet and afterwards start your detox tests.

💛 How can I help?

For now please see the open issues tracking work that needs doing discussions and thoughts on these issues and on Jet will help us mature the project into a useful tool.


😎 Projects using Jet

These projects use Jet to test their modules:

  • React Native Firebase: 🔥 A well tested feature rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for over 15 Firebase services.

Submit a PR to add your project here.