diff --git a/packages/dev-middleware/src/utils/DefaultToolLauncher.js b/packages/dev-middleware/src/utils/DefaultToolLauncher.js index 8f8d89961d8b..ba654d4e872a 100644 --- a/packages/dev-middleware/src/utils/DefaultToolLauncher.js +++ b/packages/dev-middleware/src/utils/DefaultToolLauncher.js @@ -23,8 +23,13 @@ const {apps, openApp} = open; * local machine. */ const DefaultToolLauncher = { - launchDebuggerAppWindow: async (url: string): Promise => { - if (process.env.NODE_ENV === 'test') { + launchDebuggerAppWindow: async ( + url: string, + options?: Readonly<{ + allowInTests?: boolean, + }>, + ): Promise => { + if (process.env.NODE_ENV === 'test' && options?.allowInTests !== true) { assertMockedInTests(); } diff --git a/private/react-native-fantom/runner/global-setup/globalSetup.js b/private/react-native-fantom/runner/global-setup/globalSetup.js index b8c7e4cf5fda..92d2c5e43a79 100644 --- a/private/react-native-fantom/runner/global-setup/globalSetup.js +++ b/private/react-native-fantom/runner/global-setup/globalSetup.js @@ -10,10 +10,17 @@ import type {DevToolLauncher} from '@react-native/dev-middleware'; -import {isOSS, validateEnvironmentVariables} from '../EnvironmentOptions'; +import { + debugJS, + isOSS, + validateEnvironmentVariables, +} from '../EnvironmentOptions'; import {getTestBuildOutputPath} from '../paths'; import build from './build'; -import {createDevMiddleware} from '@react-native/dev-middleware'; +import { + createDevMiddleware, + unstable_DefaultToolLauncher as DefaultToolLauncher, +} from '@react-native/dev-middleware'; import * as Metro from 'metro'; import {Server} from 'node:net'; import path from 'node:path'; @@ -55,19 +62,26 @@ async function startMetroServer() { // $FlowExpectedError[cannot-write] metroConfig.server.port = Number(process.env.__FANTOM_METRO_PORT__); - // No-op app launcher to prevent debugger-shell launches during tests + const serverBaseUrl = `http://localhost:${metroConfig.server.port}`; const devToolLauncher: DevToolLauncher = { - launchDebuggerAppWindow: async (_url: string) => {}, - launchDebuggerShell: async () => {}, - prepareDebuggerShell: async () => ({code: 'not_implemented'}), + launchDebuggerAppWindow: async (url: string) => { + if (debugJS) { + await DefaultToolLauncher.launchDebuggerAppWindow(url, { + allowInTests: true, + }); + } + }, }; const { middleware: devMiddleware, websocketEndpoints: debuggerWebsocketEndpoints, } = createDevMiddleware({ - serverBaseUrl: `http://localhost:${metroConfig.server.port}`, + serverBaseUrl, unstable_toolLauncher: devToolLauncher, + unstable_experiments: { + enableStandaloneFuseboxShell: false, + }, }); const server = await Metro.runServer(metroConfig, { diff --git a/scripts/fantom.sh b/scripts/fantom.sh index 29f54d6e95c8..3cfa32231979 100755 --- a/scripts/fantom.sh +++ b/scripts/fantom.sh @@ -33,7 +33,7 @@ for arg in "$@"; do esac done -if [[ -n "$FANTOM_RUN_BENCHMARKS" ]]; then +if [[ -n "$FANTOM_RUN_BENCHMARKS" || -n "$FANTOM_DEBUG_JS" ]]; then ARGS+=("--runInBand") fi