-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpdf-handler.ts
44 lines (39 loc) · 1.17 KB
/
pdf-handler.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {
CreateVisualSnapshotsParams,
VisualSnapshotsApi,
} from "../api/visual-snapshots-api.js";
import { VisualConfig } from "@saucelabs/visual";
import { getFiles } from "../utils/glob.js";
import { PdfSnapshotUploader } from "./pdf-files-snapshot-uploader.js";
export interface PdfCommandParams
extends VisualConfig,
CreateVisualSnapshotsParams {
concurrency: number;
}
export class PdfCommandHandler {
constructor(
private readonly visualSnapshotsApi: VisualSnapshotsApi,
private readonly pdfSnapshotUploader: PdfSnapshotUploader
) {}
public async handle(
globsOrDirs: string[],
params: PdfCommandParams
): Promise<void> {
const pdfFilePaths = await getFiles(globsOrDirs, "*.pdf");
const buildId =
params.buildId ?? (await this.visualSnapshotsApi.createBuild(params));
try {
await this.pdfSnapshotUploader.uploadSnapshots({
buildId,
pdfFilePaths,
suiteName: params.suiteName,
testNameFormat: params.testName,
snapshotNameFormat: params.snapshotName,
});
} finally {
if (!params.buildId) {
await this.visualSnapshotsApi.finishBuild(buildId);
}
}
}
}