sentry-testkit 4.1.0 → 5.0.0

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.
Files changed (123) hide show
  1. package/dist/browser.d.ts +29 -0
  2. package/dist/browser.d.ts.map +1 -0
  3. package/dist/browser.js +16 -20
  4. package/dist/browser.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +18 -25
  8. package/dist/index.js.map +1 -0
  9. package/dist/initNetworkInterceptor.d.ts +4 -0
  10. package/dist/initNetworkInterceptor.d.ts.map +1 -0
  11. package/dist/initNetworkInterceptor.js +21 -38
  12. package/dist/initNetworkInterceptor.js.map +1 -0
  13. package/dist/jestMock.d.ts +4 -0
  14. package/dist/jestMock.d.ts.map +1 -0
  15. package/dist/jestMock.js +8 -15
  16. package/dist/jestMock.js.map +1 -0
  17. package/dist/localServerApi.d.ts +11 -0
  18. package/dist/localServerApi.d.ts.map +1 -0
  19. package/dist/localServerApi.js +82 -107
  20. package/dist/localServerApi.js.map +1 -0
  21. package/dist/parsers.d.ts +10 -0
  22. package/dist/parsers.d.ts.map +1 -0
  23. package/dist/parsers.js +27 -48
  24. package/dist/parsers.js.map +1 -0
  25. package/dist/sentryTransport.d.ts +16 -0
  26. package/dist/sentryTransport.d.ts.map +1 -0
  27. package/dist/sentryTransport.js +49 -73
  28. package/dist/sentryTransport.js.map +1 -0
  29. package/dist/src/browser.d.ts +18 -0
  30. package/dist/src/browser.d.ts.map +1 -0
  31. package/dist/src/browser.js +17 -0
  32. package/dist/src/browser.js.map +1 -0
  33. package/dist/src/index.d.ts +24 -0
  34. package/dist/src/index.d.ts.map +1 -0
  35. package/dist/src/index.js +19 -0
  36. package/dist/src/index.js.map +1 -0
  37. package/dist/src/initNetworkInterceptor.d.ts +4 -0
  38. package/dist/src/initNetworkInterceptor.d.ts.map +1 -0
  39. package/dist/src/initNetworkInterceptor.js +26 -0
  40. package/dist/src/initNetworkInterceptor.js.map +1 -0
  41. package/dist/src/jestMock.d.ts +3 -0
  42. package/dist/src/jestMock.d.ts.map +1 -0
  43. package/dist/src/jestMock.js +40 -0
  44. package/dist/src/jestMock.js.map +1 -0
  45. package/dist/src/localServerApi.d.ts +7 -0
  46. package/dist/src/localServerApi.d.ts.map +1 -0
  47. package/dist/src/localServerApi.js +103 -0
  48. package/dist/src/localServerApi.js.map +1 -0
  49. package/dist/src/parsers.d.ts +10 -0
  50. package/dist/src/parsers.d.ts.map +1 -0
  51. package/dist/src/parsers.js +29 -0
  52. package/dist/src/parsers.js.map +1 -0
  53. package/dist/src/sentryTransport.d.ts +16 -0
  54. package/dist/src/sentryTransport.d.ts.map +1 -0
  55. package/dist/src/sentryTransport.js +50 -0
  56. package/dist/src/sentryTransport.js.map +1 -0
  57. package/dist/src/testkit.d.ts +3 -0
  58. package/dist/src/testkit.d.ts.map +1 -0
  59. package/dist/src/testkit.js +70 -0
  60. package/dist/src/testkit.js.map +1 -0
  61. package/dist/src/transformers.d.ts +4 -0
  62. package/dist/src/transformers.d.ts.map +1 -0
  63. package/dist/src/transformers.js +44 -0
  64. package/dist/src/transformers.js.map +1 -0
  65. package/dist/src/types.d.ts +73 -0
  66. package/dist/src/types.d.ts.map +1 -0
  67. package/dist/src/types.js +3 -0
  68. package/dist/src/types.js.map +1 -0
  69. package/dist/test/browser.test.d.ts +2 -0
  70. package/dist/test/browser.test.d.ts.map +1 -0
  71. package/dist/test/browser.test.js +52 -0
  72. package/dist/test/browser.test.js.map +1 -0
  73. package/dist/test/commonTests.d.ts +8 -0
  74. package/dist/test/commonTests.d.ts.map +1 -0
  75. package/dist/test/commonTests.js +461 -0
  76. package/dist/test/commonTests.js.map +1 -0
  77. package/dist/test/fixtures/external-app-perf.d.ts +2 -0
  78. package/dist/test/fixtures/external-app-perf.d.ts.map +1 -0
  79. package/dist/test/fixtures/external-app-perf.js +20 -0
  80. package/dist/test/fixtures/external-app-perf.js.map +1 -0
  81. package/dist/test/fixtures/external-app.d.ts +2 -0
  82. package/dist/test/fixtures/external-app.d.ts.map +1 -0
  83. package/dist/test/fixtures/external-app.js +12 -0
  84. package/dist/test/fixtures/external-app.js.map +1 -0
  85. package/dist/test/jest-mock.help.d.ts +2 -0
  86. package/dist/test/jest-mock.help.d.ts.map +1 -0
  87. package/dist/test/jest-mock.help.js +49 -0
  88. package/dist/test/jest-mock.help.js.map +1 -0
  89. package/dist/test/jest-mock.test.d.ts +2 -0
  90. package/dist/test/jest-mock.test.d.ts.map +1 -0
  91. package/dist/test/jest-mock.test.js +26 -0
  92. package/dist/test/jest-mock.test.js.map +1 -0
  93. package/dist/test/local-server.test.d.ts +2 -0
  94. package/dist/test/local-server.test.d.ts.map +1 -0
  95. package/dist/test/local-server.test.js +213 -0
  96. package/dist/test/local-server.test.js.map +1 -0
  97. package/dist/test/network-interception.test.d.ts +2 -0
  98. package/dist/test/network-interception.test.d.ts.map +1 -0
  99. package/dist/test/network-interception.test.js +80 -0
  100. package/dist/test/network-interception.test.js.map +1 -0
  101. package/dist/test/node.test.d.ts +2 -0
  102. package/dist/test/node.test.d.ts.map +1 -0
  103. package/dist/test/node.test.js +52 -0
  104. package/dist/test/node.test.js.map +1 -0
  105. package/dist/test/puppeteer.test.d.ts +2 -0
  106. package/dist/test/puppeteer.test.d.ts.map +1 -0
  107. package/dist/test/puppeteer.test.js +73 -0
  108. package/dist/test/puppeteer.test.js.map +1 -0
  109. package/dist/testkit.d.ts +14 -0
  110. package/dist/testkit.d.ts.map +1 -0
  111. package/dist/testkit.js +66 -75
  112. package/dist/testkit.js.map +1 -0
  113. package/dist/transformers.d.ts +4 -0
  114. package/dist/transformers.d.ts.map +1 -0
  115. package/dist/transformers.js +40 -38
  116. package/dist/transformers.js.map +1 -0
  117. package/dist/tsconfig.tsbuildinfo +1 -0
  118. package/dist/types.d.ts +73 -0
  119. package/dist/types.d.ts.map +1 -0
  120. package/dist/types.js +3 -0
  121. package/dist/types.js.map +1 -0
  122. package/package.json +12 -2
  123. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=network-interception.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=puppeteer.test.d.ts.map
@@ -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
- 'use strict';
2
-
3
- var _require = require('./parsers'),
4
- parseEnvelopeRequest = _require.parseEnvelopeRequest;
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
- return report.error;
7
+ return report.error;
12
8
  }
13
-
14
- module.exports.createTestkit = function () {
15
- var _reports = [];
16
- var _transactions = [];
17
- var puppeteerHandler = null;
18
-
19
- var createPuppeteerHandler = function createPuppeteerHandler(baseUrl) {
20
- return function (request) {
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
- return {
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"}