@allurereport/plugin-awesome 3.0.0-beta.4 → 3.0.0-beta.5
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/converters.js +3 -0
- package/dist/generators.d.ts +5 -4
- package/dist/generators.js +30 -5
- package/dist/model.d.ts +1 -0
- package/dist/plugin.js +3 -6
- package/package.json +5 -5
package/dist/converters.js
CHANGED
|
@@ -11,6 +11,8 @@ export const convertTestResult = (tr) => {
|
|
|
11
11
|
return {
|
|
12
12
|
id: tr.id,
|
|
13
13
|
name: tr.name,
|
|
14
|
+
start: tr.start,
|
|
15
|
+
stop: tr.stop,
|
|
14
16
|
duration: tr.duration,
|
|
15
17
|
status: tr.status,
|
|
16
18
|
fullName: tr.fullName,
|
|
@@ -31,6 +33,7 @@ export const convertTestResult = (tr) => {
|
|
|
31
33
|
history: [],
|
|
32
34
|
retries: [],
|
|
33
35
|
breadcrumbs: [],
|
|
36
|
+
retry: false,
|
|
34
37
|
};
|
|
35
38
|
};
|
|
36
39
|
export const convertTestStepResult = (tsr) => {
|
package/dist/generators.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type AttachmentLink, type EnvironmentItem, type Statistic } from "@allurereport/core-api";
|
|
2
|
+
import { type AllureStore, type ReportFiles, type ResultFile } from "@allurereport/plugin-api";
|
|
3
|
+
import type { AllureAwesomeTestResult } from "@allurereport/web-awesome";
|
|
3
4
|
import type { AllureAwesomeOptions, TemplateManifest } from "./model.js";
|
|
4
5
|
import type { AllureAwesomeDataWriter, ReportFile } from "./writer.js";
|
|
5
6
|
export declare const readTemplateManifest: (singleFileMode?: boolean) => Promise<TemplateManifest>;
|
|
6
|
-
export declare const generateTestResults: (writer: AllureAwesomeDataWriter, store: AllureStore) => Promise<
|
|
7
|
-
export declare const generateTree: (writer: AllureAwesomeDataWriter, treeName: string, labels: string[], tests:
|
|
7
|
+
export declare const generateTestResults: (writer: AllureAwesomeDataWriter, store: AllureStore) => Promise<AllureAwesomeTestResult[]>;
|
|
8
|
+
export declare const generateTree: (writer: AllureAwesomeDataWriter, treeName: string, labels: string[], tests: AllureAwesomeTestResult[]) => Promise<void>;
|
|
8
9
|
export declare const generateEnvironmentJson: (writer: AllureAwesomeDataWriter, env: EnvironmentItem[]) => Promise<void>;
|
|
9
10
|
export declare const generateStatistic: (writer: AllureAwesomeDataWriter, statistic: Statistic) => Promise<void>;
|
|
10
11
|
export declare const generatePieChart: (writer: AllureAwesomeDataWriter, statistic: Statistic) => Promise<void>;
|
package/dist/generators.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { compareBy, incrementStatistic, nullsLast, ordinal, } from "@allurereport/core-api";
|
|
2
|
+
import { filterTree } from "@allurereport/plugin-api";
|
|
3
|
+
import { createTreeByLabels, sortTree, transformTree } from "@allurereport/plugin-api";
|
|
2
4
|
import { createBaseUrlScript, createFontLinkTag, createReportDataScript, createScriptTag, createStylesLinkTag, } from "@allurereport/web-commons";
|
|
3
5
|
import Handlebars from "handlebars";
|
|
4
6
|
import { readFile } from "node:fs/promises";
|
|
@@ -35,7 +37,7 @@ const template = `<!DOCTYPE html>
|
|
|
35
37
|
"single_file": "{{singleFile}}"
|
|
36
38
|
});
|
|
37
39
|
</script>
|
|
38
|
-
{{/if}}
|
|
40
|
+
{{/if}}
|
|
39
41
|
<script>
|
|
40
42
|
window.allureReportOptions = {{{ reportOptions }}}
|
|
41
43
|
</script>
|
|
@@ -73,13 +75,14 @@ const createBreadcrumbs = (convertedTr) => {
|
|
|
73
75
|
};
|
|
74
76
|
export const generateTestResults = async (writer, store) => {
|
|
75
77
|
const allTr = await store.allTestResults({ includeHidden: true });
|
|
76
|
-
|
|
78
|
+
let convertedTrs = [];
|
|
77
79
|
for (const tr of allTr) {
|
|
78
80
|
const trFixtures = await store.fixturesByTrId(tr.id);
|
|
79
81
|
const convertedTrFixtures = trFixtures.map(convertFixtureResult);
|
|
80
82
|
const convertedTr = convertTestResult(tr);
|
|
81
83
|
convertedTr.history = await store.historyByTrId(tr.id);
|
|
82
84
|
convertedTr.retries = await store.retriesByTrId(tr.id);
|
|
85
|
+
convertedTr.retry = convertedTr.retries.length > 0;
|
|
83
86
|
convertedTr.setup = convertedTrFixtures.filter((f) => f.type === "before");
|
|
84
87
|
convertedTr.teardown = convertedTrFixtures.filter((f) => f.type === "after");
|
|
85
88
|
convertedTr.attachments = (await store.attachmentsByTrId(tr.id)).map((attachment) => ({
|
|
@@ -89,13 +92,34 @@ export const generateTestResults = async (writer, store) => {
|
|
|
89
92
|
convertedTr.breadcrumbs = createBreadcrumbs(convertedTr);
|
|
90
93
|
convertedTrs.push(convertedTr);
|
|
91
94
|
}
|
|
95
|
+
convertedTrs = convertedTrs.sort(nullsLast(compareBy("start", ordinal()))).map((tr, idx) => ({
|
|
96
|
+
...tr,
|
|
97
|
+
order: idx + 1,
|
|
98
|
+
}));
|
|
92
99
|
for (const convertedTr of convertedTrs) {
|
|
93
100
|
await writer.writeTestCase(convertedTr);
|
|
94
101
|
}
|
|
102
|
+
await writer.writeWidget("nav.json", convertedTrs.filter(({ hidden }) => !hidden).map(({ id }) => id));
|
|
103
|
+
return convertedTrs;
|
|
95
104
|
};
|
|
96
105
|
export const generateTree = async (writer, treeName, labels, tests) => {
|
|
97
106
|
const visibleTests = tests.filter((test) => !test.hidden);
|
|
98
|
-
const tree = createTreeByLabels(visibleTests, labels)
|
|
107
|
+
const tree = createTreeByLabels(visibleTests, labels, ({ id, name, status, duration, flaky, start, retries }) => {
|
|
108
|
+
return {
|
|
109
|
+
nodeId: id,
|
|
110
|
+
retry: !!retries?.length,
|
|
111
|
+
name,
|
|
112
|
+
status,
|
|
113
|
+
duration,
|
|
114
|
+
flaky,
|
|
115
|
+
start,
|
|
116
|
+
};
|
|
117
|
+
}, undefined, (group, leaf) => {
|
|
118
|
+
incrementStatistic(group.statistic, leaf.status);
|
|
119
|
+
});
|
|
120
|
+
filterTree(tree, (leaf) => !leaf.hidden);
|
|
121
|
+
sortTree(tree, nullsLast(compareBy("start", ordinal())));
|
|
122
|
+
transformTree(tree, (leaf, idx) => ({ ...leaf, groupOrder: idx + 1 }));
|
|
99
123
|
await writer.writeWidget(`${treeName}.json`, tree);
|
|
100
124
|
};
|
|
101
125
|
export const generateEnvironmentJson = async (writer, env) => {
|
|
@@ -134,7 +158,7 @@ export const generateHistoryDataPoints = async (writer, store) => {
|
|
|
134
158
|
return result;
|
|
135
159
|
};
|
|
136
160
|
export const generateStaticFiles = async (payload) => {
|
|
137
|
-
const { reportName = "Allure Report", reportLanguage = "en", singleFile, logo = "", theme = "light", reportFiles, reportDataFiles, reportUuid, allureVersion, } = payload;
|
|
161
|
+
const { reportName = "Allure Report", reportLanguage = "en", singleFile, logo = "", theme = "light", groupBy, reportFiles, reportDataFiles, reportUuid, allureVersion, } = payload;
|
|
138
162
|
const compile = Handlebars.compile(template);
|
|
139
163
|
const manifest = await readTemplateManifest(payload.singleFile);
|
|
140
164
|
const headTags = [];
|
|
@@ -172,6 +196,7 @@ export const generateStaticFiles = async (payload) => {
|
|
|
172
196
|
reportLanguage,
|
|
173
197
|
createdAt: Date.now(),
|
|
174
198
|
reportUuid,
|
|
199
|
+
groupBy: groupBy?.length ? groupBy : ["parentSuite", "suite", "subSuite"],
|
|
175
200
|
};
|
|
176
201
|
const html = compile({
|
|
177
202
|
headTags: headTags.join("\n"),
|
package/dist/model.d.ts
CHANGED
package/dist/plugin.js
CHANGED
|
@@ -10,7 +10,6 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
12
|
var _AllureAwesomePlugin_writer, _AllureAwesomePlugin_generate;
|
|
13
|
-
import { findByLabelName } from "@allurereport/core-api";
|
|
14
13
|
import { generateAttachmentsFiles, generateEnvironmentJson, generateHistoryDataPoints, generatePieChart, generateStaticFiles, generateStatistic, generateTestResults, generateTree, } from "./generators.js";
|
|
15
14
|
import { InMemoryReportDataWriter, ReportFileDataWriter } from "./writer.js";
|
|
16
15
|
export class AllureAwesomePlugin {
|
|
@@ -18,16 +17,14 @@ export class AllureAwesomePlugin {
|
|
|
18
17
|
this.options = options;
|
|
19
18
|
_AllureAwesomePlugin_writer.set(this, void 0);
|
|
20
19
|
_AllureAwesomePlugin_generate.set(this, async (context, store) => {
|
|
21
|
-
const { singleFile } = this.options ?? {};
|
|
20
|
+
const { singleFile, groupBy } = this.options ?? {};
|
|
22
21
|
const environmentItems = await store.metadataByKey("allure_environment");
|
|
23
22
|
const statistic = await store.testsStatistic();
|
|
24
|
-
const allTr = await store.allTestResults({ includeHidden: true });
|
|
25
23
|
const attachments = await store.allAttachments();
|
|
26
24
|
await generateStatistic(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), statistic);
|
|
27
25
|
await generatePieChart(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), statistic);
|
|
28
|
-
const
|
|
29
|
-
await generateTree(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), "
|
|
30
|
-
await generateTestResults(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), store);
|
|
26
|
+
const convertedTrs = await generateTestResults(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), store);
|
|
27
|
+
await generateTree(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), "tree", groupBy?.length ? groupBy : ["parentSuite", "suite", "subSuite"], convertedTrs);
|
|
31
28
|
await generateHistoryDataPoints(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), store);
|
|
32
29
|
if (environmentItems?.length) {
|
|
33
30
|
await generateEnvironmentJson(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), environmentItems);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allurereport/plugin-awesome",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.5",
|
|
4
4
|
"description": "Allure Awesome Plugin – brand new HTML report with modern design and new features",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"allure",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"test": "rimraf ./out && vitest run"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@allurereport/core-api": "3.0.0-beta.
|
|
34
|
-
"@allurereport/plugin-api": "3.0.0-beta.
|
|
35
|
-
"@allurereport/web-awesome": "3.0.0-beta.
|
|
36
|
-
"@allurereport/web-commons": "3.0.0-beta.
|
|
33
|
+
"@allurereport/core-api": "3.0.0-beta.5",
|
|
34
|
+
"@allurereport/plugin-api": "3.0.0-beta.5",
|
|
35
|
+
"@allurereport/web-awesome": "3.0.0-beta.5",
|
|
36
|
+
"@allurereport/web-commons": "3.0.0-beta.5",
|
|
37
37
|
"d3-shape": "^3.2.0",
|
|
38
38
|
"handlebars": "^4.7.8"
|
|
39
39
|
},
|