From 5f272b9d910781e69cc69459ad126a282ecfeeaa Mon Sep 17 00:00:00 2001 From: baseballyama Date: Thu, 30 Dec 2021 23:03:34 +0900 Subject: [PATCH] prevent 'Failed to launch the browser process!' --- test/custom-elements/index.ts | 5 +++-- test/helpers.ts | 11 +++++++++++ test/runtime-puppeteer/index.ts | 9 ++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/test/custom-elements/index.ts b/test/custom-elements/index.ts index b928b9f695..10e74bdaf4 100644 --- a/test/custom-elements/index.ts +++ b/test/custom-elements/index.ts @@ -4,7 +4,7 @@ import * as http from 'http'; import { rollup } from 'rollup'; import virtual from '@rollup/plugin-virtual'; import puppeteer from 'puppeteer'; -import { addLineNumbers, loadConfig, loadSvelte, getNewPage } from '../helpers'; +import { addLineNumbers, loadConfig, loadSvelte, getNewPage, retryAsync } from '../helpers'; import { deepEqual } from 'assert'; const page = ` @@ -17,6 +17,7 @@ const page = ` const assert = fs.readFileSync(`${__dirname}/assert.js`, 'utf-8'); describe('custom-elements', function () { + // Note: Increase the timeout in preparation for restarting Chromium due to SIGSEGV. this.timeout(10000); let svelte; let server; @@ -44,7 +45,7 @@ describe('custom-elements', function () { } async function launchPuppeteer() { - return await puppeteer.launch(); + return await retryAsync(() => puppeteer.launch()); } before(async () => { diff --git a/test/helpers.ts b/test/helpers.ts index dd2c0d2448..bd561e16bf 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -297,3 +297,14 @@ export async function getNewPage(browser: Browser): Promise { return page; } + +export async function retryAsync(fn: () => Promise): Promise { + let attempts = 0; + while (attempts <= 3) { + try { + return await fn(); + } catch (err) { + if (++attempts >= 3) throw err; + } + } +} diff --git a/test/runtime-puppeteer/index.ts b/test/runtime-puppeteer/index.ts index 3c232b1da5..969777c1ee 100644 --- a/test/runtime-puppeteer/index.ts +++ b/test/runtime-puppeteer/index.ts @@ -10,7 +10,8 @@ import { loadSvelte, mkdirp, prettyPrintPuppeteerAssertionError, - getNewPage + getNewPage, + retryAsync } from '../helpers'; import { deepEqual } from 'assert'; @@ -50,12 +51,14 @@ function create_server() { } async function launchPuppeteer() { - return await puppeteer.launch(); + return await retryAsync(() => puppeteer.launch()); } 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 () => { svelte = loadSvelte(false); console.log('[runtime-puppeteer] Loaded Svelte');