prevent 'Failed to launch the browser process!'

pull/7076/head
baseballyama 5 years ago
parent 21c07de407
commit 5f272b9d91

@ -4,7 +4,7 @@ import * as http from 'http';
import { rollup } from 'rollup'; import { rollup } from 'rollup';
import virtual from '@rollup/plugin-virtual'; import virtual from '@rollup/plugin-virtual';
import puppeteer from 'puppeteer'; import puppeteer from 'puppeteer';
import { addLineNumbers, loadConfig, loadSvelte, getNewPage } from '../helpers'; import { addLineNumbers, loadConfig, loadSvelte, getNewPage, retryAsync } from '../helpers';
import { deepEqual } from 'assert'; import { deepEqual } from 'assert';
const page = ` const page = `
@ -17,6 +17,7 @@ const page = `
const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8'); const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8');
describe('custom-elements', function () { describe('custom-elements', function () {
// Note: Increase the timeout in preparation for restarting Chromium due to SIGSEGV.
this.timeout(10000); this.timeout(10000);
let svelte; let svelte;
let server; let server;
@ -44,7 +45,7 @@ describe('custom-elements', function () {
} }
async function launchPuppeteer() { async function launchPuppeteer() {
return await puppeteer.launch(); return await retryAsync(() => puppeteer.launch());
} }
before(async () => { before(async () => {

@ -297,3 +297,14 @@ export async function getNewPage(browser: Browser): Promise<Page> {
return page; return page;
} }
export async function retryAsync<T>(fn: () => Promise<T>): Promise<T> {
let attempts = 0;
while (attempts <= 3) {
try {
return await fn();
} catch (err) {
if (++attempts >= 3) throw err;
}
}
}

@ -10,7 +10,8 @@ import {
loadSvelte, loadSvelte,
mkdirp, mkdirp,
prettyPrintPuppeteerAssertionError, prettyPrintPuppeteerAssertionError,
getNewPage getNewPage,
retryAsync
} from '../helpers'; } from '../helpers';
import { deepEqual } from 'assert'; import { deepEqual } from 'assert';
@ -50,12 +51,14 @@ function create_server() {
} }
async function launchPuppeteer() { async function launchPuppeteer() {
return await puppeteer.launch(); return await retryAsync(() => puppeteer.launch());
} }
const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8'); const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8');
describe('runtime (puppeteer)', () => { describe('runtime (puppeteer)', function () {
// Note: Increase the timeout in preparation for restarting Chromium due to SIGSEGV.
this.timeout(10000);
before(async () => { before(async () => {
svelte = loadSvelte(false); svelte = loadSvelte(false);
console.log('[runtime-puppeteer] Loaded Svelte'); console.log('[runtime-puppeteer] Loaded Svelte');

Loading…
Cancel
Save