sentry-testkit 4.1.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -89
- package/dist/browser.d.ts +29 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +16 -20
- package/dist/browser.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -25
- package/dist/index.js.map +1 -0
- package/dist/initNetworkInterceptor.d.ts +4 -0
- package/dist/initNetworkInterceptor.d.ts.map +1 -0
- package/dist/initNetworkInterceptor.js +21 -38
- package/dist/initNetworkInterceptor.js.map +1 -0
- package/dist/jestMock.d.ts +4 -0
- package/dist/jestMock.d.ts.map +1 -0
- package/dist/jestMock.js +8 -15
- package/dist/jestMock.js.map +1 -0
- package/dist/localServerApi.d.ts +11 -0
- package/dist/localServerApi.d.ts.map +1 -0
- package/dist/localServerApi.js +82 -107
- package/dist/localServerApi.js.map +1 -0
- package/dist/parsers.d.ts +10 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +27 -48
- package/dist/parsers.js.map +1 -0
- package/dist/sentryTransport.d.ts +16 -0
- package/dist/sentryTransport.d.ts.map +1 -0
- package/dist/sentryTransport.js +49 -73
- package/dist/sentryTransport.js.map +1 -0
- package/dist/src/browser.d.ts +18 -0
- package/dist/src/browser.d.ts.map +1 -0
- package/dist/src/browser.js +17 -0
- package/dist/src/browser.js.map +1 -0
- package/dist/src/index.d.ts +24 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +19 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/initNetworkInterceptor.d.ts +4 -0
- package/dist/src/initNetworkInterceptor.d.ts.map +1 -0
- package/dist/src/initNetworkInterceptor.js +26 -0
- package/dist/src/initNetworkInterceptor.js.map +1 -0
- package/dist/src/jestMock.d.ts +3 -0
- package/dist/src/jestMock.d.ts.map +1 -0
- package/dist/src/jestMock.js +40 -0
- package/dist/src/jestMock.js.map +1 -0
- package/dist/src/localServerApi.d.ts +7 -0
- package/dist/src/localServerApi.d.ts.map +1 -0
- package/dist/src/localServerApi.js +103 -0
- package/dist/src/localServerApi.js.map +1 -0
- package/dist/src/parsers.d.ts +10 -0
- package/dist/src/parsers.d.ts.map +1 -0
- package/dist/src/parsers.js +29 -0
- package/dist/src/parsers.js.map +1 -0
- package/dist/src/sentryTransport.d.ts +16 -0
- package/dist/src/sentryTransport.d.ts.map +1 -0
- package/dist/src/sentryTransport.js +50 -0
- package/dist/src/sentryTransport.js.map +1 -0
- package/dist/src/testkit.d.ts +3 -0
- package/dist/src/testkit.d.ts.map +1 -0
- package/dist/src/testkit.js +70 -0
- package/dist/src/testkit.js.map +1 -0
- package/dist/src/transformers.d.ts +4 -0
- package/dist/src/transformers.d.ts.map +1 -0
- package/dist/src/transformers.js +44 -0
- package/dist/src/transformers.js.map +1 -0
- package/dist/src/types.d.ts +73 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/test/browser.test.d.ts +2 -0
- package/dist/test/browser.test.d.ts.map +1 -0
- package/dist/test/browser.test.js +52 -0
- package/dist/test/browser.test.js.map +1 -0
- package/dist/test/commonTests.d.ts +8 -0
- package/dist/test/commonTests.d.ts.map +1 -0
- package/dist/test/commonTests.js +461 -0
- package/dist/test/commonTests.js.map +1 -0
- package/dist/test/fixtures/external-app-perf.d.ts +2 -0
- package/dist/test/fixtures/external-app-perf.d.ts.map +1 -0
- package/dist/test/fixtures/external-app-perf.js +20 -0
- package/dist/test/fixtures/external-app-perf.js.map +1 -0
- package/dist/test/fixtures/external-app.d.ts +2 -0
- package/dist/test/fixtures/external-app.d.ts.map +1 -0
- package/dist/test/fixtures/external-app.js +12 -0
- package/dist/test/fixtures/external-app.js.map +1 -0
- package/dist/test/jest-mock.help.d.ts +2 -0
- package/dist/test/jest-mock.help.d.ts.map +1 -0
- package/dist/test/jest-mock.help.js +49 -0
- package/dist/test/jest-mock.help.js.map +1 -0
- package/dist/test/jest-mock.test.d.ts +2 -0
- package/dist/test/jest-mock.test.d.ts.map +1 -0
- package/dist/test/jest-mock.test.js +26 -0
- package/dist/test/jest-mock.test.js.map +1 -0
- package/dist/test/local-server.test.d.ts +2 -0
- package/dist/test/local-server.test.d.ts.map +1 -0
- package/dist/test/local-server.test.js +213 -0
- package/dist/test/local-server.test.js.map +1 -0
- package/dist/test/network-interception.test.d.ts +2 -0
- package/dist/test/network-interception.test.d.ts.map +1 -0
- package/dist/test/network-interception.test.js +80 -0
- package/dist/test/network-interception.test.js.map +1 -0
- package/dist/test/node.test.d.ts +2 -0
- package/dist/test/node.test.d.ts.map +1 -0
- package/dist/test/node.test.js +52 -0
- package/dist/test/node.test.js.map +1 -0
- package/dist/test/puppeteer.test.d.ts +2 -0
- package/dist/test/puppeteer.test.d.ts.map +1 -0
- package/dist/test/puppeteer.test.js +73 -0
- package/dist/test/puppeteer.test.js.map +1 -0
- package/dist/testkit.d.ts +14 -0
- package/dist/testkit.d.ts.map +1 -0
- package/dist/testkit.js +66 -75
- package/dist/testkit.js.map +1 -0
- package/dist/transformers.d.ts +4 -0
- package/dist/transformers.d.ts.map +1 -0
- package/dist/transformers.js +40 -38
- package/dist/transformers.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +73 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +14 -4
- package/index.d.ts +0 -91
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var path_1 = __importDefault(require("path"));
|
|
43
|
+
var execa_1 = __importDefault(require("execa"));
|
|
44
|
+
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
45
|
+
var wait_for_expect_1 = __importDefault(require("wait-for-expect"));
|
|
46
|
+
var index_1 = __importDefault(require("../src/index"));
|
|
47
|
+
var _a = (0, index_1.default)(), testkit = _a.testkit, localServer = _a.localServer;
|
|
48
|
+
var PROJECT_ID = '000001';
|
|
49
|
+
var DUMMY_DSN = "http://acacaeaccacacacabcaacdacdacadaca@sentry.io/".concat(PROJECT_ID);
|
|
50
|
+
describe('sentry test-kit test suite - local server', function () {
|
|
51
|
+
beforeAll(function () { return localServer.start(DUMMY_DSN); });
|
|
52
|
+
afterAll(function () { return localServer.stop(); });
|
|
53
|
+
beforeEach(function () { return testkit.reset(); });
|
|
54
|
+
test('should report to test kit from an external process', function () {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
57
|
+
var dsn, errorMessage;
|
|
58
|
+
return __generator(this, function (_c) {
|
|
59
|
+
switch (_c.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
dsn = localServer.getDsn();
|
|
62
|
+
errorMessage = 'sentry testkit is awesome!';
|
|
63
|
+
(_b = (_a = execa_1.default
|
|
64
|
+
.node(path_1.default.join(__dirname, './fixtures/external-app.js'), [
|
|
65
|
+
dsn,
|
|
66
|
+
errorMessage,
|
|
67
|
+
])) === null || _a === void 0 ? void 0 : _a.stdout) === null || _b === void 0 ? void 0 : _b.pipe(process.stdout);
|
|
68
|
+
return [4 /*yield*/, (0, wait_for_expect_1.default)(function () {
|
|
69
|
+
expect(testkit.reports()[0]).toBeDefined();
|
|
70
|
+
expect(testkit.reports()[0].error).toMatchObject({
|
|
71
|
+
name: 'Error',
|
|
72
|
+
message: errorMessage,
|
|
73
|
+
});
|
|
74
|
+
})];
|
|
75
|
+
case 1:
|
|
76
|
+
_c.sent();
|
|
77
|
+
return [2 /*return*/];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
test('should collect performance transactions', function () {
|
|
83
|
+
var _a, _b;
|
|
84
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
+
var dsn;
|
|
86
|
+
return __generator(this, function (_c) {
|
|
87
|
+
switch (_c.label) {
|
|
88
|
+
case 0:
|
|
89
|
+
dsn = localServer.getDsn();
|
|
90
|
+
(_b = (_a = execa_1.default
|
|
91
|
+
.node(path_1.default.join(__dirname, './fixtures/external-app-perf.js'), [dsn])) === null || _a === void 0 ? void 0 : _a.stdout) === null || _b === void 0 ? void 0 : _b.pipe(process.stdout);
|
|
92
|
+
return [4 /*yield*/, (0, wait_for_expect_1.default)(function () {
|
|
93
|
+
expect(testkit.transactions()[0]).toMatchObject({
|
|
94
|
+
name: 'transaction-name',
|
|
95
|
+
traceId: expect.any(String),
|
|
96
|
+
spans: [
|
|
97
|
+
{
|
|
98
|
+
id: expect.any(String),
|
|
99
|
+
op: 'child-span',
|
|
100
|
+
description: 'child-description',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
})];
|
|
105
|
+
case 1:
|
|
106
|
+
_c.sent();
|
|
107
|
+
return [2 /*return*/];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
test('should handle session items in an envelope request', function () {
|
|
113
|
+
var _a;
|
|
114
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
115
|
+
var dsn, sessionEnvelopeBody, response;
|
|
116
|
+
return __generator(this, function (_b) {
|
|
117
|
+
switch (_b.label) {
|
|
118
|
+
case 0:
|
|
119
|
+
dsn = (_a = localServer.getDsn()) === null || _a === void 0 ? void 0 : _a.replace("/".concat(PROJECT_ID), '');
|
|
120
|
+
sessionEnvelopeBody = "{\"sent_at\":\"2021-08-17T14:27:12.489Z\",\"sdk\":{\"name\":\"sentry.javascript.react\",\"version\":\"6.11.0\"}}\n" +
|
|
121
|
+
"{\"type\":\"session\"}\n" +
|
|
122
|
+
"{\"sid\":\"<removed>\",\"init\":false,\"started\":\"2021-08-17T14:27:11.361Z\",\"timestamp\":\"2021-08-17T14:27:12.489Z\",\"status\":\"ok\",\"errors\":1,\"attrs\":{\"release\":\"<removed>\",\"environment\":\"<removed>\",\"user_agent\":\"<removed>\"}}";
|
|
123
|
+
return [4 /*yield*/, (0, node_fetch_1.default)("".concat(dsn, "/api/").concat(PROJECT_ID, "/envelope/"), {
|
|
124
|
+
method: 'POST',
|
|
125
|
+
body: sessionEnvelopeBody,
|
|
126
|
+
headers: { 'Content-Type': 'application/x-sentry-envelope' },
|
|
127
|
+
})];
|
|
128
|
+
case 1:
|
|
129
|
+
response = _b.sent();
|
|
130
|
+
expect(response.ok).toBe(true);
|
|
131
|
+
return [2 /*return*/];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
test('should handle text/plain encoded items in an envelope request', function () {
|
|
137
|
+
var _a;
|
|
138
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
139
|
+
var dsn, sessionEnvelopeBody, response;
|
|
140
|
+
return __generator(this, function (_b) {
|
|
141
|
+
switch (_b.label) {
|
|
142
|
+
case 0:
|
|
143
|
+
dsn = (_a = localServer.getDsn()) === null || _a === void 0 ? void 0 : _a.replace("/".concat(PROJECT_ID), '');
|
|
144
|
+
sessionEnvelopeBody = "{\"sent_at\":\"2021-08-17T14:27:12.489Z\",\"sdk\":{\"name\":\"sentry.javascript.react\",\"version\":\"6.11.0\"}}\n" +
|
|
145
|
+
"{\"type\":\"session\"}\n" +
|
|
146
|
+
"{\"sid\":\"<removed>\",\"init\":false,\"started\":\"2021-08-17T14:27:11.361Z\",\"timestamp\":\"2021-08-17T14:27:12.489Z\",\"status\":\"ok\",\"errors\":1,\"attrs\":{\"release\":\"<removed>\",\"environment\":\"<removed>\",\"user_agent\":\"<removed>\"}}";
|
|
147
|
+
return [4 /*yield*/, (0, node_fetch_1.default)("".concat(dsn, "/api/").concat(PROJECT_ID, "/envelope/"), {
|
|
148
|
+
method: 'POST',
|
|
149
|
+
body: sessionEnvelopeBody,
|
|
150
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
151
|
+
})];
|
|
152
|
+
case 1:
|
|
153
|
+
response = _b.sent();
|
|
154
|
+
expect(response.ok).toBe(true);
|
|
155
|
+
return [2 /*return*/];
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
test('responds with Access-Control-Allow-Origin header', function () {
|
|
161
|
+
var _a;
|
|
162
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
163
|
+
var dsn, sessionEnvelopeBody, response;
|
|
164
|
+
return __generator(this, function (_b) {
|
|
165
|
+
switch (_b.label) {
|
|
166
|
+
case 0:
|
|
167
|
+
dsn = (_a = localServer.getDsn()) === null || _a === void 0 ? void 0 : _a.replace("/".concat(PROJECT_ID), '');
|
|
168
|
+
sessionEnvelopeBody = "{\"sent_at\":\"2021-08-17T14:27:12.489Z\",\"sdk\":{\"name\":\"sentry.javascript.react\",\"version\":\"6.11.0\"}}\n" +
|
|
169
|
+
"{\"type\":\"session\"}\n" +
|
|
170
|
+
"{\"sid\":\"<removed>\",\"init\":false,\"started\":\"2021-08-17T14:27:11.361Z\",\"timestamp\":\"2021-08-17T14:27:12.489Z\",\"status\":\"ok\",\"errors\":1,\"attrs\":{\"release\":\"<removed>\",\"environment\":\"<removed>\",\"user_agent\":\"<removed>\"}}";
|
|
171
|
+
return [4 /*yield*/, (0, node_fetch_1.default)("".concat(dsn, "/api/").concat(PROJECT_ID, "/envelope/"), {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
body: sessionEnvelopeBody,
|
|
174
|
+
headers: { 'Content-Type': 'text/plain' },
|
|
175
|
+
})];
|
|
176
|
+
case 1:
|
|
177
|
+
response = _b.sent();
|
|
178
|
+
expect(response.ok).toBe(true);
|
|
179
|
+
expect(response.headers.get('access-control-allow-origin')).toBe('*');
|
|
180
|
+
return [2 /*return*/];
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe('local server testkit error cases', function () {
|
|
187
|
+
test('should throw when stopping an unstarted server', function () {
|
|
188
|
+
expect(localServer.stop).toThrowError('Local server is not running');
|
|
189
|
+
});
|
|
190
|
+
test('should throw when starting an already started server', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0: return [4 /*yield*/, localServer.start(DUMMY_DSN)];
|
|
194
|
+
case 1:
|
|
195
|
+
_a.sent();
|
|
196
|
+
_a.label = 2;
|
|
197
|
+
case 2:
|
|
198
|
+
_a.trys.push([2, , 3, 5]);
|
|
199
|
+
expect(localServer.start).toThrowError('Local server is already running');
|
|
200
|
+
return [3 /*break*/, 5];
|
|
201
|
+
case 3: return [4 /*yield*/, localServer.stop()];
|
|
202
|
+
case 4:
|
|
203
|
+
_a.sent();
|
|
204
|
+
return [7 /*endfinally*/];
|
|
205
|
+
case 5: return [2 /*return*/];
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}); });
|
|
209
|
+
test('should throw when getting dsn of an unstarted server', function () {
|
|
210
|
+
expect(localServer.getDsn).toThrowError('Local server is not running');
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=local-server.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-server.test.js","sourceRoot":"","sources":["../../test/local-server.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAuB;AACvB,gDAAyB;AACzB,0DAA8B;AAC9B,oEAA2C;AAC3C,uDAAwC;AAElC,IAAA,KAA2B,IAAA,eAAa,GAAE,EAAxC,OAAO,aAAA,EAAE,WAAW,iBAAoB,CAAA;AAChD,IAAM,UAAU,GAAG,QAAQ,CAAA;AAC3B,IAAM,SAAS,GAAG,4DAAqD,UAAU,CAAE,CAAA;AAEnF,QAAQ,CAAC,2CAA2C,EAAE;IACpD,SAAS,CAAC,cAAM,OAAA,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAA5B,CAA4B,CAAC,CAAA;IAE7C,QAAQ,CAAC,cAAM,OAAA,WAAW,CAAC,IAAI,EAAE,EAAlB,CAAkB,CAAC,CAAA;IAElC,UAAU,CAAC,cAAM,OAAA,OAAO,CAAC,KAAK,EAAE,EAAf,CAAe,CAAC,CAAA;IAEjC,IAAI,CAAC,oDAAoD,EAAE;;;;;;;wBACnD,GAAG,GAAG,WAAW,CAAC,MAAM,EAAY,CAAA;wBACpC,YAAY,GAAG,4BAA4B,CAAA;wBACjD,MAAA,MAAA,eAAK;6BACF,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE;4BACxD,GAAG;4BACH,YAAY;yBACb,CAAC,0CACA,MAAM,0CAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;wBAEhC,qBAAM,IAAA,yBAAa,EAAC;gCAClB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;gCAC1C,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;oCAChD,IAAI,EAAE,OAAO;oCACb,OAAO,EAAE,YAAY;iCACtB,CAAC,CAAA;4BACJ,CAAC,CAAC,EAAA;;wBANF,SAME,CAAA;;;;;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,yCAAyC,EAAE;;;;;;;wBACxC,GAAG,GAAG,WAAW,CAAC,MAAM,EAAY,CAAA;wBAC1C,MAAA,MAAA,eAAK;6BACF,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,0CACnE,MAAM,0CAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;wBAEhC,qBAAM,IAAA,yBAAa,EAAC;gCAClB,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;oCAC9C,IAAI,EAAE,kBAAkB;oCACxB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;oCAC3B,KAAK,EAAE;wCACL;4CACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;4CACtB,EAAE,EAAE,YAAY;4CAChB,WAAW,EAAE,mBAAmB;yCACjC;qCACF;iCACF,CAAC,CAAA;4BACJ,CAAC,CAAC,EAAA;;wBAZF,SAYE,CAAA;;;;;KACH,CAAC,CAAA;IAEF,IAAI,CAAC,oDAAoD,EAAE;;;;;;;wBACnD,GAAG,GAAG,MAAA,WAAW,CAAC,MAAM,EAAE,0CAAE,OAAO,CAAC,WAAI,UAAU,CAAE,EAAE,EAAE,CAAC,CAAA;wBACzD,mBAAmB,GACvB,oHAAsG;4BACtG,0BAAsB;4BACtB,4PAA0N,CAAA;wBAE3M,qBAAM,IAAA,oBAAK,EAAC,UAAG,GAAG,kBAAQ,UAAU,eAAY,EAAE;gCACjE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,mBAAmB;gCACzB,OAAO,EAAE,EAAE,cAAc,EAAE,+BAA+B,EAAE;6BAC7D,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBACF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;;;;KAC/B,CAAC,CAAA;IAEF,IAAI,CAAC,+DAA+D,EAAE;;;;;;;wBAC9D,GAAG,GAAG,MAAA,WAAW,CAAC,MAAM,EAAE,0CAAE,OAAO,CAAC,WAAI,UAAU,CAAE,EAAE,EAAE,CAAC,CAAA;wBACzD,mBAAmB,GACvB,oHAAsG;4BACtG,0BAAsB;4BACtB,4PAA0N,CAAA;wBAE3M,qBAAM,IAAA,oBAAK,EAAC,UAAG,GAAG,kBAAQ,UAAU,eAAY,EAAE;gCACjE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,mBAAmB;gCACzB,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;6BAC1C,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBACF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;;;;KAC/B,CAAC,CAAA;IAEF,IAAI,CAAC,kDAAkD,EAAE;;;;;;;wBACjD,GAAG,GAAG,MAAA,WAAW,CAAC,MAAM,EAAE,0CAAE,OAAO,CAAC,WAAI,UAAU,CAAE,EAAE,EAAE,CAAC,CAAA;wBACzD,mBAAmB,GACvB,oHAAsG;4BACtG,0BAAsB;4BACtB,4PAA0N,CAAA;wBAE3M,qBAAM,IAAA,oBAAK,EAAC,UAAG,GAAG,kBAAQ,UAAU,eAAY,EAAE;gCACjE,MAAM,EAAE,MAAM;gCACd,IAAI,EAAE,mBAAmB;gCACzB,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;6BAC1C,CAAC,EAAA;;wBAJI,QAAQ,GAAG,SAIf;wBACF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;;;;KACtE,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,kCAAkC,EAAE;IAC3C,IAAI,CAAC,gDAAgD,EAAE;QACrD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sDAAsD,EAAE;;;wBAC3D,qBAAM,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAA;;oBAAlC,SAAkC,CAAA;;;;oBAGhC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAA;;wBAEzE,qBAAM,WAAW,CAAC,IAAI,EAAE,EAAA;;oBAAxB,SAAwB,CAAA;;;;;SAE3B,CAAC,CAAA;IAEF,IAAI,CAAC,sDAAsD,EAAE;QAC3D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-interception.test.d.ts","sourceRoot":"","sources":["../../test/network-interception.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var Sentry = __importStar(require("@sentry/node"));
|
|
30
|
+
var nock_1 = __importDefault(require("nock"));
|
|
31
|
+
var index_1 = __importDefault(require("../src/index"));
|
|
32
|
+
var commonTests_1 = require("./commonTests");
|
|
33
|
+
require('@sentry/tracing');
|
|
34
|
+
var _a = (0, index_1.default)(), testkit = _a.testkit, initNetworkInterceptor = _a.initNetworkInterceptor;
|
|
35
|
+
var DUMMY_DSN = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
|
|
36
|
+
describe('sentry test-kit test suite - network interception', function () {
|
|
37
|
+
var envelopeRequestHandler;
|
|
38
|
+
beforeAll(function () {
|
|
39
|
+
nock_1.default.cleanAll();
|
|
40
|
+
nock_1.default.disableNetConnect();
|
|
41
|
+
initNetworkInterceptor(DUMMY_DSN, function (baseUrl, handleRequestBody, handleEnvelopeRequestBody) {
|
|
42
|
+
envelopeRequestHandler = handleEnvelopeRequestBody;
|
|
43
|
+
(0, nock_1.default)(baseUrl)
|
|
44
|
+
.persist()
|
|
45
|
+
.post(/\/api\/000001\/store/)
|
|
46
|
+
.reply(200, function (_, requestBody) {
|
|
47
|
+
handleRequestBody(requestBody);
|
|
48
|
+
})
|
|
49
|
+
.post(/\/api\/000001\/envelope/)
|
|
50
|
+
.reply(200)
|
|
51
|
+
// use the request event since in a reply function (like above)
|
|
52
|
+
// nock automatically tries to parse the body as json, and fails
|
|
53
|
+
// since Sentry are using a non-standard json with a json request header
|
|
54
|
+
// See https://develop.sentry.dev/sdk/envelopes/
|
|
55
|
+
.on('request', function (_, interceptor, body) {
|
|
56
|
+
if (interceptor.uri.test('/api/000001/envelope')) {
|
|
57
|
+
handleEnvelopeRequestBody(body);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
Sentry.init({
|
|
62
|
+
dsn: DUMMY_DSN,
|
|
63
|
+
release: 'test',
|
|
64
|
+
tracesSampleRate: 1,
|
|
65
|
+
beforeSend: function (event) {
|
|
66
|
+
event.extra = { os: 'mac-os' };
|
|
67
|
+
return event;
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
beforeEach(function () { return testkit.reset(); });
|
|
72
|
+
(0, commonTests_1.createCommonTests)({ Sentry: Sentry, testkit: testkit });
|
|
73
|
+
test('should handle session item in envelope request', function () {
|
|
74
|
+
var sessionEnvelopeBody = "{\"sent_at\":\"2021-08-17T14:27:12.489Z\",\"sdk\":{\"name\":\"sentry.javascript.react\",\"version\":\"6.11.0\"}}\n" +
|
|
75
|
+
"{\"type\":\"session\"}\n" +
|
|
76
|
+
"{\"sid\":\"<removed>\",\"init\":false,\"started\":\"2021-08-17T14:27:11.361Z\",\"timestamp\":\"2021-08-17T14:27:12.489Z\",\"status\":\"ok\",\"errors\":1,\"attrs\":{\"release\":\"<removed>\",\"environment\":\"<removed>\",\"user_agent\":\"<removed>\"}}";
|
|
77
|
+
expect(function () { return envelopeRequestHandler(sessionEnvelopeBody); }).not.toThrow();
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=network-interception.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-interception.test.js","sourceRoot":"","sources":["../../test/network-interception.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAsC;AACtC,8CAAuB;AACvB,uDAAwC;AACxC,6CAAiD;AAEjD,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEpB,IAAA,KAAsC,IAAA,eAAa,GAAE,EAAnD,OAAO,aAAA,EAAE,sBAAsB,4BAAoB,CAAA;AAC3D,IAAM,SAAS,GAAG,2DAA2D,CAAA;AAC7E,QAAQ,CAAC,mDAAmD,EAAE;IAC5D,IAAI,sBAA2C,CAAA;IAE/C,SAAS,CAAC;QACR,cAAI,CAAC,QAAQ,EAAE,CAAA;QACf,cAAI,CAAC,iBAAiB,EAAE,CAAA;QAExB,sBAAsB,CACpB,SAAS,EACT,UAAC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;YACpD,sBAAsB,GAAG,yBAAyB,CAAA;YAClD,IAAA,cAAI,EAAC,OAAO,CAAC;iBACV,OAAO,EAAE;iBACT,IAAI,CAAC,sBAAsB,CAAC;iBAC5B,KAAK,CAAC,GAAG,EAAE,UAAC,CAAM,EAAE,WAAgB;gBACnC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YAChC,CAAC,CAAC;iBACD,IAAI,CAAC,yBAAyB,CAAC;iBAC/B,KAAK,CAAC,GAAG,CAAC;gBACX,+DAA+D;gBAC/D,gEAAgE;gBAChE,wEAAwE;gBACxE,gDAAgD;iBAC/C,EAAE,CAAC,SAAS,EAAE,UAAC,CAAC,EAAE,WAAW,EAAE,IAAI;gBAClC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;oBAChD,yBAAyB,CAAC,IAAI,CAAC,CAAA;iBAChC;YACH,CAAC,CAAC,CAAA;QACN,CAAC,CACF,CAAA;QAED,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,CAAC;YACnB,UAAU,YAAC,KAAK;gBACd,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;gBAC9B,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,cAAM,OAAA,OAAO,CAAC,KAAK,EAAE,EAAf,CAAe,CAAC,CAAA;IAEjC,IAAA,+BAAiB,EAAC,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAA;IAEtC,IAAI,CAAC,gDAAgD,EAAE;QACrD,IAAM,mBAAmB,GACvB,oHAAsG;YACtG,0BAAsB;YACtB,4PAA0N,CAAA;QAE5N,MAAM,CAAC,cAAM,OAAA,sBAAsB,CAAC,mBAAmB,CAAC,EAA3C,CAA2C,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["../../test/node.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var NodeSentry = __importStar(require("@sentry/node"));
|
|
30
|
+
var index_1 = __importDefault(require("../src/index"));
|
|
31
|
+
var commonTests_1 = require("./commonTests");
|
|
32
|
+
require('@sentry/tracing');
|
|
33
|
+
var _a = (0, index_1.default)(), testkit = _a.testkit, sentryTransport = _a.sentryTransport;
|
|
34
|
+
var DUMMY_DSN = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
|
|
35
|
+
var Sentry = NodeSentry;
|
|
36
|
+
describe('sentry test-kit test suite - @sentry/node', function () {
|
|
37
|
+
beforeAll(function () {
|
|
38
|
+
return Sentry.init({
|
|
39
|
+
dsn: DUMMY_DSN,
|
|
40
|
+
release: 'test',
|
|
41
|
+
tracesSampleRate: 1,
|
|
42
|
+
transport: sentryTransport,
|
|
43
|
+
beforeSend: function (event) {
|
|
44
|
+
event.extra = { os: 'mac-os' };
|
|
45
|
+
return event;
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
beforeEach(function () { return testkit.reset(); });
|
|
50
|
+
(0, commonTests_1.createCommonTests)({ Sentry: Sentry, testkit: testkit });
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=node.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.test.js","sourceRoot":"","sources":["../../test/node.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA0C;AAC1C,uDAAwC;AACxC,6CAAiD;AAEjD,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEpB,IAAA,KAA+B,IAAA,eAAa,GAAE,EAA5C,OAAO,aAAA,EAAE,eAAe,qBAAoB,CAAA;AACpD,IAAM,SAAS,GAAG,2DAA2D,CAAA;AAC7E,IAAM,MAAM,GAAG,UAAU,CAAA;AAEzB,QAAQ,CAAC,2CAA2C,EAAE;IACpD,SAAS,CAAC;QACR,OAAA,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,CAAC;YACnB,SAAS,EAAE,eAAe;YAC1B,UAAU,YAAC,KAAK;gBACd,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAA;gBAC9B,OAAO,KAAK,CAAA;YACd,CAAC;SACF,CAAC;IATF,CASE,CACH,CAAA;IAED,UAAU,CAAC,cAAM,OAAA,OAAO,CAAC,KAAK,EAAE,EAAf,CAAe,CAAC,CAAA;IAEjC,IAAA,+BAAiB,EAAC,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAA;AACxC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puppeteer.test.d.ts","sourceRoot":"","sources":["../../test/puppeteer.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var events_1 = __importDefault(require("events"));
|
|
7
|
+
var index_1 = __importDefault(require("../src/index"));
|
|
8
|
+
var testkit = (0, index_1.default)().testkit;
|
|
9
|
+
describe('Puppeteer testkit', function () {
|
|
10
|
+
var page;
|
|
11
|
+
var errorMessage = 'sentry puppeteer testkit is awesome!';
|
|
12
|
+
var createSentryCaptureRequest = function (baseUrl) {
|
|
13
|
+
if (baseUrl === void 0) { baseUrl = 'https://sentry.io'; }
|
|
14
|
+
return ({
|
|
15
|
+
url: function () { return "".concat(baseUrl, "/api/1234567/store"); },
|
|
16
|
+
postData: function () {
|
|
17
|
+
return JSON.stringify({
|
|
18
|
+
exception: {
|
|
19
|
+
values: [{ value: errorMessage }],
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var createSentryPerfRequest = function (baseUrl) {
|
|
26
|
+
if (baseUrl === void 0) { baseUrl = 'https://sentry.io'; }
|
|
27
|
+
return ({
|
|
28
|
+
url: function () { return "".concat(baseUrl, "/api/1234567/envelope"); },
|
|
29
|
+
postData: function () {
|
|
30
|
+
return "{\"event_id\":\"601fdd0eb40343f08274857951e483de\",\"sent_at\":\"2021-06-11T16:57:39.943Z\",\"sdk\":{\"name\":\"sentry.javascript.node\",\"version\":\"6.6.0\"}}\n {\"type\":\"transaction\",\"sample_rates\":[{\"id\":\"client_rate\",\"rate\":1}]}\n {\"contexts\":{\"trace\":{\"op\":\"transaction\",\"span_id\":\"9ce5f4be9f39417f\",\"trace_id\":\"57909d703068487a9e3cff52a6279484\"}},\"spans\":[{\"description\":\"child-description\",\"op\":\"child-span\",\"parent_span_id\":\"9ce5f4be9f39417f\",\"span_id\":\"b12b5d02ec5f7b1c\",\"start_timestamp\":1623430659.9326224,\"timestamp\":1623430659.9327486,\"trace_id\":\"57909d703068487a9e3cff52a6279484\"}],\"start_timestamp\":1623430659.93125,\"tags\":{},\"timestamp\":1623430659.9330351,\"transaction\":\"transaction-name\",\"type\":\"transaction\",\"platform\":\"node\",\"event_id\":\"601fdd0eb40343f08274857951e483de\",\"environment\":\"production\",\"sdk\":{\"integrations\":[\"InboundFilters\",\"FunctionToString\",\"Console\",\"Http\",\"OnUncaughtException\",\"OnUnhandledRejection\",\"LinkedErrors\"],\"name\":\"sentry.javascript.node\",\"version\":\"6.6.0\",\"packages\":[{\"name\":\"npm:@sentry/node\",\"version\":\"6.6.0\"}]}}";
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var sentrySessionRequest = {
|
|
35
|
+
url: function () { return 'https://sentry.io/api/1234567/envelope'; },
|
|
36
|
+
postData: function () { return "{\"sent_at\":\"2021-08-17T14:27:12.489Z\",\"sdk\":{\"name\":\"sentry.javascript.react\",\"version\":\"6.11.0\"}}\n{\"type\":\"session\"}\n{\"sid\":\"<removed>\",\"init\":false,\"started\":\"2021-08-17T14:27:11.361Z\",\"timestamp\":\"2021-08-17T14:27:12.489Z\",\"status\":\"ok\",\"errors\":1,\"attrs\":{\"release\":\"<removed>\",\"environment\":\"<removed>\",\"user_agent\":\"<removed>\"}}"; },
|
|
37
|
+
};
|
|
38
|
+
beforeEach(function () {
|
|
39
|
+
testkit.reset();
|
|
40
|
+
page = new events_1.default();
|
|
41
|
+
});
|
|
42
|
+
test('should report to testkit', function () {
|
|
43
|
+
testkit.puppeteer.startListening(page);
|
|
44
|
+
page.emit('request', createSentryCaptureRequest());
|
|
45
|
+
expect(testkit.reports()).toHaveLength(1);
|
|
46
|
+
var message = testkit.getExceptionAt(0).message;
|
|
47
|
+
expect(message).toEqual(errorMessage);
|
|
48
|
+
});
|
|
49
|
+
test('should collect performance transactions', function () {
|
|
50
|
+
testkit.puppeteer.startListening(page);
|
|
51
|
+
page.emit('request', createSentryPerfRequest());
|
|
52
|
+
expect(testkit.transactions()).toHaveLength(1);
|
|
53
|
+
expect(testkit.transactions()[0].name).toEqual('transaction-name');
|
|
54
|
+
});
|
|
55
|
+
test('should handle session items in an envelope request', function () {
|
|
56
|
+
testkit.puppeteer.startListening(page);
|
|
57
|
+
page.emit('request', sentrySessionRequest);
|
|
58
|
+
expect(testkit.transactions()).toHaveLength(0);
|
|
59
|
+
});
|
|
60
|
+
test('should stop listening after calling stopListening', function () {
|
|
61
|
+
testkit.puppeteer.startListening(page);
|
|
62
|
+
testkit.puppeteer.stopListening(page);
|
|
63
|
+
page.emit('request', createSentryCaptureRequest());
|
|
64
|
+
expect(testkit.reports()).toHaveLength(0);
|
|
65
|
+
});
|
|
66
|
+
test('should support self-hosted sentry', function () {
|
|
67
|
+
var baseUrl = 'https://my-self-hosted-sentry.com';
|
|
68
|
+
testkit.puppeteer.startListening(page, baseUrl);
|
|
69
|
+
page.emit('request', createSentryCaptureRequest(baseUrl));
|
|
70
|
+
expect(testkit.reports()).toHaveLength(1);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=puppeteer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puppeteer.test.js","sourceRoot":"","sources":["../../test/puppeteer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Report, ReportError, Transaction } from './types';
|
|
2
|
+
export declare function createTestkit(): {
|
|
3
|
+
puppeteer: {
|
|
4
|
+
startListening: (page: any, baseUrl?: string) => void;
|
|
5
|
+
stopListening: (page: any) => void;
|
|
6
|
+
};
|
|
7
|
+
reports(): Report[];
|
|
8
|
+
transactions(): Transaction[];
|
|
9
|
+
reset(): void;
|
|
10
|
+
getExceptionAt(index: number): ReportError | undefined;
|
|
11
|
+
findReport(e: ReportError): Report | undefined;
|
|
12
|
+
isExist(e: ReportError): boolean;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=testkit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testkit.d.ts","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1D,wBAAgB,aAAa;;+BAwBA,GAAG;8BAKJ,GAAG;;;;;0BAkBL,MAAM;kBAQd,WAAW;eAOd,WAAW;EAIzB"}
|
package/dist/testkit.js
CHANGED
|
@@ -1,79 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _require2 = require('./transformers'),
|
|
7
|
-
transformReport = _require2.transformReport,
|
|
8
|
-
transformTransaction = _require2.transformTransaction;
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTestkit = void 0;
|
|
4
|
+
var parsers_1 = require("./parsers");
|
|
5
|
+
var transformers_1 = require("./transformers");
|
|
10
6
|
function getException(report) {
|
|
11
|
-
|
|
7
|
+
return report.error;
|
|
12
8
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var url = request.url();
|
|
22
|
-
|
|
23
|
-
if (!url.startsWith(baseUrl)) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var path = url.substring(baseUrl.length);
|
|
28
|
-
|
|
29
|
-
if (/\/api\/[0-9]*\/store/.test(path)) {
|
|
30
|
-
_reports.push(transformReport(JSON.parse(request.postData())));
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (/\/api\/[0-9]*\/envelope/.test(path)) {
|
|
34
|
-
var _parseEnvelopeRequest = parseEnvelopeRequest(request.postData()),
|
|
35
|
-
type = _parseEnvelopeRequest.type,
|
|
36
|
-
payload = _parseEnvelopeRequest.payload;
|
|
37
|
-
|
|
38
|
-
if (type === 'transaction') {
|
|
39
|
-
_transactions.push(transformTransaction(payload));
|
|
9
|
+
function createTestkit() {
|
|
10
|
+
var reports = [];
|
|
11
|
+
var transactions = [];
|
|
12
|
+
var puppeteerHandler = null;
|
|
13
|
+
var createPuppeteerHandler = function (baseUrl) { return function (request) {
|
|
14
|
+
var url = request.url();
|
|
15
|
+
if (!url.startsWith(baseUrl)) {
|
|
16
|
+
return;
|
|
40
17
|
}
|
|
41
|
-
|
|
18
|
+
var path = url.substring(baseUrl.length);
|
|
19
|
+
if (/\/api\/[0-9]*\/store/.test(path)) {
|
|
20
|
+
reports.push((0, transformers_1.transformReport)(JSON.parse(request.postData())));
|
|
21
|
+
}
|
|
22
|
+
if (/\/api\/[0-9]*\/envelope/.test(path)) {
|
|
23
|
+
var _a = (0, parsers_1.parseEnvelopeRequest)(request.postData()), type = _a.type, payload = _a.payload;
|
|
24
|
+
if (type === 'transaction') {
|
|
25
|
+
transactions.push((0, transformers_1.transformTransaction)(payload));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}; };
|
|
29
|
+
return {
|
|
30
|
+
puppeteer: {
|
|
31
|
+
startListening: function (page, baseUrl) {
|
|
32
|
+
if (baseUrl === void 0) { baseUrl = 'https://sentry.io'; }
|
|
33
|
+
puppeteerHandler = createPuppeteerHandler(baseUrl);
|
|
34
|
+
page.on('request', puppeteerHandler);
|
|
35
|
+
},
|
|
36
|
+
stopListening: function (page) {
|
|
37
|
+
page.removeListener('request', puppeteerHandler);
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
reports: function () {
|
|
41
|
+
return reports;
|
|
42
|
+
},
|
|
43
|
+
transactions: function () {
|
|
44
|
+
return transactions;
|
|
45
|
+
},
|
|
46
|
+
reset: function () {
|
|
47
|
+
reports = [];
|
|
48
|
+
transactions = [];
|
|
49
|
+
},
|
|
50
|
+
getExceptionAt: function (index) {
|
|
51
|
+
if (reports[index]) {
|
|
52
|
+
return getException(reports[index]);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error("There's not report at index ".concat(index));
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
findReport: function (e) {
|
|
59
|
+
return reports.find(function (r) {
|
|
60
|
+
var err = getException(r);
|
|
61
|
+
return err && err.name === e.name && err.message === e.message;
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
isExist: function (e) {
|
|
65
|
+
return this.findReport(e) !== undefined;
|
|
66
|
+
},
|
|
42
67
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
puppeteer: {
|
|
47
|
-
startListening: function startListening(page) {
|
|
48
|
-
var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'https://sentry.io';
|
|
49
|
-
puppeteerHandler = createPuppeteerHandler(baseUrl);
|
|
50
|
-
page.on('request', puppeteerHandler);
|
|
51
|
-
},
|
|
52
|
-
stopListening: function stopListening(page) {
|
|
53
|
-
page.removeListener('request', puppeteerHandler);
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
reports: function reports() {
|
|
57
|
-
return _reports;
|
|
58
|
-
},
|
|
59
|
-
transactions: function transactions() {
|
|
60
|
-
return _transactions;
|
|
61
|
-
},
|
|
62
|
-
reset: function reset() {
|
|
63
|
-
_reports = [];
|
|
64
|
-
_transactions = [];
|
|
65
|
-
},
|
|
66
|
-
getExceptionAt: function getExceptionAt(index) {
|
|
67
|
-
return getException(_reports[index]);
|
|
68
|
-
},
|
|
69
|
-
findReport: function findReport(e) {
|
|
70
|
-
return _reports.find(function (r) {
|
|
71
|
-
var err = getException(r);
|
|
72
|
-
return err.name === e.name && err.message === e.message;
|
|
73
|
-
});
|
|
74
|
-
},
|
|
75
|
-
isExist: function isExist(e) {
|
|
76
|
-
return this.findReport(e) !== undefined;
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
};
|
|
68
|
+
}
|
|
69
|
+
exports.createTestkit = createTestkit;
|
|
70
|
+
//# sourceMappingURL=testkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testkit.js","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,+CAAsE;AAGtE,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,OAAO,GAAY,EAAE,CAAA;IACzB,IAAI,YAAY,GAAkB,EAAE,CAAA;IAEpC,IAAI,gBAAgB,GAAQ,IAAI,CAAA;IAChC,IAAM,sBAAsB,GAAG,UAAC,OAAe,IAAK,OAAA,UAAC,OAAY;QAC/D,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAM;SACP;QACD,IAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC,IAAA,8BAAe,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;SAC9D;QACD,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAClC,IAAA,KAAoB,IAAA,8BAAoB,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAA1D,IAAI,UAAA,EAAE,OAAO,aAA6C,CAAA;YAClE,IAAI,IAAI,KAAK,aAAa,EAAE;gBAC1B,YAAY,CAAC,IAAI,CAAC,IAAA,mCAAoB,EAAC,OAAO,CAAC,CAAC,CAAA;aACjD;SACF;IACH,CAAC,EAfmD,CAenD,CAAA;IAED,OAAO;QACL,SAAS,EAAE;YACT,cAAc,EAAE,UAAC,IAAS,EAAE,OAA6B;gBAA7B,wBAAA,EAAA,6BAA6B;gBACvD,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;gBAClD,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YACtC,CAAC;YAED,aAAa,EAAE,UAAC,IAAS;gBACvB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YAClD,CAAC;SACF;QAED,OAAO;YACL,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,YAAY;YACV,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,KAAK;YACH,OAAO,GAAG,EAAE,CAAA;YACZ,YAAY,GAAG,EAAE,CAAA;QACnB,CAAC;QAED,cAAc,YAAC,KAAa;YAC1B,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;gBAClB,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,CAAA;aACrC;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,sCAA+B,KAAK,CAAE,CAAC,CAAA;aACxD;QACH,CAAC;QAED,UAAU,YAAC,CAAc;YACvB,OAAO,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC;gBACnB,IAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;gBAC3B,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAA;YAChE,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,YAAC,CAAc;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,CAAA;QACzC,CAAC;KACF,CAAA;AACH,CAAC;AAlED,sCAkEC"}
|