From ec972fb7c140908560347ea215d30016fda2508d Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Fri, 26 May 2023 14:54:54 -0700 Subject: [PATCH] chore: make trace viewer self-desctruct on input disconnect (#23291) --- .../src/server/trace/viewer/traceViewer.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts index 4a02157cfd..02d834a758 100644 --- a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts +++ b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts @@ -18,7 +18,7 @@ import path from 'path'; import fs from 'fs'; import { HttpServer } from '../../../utils/httpServer'; import { findChromiumChannel } from '../../registry'; -import { isUnderTest } from '../../../utils'; +import { gracefullyCloseAll, isUnderTest } from '../../../utils'; import { installAppIcon, syncLocalStorageWithSettings } from '../../chromium/crApp'; import { serverSideCallMetadata } from '../../instrumentation'; import { createPlaywright } from '../../playwright'; @@ -143,6 +143,16 @@ function runServer(page: Page) { else loadTrace(url); }); + process.stdin.on('close', () => selfDestruct()); +} + +function selfDestruct() { + // Force exit after 30 seconds. + setTimeout(() => process.exit(0), 30000); + // Meanwhile, try to gracefully close all browsers. + gracefullyCloseAll().then(() => { + process.exit(0); + }); } function traceDescriptor(traceName: string) {