Skip to content

Commit

Permalink
Move ReactNativeTester to react-native repo (facebook#47515)
Browse files Browse the repository at this point in the history
Summary:
Pull Request resolved: facebook#47515

Changelog: [internal]

Reviewed By: sammy-SC

Differential Revision: D65661699
  • Loading branch information
rubennorte authored and facebook-github-bot committed Nov 11, 2024
1 parent 16eb53b commit f8c394e
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions packages/react-native/src/private/__tests__/ReactNativeTester.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/**
* 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 strict-local
* @format
*/

import type {MixedElement} from 'react';

import ReactFabric from '../../../Libraries/Renderer/shims/ReactFabric';

let globalSurfaceIdCounter = 1;

class Root {
#surfaceId: number;
#hasRendered: boolean = false;

constructor() {
this.#surfaceId = globalSurfaceIdCounter;
globalSurfaceIdCounter += 10;
}

render(element: MixedElement) {
if (!this.#hasRendered) {
global.$$JSTesterModuleName$$.startSurface(this.#surfaceId);
this.#hasRendered = true;
}
ReactFabric.render(element, this.#surfaceId);
}

destroy() {
// TODO: check for leaks.
global.$$JSTesterModuleName$$.stopSurface(this.#surfaceId);
}

// TODO: add an API to check if all surfaces were deallocated when tests are finished.
}

// TODO: Add option to define surface props and pass it to startSurface
// Surfacep rops: concurrentRoot, surfaceWidth, surfaceHeight, layoutDirection, pointScaleFactor.
export function createRoot(): Root {
return new Root();
}

0 comments on commit f8c394e

Please sign in to comment.