@allurereport/plugin-log 3.16.1 → 3.18.0
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/README.md +6 -6
- package/dist/model.d.ts +1 -0
- package/dist/plugin.js +24 -20
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +22 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -46,9 +46,9 @@ export default defineConfig({
|
|
|
46
46
|
|
|
47
47
|
The plugin accepts the following options:
|
|
48
48
|
|
|
49
|
-
| Option
|
|
50
|
-
|
|
51
|
-
| `allSteps`
|
|
52
|
-
| `withTrace`
|
|
53
|
-
| `groupBy`
|
|
54
|
-
|
|
49
|
+
| Option | Description | Type | Default |
|
|
50
|
+
|----------------------|--------------------------------------------------|------------------------------------------|---------|
|
|
51
|
+
| `allSteps` | Include all steps in the report | `boolean` | `false` |
|
|
52
|
+
| `withTrace` | Include step trace in the report | `boolean` | `false` |
|
|
53
|
+
| `groupBy` | Group tests by given label | `suites \| features \| packages \| none` | `none` |
|
|
54
|
+
| `qualityGateResults` | Include quality gate validation results in logs | `boolean` | `true` |
|
package/dist/model.d.ts
CHANGED
package/dist/plugin.js
CHANGED
|
@@ -1,42 +1,46 @@
|
|
|
1
1
|
import * as console from "node:console";
|
|
2
2
|
import { gray } from "yoctocolors";
|
|
3
|
-
import { printSummary, printTest } from "./utils.js";
|
|
3
|
+
import { printQualityGateResults, printSummary, printTest } from "./utils.js";
|
|
4
4
|
export class LogPlugin {
|
|
5
5
|
constructor(options = {}) {
|
|
6
6
|
this.options = options;
|
|
7
7
|
this.done = async (context, store) => {
|
|
8
|
-
const { groupBy = "suite", filter = () => true } = this.options ?? {};
|
|
8
|
+
const { groupBy = "suite", filter = () => true, qualityGateResults = true } = this.options ?? {};
|
|
9
9
|
const allTestResults = await store.allTestResults();
|
|
10
10
|
const filteredTestResults = allTestResults.filter(filter);
|
|
11
|
+
const allQualityGateResults = qualityGateResults ? await store.qualityGateResults() : [];
|
|
11
12
|
if (groupBy === "none") {
|
|
12
13
|
filteredTestResults.forEach((test) => {
|
|
13
14
|
printTest(test, this.options);
|
|
14
15
|
});
|
|
15
16
|
console.log("");
|
|
16
|
-
printSummary(filteredTestResults, { total: allTestResults.length, filtered: filteredTestResults.length });
|
|
17
|
-
return;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
else {
|
|
19
|
+
const groupedTests = await store.testResultsByLabel(groupBy);
|
|
20
|
+
Object.keys(groupedTests).forEach((key) => {
|
|
21
|
+
const tests = groupedTests[key].filter(filter);
|
|
22
|
+
if (tests.length === 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (key === "_") {
|
|
26
|
+
console.info(gray("uncategorized"));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.info(key);
|
|
30
|
+
}
|
|
31
|
+
tests.forEach((test) => {
|
|
32
|
+
printTest(test, this.options, 1);
|
|
33
|
+
});
|
|
34
|
+
console.log("");
|
|
33
35
|
});
|
|
34
|
-
|
|
35
|
-
});
|
|
36
|
+
}
|
|
36
37
|
printSummary(filteredTestResults, {
|
|
37
38
|
total: allTestResults.length,
|
|
38
39
|
filtered: filteredTestResults.length,
|
|
39
40
|
});
|
|
41
|
+
if (qualityGateResults) {
|
|
42
|
+
printQualityGateResults(allQualityGateResults);
|
|
43
|
+
}
|
|
40
44
|
};
|
|
41
45
|
}
|
|
42
46
|
}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DefaultTestStepResult, TestResult, TestStatus, TestStepResult } from "@allurereport/core-api";
|
|
2
|
+
import type { QualityGateValidationResult } from "@allurereport/plugin-api";
|
|
2
3
|
import type { LogPluginOptions } from "./model.js";
|
|
3
4
|
export type PrintFunctionOptions = Pick<LogPluginOptions, "allSteps" | "groupBy" | "withTrace">;
|
|
4
5
|
export declare const isFailedResult: (result: TestResult | TestStepResult) => boolean;
|
|
@@ -6,9 +7,12 @@ export declare const hasResultFailedSteps: (result: TestResult | TestStepResult)
|
|
|
6
7
|
export declare const stringifyStatusBadge: (status: TestStatus) => string;
|
|
7
8
|
export declare const stringifyTestResultTitle: (result: TestResult) => string;
|
|
8
9
|
export declare const stringifyStepResultTitle: (result: DefaultTestStepResult) => string;
|
|
10
|
+
export declare const stringifyQualityGateResultTitle: (result: QualityGateValidationResult) => string;
|
|
9
11
|
export declare const printTest: (test: TestResult, options?: PrintFunctionOptions, indent?: number) => void;
|
|
10
12
|
export declare const printStep: (step: DefaultTestStepResult, options?: PrintFunctionOptions, indent?: number) => void;
|
|
11
13
|
export declare const printSummary: (results: TestResult[], options: {
|
|
12
14
|
total: number;
|
|
13
15
|
filtered: number;
|
|
14
16
|
}) => void;
|
|
17
|
+
export declare const printQualityGateResult: (result: QualityGateValidationResult, indent?: number) => void;
|
|
18
|
+
export declare const printQualityGateResults: (results: QualityGateValidationResult[]) => void;
|
package/dist/utils.js
CHANGED
|
@@ -46,6 +46,11 @@ export const stringifyStepResultTitle = (result) => {
|
|
|
46
46
|
const duration = result.duration ? `${yellow(`${result.duration}ms`)}` : "";
|
|
47
47
|
return [status, result.name, duration].filter(Boolean).join(" ");
|
|
48
48
|
};
|
|
49
|
+
export const stringifyQualityGateResultTitle = (result) => {
|
|
50
|
+
const status = result.success ? green("✓") : red("⨯");
|
|
51
|
+
const environment = result.environment ? gray(`[${result.environment}]`) : "";
|
|
52
|
+
return [status, result.rule, environment].filter(Boolean).join(" ");
|
|
53
|
+
};
|
|
49
54
|
export const printTest = (test, options, indent = 0) => {
|
|
50
55
|
const title = stringifyTestResultTitle(test);
|
|
51
56
|
const stepsToPrint = options?.allSteps ? test.steps.filter(isStep) : test.steps.filter(isFailedResult).filter(isStep);
|
|
@@ -140,3 +145,20 @@ export const printSummary = (results, options) => {
|
|
|
140
145
|
console.info(`Tests: ${stringifiedCounters.join(" | ")}`);
|
|
141
146
|
console.info(`Duration: ${yellow((totalDuration / 1000).toString())}s`);
|
|
142
147
|
};
|
|
148
|
+
export const printQualityGateResult = (result, indent = 0) => {
|
|
149
|
+
const indentSpaces = " ".repeat(indent);
|
|
150
|
+
console.info(`${indentSpaces}${stringifyQualityGateResultTitle(result)}`);
|
|
151
|
+
console.info(`${indentSpaces} ${red(result.message)}`);
|
|
152
|
+
};
|
|
153
|
+
export const printQualityGateResults = (results) => {
|
|
154
|
+
if (results.length === 0) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
console.log("");
|
|
158
|
+
console.info("Quality gates");
|
|
159
|
+
results.forEach((result) => {
|
|
160
|
+
printQualityGateResult(result, 1);
|
|
161
|
+
});
|
|
162
|
+
const failures = `${results.length} ${results.length === 1 ? "failure" : "failures"}`;
|
|
163
|
+
console.info(`Quality gates: ${red(failures)}`);
|
|
164
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allurereport/plugin-log",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.18.0",
|
|
4
4
|
"description": "Allure Plugin to write report in stdout",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"allure",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"lint:fix": "oxlint --import-plugin --fix src test features stories"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@allurereport/core-api": "3.
|
|
35
|
-
"@allurereport/plugin-api": "3.
|
|
36
|
-
"yoctocolors": "^2.
|
|
34
|
+
"@allurereport/core-api": "3.18.0",
|
|
35
|
+
"@allurereport/plugin-api": "3.18.0",
|
|
36
|
+
"yoctocolors": "^2.2.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^20",
|