From c12fa62bc5f1f6827b1238a8a45139a6f9554e3f Mon Sep 17 00:00:00 2001 From: MarkS Date: Tue, 28 Oct 2025 11:47:42 -0600 Subject: [PATCH] ci: increase e2e startup polling delay This hides a number of error messages that are really indications that we need to continue waiting. --- .../e2e/await-application-startup.mts | 36 ++++++++++++++----- .../ClientApp/e2e/pre_merge_ci.sh | 1 - 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/SIL.XForge.Scripture/ClientApp/e2e/await-application-startup.mts b/src/SIL.XForge.Scripture/ClientApp/e2e/await-application-startup.mts index 184336f994a..7492fc51057 100755 --- a/src/SIL.XForge.Scripture/ClientApp/e2e/await-application-startup.mts +++ b/src/SIL.XForge.Scripture/ClientApp/e2e/await-application-startup.mts @@ -3,22 +3,37 @@ // This script polls to check whether the application has started at localhost:5000, and exits when it has started up, // or exits with a failure if it hasn't started in 5 minutes. +const programName = 'await-application-startup'; const pollUrl = 'http://localhost:5000/projects'; const pollInterval = 1000; const timeout = 5 * 60_000; +const startTime = Date.now(); +let lastError: string | null = null; + +function output(message: string) { + console.log(`${programName}: ${message}`); +} + +function outputWithoutNewline(message: string) { + Deno.stdout.writeSync(new TextEncoder().encode(`${programName}: ${message}`)); +} + setTimeout(() => { - console.log('Failed to start in ', timeout, ' milliseconds. Exiting.'); + console.log(); // New line after dots + if (lastError != null) { + output(`Error: ${lastError}`); + } + output(`Failed to start in ${timeout} milliseconds. Exiting.`); Deno.exit(1); }, timeout); -const startTime = Date.now(); function elapsedTime() { - const currentTIme = Date.now(); - const elapsed = currentTIme - startTime; + const currentTime = Date.now(); + const elapsed = currentTime - startTime; const minutes = Math.floor(elapsed / 60_000); const seconds = Math.floor((elapsed % 60_000) / 1000); - return `${minutes}:${seconds < 10 ? '0' + seconds : seconds}`; + return `${minutes}:${seconds.toString().padStart(2, '0')}`; } async function check() { @@ -27,15 +42,20 @@ async function check() { headers: { Accept: 'text/html' } }); if (response.ok) { - console.log(elapsedTime(), 'Startup check passed. Exiting.'); + console.log(); // New line after dots + output(`${elapsedTime()} Startup check passed. Exiting.`); Deno.exit(0); } else { - console.log(elapsedTime(), 'Startup check failed: ', response.status, response.statusText); + lastError = `${response.status} ${response.statusText}`; + Deno.stdout.writeSync(new TextEncoder().encode('.')); } } catch (error) { - console.log(elapsedTime(), 'Startup check failed: ' + error.message); + const message = error instanceof Error ? error.message : String(error); + lastError = message; + Deno.stdout.writeSync(new TextEncoder().encode('.')); } } +outputWithoutNewline('Awaiting application startup before running tests ...'); setTimeout(check, 0); setInterval(check, pollInterval); diff --git a/src/SIL.XForge.Scripture/ClientApp/e2e/pre_merge_ci.sh b/src/SIL.XForge.Scripture/ClientApp/e2e/pre_merge_ci.sh index 043a1222821..f543c08b1c9 100755 --- a/src/SIL.XForge.Scripture/ClientApp/e2e/pre_merge_ci.sh +++ b/src/SIL.XForge.Scripture/ClientApp/e2e/pre_merge_ci.sh @@ -49,7 +49,6 @@ function startServer() { local SERVER_PID="$!" trap "shutDownServer ${SERVER_PID}" EXIT output "Server started with PID ${SERVER_PID}" - output "Awaiting application startup before running tests" cd "${SCRIPT_DIR}" ./await-application-startup.mts }