From 10c31eda6cb00ff7bb26fbb4215d274c21e1a8dd Mon Sep 17 00:00:00 2001 From: ShaneK Date: Mon, 24 Nov 2025 09:08:29 -0800 Subject: [PATCH] chore(react-router): improving continuous testability --- package-lock.json | 3 +- packages/react-router/scripts/test_runner.sh | 69 +++++++++++++++++++ .../src/ReactRouter/StackManager.tsx | 10 +-- .../test/apps/reactrouter6/package.json | 1 + .../test/base/tests/e2e/plugins/index.js | 1 + .../test/base/tests/e2e/support/index.js | 2 + 6 files changed, 80 insertions(+), 6 deletions(-) create mode 100755 packages/react-router/scripts/test_runner.sh diff --git a/package-lock.json b/package-lock.json index d071e527ba..54ec41085b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9288,8 +9288,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "requires": {} + "dev": true }, "@octokit/plugin-rest-endpoint-methods": { "version": "6.6.2", diff --git a/packages/react-router/scripts/test_runner.sh b/packages/react-router/scripts/test_runner.sh new file mode 100755 index 0000000000..a57ad589cd --- /dev/null +++ b/packages/react-router/scripts/test_runner.sh @@ -0,0 +1,69 @@ +#!/bin/bash +set -x + +# Change to script's directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +# Inside core +echo "Building core..." +cd ../../../core +npm run build + +# Inside packages/react +echo "Building packages/react..." +cd ../packages/react +npm ci +npm run sync +npm run build + +# Inside packages/react-router +echo "Building packages/react-router..." +cd ../react-router +npm ci +npm run sync +npm run build + +# Inside packages/react-router/test +echo "Building test app..." +cd ./test +rm -rf build/reactrouter6 || true +sh ./build.sh reactrouter6 +cd build/reactrouter6 +echo "Installing dependencies..." +npm install --legacy-peer-deps > npm_install.log 2>&1 +npm run sync + +echo "Cleaning up port 3000..." +lsof -ti:3000 | xargs kill -9 || true + +echo "Starting server..." +# Start server in background and save PID +npm start > server.log 2>&1 & +SERVER_PID=$! + +# Ensure server is killed on script exit +trap "kill $SERVER_PID" EXIT + +echo "Waiting for server to start (30s)..." +sleep 30 + +echo "Checking server status..." +SERVER_RESPONSE=$(curl -s -v http://localhost:3000 2>&1) +if echo "$SERVER_RESPONSE" | grep -q "Child compilation failed"; then + echo "Server started but has compilation errors. Exiting." + echo "$SERVER_RESPONSE" + exit 1 +fi + +if ! echo "$SERVER_RESPONSE" | grep -q "200 OK"; then + echo "Server did not return 200 OK. Exiting." + echo "$SERVER_RESPONSE" + exit 1 +fi +echo "Server is healthy." + +echo "Running Cypress tests..." +# Run specific failing tests first +npm run cypress -- --spec "tests/e2e/specs/swipe-to-go-back.cy.js" + diff --git a/packages/react-router/src/ReactRouter/StackManager.tsx b/packages/react-router/src/ReactRouter/StackManager.tsx index 205fb6206e..09161bb358 100644 --- a/packages/react-router/src/ReactRouter/StackManager.tsx +++ b/packages/react-router/src/ReactRouter/StackManager.tsx @@ -235,6 +235,7 @@ export class StackManager extends React.PureComponent { diff --git a/packages/react-router/test/apps/reactrouter6/package.json b/packages/react-router/test/apps/reactrouter6/package.json index 7527c64cb2..514ce2f26b 100644 --- a/packages/react-router/test/apps/reactrouter6/package.json +++ b/packages/react-router/test/apps/reactrouter6/package.json @@ -52,6 +52,7 @@ "devDependencies": { "concurrently": "^6.3.0", "cypress": "^13.2.0", + "cypress-terminal-report": "^5.3.0", "serve": "^14.0.1", "wait-on": "^6.0.0", "webpack-cli": "^4.9.1" diff --git a/packages/react-router/test/base/tests/e2e/plugins/index.js b/packages/react-router/test/base/tests/e2e/plugins/index.js index 8dd144a6c1..a9fbe48036 100644 --- a/packages/react-router/test/base/tests/e2e/plugins/index.js +++ b/packages/react-router/test/base/tests/e2e/plugins/index.js @@ -18,4 +18,5 @@ module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config + require('cypress-terminal-report/src/installLogsPrinter')(on); }; diff --git a/packages/react-router/test/base/tests/e2e/support/index.js b/packages/react-router/test/base/tests/e2e/support/index.js index 37a498fb5b..208452ffa6 100644 --- a/packages/react-router/test/base/tests/e2e/support/index.js +++ b/packages/react-router/test/base/tests/e2e/support/index.js @@ -18,3 +18,5 @@ import './commands'; // Alternatively you can use CommonJS syntax: // require('./commands') + +require('cypress-terminal-report/src/installLogsCollector')();