mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
14d85b1332
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.
63 lines
1.9 KiB
JavaScript
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
|