|
4 | 4 | var TraceKit = require('../../vendor/TraceKit/tracekit');
|
5 | 5 | var utils = require('../../src/utils');
|
6 | 6 | var supportsErrorEvent = utils.supportsErrorEvent;
|
| 7 | +var sinon = require('sinon'); |
7 | 8 |
|
8 | 9 | describe('TraceKit', function() {
|
9 | 10 | describe('stacktrace info', function() {
|
@@ -81,6 +82,52 @@ describe('TraceKit', function() {
|
81 | 82 | assert.equal(trace.stack[2].line, 26);
|
82 | 83 | assert.equal(trace.stack[2].column, 5);
|
83 | 84 | });
|
| 85 | + |
| 86 | + it('should update url based on sourcemap suffix in blob: based frames if full url available', function() { |
| 87 | + var server = sinon.createFakeServer(); |
| 88 | + server.respondImmediately = true; |
| 89 | + server.respondWith('GET', 'blob:http://localhost:8080/some-blob', [ |
| 90 | + 200, |
| 91 | + {'Content-Type': 'application/javascript'}, |
| 92 | + 'just a random stream of bytes, as we care only about the sourcemaps suffix there\n' + |
| 93 | + 'oh, here it comes! //# sourceMappingURL=http://awesome.com/file.js.map' |
| 94 | + ]); |
| 95 | + |
| 96 | + var stack_str = |
| 97 | + 'Error: test\n' + |
| 98 | + ' at Error (native)\n' + |
| 99 | + ' at s (blob:http://localhost:8080/some-blob:31:29146)'; |
| 100 | + |
| 101 | + var mock_err = {stack: stack_str}; |
| 102 | + var trace = TraceKit.computeStackTrace.computeStackTraceFromStackProp(mock_err); |
| 103 | + |
| 104 | + assert.equal(trace.stack[1].url, 'http://awesome.com/file.js'); |
| 105 | + |
| 106 | + server.restore(); |
| 107 | + }); |
| 108 | + |
| 109 | + it('should update url based on sourcemap suffix in blob: based frames if relative url available, by adding location.origin to it', function() { |
| 110 | + var server = sinon.createFakeServer(); |
| 111 | + server.respondImmediately = true; |
| 112 | + server.respondWith('GET', 'blob:http://localhost:8080/some-blob', [ |
| 113 | + 200, |
| 114 | + {'Content-Type': 'application/javascript'}, |
| 115 | + 'just a random stream of bytes, as we care only about the sourcemaps suffix there\n' + |
| 116 | + 'oh, here it comes! //# sourceMappingURL=~/awesome.com/file.js.map' |
| 117 | + ]); |
| 118 | + |
| 119 | + var stack_str = |
| 120 | + 'Error: test\n' + |
| 121 | + ' at Error (native)\n' + |
| 122 | + ' at s (blob:http://localhost:8080/some-blob:31:29146)'; |
| 123 | + |
| 124 | + var mock_err = {stack: stack_str}; |
| 125 | + var trace = TraceKit.computeStackTrace.computeStackTraceFromStackProp(mock_err); |
| 126 | + |
| 127 | + assert.equal(trace.stack[1].url, 'http://localhost:9876/awesome.com/file.js'); |
| 128 | + |
| 129 | + server.restore(); |
| 130 | + }); |
84 | 131 | });
|
85 | 132 |
|
86 | 133 | describe('.computeStackTrace', function() {
|
|
0 commit comments