sentry-testkit 5.0.1 → 5.0.2

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 (109) hide show
  1. package/dist/browser.d.ts +2 -13
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/index.d.ts +23 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/initNetworkInterceptor.d.ts +3 -3
  8. package/dist/initNetworkInterceptor.d.ts.map +1 -1
  9. package/dist/initNetworkInterceptor.js +13 -11
  10. package/dist/initNetworkInterceptor.js.map +1 -1
  11. package/dist/jestMock.d.ts +2 -3
  12. package/dist/jestMock.d.ts.map +1 -1
  13. package/dist/jestMock.js +32 -5
  14. package/dist/jestMock.js.map +1 -1
  15. package/dist/localServerApi.d.ts +4 -8
  16. package/dist/localServerApi.d.ts.map +1 -1
  17. package/dist/localServerApi.js +38 -25
  18. package/dist/localServerApi.js.map +1 -1
  19. package/dist/parsers.d.ts.map +1 -1
  20. package/dist/parsers.js.map +1 -1
  21. package/dist/sentryTransport.d.ts.map +1 -1
  22. package/dist/testkit.d.ts +2 -13
  23. package/dist/testkit.d.ts.map +1 -1
  24. package/dist/testkit.js.map +1 -1
  25. package/dist/transformers.d.ts +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/types.d.ts +1 -1
  28. package/dist/types.d.ts.map +1 -1
  29. package/package.json +2 -4
  30. package/dist/src/browser.d.ts +0 -18
  31. package/dist/src/browser.d.ts.map +0 -1
  32. package/dist/src/browser.js +0 -17
  33. package/dist/src/browser.js.map +0 -1
  34. package/dist/src/index.d.ts +0 -24
  35. package/dist/src/index.d.ts.map +0 -1
  36. package/dist/src/index.js +0 -19
  37. package/dist/src/index.js.map +0 -1
  38. package/dist/src/initNetworkInterceptor.d.ts +0 -4
  39. package/dist/src/initNetworkInterceptor.d.ts.map +0 -1
  40. package/dist/src/initNetworkInterceptor.js +0 -26
  41. package/dist/src/initNetworkInterceptor.js.map +0 -1
  42. package/dist/src/jestMock.d.ts +0 -3
  43. package/dist/src/jestMock.d.ts.map +0 -1
  44. package/dist/src/jestMock.js +0 -40
  45. package/dist/src/jestMock.js.map +0 -1
  46. package/dist/src/localServerApi.d.ts +0 -7
  47. package/dist/src/localServerApi.d.ts.map +0 -1
  48. package/dist/src/localServerApi.js +0 -103
  49. package/dist/src/localServerApi.js.map +0 -1
  50. package/dist/src/parsers.d.ts +0 -10
  51. package/dist/src/parsers.d.ts.map +0 -1
  52. package/dist/src/parsers.js +0 -29
  53. package/dist/src/parsers.js.map +0 -1
  54. package/dist/src/sentryTransport.d.ts +0 -16
  55. package/dist/src/sentryTransport.d.ts.map +0 -1
  56. package/dist/src/sentryTransport.js +0 -50
  57. package/dist/src/sentryTransport.js.map +0 -1
  58. package/dist/src/testkit.d.ts +0 -3
  59. package/dist/src/testkit.d.ts.map +0 -1
  60. package/dist/src/testkit.js +0 -70
  61. package/dist/src/testkit.js.map +0 -1
  62. package/dist/src/transformers.d.ts +0 -4
  63. package/dist/src/transformers.d.ts.map +0 -1
  64. package/dist/src/transformers.js +0 -44
  65. package/dist/src/transformers.js.map +0 -1
  66. package/dist/src/types.d.ts +0 -73
  67. package/dist/src/types.d.ts.map +0 -1
  68. package/dist/src/types.js +0 -3
  69. package/dist/src/types.js.map +0 -1
  70. package/dist/test/browser.test.d.ts +0 -2
  71. package/dist/test/browser.test.d.ts.map +0 -1
  72. package/dist/test/browser.test.js +0 -52
  73. package/dist/test/browser.test.js.map +0 -1
  74. package/dist/test/commonTests.d.ts +0 -8
  75. package/dist/test/commonTests.d.ts.map +0 -1
  76. package/dist/test/commonTests.js +0 -461
  77. package/dist/test/commonTests.js.map +0 -1
  78. package/dist/test/fixtures/external-app-perf.d.ts +0 -2
  79. package/dist/test/fixtures/external-app-perf.d.ts.map +0 -1
  80. package/dist/test/fixtures/external-app-perf.js +0 -20
  81. package/dist/test/fixtures/external-app-perf.js.map +0 -1
  82. package/dist/test/fixtures/external-app.d.ts +0 -2
  83. package/dist/test/fixtures/external-app.d.ts.map +0 -1
  84. package/dist/test/fixtures/external-app.js +0 -12
  85. package/dist/test/fixtures/external-app.js.map +0 -1
  86. package/dist/test/jest-mock.help.d.ts +0 -2
  87. package/dist/test/jest-mock.help.d.ts.map +0 -1
  88. package/dist/test/jest-mock.help.js +0 -49
  89. package/dist/test/jest-mock.help.js.map +0 -1
  90. package/dist/test/jest-mock.test.d.ts +0 -2
  91. package/dist/test/jest-mock.test.d.ts.map +0 -1
  92. package/dist/test/jest-mock.test.js +0 -26
  93. package/dist/test/jest-mock.test.js.map +0 -1
  94. package/dist/test/local-server.test.d.ts +0 -2
  95. package/dist/test/local-server.test.d.ts.map +0 -1
  96. package/dist/test/local-server.test.js +0 -213
  97. package/dist/test/local-server.test.js.map +0 -1
  98. package/dist/test/network-interception.test.d.ts +0 -2
  99. package/dist/test/network-interception.test.d.ts.map +0 -1
  100. package/dist/test/network-interception.test.js +0 -80
  101. package/dist/test/network-interception.test.js.map +0 -1
  102. package/dist/test/node.test.d.ts +0 -2
  103. package/dist/test/node.test.d.ts.map +0 -1
  104. package/dist/test/node.test.js +0 -52
  105. package/dist/test/node.test.js.map +0 -1
  106. package/dist/test/puppeteer.test.d.ts +0 -2
  107. package/dist/test/puppeteer.test.d.ts.map +0 -1
  108. package/dist/test/puppeteer.test.js +0 -73
  109. package/dist/test/puppeteer.test.js.map +0 -1
@@ -1,213 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-server.test.js","sourceRoot":"","sources":["../../test/local-server.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=network-interception.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-interception.test.d.ts","sourceRoot":"","sources":["../../test/network-interception.test.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=node.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["../../test/node.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=puppeteer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puppeteer.test.d.ts","sourceRoot":"","sources":["../../test/puppeteer.test.ts"],"names":[],"mappings":""}
@@ -1,73 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"puppeteer.test.js","sourceRoot":"","sources":["../../test/puppeteer.test.ts"],"names":[],"mappings":"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"}