Skip to main content

Testing

Developer tools are only used if they work. Testing is important as it discovers defects/bugs and improves the quality, reliability and functionality of software. This page details the Flipper APIs that can be used to effectively test plugins.

Writing tests​

This section covers desktop plugins and client plugins.

Desktop plugins​

Flipper uses Jest as a unit testing framework.

Writing unit tests for Flipper Desktop plugins is covered in detail in the Building a Desktop Plugin tutorial.

The flipper-plugin package provide several test utilities to make testing more convenient.

Client plugins​

Start by creating your first test file in this directory MyFlipperPluginTest.java. In the test method body, is the plugin to be tested as well as a FlipperConnectionMock.

The following example asserts that the plugin's connected status is what is expected:

@RunWith(RobolectricTestRunner.class)
public class MyFlipperPluginTest {

@Test
public void myTest() {
final MyFlipperPlugin plugin = new MyFlipperPlugin();
final FlipperConnectionMock connection = new FlipperConnectionMock();

plugin.onConnect(connection);
assertThat(plugin.connected(), equalTo(true));
}
}

There are two mock classes that are used to construct tests: FlipperConnectionMock and FlipperResponderMock. Together these can be used to write very powerful tests to verify the end-to-end functionality of your plugin.

For example, you can test if, for a given incoming message, your plugin responds as expected:

@Test
public void myTest() {
final MyFlipperPlugin plugin = new MyFlipperPlugin();
final FlipperConnectionMock connection = new FlipperConnectionMock();
final FlipperResponderMock responder = new FlipperResponderMock();

plugin.onConnect(connection);

final FlipperObject params = new FlipperObject.Builder()
.put("phrase", "flipper")
.build();
connection.receivers.get("myMethod").onReceive(params, responder);

assertThat(responder.successes, hasItem(
new FlipperObject.Builder()
.put("phrase", "ranos")
.build()));
}

Running (Flipper) tests​

This section covers running tests on the Flipper Desktop and with the Flipper SDK.

Flipper Desktop​

Run yarn jest or yarn jest --watch in the desktop directory of your Flipper checkout.

Flipper SDK​

Android (Java)​

Gradle​

In the root directory of the checkout:

./gradlew android:test

React Native​

For details, see the Testing React Native Changes page.