/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ package com.facebook.react.testing; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactMethod; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** * This class is used to verify that some JS integration tests have completed successfully. The JS * integration tests can be started from a ReactIntegrationTestCase and upon finishing successfully * the {@link JSIntegrationTestChecker#testDone()} method will be called. To verify if the test has * completed successfully, call {#link JSIntegrationTestChecker#await()} to wait for the test to * run, and {#link JSIntegrationTestChecker#isTestDone()} to check if it completed successfully. */ public class JSIntegrationTestChecker extends BaseJavaModule { private final CountDownLatch mLatch; public JSIntegrationTestChecker() { mLatch = new CountDownLatch(1); } @Override public String getName() { return "TestModule"; } @ReactMethod public void markTestCompleted() { mLatch.countDown(); } @ReactMethod public void verifySnapshot(Callback callback) {} public boolean await(long ms) { try { return mLatch.await(ms, TimeUnit.MILLISECONDS); } catch (InterruptedException ignore) { return false; } } public boolean isTestDone() { return mLatch.getCount() == 0; } }