mirror of https://github.com/01-edu/public.git
puppeteer: handle clean exit and parameters in tester
This commit is contained in:
parent
75e1ad8436
commit
9e11ff6732
|
@ -4,13 +4,12 @@ import path from 'path'
|
|||
import { deepStrictEqual } from 'assert'
|
||||
import puppeteer from 'puppeteer-core'
|
||||
|
||||
const exercise = 'pimp-my-style'
|
||||
const exercise = process.argv[2]
|
||||
if (!exercise) throw Error(`usage: node test EXERCISE_NAME`)
|
||||
const PORT = 9898
|
||||
const config = {
|
||||
headless: false,
|
||||
executablePath:
|
||||
'/usr/bin/google-chrome',
|
||||
// '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
|
||||
executablePath: process.env.CHROME_PATH || '/usr/bin/google-chrome',
|
||||
}
|
||||
|
||||
const mediaTypes = {
|
||||
|
@ -38,25 +37,29 @@ const server = http.createServer(({ url, method }, response) => {
|
|||
response.end('oopsie')
|
||||
})
|
||||
}).listen(PORT, async (err) => {
|
||||
err && (console.error(err.stack) || process.exit(1))
|
||||
const { setup, tests } = await import(`./${exercise}_test.js`)
|
||||
const browser = await puppeteer.launch(config)
|
||||
const [page] = await browser.pages()
|
||||
await page.goto(`http://localhost:${PORT}/${exercise}/index.html`)
|
||||
const context = await setup({ page })
|
||||
let code = 0
|
||||
for (const [n, test] of tests.entries()) {
|
||||
try {
|
||||
await test({ page, eq: deepStrictEqual, ...context })
|
||||
} catch (err) {
|
||||
code = 1
|
||||
console.log(`test #${n} failed:`)
|
||||
console.log(test.toString())
|
||||
console.log(err.stack)
|
||||
let browser, code = 0
|
||||
try {
|
||||
err && (console.error(err.stack) || process.exit(1))
|
||||
const { setup, tests } = await import(`./${exercise}_test.js`)
|
||||
browser = await puppeteer.launch(config)
|
||||
const [page] = await browser.pages()
|
||||
await page.goto(`http://localhost:${PORT}/${exercise}/index.html`)
|
||||
const context = await setup({ page })
|
||||
for (const [n, test] of tests.entries()) {
|
||||
try {
|
||||
await test({ page, eq: deepStrictEqual, ...context })
|
||||
} catch (err) {
|
||||
console.log(`test #${n} failed:`)
|
||||
console.log(test.toString())
|
||||
throw err
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
code = 1
|
||||
console.log(err.stack)
|
||||
} finally {
|
||||
await (browser && browser.close())
|
||||
server.close()
|
||||
process.exit(code)
|
||||
}
|
||||
server.close()
|
||||
await browser.close()
|
||||
process.exit(code)
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in New Issue