From be52d4682ee8a938336f8134d0e8fd07905c9cc0 Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Tue, 7 Oct 2025 21:57:26 +0200 Subject: [PATCH 1/3] add log insspector --- package-lock.json | 51 ++++++++++++++++++++++++---------------------- package.json | 12 +++++------ tests/helper.mjs | 52 ++++++++++++++++++++++++++++++++--------------- 3 files changed, 69 insertions(+), 46 deletions(-) diff --git a/package-lock.json b/package-lock.json index df2d3fd3d..a27e1a899 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "lws-static": "^3.1.1", "mocha": "^10.2.0", "prettier": "^2.8.3", - "selenium-webdriver": "^4.27.0", + "selenium-webdriver": "^4.36.0", "sinon": "^17.0.1", "typescript": "^5.0.4" }, @@ -6417,9 +6417,9 @@ } }, "node_modules/selenium-webdriver": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.27.0.tgz", - "integrity": "sha512-LkTJrNz5socxpPnWPODQ2bQ65eYx9JK+DQMYNihpTjMCqHwgWGYQnQTCAAche2W3ZP87alA+1zYPvgS8tHNzMQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.36.0.tgz", + "integrity": "sha512-rZGqjXiqNVL6QNqKNEk5DPaIMPbvApcmAS9QsXyt5wT3sfTSHGCh4AX/YKeDTOwei1BOZDlPOKBd82WCosUt9w==", "dev": true, "funding": [ { @@ -6431,14 +6431,15 @@ "url": "https://opencollective.com/selenium" } ], + "license": "Apache-2.0", "dependencies": { "@bazel/runfiles": "^6.3.1", "jszip": "^3.10.1", - "tmp": "^0.2.3", - "ws": "^8.18.0" + "tmp": "^0.2.5", + "ws": "^8.18.3" }, "engines": { - "node": ">= 14.21.0" + "node": ">= 20.0.0" } }, "node_modules/semver": { @@ -6988,10 +6989,11 @@ "dev": true }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } @@ -7496,10 +7498,11 @@ "dev": true }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12434,15 +12437,15 @@ } }, "selenium-webdriver": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.27.0.tgz", - "integrity": "sha512-LkTJrNz5socxpPnWPODQ2bQ65eYx9JK+DQMYNihpTjMCqHwgWGYQnQTCAAche2W3ZP87alA+1zYPvgS8tHNzMQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.36.0.tgz", + "integrity": "sha512-rZGqjXiqNVL6QNqKNEk5DPaIMPbvApcmAS9QsXyt5wT3sfTSHGCh4AX/YKeDTOwei1BOZDlPOKBd82WCosUt9w==", "dev": true, "requires": { "@bazel/runfiles": "^6.3.1", "jszip": "^3.10.1", - "tmp": "^0.2.3", - "ws": "^8.18.0" + "tmp": "^0.2.5", + "ws": "^8.18.3" } }, "semver": { @@ -12890,9 +12893,9 @@ "dev": true }, "tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true }, "to-fast-properties": { @@ -13267,9 +13270,9 @@ "dev": true }, "ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index 290d24edc..95601f0a7 100644 --- a/package.json +++ b/package.json @@ -46,15 +46,15 @@ "eslint-plugin-react": "^7.32.2", "eslint-plugin-vue": "^9.10.0", "expect.js": "^0.3.1", - "mocha": "^10.2.0", - "prettier": "^2.8.3", - "selenium-webdriver": "^4.27.0", - "sinon": "^17.0.1", - "typescript": "^5.0.4", "lws": "^4.2.0", "lws-cors": "^4.2.1", "lws-index": "^3.1.1", "lws-log": "^3.0.0", - "lws-static": "^3.1.1" + "lws-static": "^3.1.1", + "mocha": "^10.2.0", + "prettier": "^2.8.3", + "selenium-webdriver": "^4.36.0", + "sinon": "^17.0.1", + "typescript": "^5.0.4" } } diff --git a/tests/helper.mjs b/tests/helper.mjs index 56d3724ad..3e06e3b30 100644 --- a/tests/helper.mjs +++ b/tests/helper.mjs @@ -2,7 +2,12 @@ import commandLineUsage from "command-line-usage"; import commandLineArgs from "command-line-args"; import serve from "./server.mjs"; -import { Builder, Capabilities, logging } from "selenium-webdriver"; +import firefox from "selenium-webdriver/firefox.js"; +import chrome from "selenium-webdriver/chrome.js"; +import edge from "selenium-webdriver/edge.js"; + +import LogInspector from "selenium-webdriver/bidi/logInspector.js"; +import { Builder } from "selenium-webdriver"; const optionDefinitions = [ { name: "browser", type: String, description: "Set the browser to test, choices are [safari, firefox, chrome]. By default the $BROWSER env variable is used." }, @@ -38,35 +43,39 @@ export default async function testSetup(helpText) { if (!BROWSER) printHelp("No browser specified, use $BROWSER or --browser", 1); - let capabilities; + let builder; switch (BROWSER) { - case "safari": - capabilities = Capabilities.safari(); + case "safari": { + builder = new Builder() + .forBrowser(BROWSER); + // No bidi and log support in safari. break; - + } case "firefox": { - capabilities = Capabilities.firefox(); + builder = new Builder() + .forBrowser(BROWSER) + .setFirefoxOptions(new firefox.Options().enableBidi()); break; } case "chrome": { - capabilities = Capabilities.chrome(); + builder = new Builder() + .forBrowser(BROWSER) + .setChromeOptions(new chrome.Options().enableBidi()); break; } case "edge": { - capabilities = Capabilities.edge(); + builder = new Builder() + .forBrowser(BROWSER) + .setEdgeOptions(new edge.Options().enableBidi()); break; } default: { printHelp(`Invalid browser "${BROWSER}", choices are: "safari", "firefox", "chrome", "edge"`); } } - const prefs = new logging.Preferences(); - prefs.setLevel(logging.Type.BROWSER, logging.Level.ALL); // Capture all log levels - capabilities.setLoggingPrefs(prefs); - const PORT = options.port; const server = await serve(PORT); - let driver; + let driver, logInspector; process.on("unhandledRejection", (err) => { console.error(err); @@ -78,13 +87,24 @@ export default async function testSetup(helpText) { }); process.on("exit", () => stop()); - driver = await new Builder().withCapabilities(capabilities).build(); + driver = await builder.build(); driver.manage().window().setRect({ width: 1200, height: 1000 }); - function stop() { + if (BROWSER !== "safari") { + logInspector = await LogInspector(driver); + await logInspector.onConsoleEntry((log) => { + console.log(`${log.type}.${log.level}`.toUpperCase(), log.text); + }); + } + + async function stop() { server.close(); - if (driver) + if (logInspector) + await logInspector.close(); + if (driver) { driver.close(); + driver = undefined; + } } return { driver, PORT, stop }; } From 02412a0f6dd605cb07ca7e440ebf3dbaa7f75ec4 Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Tue, 7 Oct 2025 22:01:23 +0200 Subject: [PATCH 2/3] cleanup --- tests/helper.mjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/helper.mjs b/tests/helper.mjs index 3e06e3b30..a60ec88dd 100644 --- a/tests/helper.mjs +++ b/tests/helper.mjs @@ -101,10 +101,8 @@ export default async function testSetup(helpText) { server.close(); if (logInspector) await logInspector.close(); - if (driver) { + if (driver) driver.close(); - driver = undefined; - } } return { driver, PORT, stop }; } From 66146f82ca76842109f47b8fcf71bd6a6b62976d Mon Sep 17 00:00:00 2001 From: Camillo Bruni Date: Tue, 7 Oct 2025 22:05:54 +0200 Subject: [PATCH 3/3] formatting --- tests/helper.mjs | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/tests/helper.mjs b/tests/helper.mjs index a60ec88dd..032973b98 100644 --- a/tests/helper.mjs +++ b/tests/helper.mjs @@ -6,7 +6,7 @@ import firefox from "selenium-webdriver/firefox.js"; import chrome from "selenium-webdriver/chrome.js"; import edge from "selenium-webdriver/edge.js"; -import LogInspector from "selenium-webdriver/bidi/logInspector.js"; +import LogInspector from "selenium-webdriver/bidi/logInspector.js"; import { Builder } from "selenium-webdriver"; const optionDefinitions = [ @@ -46,27 +46,20 @@ export default async function testSetup(helpText) { let builder; switch (BROWSER) { case "safari": { - builder = new Builder() - .forBrowser(BROWSER); + builder = new Builder().forBrowser(BROWSER); // No bidi and log support in safari. break; } case "firefox": { - builder = new Builder() - .forBrowser(BROWSER) - .setFirefoxOptions(new firefox.Options().enableBidi()); + builder = new Builder().forBrowser(BROWSER).setFirefoxOptions(new firefox.Options().enableBidi()); break; } case "chrome": { - builder = new Builder() - .forBrowser(BROWSER) - .setChromeOptions(new chrome.Options().enableBidi()); + builder = new Builder().forBrowser(BROWSER).setChromeOptions(new chrome.Options().enableBidi()); break; } case "edge": { - builder = new Builder() - .forBrowser(BROWSER) - .setEdgeOptions(new edge.Options().enableBidi()); + builder = new Builder().forBrowser(BROWSER).setEdgeOptions(new edge.Options().enableBidi()); break; } default: {