Skip to content

Commit 9d44e51

Browse files
committed
Less spamming of the banner
1 parent 1faff5a commit 9d44e51

4 files changed

Lines changed: 41 additions & 28 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
},
5252
"dependencies": {
5353
"@sindresorhus/fnv1a": "^1.2.0",
54+
"ansi-escapes": "^4.1.0",
5455
"chalk": "^2.4.2",
5556
"cosmiconfig": "^5.2.0",
5657
"debug": "^4.1.1",

src/JestWatchPlugin.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Mode, recorder } from "./index";
22

33
const chalk = require("chalk");
4+
const ansi = require("ansi-escapes");
45

56
module.exports = class JestWatchPlugin {
67
changeMode() {
@@ -19,9 +20,9 @@ module.exports = class JestWatchPlugin {
1920
getUsageInfo() {
2021
return {
2122
key: "r",
22-
prompt: `change recording mode from "${chalk.keyword("yellow")(
23-
recorder.getModeEnum()
24-
)}"`
23+
prompt: `change recording mode from "${chalk
24+
.keyword("orange")
25+
.bold.inverse(recorder.getModeEnum())}"`
2526
};
2627
}
2728

@@ -30,6 +31,10 @@ module.exports = class JestWatchPlugin {
3031
async run() {
3132
this.changeMode();
3233

34+
// Scroll up so that repeated presses of `r` don't spam the console
35+
process.stdout.write(recorder.getModeBanner() + ansi.cursorUp(7));
36+
37+
// Set the mode for the next test worker's process
3338
process.env.RECORDER = recorder.getMode();
3439
}
3540
};

src/Recorder.ts

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export class Recorder {
112112
private identities = new Map();
113113

114114
private config: Config = {
115+
mode: RECORDER as Mode,
115116
fixturesPath: path.resolve(process.cwd(), "__fixtures__")
116117
};
117118

@@ -132,8 +133,8 @@ export class Recorder {
132133
this.configure(result.config as Config);
133134
}
134135

135-
if (!this.getMode()) {
136-
this.configure({ mode: RECORDER as Mode });
136+
if (log.enabled) {
137+
log(this.getModeBanner());
137138
}
138139

139140
// ! This only happens when running src/Recorder.ts & dist/Recorder.js
@@ -163,30 +164,7 @@ export class Recorder {
163164
}
164165

165166
configure = (config: Config) => {
166-
const changedMode = "mode" in config && this.getMode() !== config.mode;
167-
168167
Object.assign(this.config, config);
169-
170-
if (changedMode) {
171-
const modeEnum = this.getModeEnum() as string;
172-
173-
console.log(
174-
[
175-
"\n",
176-
chalk.bgWhite("".padStart(23)),
177-
chalk.bgWhite.hex("#3d4852")(
178-
` ${chalk.red("•")} R e c ${chalk.hex("#44883E")("⬢ ")} r d e r `
179-
),
180-
chalk.bgWhite("".padStart(23)),
181-
chalk
182-
.keyword("orange")
183-
.bold.inverse(
184-
modeEnum.padStart((23 + modeEnum.length) / 2).padEnd(23)
185-
),
186-
"\n"
187-
].join("\n")
188-
);
189-
}
190168
};
191169

192170
getFixture = (interceptedRequest: InterceptedRequest): Fixture => {
@@ -272,6 +250,23 @@ export class Recorder {
272250
return this.config.mode;
273251
}
274252

253+
getModeBanner() {
254+
const modeEnum = this.getModeEnum() as string;
255+
256+
return [
257+
"\n",
258+
chalk.bgWhite("".padStart(23)),
259+
chalk.bgWhite.hex("#3d4852")(
260+
` ${chalk.red("•")} R e c ${chalk.hex("#44883E")("⬢ ")} r d e r `
261+
),
262+
chalk.bgWhite("".padStart(23)),
263+
chalk
264+
.keyword("orange")
265+
.bold.inverse(modeEnum.padStart((23 + modeEnum.length) / 2).padEnd(23)),
266+
"\n"
267+
].join("\n");
268+
}
269+
275270
getModeEnum() {
276271
return Object.keys(Mode).find(
277272
(key) => Mode[key as keyof typeof Mode] === this.getMode()

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0:
613613
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
614614
integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
615615

616+
ansi-escapes@^4.1.0:
617+
version "4.1.0"
618+
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.1.0.tgz#62a9e5fa78e99c5bb588b1796855f5d729231b53"
619+
integrity sha512-2VY/iCUZTDLD/qxptS3Zn3c6k2MeIbYqjRXqM8T5oC7N2mMjh3xIU3oYru6cHGbldFa9h5i8N0fP65UaUqrMWA==
620+
dependencies:
621+
type-fest "^0.3.0"
622+
616623
ansi-regex@^2.0.0:
617624
version "2.1.1"
618625
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@@ -5539,6 +5546,11 @@ type-detect@^4.0.0, type-detect@^4.0.5:
55395546
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
55405547
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
55415548

5549+
type-fest@^0.3.0:
5550+
version "0.3.1"
5551+
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
5552+
integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
5553+
55425554
type-is@~1.6.16:
55435555
version "1.6.16"
55445556
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"

0 commit comments

Comments
 (0)