@argos-ci/playwright 3.8.1 → 3.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -19
- package/dist/index.d.ts +23 -9
- package/dist/index.js +326 -0
- package/dist/reporter.d.ts +5 -16
- package/dist/reporter.js +342 -0
- package/package.json +13 -14
- package/dist/index.mjs +0 -334
- package/dist/reporter.mjs +0 -344
package/dist/index.cjs
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const argosScreenshot =
|
|
3
|
-
|
|
4
|
-
const { argosScreenshot } = await import('./index.mjs');
|
|
5
|
-
return argosScreenshot(...args);
|
|
1
|
+
const argosScreenshot = async (...args) => {
|
|
2
|
+
const { argosScreenshot } = await import("./index.js");
|
|
3
|
+
return argosScreenshot(...args);
|
|
6
4
|
};
|
|
7
5
|
exports.argosScreenshot = argosScreenshot;
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
const getCSPScriptHash = async (...args)=>{
|
|
10
|
-
// @ts-ignore
|
|
11
|
-
const { getCSPScriptHash } = await import('./index.mjs');
|
|
12
|
-
return getCSPScriptHash(...args);
|
|
13
|
-
};
|
|
14
|
-
exports.getCSPScriptHash = getCSPScriptHash;
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
const DO_NOT_USE_setMetadataConfig = async (...args)=>{
|
|
17
|
-
// @ts-ignore
|
|
18
|
-
const { DO_NOT_USE_setMetadataConfig } = await import('./index.mjs');
|
|
19
|
-
return DO_NOT_USE_setMetadataConfig(...args);
|
|
20
|
-
};
|
|
21
|
-
exports.DO_NOT_USE_setMetadataConfig = DO_NOT_USE_setMetadataConfig;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ViewportOption } from
|
|
3
|
-
import { ScreenshotMetadata } from
|
|
1
|
+
import { ElementHandle, Locator, LocatorScreenshotOptions, PageScreenshotOptions, Page } from '@playwright/test';
|
|
2
|
+
import { ViewportOption, StabilizationOptions } from '@argos-ci/browser';
|
|
3
|
+
import { ScreenshotMetadata } from '@argos-ci/util';
|
|
4
|
+
|
|
4
5
|
type LocatorOptions = Parameters<Page["locator"]>[1];
|
|
5
6
|
type ScreenshotOptions<TBase extends PageScreenshotOptions | LocatorScreenshotOptions> = Omit<TBase, "encoding" | "type" | "omitBackground" | "path">;
|
|
6
7
|
type ArgosScreenshotOptions = {
|
|
@@ -33,6 +34,13 @@ type ArgosScreenshotOptions = {
|
|
|
33
34
|
* @default "./screenshots"
|
|
34
35
|
*/
|
|
35
36
|
root?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Wait for the UI to stabilize before taking the screenshot.
|
|
39
|
+
* Set to `false` to disable stabilization.
|
|
40
|
+
* Pass an object to customize the stabilization.
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
stabilize?: boolean | StabilizationOptions;
|
|
36
44
|
} & LocatorOptions & ScreenshotOptions<LocatorScreenshotOptions> & ScreenshotOptions<PageScreenshotOptions>;
|
|
37
45
|
/**
|
|
38
46
|
* Stabilize the UI and takes a screenshot of the application under test.
|
|
@@ -41,20 +49,25 @@ type ArgosScreenshotOptions = {
|
|
|
41
49
|
* argosScreenshot(page, "my-screenshot")
|
|
42
50
|
* @see https://argos-ci.com/docs/playwright#api-overview
|
|
43
51
|
*/
|
|
44
|
-
declare function argosScreenshot(
|
|
52
|
+
declare function argosScreenshot(
|
|
53
|
+
/**
|
|
45
54
|
* Playwright `page` object.
|
|
46
55
|
*/
|
|
47
|
-
page: Page,
|
|
56
|
+
page: Page,
|
|
57
|
+
/**
|
|
48
58
|
* Name of the screenshot. Must be unique.
|
|
49
59
|
*/
|
|
50
|
-
name: string,
|
|
60
|
+
name: string,
|
|
61
|
+
/**
|
|
51
62
|
* Options for the screenshot.
|
|
52
63
|
*/
|
|
53
64
|
options?: ArgosScreenshotOptions): Promise<void>;
|
|
65
|
+
|
|
54
66
|
/**
|
|
55
67
|
* Get the CSP script hash.
|
|
56
68
|
*/
|
|
57
|
-
declare function getCSPScriptHash():
|
|
69
|
+
declare function getCSPScriptHash(): string;
|
|
70
|
+
|
|
58
71
|
type MetadataConfig = {
|
|
59
72
|
sdk: ScreenshotMetadata["sdk"];
|
|
60
73
|
playwrightLibraries: string[];
|
|
@@ -62,5 +75,6 @@ type MetadataConfig = {
|
|
|
62
75
|
/**
|
|
63
76
|
* Set the metadata config.
|
|
64
77
|
*/
|
|
65
|
-
declare function setMetadataConfig(metadata: MetadataConfig):
|
|
66
|
-
|
|
78
|
+
declare function setMetadataConfig(metadata: MetadataConfig): void;
|
|
79
|
+
|
|
80
|
+
export { type ArgosScreenshotOptions, setMetadataConfig as DO_NOT_USE_setMetadataConfig, argosScreenshot, getCSPScriptHash };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
// src/screenshot.ts
|
|
2
|
+
import { mkdir } from "node:fs/promises";
|
|
3
|
+
import { resolve, dirname } from "node:path";
|
|
4
|
+
import {
|
|
5
|
+
resolveViewport,
|
|
6
|
+
getGlobalScript
|
|
7
|
+
} from "@argos-ci/browser";
|
|
8
|
+
import {
|
|
9
|
+
getMetadataPath,
|
|
10
|
+
getScreenshotName,
|
|
11
|
+
validateThreshold,
|
|
12
|
+
writeMetadata
|
|
13
|
+
} from "@argos-ci/util";
|
|
14
|
+
|
|
15
|
+
// src/attachment.ts
|
|
16
|
+
function getAttachmentName(name, type) {
|
|
17
|
+
return `argos/${type}___${name}`;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/metadata.ts
|
|
21
|
+
import {
|
|
22
|
+
getGitRepositoryPath,
|
|
23
|
+
readVersionFromPackage
|
|
24
|
+
} from "@argos-ci/util";
|
|
25
|
+
import { relative } from "node:path";
|
|
26
|
+
import { createRequire } from "node:module";
|
|
27
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
28
|
+
var require2 = createRequire(import.meta.url);
|
|
29
|
+
function tryResolve(pkg) {
|
|
30
|
+
try {
|
|
31
|
+
return require2.resolve(pkg);
|
|
32
|
+
} catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var metadataConfigStorage = new AsyncLocalStorage();
|
|
37
|
+
function setMetadataConfig(metadata) {
|
|
38
|
+
metadataConfigStorage.enterWith(metadata);
|
|
39
|
+
}
|
|
40
|
+
var DEFAULT_PLAYWRIGHT_LIBRARIES = [
|
|
41
|
+
"@playwright/test",
|
|
42
|
+
"playwright",
|
|
43
|
+
"playwright-core"
|
|
44
|
+
];
|
|
45
|
+
async function getAutomationLibraryMetadata() {
|
|
46
|
+
const metadataConfig = metadataConfigStorage.getStore();
|
|
47
|
+
const libraries = metadataConfig?.playwrightLibraries ?? DEFAULT_PLAYWRIGHT_LIBRARIES;
|
|
48
|
+
for (const name of libraries) {
|
|
49
|
+
const pkgPath = tryResolve(`${name}/package.json`);
|
|
50
|
+
if (pkgPath) {
|
|
51
|
+
const version = await readVersionFromPackage(pkgPath);
|
|
52
|
+
return { version, name };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
throw new Error(
|
|
56
|
+
`Unable to find any of the following packages: ${libraries.join(", ")}`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
async function getArgosPlaywrightVersion() {
|
|
60
|
+
const pkgPath = require2.resolve("@argos-ci/playwright/package.json");
|
|
61
|
+
return readVersionFromPackage(pkgPath);
|
|
62
|
+
}
|
|
63
|
+
async function getSdkMetadata() {
|
|
64
|
+
const metadataConfig = metadataConfigStorage.getStore();
|
|
65
|
+
if (metadataConfig) {
|
|
66
|
+
return metadataConfig.sdk;
|
|
67
|
+
}
|
|
68
|
+
const argosPlaywrightVersion = await getArgosPlaywrightVersion();
|
|
69
|
+
return {
|
|
70
|
+
name: "@argos-ci/playwright",
|
|
71
|
+
version: argosPlaywrightVersion
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function getLibraryMetadata() {
|
|
75
|
+
const [automationLibrary, sdk] = await Promise.all([
|
|
76
|
+
getAutomationLibraryMetadata(),
|
|
77
|
+
getSdkMetadata()
|
|
78
|
+
]);
|
|
79
|
+
return {
|
|
80
|
+
automationLibrary,
|
|
81
|
+
sdk
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function getTestMetadataFromTestInfo(testInfo) {
|
|
85
|
+
const repositoryPath = await getGitRepositoryPath();
|
|
86
|
+
const testMetadata = {
|
|
87
|
+
id: testInfo.testId,
|
|
88
|
+
title: testInfo.title,
|
|
89
|
+
titlePath: testInfo.titlePath,
|
|
90
|
+
retry: testInfo.retry,
|
|
91
|
+
retries: testInfo.project.retries,
|
|
92
|
+
repeat: testInfo.repeatEachIndex,
|
|
93
|
+
location: {
|
|
94
|
+
file: repositoryPath ? relative(repositoryPath, testInfo.file) : testInfo.file,
|
|
95
|
+
line: testInfo.line,
|
|
96
|
+
column: testInfo.column
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return testMetadata;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/util.ts
|
|
103
|
+
import { createRequire as createRequire2 } from "node:module";
|
|
104
|
+
var require3 = createRequire2(import.meta.url);
|
|
105
|
+
function checkIsUsingArgosReporter(testInfo) {
|
|
106
|
+
const reporterPath = require3.resolve("@argos-ci/playwright/reporter");
|
|
107
|
+
return testInfo.config.reporter.some(
|
|
108
|
+
(reporter) => reporter[0].includes("@argos-ci/playwright/reporter") || reporter[0] === reporterPath
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/screenshot.ts
|
|
113
|
+
var DEFAULT_SCREENSHOT_ROOT = "./screenshots";
|
|
114
|
+
async function injectArgos(page) {
|
|
115
|
+
const injected = await page.evaluate(
|
|
116
|
+
() => typeof window.__ARGOS__ !== "undefined"
|
|
117
|
+
);
|
|
118
|
+
if (!injected) {
|
|
119
|
+
await page.addScriptTag({ content: getGlobalScript() });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async function getTestInfo() {
|
|
123
|
+
try {
|
|
124
|
+
const { test } = await import("@playwright/test");
|
|
125
|
+
return test.info();
|
|
126
|
+
} catch (error) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function getViewportSize(page) {
|
|
131
|
+
const viewportSize = page.viewportSize();
|
|
132
|
+
if (!viewportSize) {
|
|
133
|
+
throw new Error("Can't take screenshots without a viewport.");
|
|
134
|
+
}
|
|
135
|
+
return viewportSize;
|
|
136
|
+
}
|
|
137
|
+
async function setViewportSize(page, viewportSize) {
|
|
138
|
+
await page.setViewportSize(viewportSize);
|
|
139
|
+
await page.waitForFunction(
|
|
140
|
+
({ width, height }) => window.innerWidth === width && window.innerHeight === height,
|
|
141
|
+
{ width: viewportSize.width, height: viewportSize.height }
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
async function setup(page, options) {
|
|
145
|
+
const { disableHover = true, fullPage, argosCSS } = options;
|
|
146
|
+
await page.evaluate(
|
|
147
|
+
({ fullPage: fullPage2, argosCSS: argosCSS2 }) => window.__ARGOS__.setup({ fullPage: fullPage2, argosCSS: argosCSS2 }),
|
|
148
|
+
{ fullPage, argosCSS }
|
|
149
|
+
);
|
|
150
|
+
if (disableHover) {
|
|
151
|
+
await page.mouse.move(0, 0);
|
|
152
|
+
}
|
|
153
|
+
return async () => {
|
|
154
|
+
await page.evaluate(
|
|
155
|
+
({ fullPage: fullPage2, argosCSS: argosCSS2 }) => window.__ARGOS__.teardown({
|
|
156
|
+
fullPage: fullPage2,
|
|
157
|
+
argosCSS: argosCSS2
|
|
158
|
+
}),
|
|
159
|
+
{ fullPage, argosCSS }
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function getScreenshotNames(name, testInfo) {
|
|
164
|
+
if (testInfo) {
|
|
165
|
+
const projectName = `${testInfo.project.name}/${name}`;
|
|
166
|
+
if (testInfo.repeatEachIndex > 0) {
|
|
167
|
+
return {
|
|
168
|
+
name: `${projectName} repeat-${testInfo.repeatEachIndex}`,
|
|
169
|
+
baseName: projectName
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
return { name: projectName, baseName: null };
|
|
173
|
+
}
|
|
174
|
+
return { name, baseName: null };
|
|
175
|
+
}
|
|
176
|
+
async function argosScreenshot(page, name, options = {}) {
|
|
177
|
+
const {
|
|
178
|
+
element,
|
|
179
|
+
has,
|
|
180
|
+
hasText,
|
|
181
|
+
viewports,
|
|
182
|
+
argosCSS,
|
|
183
|
+
stabilize = true,
|
|
184
|
+
root = DEFAULT_SCREENSHOT_ROOT,
|
|
185
|
+
...playwrightOptions
|
|
186
|
+
} = options;
|
|
187
|
+
if (!page) {
|
|
188
|
+
throw new Error("A Playwright `page` object is required.");
|
|
189
|
+
}
|
|
190
|
+
if (!name) {
|
|
191
|
+
throw new Error("The `name` argument is required.");
|
|
192
|
+
}
|
|
193
|
+
const handle = typeof element === "string" ? page.locator(element, { has, hasText }) : element ?? page;
|
|
194
|
+
const testInfo = await getTestInfo();
|
|
195
|
+
const useArgosReporter = Boolean(
|
|
196
|
+
testInfo && checkIsUsingArgosReporter(testInfo)
|
|
197
|
+
);
|
|
198
|
+
await Promise.all([
|
|
199
|
+
// Create the screenshot folder if it doesn't exist
|
|
200
|
+
useArgosReporter ? null : mkdir(root, { recursive: true }),
|
|
201
|
+
// Inject Argos script into the page
|
|
202
|
+
injectArgos(page)
|
|
203
|
+
]);
|
|
204
|
+
const originalViewportSize = getViewportSize(page);
|
|
205
|
+
const fullPage = options.fullPage !== void 0 ? options.fullPage : handle === page;
|
|
206
|
+
const teardown = await setup(page, options);
|
|
207
|
+
const collectMetadata = async (testInfo2) => {
|
|
208
|
+
const [colorScheme, mediaType, libMetadata, testMetadata] = await Promise.all([
|
|
209
|
+
page.evaluate(
|
|
210
|
+
() => window.__ARGOS__.getColorScheme()
|
|
211
|
+
),
|
|
212
|
+
page.evaluate(
|
|
213
|
+
() => window.__ARGOS__.getMediaType()
|
|
214
|
+
),
|
|
215
|
+
getLibraryMetadata(),
|
|
216
|
+
testInfo2 ? getTestMetadataFromTestInfo(testInfo2) : null
|
|
217
|
+
]);
|
|
218
|
+
const viewportSize = getViewportSize(page);
|
|
219
|
+
const browser = page.context().browser();
|
|
220
|
+
if (!browser) {
|
|
221
|
+
throw new Error("Can't take screenshots without a browser.");
|
|
222
|
+
}
|
|
223
|
+
const browserName = browser.browserType().name();
|
|
224
|
+
const browserVersion = browser.version();
|
|
225
|
+
const metadata = {
|
|
226
|
+
url: page.url(),
|
|
227
|
+
viewport: viewportSize,
|
|
228
|
+
colorScheme,
|
|
229
|
+
mediaType,
|
|
230
|
+
test: testMetadata,
|
|
231
|
+
browser: {
|
|
232
|
+
name: browserName,
|
|
233
|
+
version: browserVersion
|
|
234
|
+
},
|
|
235
|
+
...libMetadata
|
|
236
|
+
};
|
|
237
|
+
return metadata;
|
|
238
|
+
};
|
|
239
|
+
const stabilizeAndScreenshot = async (name2) => {
|
|
240
|
+
if (stabilize) {
|
|
241
|
+
const stabilizationOptions = typeof stabilize === "object" ? stabilize : {};
|
|
242
|
+
try {
|
|
243
|
+
await page.waitForFunction(
|
|
244
|
+
(options2) => window.__ARGOS__.checkIsStable(options2),
|
|
245
|
+
stabilizationOptions
|
|
246
|
+
);
|
|
247
|
+
} catch (error) {
|
|
248
|
+
const reasons = await page.evaluate(
|
|
249
|
+
(options2) => window.__ARGOS__.getStabilityFailureReasons(options2),
|
|
250
|
+
stabilizationOptions
|
|
251
|
+
);
|
|
252
|
+
throw new Error(
|
|
253
|
+
`
|
|
254
|
+
Failed to stabilize screenshot, found the following issues:
|
|
255
|
+
${reasons.map((reason) => `- ${reason}`).join("\n")}
|
|
256
|
+
`.trim(),
|
|
257
|
+
{ cause: error }
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const names = getScreenshotNames(name2, testInfo);
|
|
262
|
+
const metadata = await collectMetadata(testInfo);
|
|
263
|
+
metadata.transient = {};
|
|
264
|
+
if (options.threshold !== void 0) {
|
|
265
|
+
validateThreshold(options.threshold);
|
|
266
|
+
metadata.transient.threshold = options.threshold;
|
|
267
|
+
}
|
|
268
|
+
if (names.baseName) {
|
|
269
|
+
metadata.transient.baseName = `${names.baseName}.png`;
|
|
270
|
+
}
|
|
271
|
+
const screenshotPath = useArgosReporter && testInfo ? testInfo.outputPath("argos", `${names.name}.png`) : resolve(root, `${names.name}.png`);
|
|
272
|
+
const dir = dirname(screenshotPath);
|
|
273
|
+
if (dir !== root) {
|
|
274
|
+
await mkdir(dirname(screenshotPath), { recursive: true });
|
|
275
|
+
}
|
|
276
|
+
await Promise.all([
|
|
277
|
+
handle.screenshot({
|
|
278
|
+
path: screenshotPath,
|
|
279
|
+
type: "png",
|
|
280
|
+
fullPage,
|
|
281
|
+
mask: [page.locator('[data-visual-test="blackout"]')],
|
|
282
|
+
animations: "disabled",
|
|
283
|
+
...playwrightOptions
|
|
284
|
+
}),
|
|
285
|
+
writeMetadata(screenshotPath, metadata)
|
|
286
|
+
]);
|
|
287
|
+
if (useArgosReporter && testInfo) {
|
|
288
|
+
await Promise.all([
|
|
289
|
+
testInfo.attach(getAttachmentName(names.name, "metadata"), {
|
|
290
|
+
path: getMetadataPath(screenshotPath),
|
|
291
|
+
contentType: "application/json"
|
|
292
|
+
}),
|
|
293
|
+
testInfo.attach(getAttachmentName(names.name, "screenshot"), {
|
|
294
|
+
path: screenshotPath,
|
|
295
|
+
contentType: "image/png"
|
|
296
|
+
})
|
|
297
|
+
]);
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
if (viewports) {
|
|
301
|
+
for (const viewport of viewports) {
|
|
302
|
+
const viewportSize = resolveViewport(viewport);
|
|
303
|
+
await setViewportSize(page, viewportSize);
|
|
304
|
+
await stabilizeAndScreenshot(
|
|
305
|
+
getScreenshotName(name, { viewportWidth: viewportSize.width })
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
await setViewportSize(page, originalViewportSize);
|
|
309
|
+
} else {
|
|
310
|
+
await stabilizeAndScreenshot(name);
|
|
311
|
+
}
|
|
312
|
+
await teardown();
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// src/csp.ts
|
|
316
|
+
import { getGlobalScript as getGlobalScript2 } from "@argos-ci/browser";
|
|
317
|
+
import { createHash } from "node:crypto";
|
|
318
|
+
function getCSPScriptHash() {
|
|
319
|
+
const hash = createHash("sha256").update(getGlobalScript2()).digest("base64");
|
|
320
|
+
return `'sha256-${hash}'`;
|
|
321
|
+
}
|
|
322
|
+
export {
|
|
323
|
+
setMetadataConfig as DO_NOT_USE_setMetadataConfig,
|
|
324
|
+
argosScreenshot,
|
|
325
|
+
getCSPScriptHash
|
|
326
|
+
};
|
package/dist/reporter.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { Reporter, FullConfig, TestResult, Suite, TestCase, FullResult } from '@playwright/test/reporter';
|
|
2
|
+
import { UploadParameters } from '@argos-ci/core';
|
|
3
|
+
|
|
4
4
|
/**
|
|
5
5
|
* Dynamic build name.
|
|
6
6
|
* We require all values in order to ensure it works correctly in parallel mode.
|
|
@@ -38,30 +38,18 @@ declare class ArgosReporter implements Reporter {
|
|
|
38
38
|
playwrightConfig: FullConfig;
|
|
39
39
|
uploadToArgos: boolean;
|
|
40
40
|
constructor(config: ArgosReporterOptions);
|
|
41
|
-
/**
|
|
42
|
-
* Write a file to the temporary directory.
|
|
43
|
-
*/
|
|
44
41
|
/**
|
|
45
42
|
* Write a file to the temporary directory.
|
|
46
43
|
*/
|
|
47
44
|
writeFile(path: string, body: Buffer | string): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Copy a file to the temporary directory.
|
|
50
|
-
*/
|
|
51
45
|
/**
|
|
52
46
|
* Copy a file to the temporary directory.
|
|
53
47
|
*/
|
|
54
48
|
copyFile(from: string, to: string): Promise<void>;
|
|
55
|
-
/**
|
|
56
|
-
* Copy the trace file if found in the result.
|
|
57
|
-
*/
|
|
58
49
|
/**
|
|
59
50
|
* Copy the trace file if found in the result.
|
|
60
51
|
*/
|
|
61
52
|
copyTraceIfFound(result: TestResult, path: string): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Get the root upload directory (cached).
|
|
64
|
-
*/
|
|
65
53
|
/**
|
|
66
54
|
* Get the root upload directory (cached).
|
|
67
55
|
*/
|
|
@@ -72,4 +60,5 @@ declare class ArgosReporter implements Reporter {
|
|
|
72
60
|
status: "failed";
|
|
73
61
|
} | undefined>;
|
|
74
62
|
}
|
|
75
|
-
|
|
63
|
+
|
|
64
|
+
export { type ArgosReporterOptions, createArgosReporterOptions, ArgosReporter as default };
|