@allurereport/core 3.8.0 → 3.8.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/report.js +134 -106
- package/dist/store/store.js +6 -4
- package/package.json +20 -20
package/dist/report.js
CHANGED
|
@@ -44,6 +44,7 @@ const remoteReportParams = (ci) => {
|
|
|
44
44
|
const branch = ci?.jobRunBranch;
|
|
45
45
|
return repo && branch ? { repo, branch } : {};
|
|
46
46
|
};
|
|
47
|
+
const errorDetails = (err) => (err instanceof Error ? (err.stack ?? err.message) : String(err));
|
|
47
48
|
export class AllureReport {
|
|
48
49
|
constructor(opts) {
|
|
49
50
|
_AllureReport_instances.add(this);
|
|
@@ -300,125 +301,152 @@ export class AllureReport {
|
|
|
300
301
|
this.restoreState = async (dumps) => {
|
|
301
302
|
for (const dump of dumps) {
|
|
302
303
|
if (!existsSync(dump)) {
|
|
304
|
+
console.error(`Failed to restore state from "${dump}", continuing without it`);
|
|
305
|
+
console.error("Dump file does not exist");
|
|
303
306
|
continue;
|
|
304
307
|
}
|
|
305
|
-
const dumpArchive = new ZipReadStream.async({
|
|
306
|
-
file: dump,
|
|
307
|
-
});
|
|
308
308
|
try {
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
309
|
+
const dumpArchive = new ZipReadStream.async({
|
|
310
|
+
file: dump,
|
|
311
|
+
});
|
|
312
|
+
let restoreError;
|
|
313
|
+
try {
|
|
314
|
+
const dumpEntries = await dumpArchive.entries();
|
|
315
|
+
const dumpEntriesList = Object.entries(dumpEntries);
|
|
316
|
+
const requiredEntryData = async (entryName) => {
|
|
317
|
+
if (!dumpEntries[entryName]) {
|
|
318
|
+
throw new Error(`Missing required dump entry "${entryName}"`);
|
|
319
|
+
}
|
|
320
|
+
return dumpArchive.entryData(entryName);
|
|
321
|
+
};
|
|
322
|
+
const optionalEntryData = async (entryName) => dumpEntries[entryName] ? dumpArchive.entryData(entryName) : undefined;
|
|
323
|
+
if (!dumpEntries[AllureStoreDumpFiles.TestResults]) {
|
|
324
|
+
const nestedDumpEntries = dumpEntriesList.filter(([entryName, entry]) => !entry.isDirectory &&
|
|
325
|
+
!entryName.startsWith("__MACOSX/") &&
|
|
326
|
+
!basename(entryName).startsWith("._") &&
|
|
327
|
+
entryName.toLowerCase().endsWith(".zip"));
|
|
328
|
+
if (nestedDumpEntries.length > 0) {
|
|
329
|
+
const nestedDumpsTempDir = await mkdtemp(join(tmpdir(), `${basename(dump, ".zip")}-nested-`));
|
|
330
|
+
const nestedDumpPaths = [];
|
|
331
|
+
__classPrivateFieldGet(this, _AllureReport_dumpTempDirs, "f").push(nestedDumpsTempDir);
|
|
332
|
+
for (const [entryName] of nestedDumpEntries) {
|
|
333
|
+
const nestedDumpPath = join(nestedDumpsTempDir, `${nestedDumpPaths.length}-${basename(entryName)}`);
|
|
334
|
+
await writeFile(nestedDumpPath, await dumpArchive.entryData(entryName));
|
|
335
|
+
nestedDumpPaths.push(nestedDumpPath);
|
|
336
|
+
}
|
|
337
|
+
await this.restoreState(nestedDumpPaths);
|
|
338
|
+
continue;
|
|
325
339
|
}
|
|
326
|
-
await this.restoreState(nestedDumpPaths);
|
|
327
|
-
continue;
|
|
328
340
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
case AllureStoreDumpFiles.QualityGateResults:
|
|
367
|
-
return acc;
|
|
368
|
-
default:
|
|
369
|
-
if (entry.isDirectory || !attachmentsLinks[entryName] || attachmentsLinks[entryName].missed) {
|
|
341
|
+
const testResultsEntry = await requiredEntryData(AllureStoreDumpFiles.TestResults);
|
|
342
|
+
const testCasesEntry = await requiredEntryData(AllureStoreDumpFiles.TestCases);
|
|
343
|
+
const fixturesEntry = await requiredEntryData(AllureStoreDumpFiles.Fixtures);
|
|
344
|
+
const attachmentsEntry = await requiredEntryData(AllureStoreDumpFiles.Attachments);
|
|
345
|
+
const checkResultsEntry = await optionalEntryData(AllureStoreDumpFiles.CheckResults);
|
|
346
|
+
const environmentsEntry = await requiredEntryData(AllureStoreDumpFiles.Environments);
|
|
347
|
+
const reportVariablesEntry = await requiredEntryData(AllureStoreDumpFiles.ReportVariables);
|
|
348
|
+
const globalAttachmentsEntry = await requiredEntryData(AllureStoreDumpFiles.GlobalAttachments);
|
|
349
|
+
const globalErrorsEntry = await requiredEntryData(AllureStoreDumpFiles.GlobalErrors);
|
|
350
|
+
const indexAttachmentsEntry = await requiredEntryData(AllureStoreDumpFiles.IndexAttachmentsByTestResults);
|
|
351
|
+
const indexTestResultsByHistoryId = await requiredEntryData(AllureStoreDumpFiles.IndexTestResultsByHistoryId);
|
|
352
|
+
const indexTestResultsByTestCaseEntry = await requiredEntryData(AllureStoreDumpFiles.IndexTestResultsByTestCase);
|
|
353
|
+
const indexLatestEnvTestResultsByHistoryIdEntry = await requiredEntryData(AllureStoreDumpFiles.IndexLatestEnvTestResultsByHistoryId);
|
|
354
|
+
const indexAttachmentsByFixtureEntry = await requiredEntryData(AllureStoreDumpFiles.IndexAttachmentsByFixture);
|
|
355
|
+
const indexFixturesByTestResultEntry = await requiredEntryData(AllureStoreDumpFiles.IndexFixturesByTestResult);
|
|
356
|
+
const indexKnownByHistoryIdEntry = await requiredEntryData(AllureStoreDumpFiles.IndexKnownByHistoryId);
|
|
357
|
+
const qualityGateResultsEntry = await requiredEntryData(AllureStoreDumpFiles.QualityGateResults);
|
|
358
|
+
const attachmentsLinks = JSON.parse(attachmentsEntry.toString("utf8"));
|
|
359
|
+
const attachmentsEntries = dumpEntriesList.reduce((acc, [entryName, entry]) => {
|
|
360
|
+
switch (entryName) {
|
|
361
|
+
case AllureStoreDumpFiles.Attachments:
|
|
362
|
+
case AllureStoreDumpFiles.CheckResults:
|
|
363
|
+
case AllureStoreDumpFiles.TestResults:
|
|
364
|
+
case AllureStoreDumpFiles.TestCases:
|
|
365
|
+
case AllureStoreDumpFiles.Fixtures:
|
|
366
|
+
case AllureStoreDumpFiles.Environments:
|
|
367
|
+
case AllureStoreDumpFiles.ReportVariables:
|
|
368
|
+
case AllureStoreDumpFiles.GlobalAttachments:
|
|
369
|
+
case AllureStoreDumpFiles.GlobalErrors:
|
|
370
|
+
case AllureStoreDumpFiles.IndexAttachmentsByTestResults:
|
|
371
|
+
case AllureStoreDumpFiles.IndexTestResultsByHistoryId:
|
|
372
|
+
case AllureStoreDumpFiles.IndexTestResultsByTestCase:
|
|
373
|
+
case AllureStoreDumpFiles.IndexLatestEnvTestResultsByHistoryId:
|
|
374
|
+
case AllureStoreDumpFiles.IndexAttachmentsByFixture:
|
|
375
|
+
case AllureStoreDumpFiles.IndexFixturesByTestResult:
|
|
376
|
+
case AllureStoreDumpFiles.IndexKnownByHistoryId:
|
|
377
|
+
case AllureStoreDumpFiles.QualityGateResults:
|
|
370
378
|
return acc;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
379
|
+
default:
|
|
380
|
+
if (entry.isDirectory || !attachmentsLinks[entryName] || attachmentsLinks[entryName].missed) {
|
|
381
|
+
return acc;
|
|
382
|
+
}
|
|
383
|
+
return Object.assign(acc, {
|
|
384
|
+
[entryName]: entry,
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}, {});
|
|
388
|
+
const dumpState = {
|
|
389
|
+
testResults: JSON.parse(testResultsEntry.toString("utf8")),
|
|
390
|
+
testCases: JSON.parse(testCasesEntry.toString("utf8")),
|
|
391
|
+
fixtures: JSON.parse(fixturesEntry.toString("utf8")),
|
|
392
|
+
attachments: attachmentsLinks,
|
|
393
|
+
checkResults: checkResultsEntry ? JSON.parse(checkResultsEntry.toString("utf8")) : [],
|
|
394
|
+
environments: JSON.parse(environmentsEntry.toString("utf8")),
|
|
395
|
+
reportVariables: JSON.parse(reportVariablesEntry.toString("utf8")),
|
|
396
|
+
globalAttachmentIds: JSON.parse(globalAttachmentsEntry.toString("utf8")),
|
|
397
|
+
globalErrors: JSON.parse(globalErrorsEntry.toString("utf8")),
|
|
398
|
+
indexAttachmentByTestResult: JSON.parse(indexAttachmentsEntry.toString("utf8")),
|
|
399
|
+
indexTestResultByHistoryId: JSON.parse(indexTestResultsByHistoryId.toString("utf8")),
|
|
400
|
+
indexTestResultByTestCase: JSON.parse(indexTestResultsByTestCaseEntry.toString("utf8")),
|
|
401
|
+
indexLatestEnvTestResultByHistoryId: JSON.parse(indexLatestEnvTestResultsByHistoryIdEntry.toString("utf8")),
|
|
402
|
+
indexAttachmentByFixture: JSON.parse(indexAttachmentsByFixtureEntry.toString("utf8")),
|
|
403
|
+
indexFixturesByTestResult: JSON.parse(indexFixturesByTestResultEntry.toString("utf8")),
|
|
404
|
+
indexKnownByHistoryId: JSON.parse(indexKnownByHistoryIdEntry.toString("utf8")),
|
|
405
|
+
qualityGateResults: JSON.parse(qualityGateResultsEntry.toString("utf8")),
|
|
406
|
+
};
|
|
407
|
+
const dumpTempDir = await mkdtemp(join(tmpdir(), basename(dump, ".zip")));
|
|
408
|
+
const resultsAttachments = {};
|
|
409
|
+
__classPrivateFieldGet(this, _AllureReport_dumpTempDirs, "f").push(dumpTempDir);
|
|
410
|
+
try {
|
|
411
|
+
for (const [attachmentId] of Object.entries(attachmentsEntries)) {
|
|
412
|
+
const attachmentContentEntry = await dumpArchive.entryData(attachmentId);
|
|
413
|
+
const attachmentFilePath = resolveDumpAttachmentPath(dumpTempDir, attachmentId);
|
|
414
|
+
await writeFile(attachmentFilePath, attachmentContentEntry);
|
|
415
|
+
resultsAttachments[attachmentId] = new PathResultFile(attachmentFilePath, attachmentId);
|
|
416
|
+
}
|
|
375
417
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
globalAttachmentIds: JSON.parse(globalAttachmentsEntry.toString("utf8")),
|
|
386
|
-
globalErrors: JSON.parse(globalErrorsEntry.toString("utf8")),
|
|
387
|
-
indexAttachmentByTestResult: JSON.parse(indexAttachmentsEntry.toString("utf8")),
|
|
388
|
-
indexTestResultByHistoryId: JSON.parse(indexTestResultsByHistoryId.toString("utf8")),
|
|
389
|
-
indexTestResultByTestCase: JSON.parse(indexTestResultsByTestCaseEntry.toString("utf8")),
|
|
390
|
-
indexLatestEnvTestResultByHistoryId: JSON.parse(indexLatestEnvTestResultsByHistoryIdEntry.toString("utf8")),
|
|
391
|
-
indexAttachmentByFixture: JSON.parse(indexAttachmentsByFixtureEntry.toString("utf8")),
|
|
392
|
-
indexFixturesByTestResult: JSON.parse(indexFixturesByTestResultEntry.toString("utf8")),
|
|
393
|
-
indexKnownByHistoryId: JSON.parse(indexKnownByHistoryIdEntry.toString("utf8")),
|
|
394
|
-
qualityGateResults: JSON.parse(qualityGateResultsEntry.toString("utf8")),
|
|
395
|
-
};
|
|
396
|
-
const dumpTempDir = await mkdtemp(join(tmpdir(), basename(dump, ".zip")));
|
|
397
|
-
const resultsAttachments = {};
|
|
398
|
-
__classPrivateFieldGet(this, _AllureReport_dumpTempDirs, "f").push(dumpTempDir);
|
|
399
|
-
try {
|
|
400
|
-
for (const [attachmentId] of Object.entries(attachmentsEntries)) {
|
|
401
|
-
const attachmentContentEntry = await dumpArchive.entryData(attachmentId);
|
|
402
|
-
const attachmentFilePath = resolveDumpAttachmentPath(dumpTempDir, attachmentId);
|
|
403
|
-
await writeFile(attachmentFilePath, attachmentContentEntry);
|
|
404
|
-
resultsAttachments[attachmentId] = new PathResultFile(attachmentFilePath, attachmentId);
|
|
418
|
+
catch (err) {
|
|
419
|
+
if (err instanceof UnsafeDumpPathError) {
|
|
420
|
+
console.error(`Cannot restore dump from "${dump}": the archive lists attachment paths that would write outside the extract directory (unsafe zip paths such as "../" or absolute names).`);
|
|
421
|
+
console.error(err.message);
|
|
422
|
+
console.error("Only use dump archives produced by this tool; do not load untrusted or third-party --dump zip files.");
|
|
423
|
+
throw err;
|
|
424
|
+
}
|
|
425
|
+
console.error(`Can't restore attachment contents from "${dump}", continuing without them`);
|
|
426
|
+
console.error(errorDetails(err));
|
|
405
427
|
}
|
|
428
|
+
await __classPrivateFieldGet(this, _AllureReport_store, "f").restoreState(dumpState, resultsAttachments);
|
|
429
|
+
console.info(`Successfully restored state from "${dump}"`);
|
|
406
430
|
}
|
|
407
431
|
catch (err) {
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
432
|
+
restoreError = err;
|
|
433
|
+
throw err;
|
|
434
|
+
}
|
|
435
|
+
finally {
|
|
436
|
+
try {
|
|
437
|
+
await dumpArchive.close();
|
|
438
|
+
}
|
|
439
|
+
catch (err) {
|
|
440
|
+
if (!restoreError) {
|
|
441
|
+
console.error(`Failed to close dump archive "${dump}"`);
|
|
442
|
+
console.error(errorDetails(err));
|
|
443
|
+
}
|
|
413
444
|
}
|
|
414
|
-
console.error(`Can't restore state from "${dump}", continuing without it`);
|
|
415
|
-
console.error(err);
|
|
416
445
|
}
|
|
417
|
-
await __classPrivateFieldGet(this, _AllureReport_store, "f").restoreState(dumpState, resultsAttachments);
|
|
418
|
-
console.info(`Successfully restored state from "${dump}"`);
|
|
419
446
|
}
|
|
420
|
-
|
|
421
|
-
|
|
447
|
+
catch (err) {
|
|
448
|
+
console.error(`Failed to restore state from "${dump}", continuing without it`);
|
|
449
|
+
console.error(errorDetails(err));
|
|
422
450
|
}
|
|
423
451
|
}
|
|
424
452
|
};
|
package/dist/store/store.js
CHANGED
|
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _DefaultAllureStore_instances, _DefaultAllureStore_testResults, _DefaultAllureStore_environmentDisplayNames, _DefaultAllureStore_environmentNameToId, _DefaultAllureStore_attachments, _DefaultAllureStore_attachmentContents, _DefaultAllureStore_testCases, _DefaultAllureStore_metadata, _DefaultAllureStore_history, _DefaultAllureStore_known, _DefaultAllureStore_fixtures, _DefaultAllureStore_defaultLabels, _DefaultAllureStore_environment, _DefaultAllureStore_environmentsConfig, _DefaultAllureStore_reportVariables, _DefaultAllureStore_realtimeDispatcher, _DefaultAllureStore_realtimeSubscriber, _DefaultAllureStore_allowedEnvironmentIds, _DefaultAllureStore_globalAttachmentIds, _DefaultAllureStore_globalAttachmentIdsByEnv, _DefaultAllureStore_globalErrors, _DefaultAllureStore_globalErrorsByEnv, _DefaultAllureStore_globalExitCode, _DefaultAllureStore_checkResults, _DefaultAllureStore_qualityGateResults, _DefaultAllureStore_historyPoints, _DefaultAllureStore_environments, _DefaultAllureStore_mergeEnvironmentIdentity, _DefaultAllureStore_environmentIdForLookup, _DefaultAllureStore_addEnvironments, _DefaultAllureStore_environmentIdByName, _DefaultAllureStore_setTestResultEnvironmentId, _DefaultAllureStore_assertAllowedEnvironmentId, _DefaultAllureStore_assertAllowedStoredEnvironment, _DefaultAllureStore_environmentIdByTestResult, _DefaultAllureStore_resolveGlobalEnvironmentIdentity, _DefaultAllureStore_globalAttachmentId, _DefaultAllureStore_indexGlobalError, _DefaultAllureStore_addGlobalError, _DefaultAllureStore_indexGlobalAttachment, _DefaultAllureStore_addGlobalAttachment, _DefaultAllureStore_restoreAttachmentContent, _DefaultAllureStore_relinkRestoredAttachmentSteps;
|
|
13
13
|
import { extname } from "node:path";
|
|
14
|
-
import { DEFAULT_ENVIRONMENT, DEFAULT_ENVIRONMENT_IDENTITY, compareBy, createDictionary, getHistoryIdCandidates, getWorstStatus, nullsLast, ordinal, reverse, selectHistoryTestResults, validateEnvironmentId, validateEnvironmentName, } from "@allurereport/core-api";
|
|
14
|
+
import { DEFAULT_ENVIRONMENT, DEFAULT_ENVIRONMENT_IDENTITY, compareBy, createDictionary, getHistoryIdCandidates, getWorstStatus, nullsLast, normalizeHistoryDataPoint, ordinal, reverse, selectHistoryTestResults, validateEnvironmentId, validateEnvironmentName, } from "@allurereport/core-api";
|
|
15
15
|
import { md5, } from "@allurereport/plugin-api";
|
|
16
16
|
import { environmentIdentityById, normalizeEnvironmentDescriptorMap, resolveEnvironmentIdentity, resolveStoredEnvironmentIdentity, validateAllowedEnvironmentId, } from "../utils/environment.js";
|
|
17
17
|
import { isFlaky } from "../utils/flaky.js";
|
|
@@ -196,7 +196,9 @@ export class DefaultAllureStore {
|
|
|
196
196
|
if (!__classPrivateFieldGet(this, _DefaultAllureStore_history, "f")) {
|
|
197
197
|
return [];
|
|
198
198
|
}
|
|
199
|
-
__classPrivateFieldSet(this, _DefaultAllureStore_historyPoints, (await __classPrivateFieldGet(this, _DefaultAllureStore_history, "f").readHistory()) ?? []
|
|
199
|
+
__classPrivateFieldSet(this, _DefaultAllureStore_historyPoints, ((await __classPrivateFieldGet(this, _DefaultAllureStore_history, "f").readHistory()) ?? [])
|
|
200
|
+
.filter((historyPoint) => typeof historyPoint === "object" && historyPoint !== null)
|
|
201
|
+
.map(normalizeHistoryDataPoint), "f");
|
|
200
202
|
__classPrivateFieldGet(this, _DefaultAllureStore_historyPoints, "f").sort(compareBy("timestamp", reverse(ordinal())));
|
|
201
203
|
return __classPrivateFieldGet(this, _DefaultAllureStore_historyPoints, "f");
|
|
202
204
|
}
|
|
@@ -488,7 +490,7 @@ export class DefaultAllureStore {
|
|
|
488
490
|
}
|
|
489
491
|
return __classPrivateFieldGet(this, _DefaultAllureStore_historyPoints, "f").reduce((result, dp) => {
|
|
490
492
|
const filteredTestResults = [];
|
|
491
|
-
for (const tr of Object.values(dp.testResults)) {
|
|
493
|
+
for (const tr of Object.values(dp.testResults ?? {})) {
|
|
492
494
|
const storedEnvironmentKey = typeof tr.environment === "string" ? tr.environment : undefined;
|
|
493
495
|
const trEnvId = (storedEnvironmentKey ? __classPrivateFieldGet(this, _DefaultAllureStore_instances, "m", _DefaultAllureStore_environmentIdByName).call(this, storedEnvironmentKey) : undefined) ??
|
|
494
496
|
resolveStoredEnvironmentIdentity({
|
|
@@ -526,7 +528,7 @@ export class DefaultAllureStore {
|
|
|
526
528
|
if (allHistoryDps.length === 0) {
|
|
527
529
|
return Array.from(__classPrivateFieldGet(this, _DefaultAllureStore_testResults, "f").values());
|
|
528
530
|
}
|
|
529
|
-
const historicalIds = new Set(allHistoryDps.flatMap((dp) => Object.keys(dp.testResults)));
|
|
531
|
+
const historicalIds = new Set(allHistoryDps.flatMap((dp) => Object.keys(dp.testResults ?? {})));
|
|
530
532
|
const newTrs = [];
|
|
531
533
|
for (const [, tr] of __classPrivateFieldGet(this, _DefaultAllureStore_testResults, "f")) {
|
|
532
534
|
if (tr.hidden) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allurereport/core",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "Collection of generic Allure utilities used across the entire project",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"allure"
|
|
@@ -25,25 +25,25 @@
|
|
|
25
25
|
"lint:fix": "oxlint --import-plugin --fix src test features stories"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@allurereport/ci": "3.8.
|
|
29
|
-
"@allurereport/core-api": "3.8.
|
|
30
|
-
"@allurereport/plugin-agent": "3.8.
|
|
31
|
-
"@allurereport/plugin-allure2": "3.8.
|
|
32
|
-
"@allurereport/plugin-api": "3.8.
|
|
33
|
-
"@allurereport/plugin-awesome": "3.8.
|
|
34
|
-
"@allurereport/plugin-classic": "3.8.
|
|
35
|
-
"@allurereport/plugin-csv": "3.8.
|
|
36
|
-
"@allurereport/plugin-dashboard": "3.8.
|
|
37
|
-
"@allurereport/plugin-jira": "3.8.
|
|
38
|
-
"@allurereport/plugin-log": "3.8.
|
|
39
|
-
"@allurereport/plugin-progress": "3.8.
|
|
40
|
-
"@allurereport/plugin-slack": "3.8.
|
|
41
|
-
"@allurereport/plugin-testops": "3.8.
|
|
42
|
-
"@allurereport/plugin-testplan": "3.8.
|
|
43
|
-
"@allurereport/reader": "3.8.
|
|
44
|
-
"@allurereport/reader-api": "3.8.
|
|
45
|
-
"@allurereport/service": "3.8.
|
|
46
|
-
"@allurereport/summary": "3.8.
|
|
28
|
+
"@allurereport/ci": "3.8.1",
|
|
29
|
+
"@allurereport/core-api": "3.8.1",
|
|
30
|
+
"@allurereport/plugin-agent": "3.8.1",
|
|
31
|
+
"@allurereport/plugin-allure2": "3.8.1",
|
|
32
|
+
"@allurereport/plugin-api": "3.8.1",
|
|
33
|
+
"@allurereport/plugin-awesome": "3.8.1",
|
|
34
|
+
"@allurereport/plugin-classic": "3.8.1",
|
|
35
|
+
"@allurereport/plugin-csv": "3.8.1",
|
|
36
|
+
"@allurereport/plugin-dashboard": "3.8.1",
|
|
37
|
+
"@allurereport/plugin-jira": "3.8.1",
|
|
38
|
+
"@allurereport/plugin-log": "3.8.1",
|
|
39
|
+
"@allurereport/plugin-progress": "3.8.1",
|
|
40
|
+
"@allurereport/plugin-slack": "3.8.1",
|
|
41
|
+
"@allurereport/plugin-testops": "3.8.1",
|
|
42
|
+
"@allurereport/plugin-testplan": "3.8.1",
|
|
43
|
+
"@allurereport/reader": "3.8.1",
|
|
44
|
+
"@allurereport/reader-api": "3.8.1",
|
|
45
|
+
"@allurereport/service": "3.8.1",
|
|
46
|
+
"@allurereport/summary": "3.8.1",
|
|
47
47
|
"glob": "^13.0.6",
|
|
48
48
|
"handlebars": "^4.7.9",
|
|
49
49
|
"node-stream-zip": "^1.15.0",
|