diff --git a/build-system/tasks/e2e/package-lock.json b/build-system/tasks/e2e/package-lock.json index 7921b8fc74e4..5c4cb6664b8b 100644 --- a/build-system/tasks/e2e/package-lock.json +++ b/build-system/tasks/e2e/package-lock.json @@ -9,11 +9,11 @@ "version": "0.1.0", "devDependencies": { "@babel/register": "7.24.6", - "@types/selenium-webdriver": "4.1.22", + "@types/selenium-webdriver": "4.1.23", "babel-regenerator-runtime": "6.5.0", "chromedriver": "119.0.1", "geckodriver": "4.4.1", - "selenium-webdriver": "4.21.0" + "selenium-webdriver": "4.22.0" } }, "node_modules/@babel/code-frame": { @@ -454,12 +454,12 @@ "dev": true }, "node_modules/@types/selenium-webdriver": { - "version": "4.1.22", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.22.tgz", - "integrity": "sha512-MCL4l7q8dwxejr2Q2NXLyNwHWMPdlWE0Kpn6fFwJtvkJF7PTkG5jkvbH/X1IAAQxgt/L1dA8u2GtDeekvSKvOA==", + "version": "4.1.23", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.23.tgz", + "integrity": "sha512-PgreEfCfafYLyTwvJTZvOspCq3JABnS51e+NSFFL5yoiMO7h04lWgLfr10NA7nl/yZbz4m76rBfOOdDfleb7pQ==", "dev": true, - "license": "MIT", "dependencies": { + "@types/node": "*", "@types/ws": "*" } }, @@ -1538,11 +1538,10 @@ "dev": true }, "node_modules/selenium-webdriver": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.21.0.tgz", - "integrity": "sha512-WaEJHZjOWNth1QG5FEpxpREER0qptZBMonFU6GtAqdCNLJVxbtC3E7oS/I/+Q1sf1W032Wg0Ebk+m46lANOXyQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.22.0.tgz", + "integrity": "sha512-GNbrkCHmy249ai885wgXqTfqL2lZnclUH/P8pwTDIqzyFxU3YhDiN7p/c9tMFA4NhgRdEBO2QCG+CWmG7xr/Mw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jszip": "^3.10.1", "tmp": "^0.2.3", @@ -2138,11 +2137,12 @@ "dev": true }, "@types/selenium-webdriver": { - "version": "4.1.22", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.22.tgz", - "integrity": "sha512-MCL4l7q8dwxejr2Q2NXLyNwHWMPdlWE0Kpn6fFwJtvkJF7PTkG5jkvbH/X1IAAQxgt/L1dA8u2GtDeekvSKvOA==", + "version": "4.1.23", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-4.1.23.tgz", + "integrity": "sha512-PgreEfCfafYLyTwvJTZvOspCq3JABnS51e+NSFFL5yoiMO7h04lWgLfr10NA7nl/yZbz4m76rBfOOdDfleb7pQ==", "dev": true, "requires": { + "@types/node": "*", "@types/ws": "*" } }, @@ -2964,9 +2964,9 @@ "dev": true }, "selenium-webdriver": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.21.0.tgz", - "integrity": "sha512-WaEJHZjOWNth1QG5FEpxpREER0qptZBMonFU6GtAqdCNLJVxbtC3E7oS/I/+Q1sf1W032Wg0Ebk+m46lANOXyQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.22.0.tgz", + "integrity": "sha512-GNbrkCHmy249ai885wgXqTfqL2lZnclUH/P8pwTDIqzyFxU3YhDiN7p/c9tMFA4NhgRdEBO2QCG+CWmG7xr/Mw==", "dev": true, "requires": { "jszip": "^3.10.1", diff --git a/build-system/tasks/e2e/package.json b/build-system/tasks/e2e/package.json index 66a488a650f4..de5401618e70 100644 --- a/build-system/tasks/e2e/package.json +++ b/build-system/tasks/e2e/package.json @@ -5,10 +5,10 @@ "description": "amp e2e", "devDependencies": { "@babel/register": "7.24.6", - "@types/selenium-webdriver": "4.1.22", + "@types/selenium-webdriver": "4.1.23", "babel-regenerator-runtime": "6.5.0", "chromedriver": "119.0.1", "geckodriver": "4.4.1", - "selenium-webdriver": "4.21.0" + "selenium-webdriver": "4.22.0" } } diff --git a/build-system/tasks/e2e/selenium-webdriver-controller.js b/build-system/tasks/e2e/selenium-webdriver-controller.js index 8a5f286e1cab..e6ca1a5aaa62 100644 --- a/build-system/tasks/e2e/selenium-webdriver-controller.js +++ b/build-system/tasks/e2e/selenium-webdriver-controller.js @@ -65,11 +65,13 @@ async function waitFor(driver, valueFn, condition, opt_mutate) { return Boolean(condition(value)); }; + /* TODO: fix incorrect typing. */ + /** @type {any} */ const result = await driver.wait( expectCondition(valueFn, conditionValue, opt_mutate) ); - return result.value; // Unbox the value. + return result; } class SeleniumWebDriverController { @@ -156,7 +158,11 @@ class SeleniumWebDriverController { throw e; } }); - const webElements = await this.driver.wait(condition, ELEMENT_WAIT_TIMEOUT); + /* TODO: fix incorrect typing. */ + /** @type {WebElement[]} */ + const webElements = /** @type {?} */ ( + await this.driver.wait(condition, ELEMENT_WAIT_TIMEOUT) + ); return webElements.map((webElement) => new ElementHandle(webElement)); } @@ -192,19 +198,23 @@ class SeleniumWebDriverController { async findElementsXPath(xpath) { await this.maybeInstallXpath_(); const label = 'for at least one element to be located ' + xpath; - const webElements = await this.driver.wait( - new Condition(label, async () => { - const root = await this.getRoot_(); - const results = await this.evaluate( - (xpath, root) => { - return window.queryXpath(xpath, root); - }, - xpath, - root - ); - return results; - }), - ELEMENT_WAIT_TIMEOUT + /* TODO: fix incorrect typing. */ + /** @type {WebElement[]} */ + const webElements = /** @type {?} */ ( + await this.driver.wait( + new Condition(label, async () => { + const root = await this.getRoot_(); + const results = await this.evaluate( + (xpath, root) => { + return window.queryXpath(xpath, root); + }, + xpath, + root + ); + return results; + }), + ELEMENT_WAIT_TIMEOUT + ) ); return webElements.map((webElement) => new ElementHandle(webElement)); } @@ -295,7 +305,7 @@ class SeleniumWebDriverController { */ pasteFromClipboard() { return this.driver - .actions() + .actions({async: false, bridge: undefined}) .keyDown(SeleniumKey.SHIFT) .keyDown(SeleniumKey.INSERT) .keyUp(SeleniumKey.SHIFT)