123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.default = void 0;
- function _ansiEscapes() {
- const data = _interopRequireDefault(require('ansi-escapes'));
- _ansiEscapes = function () {
- return data;
- };
- return data;
- }
- function _chalk() {
- const data = _interopRequireDefault(require('chalk'));
- _chalk = function () {
- return data;
- };
- return data;
- }
- function _jestUtil() {
- const data = require('jest-util');
- _jestUtil = function () {
- return data;
- };
- return data;
- }
- function _jestWatcher() {
- const data = require('jest-watcher');
- _jestWatcher = function () {
- return data;
- };
- return data;
- }
- 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;
- }
- const {ARROW, CLEAR} = _jestUtil().specialChars;
- function describeKey(key, description) {
- return `${_chalk().default.dim(
- ARROW + 'Press'
- )} ${key} ${_chalk().default.dim(description)}`;
- }
- const TestProgressLabel = _chalk().default.bold('Interactive Test Progress');
- class FailedTestsInteractiveMode {
- constructor(_pipe) {
- _defineProperty(this, '_isActive', false);
- _defineProperty(this, '_countPaths', 0);
- _defineProperty(this, '_skippedNum', 0);
- _defineProperty(this, '_testAssertions', []);
- _defineProperty(this, '_updateTestRunnerConfig', void 0);
- this._pipe = _pipe;
- }
- isActive() {
- return this._isActive;
- }
- put(key) {
- switch (key) {
- case 's':
- if (this._skippedNum === this._testAssertions.length) {
- break;
- }
- this._skippedNum += 1; // move skipped test to the end
- this._testAssertions.push(this._testAssertions.shift());
- if (this._testAssertions.length - this._skippedNum > 0) {
- this._run();
- } else {
- this._drawUIDoneWithSkipped();
- }
- break;
- case 'q':
- case _jestWatcher().KEYS.ESCAPE:
- this.abort();
- break;
- case 'r':
- this.restart();
- break;
- case _jestWatcher().KEYS.ENTER:
- if (this._testAssertions.length === 0) {
- this.abort();
- } else {
- this._run();
- }
- break;
- default:
- }
- }
- run(failedTestAssertions, updateConfig) {
- if (failedTestAssertions.length === 0) return;
- this._testAssertions = [...failedTestAssertions];
- this._countPaths = this._testAssertions.length;
- this._updateTestRunnerConfig = updateConfig;
- this._isActive = true;
- this._run();
- }
- updateWithResults(results) {
- if (!results.snapshot.failure && results.numFailedTests > 0) {
- return this._drawUIOverlay();
- }
- this._testAssertions.shift();
- if (this._testAssertions.length === 0) {
- return this._drawUIOverlay();
- } // Go to the next test
- return this._run();
- }
- _clearTestSummary() {
- this._pipe.write(_ansiEscapes().default.cursorUp(6));
- this._pipe.write(_ansiEscapes().default.eraseDown);
- }
- _drawUIDone() {
- this._pipe.write(CLEAR);
- const messages = [
- _chalk().default.bold('Watch Usage'),
- describeKey('Enter', 'to return to watch mode.')
- ];
- this._pipe.write(messages.join('\n') + '\n');
- }
- _drawUIDoneWithSkipped() {
- this._pipe.write(CLEAR);
- let stats = `${(0, _jestUtil().pluralize)(
- 'test',
- this._countPaths
- )} reviewed`;
- if (this._skippedNum > 0) {
- const skippedText = _chalk().default.bold.yellow(
- (0, _jestUtil().pluralize)('test', this._skippedNum) + ' skipped'
- );
- stats = `${stats}, ${skippedText}`;
- }
- const message = [
- TestProgressLabel,
- `${ARROW}${stats}`,
- '\n',
- _chalk().default.bold('Watch Usage'),
- describeKey('r', 'to restart Interactive Mode.'),
- describeKey('q', 'to quit Interactive Mode.'),
- describeKey('Enter', 'to return to watch mode.')
- ];
- this._pipe.write(`\n${message.join('\n')}`);
- }
- _drawUIProgress() {
- this._clearTestSummary();
- const numPass = this._countPaths - this._testAssertions.length;
- const numRemaining = this._countPaths - numPass - this._skippedNum;
- let stats = `${(0, _jestUtil().pluralize)('test', numRemaining)} remaining`;
- if (this._skippedNum > 0) {
- const skippedText = _chalk().default.bold.yellow(
- (0, _jestUtil().pluralize)('test', this._skippedNum) + ' skipped'
- );
- stats = `${stats}, ${skippedText}`;
- }
- const message = [
- TestProgressLabel,
- `${ARROW}${stats}`,
- '\n',
- _chalk().default.bold('Watch Usage'),
- describeKey('s', 'to skip the current test.'),
- describeKey('q', 'to quit Interactive Mode.'),
- describeKey('Enter', 'to return to watch mode.')
- ];
- this._pipe.write(`\n${message.join('\n')}`);
- }
- _drawUIOverlay() {
- if (this._testAssertions.length === 0) return this._drawUIDone();
- return this._drawUIProgress();
- }
- _run() {
- if (this._updateTestRunnerConfig) {
- this._updateTestRunnerConfig(this._testAssertions[0]);
- }
- }
- abort() {
- this._isActive = false;
- this._skippedNum = 0;
- if (this._updateTestRunnerConfig) {
- this._updateTestRunnerConfig();
- }
- }
- restart() {
- this._skippedNum = 0;
- this._countPaths = this._testAssertions.length;
- this._run();
- }
- }
- exports.default = FailedTestsInteractiveMode;
|