'use strict';
|
|
Object.defineProperty(exports, '__esModule', {
|
value: true
|
});
|
exports.default = void 0;
|
|
function _jestWatcher() {
|
const data = require('jest-watcher');
|
|
_jestWatcher = function () {
|
return data;
|
};
|
|
return data;
|
}
|
|
var _FailedTestsInteractiveMode = _interopRequireDefault(
|
require('../FailedTestsInteractiveMode')
|
);
|
|
function _interopRequireDefault(obj) {
|
return obj && obj.__esModule ? obj : {default: obj};
|
}
|
|
function _defineProperty(obj, key, value) {
|
if (key in obj) {
|
Object.defineProperty(obj, key, {
|
value: value,
|
enumerable: true,
|
configurable: true,
|
writable: true
|
});
|
} else {
|
obj[key] = value;
|
}
|
return obj;
|
}
|
|
class FailedTestsInteractivePlugin extends _jestWatcher().BaseWatchPlugin {
|
constructor(...args) {
|
super(...args);
|
|
_defineProperty(this, '_failedTestAssertions', void 0);
|
|
_defineProperty(
|
this,
|
'_manager',
|
new _FailedTestsInteractiveMode.default(this._stdout)
|
);
|
}
|
|
apply(hooks) {
|
hooks.onTestRunComplete(results => {
|
this._failedTestAssertions = this.getFailedTestAssertions(results);
|
if (this._manager.isActive()) this._manager.updateWithResults(results);
|
});
|
}
|
|
getUsageInfo() {
|
var _this$_failedTestAsse;
|
|
if (
|
(_this$_failedTestAsse = this._failedTestAssertions) !== null &&
|
_this$_failedTestAsse !== void 0 &&
|
_this$_failedTestAsse.length
|
) {
|
return {
|
key: 'i',
|
prompt: 'run failing tests interactively'
|
};
|
}
|
|
return null;
|
}
|
|
onKey(key) {
|
if (this._manager.isActive()) {
|
this._manager.put(key);
|
}
|
}
|
|
run(_, updateConfigAndRun) {
|
return new Promise(resolve => {
|
if (
|
!this._failedTestAssertions ||
|
this._failedTestAssertions.length === 0
|
) {
|
resolve();
|
return;
|
}
|
|
this._manager.run(this._failedTestAssertions, failure => {
|
updateConfigAndRun({
|
mode: 'watch',
|
testNamePattern: failure ? `^${failure.fullName}$` : '',
|
testPathPattern:
|
(failure === null || failure === void 0 ? void 0 : failure.path) ||
|
''
|
});
|
|
if (!this._manager.isActive()) {
|
resolve();
|
}
|
});
|
});
|
}
|
|
getFailedTestAssertions(results) {
|
const failedTestPaths = [];
|
|
if (
|
// skip if no failed tests
|
results.numFailedTests === 0 || // skip if missing test results
|
!results.testResults || // skip if unmatched snapshots are present
|
results.snapshot.unmatched
|
) {
|
return failedTestPaths;
|
}
|
|
results.testResults.forEach(testResult => {
|
testResult.testResults.forEach(result => {
|
if (result.status === 'failed') {
|
failedTestPaths.push({
|
fullName: result.fullName,
|
path: testResult.testFilePath
|
});
|
}
|
});
|
});
|
return failedTestPaths;
|
}
|
}
|
|
exports.default = FailedTestsInteractivePlugin;
|