Skip to content

Commit 315dab5

Browse files
shcallawaykamilogorek
authored andcommitted
feat: Handle ErrorEvent objects in TraceKit
1 parent 5d2685f commit 315dab5

File tree

3 files changed

+41
-1
lines changed

3 files changed

+41
-1
lines changed

test/utils.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ describe('utils', function() {
120120
it('should work as advertised', function() {
121121
assert.isTrue(isError(new Error()));
122122
assert.isTrue(isError(new ReferenceError()));
123+
124+
if (supportsErrorEvent()) {
125+
assert.isFalse(isError(new ErrorEvent('')));
126+
}
127+
123128
assert.isTrue(isError(new RavenConfigError()));
124129
assert.isTrue(isError(testErrorFromDifferentContext(fromContext)));
125130
assert.isTrue(isError(testErrorFromDifferentContext(domException)));

test/vendor/tracekit.test.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
'use strict';
33

44
var TraceKit = require('../../vendor/TraceKit/tracekit');
5+
var utils = require('../../src/utils');
6+
var supportsErrorEvent = utils.supportsErrorEvent;
57

68
describe('TraceKit', function() {
79
describe('stacktrace info', function() {
@@ -139,9 +141,35 @@ describe('TraceKit', function() {
139141
}
140142
});
141143

144+
if (supportsErrorEvent()) {
145+
it("should handle error event object as 'ex' param", function() {
146+
var ex = new ErrorEvent('', {
147+
error: new Error('something went wrong')
148+
});
149+
subscriptionHandler = function(stackInfo, extra) {
150+
assert.equal(stackInfo.name, 'Error');
151+
assert.equal(stackInfo.message, 'something went wrong');
152+
};
153+
TraceKit.report.subscribe(subscriptionHandler);
154+
window.onerror(undefined, undefined, testLineNo, undefined, ex);
155+
});
156+
157+
it("should handle error event object as 'message' param", function() {
158+
var message = new ErrorEvent('', {
159+
message: 'something went wrong'
160+
});
161+
subscriptionHandler = function(stackInfo, extra) {
162+
assert.equal(stackInfo.name, undefined);
163+
assert.equal(stackInfo.message, 'something went wrong');
164+
};
165+
TraceKit.report.subscribe(subscriptionHandler);
166+
window.onerror(message, undefined, testLineNo, undefined, undefined);
167+
});
168+
}
169+
142170
describe('with undefined arguments', function() {
143171
it('should pass undefined:undefined', function() {
144-
// this is probably not good behavior; just writing this test to verify
172+
// this is probably not good behavior; just writing this test to verify
145173
// that it doesn't change unintentionally
146174
subscriptionHandler = function(stackInfo, extra) {
147175
assert.equal(stackInfo.name, undefined);
@@ -151,6 +179,7 @@ describe('TraceKit', function() {
151179
window.onerror(undefined, undefined, testLineNo);
152180
});
153181
});
182+
154183
describe('when no 5th argument (error object)', function() {
155184
it('should seperate name, message for default error types (e.g. ReferenceError)', function(
156185
done

vendor/TraceKit/tracekit.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ TraceKit.report = (function reportModuleWrapper() {
148148
function traceKitWindowOnError(message, url, lineNo, colNo, ex) {
149149
var stack = null;
150150

151+
// If 'ex' is ErrorEvent, get real Error from inside
152+
if (utils.isErrorEvent(ex)) ex = ex.error;
153+
// If 'message' is ErrorEvent, get real message from inside
154+
if (utils.isErrorEvent(message)) message = message.message;
155+
151156
if (lastExceptionStack) {
152157
TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(
153158
lastExceptionStack,
@@ -174,6 +179,7 @@ TraceKit.report = (function reportModuleWrapper() {
174179
var name = undefined;
175180
var msg = message; // must be new var or will modify original `arguments`
176181
var groups;
182+
177183
if ({}.toString.call(message) === '[object String]') {
178184
var groups = message.match(ERROR_TYPES_RE);
179185
if (groups) {

0 commit comments

Comments
 (0)