@allurereport/plugin-awesome 3.0.0-beta.3 → 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/charts.d.ts +2 -2
- package/dist/charts.js +4 -6
- package/dist/converters.js +3 -0
- package/dist/generators.d.ts +5 -4
- package/dist/generators.js +31 -7
- package/dist/model.d.ts +1 -0
- package/dist/plugin.js +3 -6
- package/package.json +7 -5
package/dist/charts.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Statistic, TestStatus } from "@allurereport/core-api";
|
|
2
|
-
import { PieArcDatum } from "d3-shape";
|
|
2
|
+
import type { PieArcDatum } from "d3-shape";
|
|
3
3
|
export type TestResultSlice = {
|
|
4
4
|
status: TestStatus;
|
|
5
5
|
count: number;
|
|
@@ -10,5 +10,5 @@ export type TestResultChartData = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare const d3Arc: import("d3-shape").Arc<any, PieArcDatum<TestResultSlice>>;
|
|
12
12
|
export declare const d3Pie: import("d3-shape").Pie<any, TestResultSlice>;
|
|
13
|
-
export declare
|
|
13
|
+
export declare const getPercentage: (value: number, total: number) => number;
|
|
14
14
|
export declare const getChartData: (stats: Statistic) => TestResultChartData;
|
package/dist/charts.js
CHANGED
|
@@ -5,9 +5,7 @@ export const d3Pie = pie()
|
|
|
5
5
|
.value((d) => d.count)
|
|
6
6
|
.padAngle(0.03)
|
|
7
7
|
.sortValues((a, b) => a - b);
|
|
8
|
-
export
|
|
9
|
-
return Math.floor((value / total) * 10000) / 100;
|
|
10
|
-
}
|
|
8
|
+
export const getPercentage = (value, total) => Math.floor((value / total) * 10000) / 100;
|
|
11
9
|
export const getChartData = (stats) => {
|
|
12
10
|
const convertedStatuses = statusesList
|
|
13
11
|
.filter((status) => !!stats?.[status])
|
|
@@ -16,9 +14,9 @@ export const getChartData = (stats) => {
|
|
|
16
14
|
count: stats[status],
|
|
17
15
|
}));
|
|
18
16
|
const arcsData = d3Pie(convertedStatuses);
|
|
19
|
-
const slices = arcsData.map((
|
|
20
|
-
d: d3Arc(
|
|
21
|
-
...
|
|
17
|
+
const slices = arcsData.map((arcData) => ({
|
|
18
|
+
d: d3Arc(arcData),
|
|
19
|
+
...arcData.data,
|
|
22
20
|
}));
|
|
23
21
|
const percentage = getPercentage(stats.passed ?? 0, stats.total);
|
|
24
22
|
return {
|
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) => {
|
|
@@ -127,15 +151,14 @@ export const generateAttachmentsFiles = async (writer, attachmentLinks, contentF
|
|
|
127
151
|
export const generateHistoryDataPoints = async (writer, store) => {
|
|
128
152
|
const result = new Map();
|
|
129
153
|
const allHistoryPoints = await store.allHistoryDataPoints();
|
|
130
|
-
allHistoryPoints.
|
|
131
|
-
for (const historyPoint of allHistoryPoints?.slice(0, 6)) {
|
|
154
|
+
for (const historyPoint of allHistoryPoints.slice(0, 6)) {
|
|
132
155
|
const src = `history/${historyPoint.uuid}.json`;
|
|
133
156
|
await writer.writeData(src, historyPoint);
|
|
134
157
|
}
|
|
135
158
|
return result;
|
|
136
159
|
};
|
|
137
160
|
export const generateStaticFiles = async (payload) => {
|
|
138
|
-
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;
|
|
139
162
|
const compile = Handlebars.compile(template);
|
|
140
163
|
const manifest = await readTemplateManifest(payload.singleFile);
|
|
141
164
|
const headTags = [];
|
|
@@ -173,6 +196,7 @@ export const generateStaticFiles = async (payload) => {
|
|
|
173
196
|
reportLanguage,
|
|
174
197
|
createdAt: Date.now(),
|
|
175
198
|
reportUuid,
|
|
199
|
+
groupBy: groupBy?.length ? groupBy : ["parentSuite", "suite", "subSuite"],
|
|
176
200
|
};
|
|
177
201
|
const html = compile({
|
|
178
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",
|
|
@@ -25,13 +25,15 @@
|
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "run clean && tsc --project ./tsconfig.json",
|
|
27
27
|
"clean": "rimraf ./dist",
|
|
28
|
+
"eslint": "eslint ./src/**/*.{js,jsx,ts,tsx}",
|
|
29
|
+
"eslint:format": "eslint --fix ./src/**/*.{js,jsx,ts,tsx}",
|
|
28
30
|
"test": "rimraf ./out && vitest run"
|
|
29
31
|
},
|
|
30
32
|
"dependencies": {
|
|
31
|
-
"@allurereport/core-api": "3.0.0-beta.
|
|
32
|
-
"@allurereport/plugin-api": "3.0.0-beta.
|
|
33
|
-
"@allurereport/web-awesome": "3.0.0-beta.
|
|
34
|
-
"@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",
|
|
35
37
|
"d3-shape": "^3.2.0",
|
|
36
38
|
"handlebars": "^4.7.8"
|
|
37
39
|
},
|