mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
7ec0cd0f46
The `withFixtures` helper function now has the option of starting the test dapp as well. It will wait to ensure it has started up correctly, and it'll shut it down when the test ends.
76 lines
2.1 KiB
JavaScript
76 lines
2.1 KiB
JavaScript
const path = require('path')
|
|
const Ganache = require('./ganache')
|
|
const FixtureServer = require('./fixture-server')
|
|
const { buildWebDriver } = require('./webdriver')
|
|
const createStaticServer = require('../../development/create-static-server')
|
|
|
|
const tinyDelayMs = 200
|
|
const regularDelayMs = tinyDelayMs * 2
|
|
const largeDelayMs = regularDelayMs * 2
|
|
|
|
const dappPort = 8080
|
|
|
|
async function withFixtures (options, callback) {
|
|
const { dapp, fixtures, ganacheOptions, driverOptions, title } = options
|
|
const fixtureServer = new FixtureServer()
|
|
const ganacheServer = new Ganache()
|
|
let dappServer
|
|
|
|
let webDriver
|
|
try {
|
|
await ganacheServer.start(ganacheOptions)
|
|
await fixtureServer.start()
|
|
await fixtureServer.loadState(path.join(__dirname, 'fixtures', fixtures))
|
|
if (dapp) {
|
|
const dappDirectory = path.resolve(__dirname, '..', '..', 'node_modules', '@metamask', 'test-dapp', 'dist')
|
|
dappServer = createStaticServer(dappDirectory)
|
|
dappServer.listen(dappPort)
|
|
await new Promise((resolve, reject) => {
|
|
dappServer.on('listening', resolve)
|
|
dappServer.on('error', reject)
|
|
})
|
|
}
|
|
const { driver } = await buildWebDriver(driverOptions)
|
|
webDriver = driver
|
|
|
|
await callback({
|
|
driver,
|
|
})
|
|
|
|
if (process.env.SELENIUM_BROWSER === 'chrome') {
|
|
const errors = await driver.checkBrowserForConsoleErrors(driver)
|
|
if (errors.length) {
|
|
const errorReports = errors.map((err) => err.message)
|
|
const errorMessage = `Errors found in browser console:\n${errorReports.join('\n')}`
|
|
throw new Error(errorMessage)
|
|
}
|
|
}
|
|
} catch (error) {
|
|
await webDriver.verboseReportOnFailure(title)
|
|
throw error
|
|
} finally {
|
|
await fixtureServer.stop()
|
|
await ganacheServer.quit()
|
|
if (webDriver) {
|
|
await webDriver.quit()
|
|
}
|
|
if (dappServer) {
|
|
await new Promise((resolve, reject) => {
|
|
dappServer.close((error) => {
|
|
if (error) {
|
|
return reject(error)
|
|
}
|
|
return resolve()
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
tinyDelayMs,
|
|
regularDelayMs,
|
|
largeDelayMs,
|
|
withFixtures,
|
|
}
|