@allurereport/plugin-awesome 3.0.0-beta.4 → 3.0.0-beta.6

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.
@@ -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) => {
@@ -1,10 +1,11 @@
1
- import type { AttachmentLink, EnvironmentItem, Statistic, TestResult } from "@allurereport/core-api";
2
- import type { AllureStore, ReportFiles, ResultFile } from "@allurereport/plugin-api";
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<void>;
7
- export declare const generateTree: (writer: AllureAwesomeDataWriter, treeName: string, labels: string[], tests: TestResult[]) => Promise<void>;
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>;
@@ -1,4 +1,6 @@
1
- import { createTreeByLabels } from "@allurereport/plugin-api";
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
- const convertedTrs = [];
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
@@ -4,6 +4,7 @@ export type AllureAwesomeOptions = {
4
4
  logo?: string;
5
5
  theme?: "light" | "dark";
6
6
  reportLanguage?: "en" | "ru";
7
+ groupBy?: string[];
7
8
  ci?: {
8
9
  type: "github" | "jenkins";
9
10
  url: string;
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 noParentSuite = allTr.find((tr) => findByLabelName(tr.labels, "parentSuite")) === undefined;
29
- await generateTree(__classPrivateFieldGet(this, _AllureAwesomePlugin_writer, "f"), "suites", noParentSuite ? ["suite", "subSuite"] : ["parentSuite", "suite", "subSuite"], allTr);
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.4",
3
+ "version": "3.0.0-beta.6",
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.4",
34
- "@allurereport/plugin-api": "3.0.0-beta.4",
35
- "@allurereport/web-awesome": "3.0.0-beta.4",
36
- "@allurereport/web-commons": "3.0.0-beta.4",
33
+ "@allurereport/core-api": "3.0.0-beta.6",
34
+ "@allurereport/plugin-api": "3.0.0-beta.6",
35
+ "@allurereport/web-awesome": "3.0.0-beta.6",
36
+ "@allurereport/web-commons": "3.0.0-beta.6",
37
37
  "d3-shape": "^3.2.0",
38
38
  "handlebars": "^4.7.8"
39
39
  },