Files
react-native/packages/rn-tester/IntegrationTests/IntegrationTestHarnessTest.js
Tim Yung 1977dd6596 RN: Sort Pragmas in Headers (#51554)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/51554

Sorts pragma directives file headers in React Native.

Changelog:
[Internal]

Reviewed By: SamChou19815

Differential Revision: D75264593

fbshipit-source-id: 9e4b253dd0fc94dc2fc469d7114b93a8aae305f4
2025-05-22 21:18:53 -07:00

66 lines
1.5 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
import * as React from 'react';
import {useEffect, useState} from 'react';
import {NativeModules, StyleSheet, Text, View} from 'react-native';
const {TestModule} = NativeModules;
type Props = $ReadOnly<{
shouldThrow?: boolean,
waitOneFrame?: boolean,
}>;
function IntegrationTestHarnessTest(props: Props): React.Node {
const [done, setDone] = useState(false);
useEffect(() => {
const runTest = () => {
if (props.shouldThrow) {
throw new Error('Throwing error because shouldThrow');
}
if (!TestModule) {
throw new Error('RCTTestModule is not registered.');
} else if (!TestModule.markTestCompleted) {
throw new Error('RCTTestModule.markTestCompleted not defined.');
}
setDone(true);
TestModule.markTestCompleted();
};
if (props.waitOneFrame) {
requestAnimationFrame(runTest);
} else {
runTest();
}
}, [props.shouldThrow, props.waitOneFrame]);
return (
<View style={styles.container}>
<Text>
{IntegrationTestHarnessTest.name + ': '}
{done ? 'Done' : 'Testing...'}
</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
backgroundColor: 'white',
padding: 40,
},
});
export default IntegrationTestHarnessTest;