From 8d89233e0781d0445ce2a1e017f919a44ba63279 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Thu, 24 Jun 2021 17:18:16 -0700 Subject: [PATCH] cherry-pick(release-1.12): video: 'retain-on-failure' leaves empty folders behind (#7302) PR #7125 SHA 9550106 Co-authored-by: Pavel Feldman --- src/test/index.ts | 27 +++++++++++++++++++-------- utils/check_deps.js | 3 +-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/test/index.ts b/src/test/index.ts index 8db7954274..4275b34367 100644 --- a/src/test/index.ts +++ b/src/test/index.ts @@ -16,12 +16,16 @@ import * as fs from 'fs'; import * as path from 'path'; +import * as os from 'os'; import type { LaunchOptions, BrowserContextOptions, Page } from '../../types/types'; import type { TestType, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions } from '../../types/test'; import { rootTestType } from './testType'; - +import { createGuid, removeFolders } from '../utils/utils'; export { expect } from './expect'; export const _baseTest: TestType<{}, {}> = rootTestType.test; + +const artifactsFolder = path.join(os.tmpdir(), 'pwt-' + createGuid()); + export const test = _baseTest.extend({ defaultBrowserType: [ 'chromium', { scope: 'worker' } ], browserName: [ ({ defaultBrowserType }, use) => use(defaultBrowserType), { scope: 'worker' } ], @@ -47,6 +51,7 @@ export const test = _baseTest.extend { const video = page.video(); if (!video) return; try { const videoPath = await video.path(); - await fs.promises.unlink(videoPath); + const fileName = path.basename(videoPath); + await video.saveAs(testInfo.outputPath(fileName)); } catch (e) { - // Silent catch. + // Silent catch empty videos. } })); } diff --git a/utils/check_deps.js b/utils/check_deps.js index 5907e38513..efd637066b 100644 --- a/utils/check_deps.js +++ b/utils/check_deps.js @@ -163,8 +163,7 @@ DEPS['src/server/trace/common/'] = ['src/server/snapshot/', ...DEPS['src/server/ DEPS['src/server/trace/recorder/'] = ['src/server/trace/common/', ...DEPS['src/server/trace/common/']]; DEPS['src/server/trace/viewer/'] = ['src/server/trace/common/', ...DEPS['src/server/trace/common/']]; -// No dependencies for test runner. -DEPS['src/test/'] = ['src/test/**']; +DEPS['src/test/'] = ['src/test/**', 'src/utils/utils.ts']; checkDeps().catch(e => { console.error(e && e.stack ? e.stack : e);