1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
metamask-extension/test/e2e/webdriver/chrome.js
Mark Stacey 14d85b1332
Make JSDoc formatting more consistent (#9796)
A few inconsistencies in JSDoc formatting have been fixed throughout
the project. Many issues remain; these were just the few things that
were easy to fix with a regular expression.

The changes include:

* Using lower-case for primitive types, but capitalizing non-primitive
 types
* Separating the parameter identifier and the description with a dash
* Omitting a dash between the return type and the return description
* Ensuring the parameter type is first and the identifier is second (in
 a few places it was backwards)
* Using square brackets to denote when a parameter is optional, rather
 than putting "(optional)" in the parameter description
* Including a type and identifier with every parameter
* Fixing inconsistent spacing, except where it's used for alignment
* Remove incorrectly formatted `@deprecated` tags that reference non-
 existent properties
* Remove lone comment block without accompanying function

Additionally, one parameter was renamed for clarity.
2020-11-10 14:00:41 -03:30

63 lines
1.9 KiB
JavaScript

const { Builder } = require('selenium-webdriver')
const chrome = require('selenium-webdriver/chrome')
/**
* A wrapper around a {@code WebDriver} instance exposing Chrome-specific functionality
*/
class ChromeDriver {
static async build({ extensionPath, responsive, port }) {
const args = [`load-extension=${extensionPath}`]
if (responsive) {
args.push('--auto-open-devtools-for-tabs')
}
const options = new chrome.Options().addArguments(args)
const builder = new Builder().forBrowser('chrome').setChromeOptions(options)
if (port) {
const service = new chrome.ServiceBuilder().setPort(port)
builder.setChromeService(service)
}
const driver = builder.build()
const chromeDriver = new ChromeDriver(driver)
const extensionId = await chromeDriver.getExtensionIdByName('MetaMask')
return {
driver,
extensionUrl: `chrome-extension://${extensionId}`,
}
}
/**
* @constructor
* @param {!ThenableWebDriver} driver - a {@code WebDriver} instance
*/
constructor(driver) {
this._driver = driver
}
/**
* Returns the extension ID for the given extension name
* @param {string} extensionName - the extension name
* @returns {Promise<string|undefined>} the extension ID
*/
async getExtensionIdByName(extensionName) {
await this._driver.get('chrome://extensions')
return await this._driver.executeScript(`
const extensions = document.querySelector("extensions-manager").shadowRoot
.querySelector("extensions-item-list").shadowRoot
.querySelectorAll("extensions-item")
for (let i = 0; i < extensions.length; i++) {
const extension = extensions[i].shadowRoot
const name = extension.querySelector('#name').textContent
if (name === "${extensionName}") {
return extensions[i].getAttribute("id")
}
}
return undefined
`)
}
}
module.exports = ChromeDriver