Skip to content

Commit 865264c

Browse files
pauldambrajeffdnguyen
authored andcommitted
fix: console assert only logs when arg 0 is falsy (rrweb-io#1530)
* fix: console assert only logs when arg 0 is falsy
1 parent 0733190 commit 865264c

File tree

4 files changed

+40
-23
lines changed

4 files changed

+40
-23
lines changed

.changeset/gold-experts-type.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@rrweb/rrweb-plugin-console-record": patch
3+
---
4+
5+
corrects behaviour of console.assert logging to only capture logs when the provided assertion is falsey

packages/plugins/rrweb-plugin-console-record/src/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ function initLogObserver(
189189
(original: (...args: Array<unknown>) => void) => {
190190
return (...args: Array<unknown>) => {
191191
original.apply(this, args);
192+
193+
if (level === 'assert' && !!args[0]) {
194+
// assert does not log if the first argument evaluates to true
195+
return;
196+
}
197+
192198
if (inStack) {
193199
// If we are already in a stack this means something from the following code is calling a console method
194200
// likely a proxy method called from stringify. We don't want to log this as it will cause an infinite loop
@@ -199,7 +205,11 @@ function initLogObserver(
199205
const trace = ErrorStackParser.parse(new Error())
200206
.map((stackFrame: StackFrame) => stackFrame.toString())
201207
.splice(1); // splice(1) to omit the hijacked log function
202-
const payload = args.map((s) =>
208+
209+
// assert does not log its first arg, that's only used for deciding whether to log
210+
const argsForPayload = level === 'assert' ? args.slice(1) : args;
211+
212+
const payload = argsForPayload.map((s) =>
203213
stringify(s, logOptions.stringifyOptions),
204214
);
205215
logCount++;

packages/plugins/rrweb-plugin-console-record/test/__snapshots__/index.test.ts.snap

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -356,11 +356,10 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
356356
\\"payload\\": {
357357
\\"level\\": \\"assert\\",
358358
\\"trace\\": [
359-
\\"__puppeteer_evaluation_script__:2:15\\"
359+
\\"__puppeteer_evaluation_script__:3:15\\"
360360
],
361361
\\"payload\\": [
362-
\\"true\\",
363-
\\"\\\\\\"assert\\\\\\"\\"
362+
\\"\\\\\\"should log assert\\\\\\"\\"
364363
]
365364
}
366365
}
@@ -372,7 +371,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
372371
\\"payload\\": {
373372
\\"level\\": \\"count\\",
374373
\\"trace\\": [
375-
\\"__puppeteer_evaluation_script__:3:15\\"
374+
\\"__puppeteer_evaluation_script__:4:15\\"
376375
],
377376
\\"payload\\": [
378377
\\"\\\\\\"count\\\\\\"\\"
@@ -387,7 +386,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
387386
\\"payload\\": {
388387
\\"level\\": \\"countReset\\",
389388
\\"trace\\": [
390-
\\"__puppeteer_evaluation_script__:4:15\\"
389+
\\"__puppeteer_evaluation_script__:5:15\\"
391390
],
392391
\\"payload\\": [
393392
\\"\\\\\\"count\\\\\\"\\"
@@ -402,7 +401,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
402401
\\"payload\\": {
403402
\\"level\\": \\"debug\\",
404403
\\"trace\\": [
405-
\\"__puppeteer_evaluation_script__:5:15\\"
404+
\\"__puppeteer_evaluation_script__:6:15\\"
406405
],
407406
\\"payload\\": [
408407
\\"\\\\\\"debug\\\\\\"\\"
@@ -417,7 +416,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
417416
\\"payload\\": {
418417
\\"level\\": \\"dir\\",
419418
\\"trace\\": [
420-
\\"__puppeteer_evaluation_script__:6:15\\"
419+
\\"__puppeteer_evaluation_script__:7:15\\"
421420
],
422421
\\"payload\\": [
423422
\\"\\\\\\"dir\\\\\\"\\"
@@ -432,7 +431,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
432431
\\"payload\\": {
433432
\\"level\\": \\"dirxml\\",
434433
\\"trace\\": [
435-
\\"__puppeteer_evaluation_script__:7:15\\"
434+
\\"__puppeteer_evaluation_script__:8:15\\"
436435
],
437436
\\"payload\\": [
438437
\\"\\\\\\"dirxml\\\\\\"\\"
@@ -447,7 +446,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
447446
\\"payload\\": {
448447
\\"level\\": \\"group\\",
449448
\\"trace\\": [
450-
\\"__puppeteer_evaluation_script__:8:15\\"
449+
\\"__puppeteer_evaluation_script__:9:15\\"
451450
],
452451
\\"payload\\": []
453452
}
@@ -460,7 +459,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
460459
\\"payload\\": {
461460
\\"level\\": \\"groupCollapsed\\",
462461
\\"trace\\": [
463-
\\"__puppeteer_evaluation_script__:9:15\\"
462+
\\"__puppeteer_evaluation_script__:10:15\\"
464463
],
465464
\\"payload\\": []
466465
}
@@ -473,7 +472,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
473472
\\"payload\\": {
474473
\\"level\\": \\"info\\",
475474
\\"trace\\": [
476-
\\"__puppeteer_evaluation_script__:10:15\\"
475+
\\"__puppeteer_evaluation_script__:11:15\\"
477476
],
478477
\\"payload\\": [
479478
\\"\\\\\\"info\\\\\\"\\"
@@ -488,7 +487,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
488487
\\"payload\\": {
489488
\\"level\\": \\"log\\",
490489
\\"trace\\": [
491-
\\"__puppeteer_evaluation_script__:11:15\\"
490+
\\"__puppeteer_evaluation_script__:12:15\\"
492491
],
493492
\\"payload\\": [
494493
\\"\\\\\\"log\\\\\\"\\"
@@ -503,7 +502,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
503502
\\"payload\\": {
504503
\\"level\\": \\"table\\",
505504
\\"trace\\": [
506-
\\"__puppeteer_evaluation_script__:12:15\\"
505+
\\"__puppeteer_evaluation_script__:13:15\\"
507506
],
508507
\\"payload\\": [
509508
\\"\\\\\\"table\\\\\\"\\"
@@ -518,7 +517,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
518517
\\"payload\\": {
519518
\\"level\\": \\"time\\",
520519
\\"trace\\": [
521-
\\"__puppeteer_evaluation_script__:13:15\\"
520+
\\"__puppeteer_evaluation_script__:14:15\\"
522521
],
523522
\\"payload\\": []
524523
}
@@ -531,7 +530,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
531530
\\"payload\\": {
532531
\\"level\\": \\"timeEnd\\",
533532
\\"trace\\": [
534-
\\"__puppeteer_evaluation_script__:14:15\\"
533+
\\"__puppeteer_evaluation_script__:15:15\\"
535534
],
536535
\\"payload\\": []
537536
}
@@ -544,7 +543,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
544543
\\"payload\\": {
545544
\\"level\\": \\"timeLog\\",
546545
\\"trace\\": [
547-
\\"__puppeteer_evaluation_script__:15:15\\"
546+
\\"__puppeteer_evaluation_script__:16:15\\"
548547
],
549548
\\"payload\\": []
550549
}
@@ -557,7 +556,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
557556
\\"payload\\": {
558557
\\"level\\": \\"trace\\",
559558
\\"trace\\": [
560-
\\"__puppeteer_evaluation_script__:16:15\\"
559+
\\"__puppeteer_evaluation_script__:17:15\\"
561560
],
562561
\\"payload\\": [
563562
\\"\\\\\\"trace\\\\\\"\\"
@@ -572,7 +571,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
572571
\\"payload\\": {
573572
\\"level\\": \\"warn\\",
574573
\\"trace\\": [
575-
\\"__puppeteer_evaluation_script__:17:15\\"
574+
\\"__puppeteer_evaluation_script__:18:15\\"
576575
],
577576
\\"payload\\": [
578577
\\"\\\\\\"warn\\\\\\"\\"
@@ -587,7 +586,7 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
587586
\\"payload\\": {
588587
\\"level\\": \\"clear\\",
589588
\\"trace\\": [
590-
\\"__puppeteer_evaluation_script__:18:15\\"
589+
\\"__puppeteer_evaluation_script__:19:15\\"
591590
],
592591
\\"payload\\": []
593592
}
@@ -600,10 +599,10 @@ exports[`rrweb-plugin-console-record > should record console messages 1`] = `
600599
\\"payload\\": {
601600
\\"level\\": \\"log\\",
602601
\\"trace\\": [
603-
\\"__puppeteer_evaluation_script__:19:15\\"
602+
\\"__puppeteer_evaluation_script__:20:15\\"
604603
],
605604
\\"payload\\": [
606-
\\"\\\\\\"TypeError: a message\\\\\\\\n at __puppeteer_evaluation_script__:19:19\\\\\\\\nEnd of stack for Error object\\\\\\"\\"
605+
\\"\\\\\\"TypeError: a message\\\\\\\\n at __puppeteer_evaluation_script__:20:19\\\\\\\\nEnd of stack for Error object\\\\\\"\\"
607606
]
608607
}
609608
}

packages/plugins/rrweb-plugin-console-record/test/index.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ describe('rrweb-plugin-console-record', () => {
9494
await page.goto(`${serverUrl}test/html/log.html`);
9595

9696
await page.evaluate(() => {
97-
console.assert(0 === 0, 'assert');
97+
// truthy assert does not log
98+
console.assert(0 === 0, 'should not log assert');
99+
// falsy assert does log
100+
console.assert(false, 'should log assert');
98101
console.count('count');
99102
console.countReset('count');
100103
console.debug('debug');

0 commit comments

Comments
 (0)