From a522e7f476489f8aed388636f508c1c3bdaa371f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 12 Sep 2019 12:56:26 +0200 Subject: [PATCH] fix: Capture only failed console.assert calls --- packages/browser/src/integrations/breadcrumbs.ts | 14 +++++++++----- .../test/integration/subjects/console-logs.js | 6 ++++++ .../browser/test/integration/suites/breadcrumbs.js | 13 ++++++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index ce032f41180e..8b98013cc949 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -98,14 +98,18 @@ export class Breadcrumbs implements Integration { if (args[0] === false) { breadcrumbData.message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`; breadcrumbData.data.extra.arguments = normalize(args.slice(1), 3); + Breadcrumbs.addBreadcrumb(breadcrumbData, { + input: args, + level, + }); } + } else { + Breadcrumbs.addBreadcrumb(breadcrumbData, { + input: args, + level, + }); } - Breadcrumbs.addBreadcrumb(breadcrumbData, { - input: args, - level, - }); - // this fails for some browsers. :( if (originalConsoleLevel) { Function.prototype.apply.call(originalConsoleLevel, global.console, args); diff --git a/packages/browser/test/integration/subjects/console-logs.js b/packages/browser/test/integration/subjects/console-logs.js index 20db22fa0041..f00a3134ab2f 100644 --- a/packages/browser/test/integration/subjects/console-logs.js +++ b/packages/browser/test/integration/subjects/console-logs.js @@ -1,6 +1,12 @@ console.log("One"); console.warn("Two", { a: 1 }); console.error("Error 2", { b: { c: [] } }); + +// Passed assertions _should not_ be captured +console.assert(1 + 1 === 2, "math works"); +// Failed assertions _should_ be captured +console.assert(1 + 1 === 3, "math broke"); + function a() { throw new Error("Error thrown 3"); } diff --git a/packages/browser/test/integration/suites/breadcrumbs.js b/packages/browser/test/integration/suites/breadcrumbs.js index 03d3e120763c..b346b328f9a0 100644 --- a/packages/browser/test/integration/suites/breadcrumbs.js +++ b/packages/browser/test/integration/suites/breadcrumbs.js @@ -712,7 +712,7 @@ describe("breadcrumbs", function() { } ); - it("should add breadcrumbs on thrown errors", function() { + it("should capture console breadcrumbs", function() { return runInSandbox(sandbox, { manual: true }, function() { window.allowConsoleBreadcrumbs = true; var logs = document.createElement("script"); @@ -726,8 +726,15 @@ describe("breadcrumbs", function() { // The async loader doesn't capture breadcrumbs, but we should receive the event without them assert.lengthOf(summary.events, 1); } else { - assert.ok(summary.breadcrumbs); - assert.lengthOf(summary.breadcrumbs, 3); + if ("assert" in console) { + assert.lengthOf(summary.breadcrumbs, 4); + assert.deepEqual(summary.breadcrumbs[3].data.extra.arguments, [ + "math broke", + ]); + } else { + assert.lengthOf(summary.breadcrumbs, 3); + } + assert.deepEqual(summary.breadcrumbs[0].data.extra.arguments, ["One"]); assert.deepEqual(summary.breadcrumbs[1].data.extra.arguments, [ "Two",