UNPKG

2.88 kBJavaScriptView Raw
1'use strict';
2
3const CoreObject = require('core-object');
4const chalk = require('chalk');
5const Table = require('cli-table3');
6
7module.exports = CoreObject.extend({
8 print() {
9 let task = this;
10 let colorAndMessage;
11 let failMessage;
12 let countPassed = 0;
13 let countFailed = 0;
14 let allowedFailCount = 0;
15 task._printResultHeader();
16
17 this.results.forEach((scenario) => {
18 if (scenario.result) {
19 colorAndMessage = chalk.green(`Scenario ${scenario.scenario}: SUCCESS`);
20 countPassed++;
21 } else {
22 failMessage = `Scenario ${scenario.scenario}: FAIL`;
23
24 if (scenario.allowedToFail) {
25 failMessage = `${failMessage} (Allowed)`;
26 allowedFailCount++;
27 }
28
29 colorAndMessage = chalk.red(failMessage);
30 countFailed++;
31 }
32 task.ui.writeLine(colorAndMessage);
33 task.ui.writeLine(`Command run: ${scenario.command}`);
34 if (scenario.envState) {
35 task.ui.writeLine(`with env: ${JSON.stringify(scenario.envState, null, 2)}`);
36 }
37 task._printDependencyTable(scenario.dependencyState);
38 });
39
40 task.ui.writeLine('');
41 task._printResultsSummary(countFailed, countPassed, allowedFailCount, this.results.length);
42 },
43 _printResultHeader() {
44 let task = this;
45 task.ui.writeLine('');
46 task.ui.writeLine('------ RESULTS ------');
47 task.ui.writeLine('');
48 },
49 _printDependencyTable(dependencyStatus) {
50 if (!dependencyStatus.length) {
51 return;
52 }
53 let task = this;
54 let colorForDepFn;
55 let tableRow;
56 let table = new Table({
57 head: [
58 chalk.gray('Dependency'),
59 chalk.gray('Expected'),
60 chalk.gray('Used'),
61 chalk.gray('Type'),
62 ],
63 colWidths: [20, 20, 30, 10],
64 });
65 dependencyStatus.forEach((dep) => {
66 if (dep.versionExpected === dep.versionSeen) {
67 colorForDepFn = chalk.green;
68 } else {
69 colorForDepFn = chalk.yellow;
70 }
71 tableRow = [
72 dep.name,
73 dep.versionExpected || 'Not Installed',
74 dep.versionSeen || 'Not Installed',
75 dep.packageManager,
76 ].map((column) => {
77 return colorForDepFn(column);
78 });
79 table.push(tableRow);
80 });
81 task.ui.writeLine(table);
82 task.ui.writeLine('');
83 },
84 _printResultsSummary(countFailed, countPassed, allowedFailCount, total) {
85 let task = this;
86 if (countFailed) {
87 let failMessage = `${countFailed} scenarios failed`;
88 if (allowedFailCount) {
89 failMessage = `${failMessage} (${allowedFailCount} allowed)`;
90 }
91 task.ui.writeLine(chalk.red(failMessage));
92 task.ui.writeLine(chalk.green(`${countPassed} scenarios succeeded`));
93 task.ui.writeLine(chalk.gray(`${total} scenarios run`));
94 } else {
95 task.ui.writeLine(chalk.green(`All ${countPassed} scenarios succeeded`));
96 }
97 },
98});