From fcccac0c08d7445fe331a9ec9ef908c78ea5cdcb Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Wed, 15 Dec 2021 17:19:00 -0800 Subject: [PATCH] fix(tracing): return early if no trace was produced (#10953) This fixes [page/page-set-input-files.spec.ts](https://devops.aslushnikov.com/flakiness2.html#filter_spec=page%2Fpage-set-input-files.spec.ts&commits=50&test_parameter_filters=%5B%5B%22browserName%22%2C%5B%5B%22electron%22%2C%22exclude%22%5D%5D%5D%2C%5B%22platform%22%2C%5B%5B%22Android%22%2C%22exclude%22%5D%5D%5D%2C%5B%22video%22%2C%5B%5Btrue%2C%22exclude%22%5D%5D%5D%2C%5B%22trace%22%2C%5B%5Btrue%2C%22include%22%5D%5D%5D%5D×tamp=1639590204582) failures. --- packages/playwright-core/src/client/tracing.ts | 6 +++++- packages/playwright-core/src/protocol/protocol.yml | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/client/tracing.ts b/packages/playwright-core/src/client/tracing.ts index 1c14fd991d..8d4f8bfb1c 100644 --- a/packages/playwright-core/src/client/tracing.ts +++ b/packages/playwright-core/src/client/tracing.ts @@ -65,8 +65,12 @@ export class Tracing implements api.Tracing { return; } + // The artifact may be missing if the browser closed while stopping tracing. + if (!result.artifact) + return; + // Save trace to the final local file. - const artifact = Artifact.from(result.artifact!); + const artifact = Artifact.from(result.artifact); await artifact.saveAs(filePath); await artifact.delete(); diff --git a/packages/playwright-core/src/protocol/protocol.yml b/packages/playwright-core/src/protocol/protocol.yml index c1625e2885..648263f926 100644 --- a/packages/playwright-core/src/protocol/protocol.yml +++ b/packages/playwright-core/src/protocol/protocol.yml @@ -840,6 +840,7 @@ BrowserContext: - compressTrace - compressTraceAndSources returns: + # The artifact may be missing if the browser closes while tracing is beeing stopped. artifact: Artifact? sourceEntries: type: array?