From 8a22c60ec0143d207f3a9ef6e7c62a5cb51d58d5 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Mon, 28 Aug 2023 10:59:22 +0000 Subject: [PATCH] build: improve debug logging of saucelabs daemon (#51533) We should print more specific details about a browser being used for tests. This will help us debug timeout/flakiness easier. PR Close #51533 --- .../background-service/saucelabs-daemon.ts | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts index de3d07b1857..4f7b714c3c4 100644 --- a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts +++ b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts @@ -29,6 +29,7 @@ interface RemoteBrowser { id: string; state: 'claimed'|'free'|'launching'; driver: WebDriver|null; + sessionUrl: string|null; } interface BrowserTest { @@ -206,7 +207,12 @@ export class SaucelabsDaemon { await Promise.all( this._browsers.map(async (browser, id) => { const browserId = getUniqueId(browser); - const launched: RemoteBrowser = {state: 'launching', driver: null, id: browserId}; + const launched: RemoteBrowser = { + state: 'launching', + driver: null, + sessionUrl: null, + id: browserId, + }; const browserDescription = `${this._buildName} - ${browser.browserName} - #${id + 1}`; const capabilities: any = { @@ -243,16 +249,17 @@ export class SaucelabsDaemon { await driver.manage().setTimeouts({pageLoad: 30000}); const sessionId = (await driver.getSession()).getId(); - console.info( - chalk.yellow( - `Started browser ${browser.browserName} on Saucelabs: ` + - `https://saucelabs.com/tests/${sessionId}`, - ), - ); // Mark the browser as available after launch completion. launched.state = 'free'; launched.driver = driver; + launched.sessionUrl = `https://saucelabs.com/tests/${sessionId}`; + + console.info( + chalk.yellow( + `Started browser ${browser.browserName} on Saucelabs: ${launched.sessionUrl}`, + ), + ); // If a test has been scheduled before the browser completed launching, run // it now given that the browser is ready now. @@ -281,6 +288,7 @@ export class SaucelabsDaemon { try { console.debug(`Opening test url for #${test.testId}: ${test.pageUrl}`); + console.debug(` > Instance URL: ${browser.sessionUrl}`); await browser.driver!.get(test.pageUrl); const pageTitle = await browser.driver!.getTitle(); console.debug(`Test page loaded for #${test.testId}: "${pageTitle}".`);