electron/spec/lib/artifacts.ts
trop[bot] 105acec227
test: disable flaky macOS panel test & refactor screen capture testing (#41461)
* Disable flaky test

Co-authored-by: clavin <clavin@electronjs.org>

* Add helper for storing test artifacts

Co-authored-by: clavin <clavin@electronjs.org>

* Refactor screen capture tests

We have a pattern for inspecting a screen capture, so this refactor codifies that pattern into a helper. This gives us shorter test code, consistency (previously, the display in test code and the display captured could theoretically be different), and better debugging/observability on failure.

Co-authored-by: clavin <clavin@electronjs.org>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
2024-02-28 14:55:15 +09:00

36 lines
862 B
TypeScript

import path = require('node:path');
import fs = require('node:fs/promises');
import { randomBytes } from 'node:crypto';
const IS_CI = !!process.env.CI;
const ARTIFACT_DIR = path.join(__dirname, '..', 'artifacts');
async function ensureArtifactDir (): Promise<void> {
if (!IS_CI) {
return;
}
await fs.mkdir(ARTIFACT_DIR, { recursive: true });
}
export async function createArtifact (
fileName: string,
data: Buffer
): Promise<void> {
if (!IS_CI) {
return;
}
await ensureArtifactDir();
await fs.writeFile(path.join(ARTIFACT_DIR, fileName), data);
}
export async function createArtifactWithRandomId (
makeFileName: (id: string) => string,
data: Buffer
): Promise<string> {
const randomId = randomBytes(12).toString('hex');
const fileName = makeFileName(randomId);
await createArtifact(fileName, data);
return fileName;
}