chore(testrunner): introduce verbose mode (#3946)
This commit is contained in:
parent
c33be4cae4
commit
addd7f4c6a
@ -131,6 +131,8 @@ if (process.env.CI && testRunner.hasFocusedTestsOrSuites()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
new Reporter(testRunner, {
|
new Reporter(testRunner, {
|
||||||
|
verbose: process.argv.includes('--verbose'),
|
||||||
|
summary: !process.argv.includes('--verbose'),
|
||||||
projectFolder: utils.projectRoot(),
|
projectFolder: utils.projectRoot(),
|
||||||
showSlowTests: process.env.CI ? 5 : 0,
|
showSlowTests: process.env.CI ? 5 : 0,
|
||||||
});
|
});
|
||||||
|
@ -24,10 +24,15 @@ class Reporter {
|
|||||||
const {
|
const {
|
||||||
projectFolder = null,
|
projectFolder = null,
|
||||||
showSlowTests = 3,
|
showSlowTests = 3,
|
||||||
|
verbose = false,
|
||||||
|
summary = true,
|
||||||
} = options;
|
} = options;
|
||||||
this._runner = runner;
|
this._runner = runner;
|
||||||
this._projectFolder = projectFolder;
|
this._projectFolder = projectFolder;
|
||||||
this._showSlowTests = showSlowTests;
|
this._showSlowTests = showSlowTests;
|
||||||
|
this._verbose = verbose;
|
||||||
|
this._summary = summary;
|
||||||
|
this._testCounter = 0;
|
||||||
runner.on('started', this._onStarted.bind(this));
|
runner.on('started', this._onStarted.bind(this));
|
||||||
runner.on('terminated', this._onTerminated.bind(this));
|
runner.on('terminated', this._onTerminated.bind(this));
|
||||||
runner.on('finished', this._onFinished.bind(this));
|
runner.on('finished', this._onFinished.bind(this));
|
||||||
@ -88,14 +93,14 @@ class Reporter {
|
|||||||
console.log('\n');
|
console.log('\n');
|
||||||
|
|
||||||
const failedTests = this._runner.failedTests();
|
const failedTests = this._runner.failedTests();
|
||||||
if (failedTests.length > 0) {
|
if (this._summary && failedTests.length > 0) {
|
||||||
console.log('\nFailures:');
|
console.log('\nFailures:');
|
||||||
for (let i = 0; i < failedTests.length; ++i) {
|
for (let i = 0; i < failedTests.length; ++i) {
|
||||||
const test = failedTests[i];
|
const test = failedTests[i];
|
||||||
console.log(`${i + 1}) ${test.fullName} (${formatTestLocation(test)})`);
|
console.log(`${i + 1}) ${test.fullName} (${formatTestLocation(test)})`);
|
||||||
if (test.result === 'timedout') {
|
if (test.result === 'timedout') {
|
||||||
console.log(' Message:');
|
console.log(' Message:');
|
||||||
console.log(` ${YELLOW_COLOR}Timeout Exceeded ${this._runner.timeout()}ms${RESET_COLOR}`);
|
console.log(` ${RED_COLOR}Timeout Exceeded ${this._runner.timeout()}ms${RESET_COLOR}`);
|
||||||
} else {
|
} else {
|
||||||
console.log(' Message:');
|
console.log(' Message:');
|
||||||
console.log(` ${RED_COLOR}${test.error.message || test.error}${RESET_COLOR}`);
|
console.log(` ${RED_COLOR}${test.error.message || test.error}${RESET_COLOR}`);
|
||||||
@ -112,7 +117,7 @@ class Reporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const skippedTests = this._runner.skippedTests();
|
const skippedTests = this._runner.skippedTests();
|
||||||
if (skippedTests.length > 0) {
|
if (this._summary && skippedTests.length > 0) {
|
||||||
console.log('\nSkipped:');
|
console.log('\nSkipped:');
|
||||||
for (let i = 0; i < skippedTests.length; ++i) {
|
for (let i = 0; i < skippedTests.length; ++i) {
|
||||||
const test = skippedTests[i];
|
const test = skippedTests[i];
|
||||||
@ -137,7 +142,18 @@ class Reporter {
|
|||||||
|
|
||||||
const tests = this._runner.tests();
|
const tests = this._runner.tests();
|
||||||
const executedTests = tests.filter(test => test.result);
|
const executedTests = tests.filter(test => test.result);
|
||||||
console.log(`\nRan ${executedTests.length} of ${tests.length} test(s)`);
|
const okTestsLength = executedTests.length - failedTests.length - skippedTests.length;
|
||||||
|
let summaryText = '';
|
||||||
|
if (failedTests.length || skippedTests.length) {
|
||||||
|
const summary = [`ok - ${GREEN_COLOR}${okTestsLength}${RESET_COLOR}`];
|
||||||
|
if (failedTests.length)
|
||||||
|
summary.push(`failed - ${RED_COLOR}${failedTests.length}${RESET_COLOR}`);
|
||||||
|
if (skippedTests.length)
|
||||||
|
summary.push(`skipped - ${YELLOW_COLOR}${skippedTests.length}${RESET_COLOR}`);
|
||||||
|
summaryText = `(${summary.join(', ')})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`\nRan ${executedTests.length} ${summaryText} of ${tests.length} test(s)`);
|
||||||
const milliseconds = Date.now() - this._timestamp;
|
const milliseconds = Date.now() - this._timestamp;
|
||||||
const seconds = milliseconds / 1000;
|
const seconds = milliseconds / 1000;
|
||||||
console.log(`Finished in ${YELLOW_COLOR}${seconds}${RESET_COLOR} seconds`);
|
console.log(`Finished in ${YELLOW_COLOR}${seconds}${RESET_COLOR} seconds`);
|
||||||
@ -164,10 +180,34 @@ class Reporter {
|
|||||||
|
|
||||||
_onTestStarted(test, workerId) {
|
_onTestStarted(test, workerId) {
|
||||||
this._workersState.set(workerId, {test, isRunning: true});
|
this._workersState.set(workerId, {test, isRunning: true});
|
||||||
|
this._testCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onTestFinished(test, workerId) {
|
_onTestFinished(test, workerId) {
|
||||||
this._workersState.set(workerId, {test, isRunning: false});
|
this._workersState.set(workerId, {test, isRunning: false});
|
||||||
|
if (this._verbose) {
|
||||||
|
++this._testCounter;
|
||||||
|
if (test.result === 'ok') {
|
||||||
|
console.log(`${this._testCounter}) ${GREEN_COLOR}[ OK ]${RESET_COLOR} ${test.fullName} (${formatTestLocation(test)})`);
|
||||||
|
} else if (test.result === 'skipped') {
|
||||||
|
console.log(`${this._testCounter}) ${YELLOW_COLOR}[SKIP]${RESET_COLOR} ${test.fullName} (${formatTestLocation(test)})`);
|
||||||
|
} else if (test.result === 'failed') {
|
||||||
|
console.log(`${this._testCounter}) ${RED_COLOR}[FAIL]${RESET_COLOR} ${test.fullName} (${formatTestLocation(test)})`);
|
||||||
|
console.log(' Message:');
|
||||||
|
console.log(` ${RED_COLOR}${test.error.message || test.error}${RESET_COLOR}`);
|
||||||
|
console.log(' Stack:');
|
||||||
|
if (test.error.stack)
|
||||||
|
console.log(this._beautifyStack(test.error.stack));
|
||||||
|
if (test.output) {
|
||||||
|
console.log(' Output:');
|
||||||
|
console.log(test.output.split('\n').map(line => ' ' + line).join('\n'));
|
||||||
|
}
|
||||||
|
} else if (test.result === 'timedout') {
|
||||||
|
console.log(`${this._testCounter}) ${RED_COLOR}[TIME]${RESET_COLOR} ${test.fullName} (${formatTestLocation(test)})`);
|
||||||
|
console.log(' Message:');
|
||||||
|
console.log(` ${RED_COLOR}Timeout Exceeded ${this._runner.timeout()}ms${RESET_COLOR}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (test.result === 'ok')
|
if (test.result === 'ok')
|
||||||
process.stdout.write(`${GREEN_COLOR}.${RESET_COLOR}`);
|
process.stdout.write(`${GREEN_COLOR}.${RESET_COLOR}`);
|
||||||
else if (test.result === 'skipped')
|
else if (test.result === 'skipped')
|
||||||
@ -177,6 +217,7 @@ class Reporter {
|
|||||||
else if (test.result === 'timedout')
|
else if (test.result === 'timedout')
|
||||||
process.stdout.write(`${RED_COLOR}T${RESET_COLOR}`);
|
process.stdout.write(`${RED_COLOR}T${RESET_COLOR}`);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatTestLocation(test) {
|
function formatTestLocation(test) {
|
||||||
|
Loading…
Reference in New Issue
Block a user