sentry-testkit 6.4.1 → 7.1.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.
- package/README.md +121 -0
- package/dist/parsers.d.ts +9 -3
- package/dist/parsers.d.ts.map +1 -1
- package/dist/parsers.js +82 -14
- package/dist/parsers.js.map +1 -1
- package/dist/sentryTransport.d.ts.map +1 -1
- package/dist/sentryTransport.js +5 -0
- package/dist/sentryTransport.js.map +1 -1
- package/dist/testkit.d.ts.map +1 -1
- package/dist/testkit.js +77 -15
- package/dist/testkit.js.map +1 -1
- package/dist/transformers.d.ts +2 -1
- package/dist/transformers.d.ts.map +1 -1
- package/dist/transformers.js +24 -1
- package/dist/transformers.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +32 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/CHANGELOG.md +0 -8
package/README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://npmjs.org/package/sentry-testkit">
|
|
3
|
+
<img src="https://img.shields.io/npm/v/sentry-testkit.svg" alt="npm version">
|
|
4
|
+
</a>
|
|
5
|
+
<a href="https://npmjs.org/package/sentry-testkit">
|
|
6
|
+
<img src="https://img.shields.io/npm/dm/sentry-testkit.svg" alt="npm downloads">
|
|
7
|
+
</a>
|
|
8
|
+
<a href="https://github.com/zivl/sentry-testkit/actions">
|
|
9
|
+
<img src="https://github.com/zivl/sentry-testkit/workflows/Test/badge.svg" alt="Test">
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://zivl.github.io/sentry-testkit/">
|
|
12
|
+
<img src="https://img.shields.io/badge/Compatible%20with%20Sentry-v9%20%7C%20v10-blue" alt="compatible with Sentry v9 and v10">
|
|
13
|
+
</a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
# sentry-testkit
|
|
17
|
+
|
|
18
|
+
Test what your app reports to [Sentry](https://sentry.io) — without sending anything to Sentry's servers.
|
|
19
|
+
|
|
20
|
+
**sentry-testkit** lets Sentry work natively in your application while running tests: reports are intercepted and logged into memory instead of being sent over the wire. Your tests can then assert on exactly what was (or wasn't) captured — errors, performance transactions, structured logs, and more — with nothing leaving your machine and no false reports swamping your Sentry project.
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
npm install sentry-testkit --save-dev
|
|
26
|
+
# or
|
|
27
|
+
yarn add sentry-testkit --dev
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Requires Sentry JavaScript SDK **v9 or v10** (`@sentry/browser`, `@sentry/node`, `@sentry/react`, `@sentry/react-native`). Using Sentry v8? Stay on `sentry-testkit@6`.
|
|
31
|
+
|
|
32
|
+
## Quick start
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
const sentryTestkit = require('sentry-testkit')
|
|
36
|
+
|
|
37
|
+
const { testkit, sentryTransport } = sentryTestkit()
|
|
38
|
+
|
|
39
|
+
// initialize Sentry with the testkit transport
|
|
40
|
+
Sentry.init({
|
|
41
|
+
dsn: 'https://public@dsn.ingest.sentry.io/000001',
|
|
42
|
+
transport: sentryTransport,
|
|
43
|
+
// ... other configurations
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
test('collects error events', async function() {
|
|
47
|
+
// run any scenario that eventually calls Sentry.captureException(...)
|
|
48
|
+
const reports = await testkit.waitForReports(1)
|
|
49
|
+
expect(reports[0].error.message).toEqual('something went wrong')
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## What you can assert on
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
// Errors and messages
|
|
57
|
+
testkit.reports()
|
|
58
|
+
testkit.findReport(error)
|
|
59
|
+
testkit.findReportByMessage(/user \d+/)
|
|
60
|
+
testkit.reportsWithTag('section', 'billing')
|
|
61
|
+
testkit.getExceptionAt(0)
|
|
62
|
+
|
|
63
|
+
// Performance transactions and spans
|
|
64
|
+
testkit.transactions()
|
|
65
|
+
testkit.findTransaction('checkout-flow')
|
|
66
|
+
testkit.transactionsWithTag('flow', 'signup')
|
|
67
|
+
|
|
68
|
+
// Structured logs (Sentry.logger.*, requires enableLogs: true)
|
|
69
|
+
testkit.logs()
|
|
70
|
+
|
|
71
|
+
// Feature flags evaluated when an error was captured
|
|
72
|
+
testkit.reports()[0].flags // [{ flag: 'new-checkout', result: true }]
|
|
73
|
+
|
|
74
|
+
// Async-safe waiting — no sleeps, no flakiness
|
|
75
|
+
await testkit.waitForReports(2, { timeout: 3000 })
|
|
76
|
+
await testkit.waitForTransactions(1)
|
|
77
|
+
await testkit.waitForLogs(1)
|
|
78
|
+
|
|
79
|
+
// Clean state between tests
|
|
80
|
+
testkit.reset()
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
See the [full API reference](https://zivl.github.io/sentry-testkit/docs/api) for every method and the shape of `Report`, `Transaction`, and `Log` objects.
|
|
84
|
+
|
|
85
|
+
## Integration modes
|
|
86
|
+
|
|
87
|
+
The transport shown above is the most common setup, but the testkit can intercept Sentry traffic in whichever way fits your test environment:
|
|
88
|
+
|
|
89
|
+
| Mode | Use case |
|
|
90
|
+
|------|----------|
|
|
91
|
+
| **Transport** (`sentryTransport`) | Unit/integration tests — replace Sentry's HTTP sender |
|
|
92
|
+
| **Browser entry** (`sentry-testkit/browser`) | Same as transport, without any Node.js dependencies |
|
|
93
|
+
| **Local server** (`localServer`) | Spin up a real local endpoint that mimics Sentry's API and gives you a local DSN |
|
|
94
|
+
| **Puppeteer** (`testkit.puppeteer`) | E2E tests — capture the page's Sentry requests |
|
|
95
|
+
| **Network interception** (`initNetworkInterceptor`) | Bring your own interceptor (nock, MSW, ...) |
|
|
96
|
+
| **Jest mock** (`sentry-testkit/dist/jestMock`) | Auto-inject the testkit as `global.testkit` |
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
// browser-only entry, no express/http imports
|
|
100
|
+
const sentryTestkit = require('sentry-testkit/browser')
|
|
101
|
+
const { testkit, sentryTransport } = sentryTestkit()
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Guides for every mode live in the [documentation](https://zivl.github.io/sentry-testkit/).
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
Full documentation, guides, and migration notes: **https://zivl.github.io/sentry-testkit/**
|
|
109
|
+
|
|
110
|
+
- [Getting started](https://zivl.github.io/sentry-testkit/docs/getting-started)
|
|
111
|
+
- [API reference](https://zivl.github.io/sentry-testkit/docs/api)
|
|
112
|
+
- [Migration guides](https://zivl.github.io/sentry-testkit/docs/migration/version-7) (v7 drops Sentry v8 support and adds structured logs)
|
|
113
|
+
- [Changelog](https://github.com/zivl/sentry-testkit/blob/master/packages/sentry-testkit/CHANGELOG.md)
|
|
114
|
+
|
|
115
|
+
## Contributing
|
|
116
|
+
|
|
117
|
+
Contributions of any kind are welcome! See the [contribution guidelines](https://github.com/zivl/sentry-testkit/blob/master/CONTRIBUTING.md) to get started.
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
[MIT](https://github.com/zivl/sentry-testkit/blob/master/LICENSE)
|
package/dist/parsers.d.ts
CHANGED
|
@@ -4,9 +4,15 @@ export declare function parseDsn(dsn: string): {
|
|
|
4
4
|
project: string;
|
|
5
5
|
host: string;
|
|
6
6
|
};
|
|
7
|
-
export
|
|
8
|
-
type
|
|
7
|
+
export interface EnvelopeItemHeader {
|
|
8
|
+
type?: string;
|
|
9
|
+
length?: number;
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export interface EnvelopeItem {
|
|
13
|
+
header: EnvelopeItemHeader;
|
|
9
14
|
payload: any;
|
|
10
|
-
}
|
|
15
|
+
}
|
|
16
|
+
export declare function parseEnvelope(rawBody: string | Uint8Array): EnvelopeItem[];
|
|
11
17
|
export declare function handleEnvelopeRequestData(requestBody: any, testkit: Testkit): void;
|
|
12
18
|
//# sourceMappingURL=parsers.d.ts.map
|
package/dist/parsers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKjC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM;;;;EAoBnC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAA;IAC1B,OAAO,EAAE,GAAG,CAAA;CACb;AAwBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,EAAE,CAqD1E;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,OAAO,GACf,IAAI,CAYN"}
|
package/dist/parsers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleEnvelopeRequestData = exports.
|
|
3
|
+
exports.handleEnvelopeRequestData = exports.parseEnvelope = exports.parseDsn = void 0;
|
|
4
4
|
var transformers_1 = require("./transformers");
|
|
5
5
|
var dsnKeys = 'source protocol user pass host port path'.split(' ');
|
|
6
6
|
var dsnPattern = /^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/; //eslint-disable-line no-useless-escape
|
|
@@ -19,22 +19,90 @@ function parseDsn(dsn) {
|
|
|
19
19
|
return { protocol: protocol, project: project, host: host };
|
|
20
20
|
}
|
|
21
21
|
exports.parseDsn = parseDsn;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
var NEWLINE = 0x0a;
|
|
23
|
+
// Buffer in Node.js, TextEncoder/TextDecoder in browsers (Puppeteer page context)
|
|
24
|
+
function toBytes(input) {
|
|
25
|
+
if (typeof input !== 'string') {
|
|
26
|
+
return input;
|
|
27
|
+
}
|
|
28
|
+
return typeof Buffer !== 'undefined'
|
|
29
|
+
? Buffer.from(input)
|
|
30
|
+
: new TextEncoder().encode(input);
|
|
31
|
+
}
|
|
32
|
+
function fromBytes(bytes) {
|
|
33
|
+
return typeof Buffer !== 'undefined'
|
|
34
|
+
? Buffer.from(bytes).toString()
|
|
35
|
+
: new TextDecoder().decode(bytes);
|
|
36
|
+
}
|
|
37
|
+
// Envelope format: https://develop.sentry.dev/sdk/data-model/envelopes/
|
|
38
|
+
// <envelope header>\n(<item header>\n<item payload>\n)*
|
|
39
|
+
// An item header may declare `length` (payload size in bytes), in which case
|
|
40
|
+
// the payload may contain newlines or binary data.
|
|
41
|
+
function parseEnvelope(rawBody) {
|
|
42
|
+
var bytes = toBytes(rawBody);
|
|
43
|
+
var items = [];
|
|
44
|
+
var readLine = function (from) {
|
|
45
|
+
var end = from;
|
|
46
|
+
while (end < bytes.length && bytes[end] !== NEWLINE) {
|
|
47
|
+
end++;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
line: fromBytes(bytes.subarray(from, end)),
|
|
51
|
+
next: end + 1,
|
|
52
|
+
};
|
|
27
53
|
};
|
|
54
|
+
// Skip the envelope header line
|
|
55
|
+
var offset = readLine(0).next;
|
|
56
|
+
while (offset < bytes.length) {
|
|
57
|
+
var _a = readLine(offset), headerLine = _a.line, next = _a.next;
|
|
58
|
+
if (headerLine.trim() === '') {
|
|
59
|
+
// Tolerate trailing newlines at the end of the envelope
|
|
60
|
+
offset = next;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
var header = JSON.parse(headerLine);
|
|
64
|
+
var rawPayload = void 0;
|
|
65
|
+
if (typeof header.length === 'number') {
|
|
66
|
+
rawPayload = fromBytes(bytes.subarray(next, next + header.length));
|
|
67
|
+
offset = next + header.length;
|
|
68
|
+
// Skip the newline separating this payload from the next item header
|
|
69
|
+
if (bytes[offset] === NEWLINE) {
|
|
70
|
+
offset++;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
var payloadLine = readLine(next);
|
|
75
|
+
rawPayload = payloadLine.line;
|
|
76
|
+
offset = payloadLine.next;
|
|
77
|
+
}
|
|
78
|
+
var payload = void 0;
|
|
79
|
+
try {
|
|
80
|
+
payload = JSON.parse(rawPayload);
|
|
81
|
+
}
|
|
82
|
+
catch (_b) {
|
|
83
|
+
// Non-JSON payloads (e.g. attachments, replay recordings) stay raw
|
|
84
|
+
payload = rawPayload;
|
|
85
|
+
}
|
|
86
|
+
items.push({ header: header, payload: payload });
|
|
87
|
+
}
|
|
88
|
+
return items;
|
|
28
89
|
}
|
|
29
|
-
exports.
|
|
90
|
+
exports.parseEnvelope = parseEnvelope;
|
|
30
91
|
function handleEnvelopeRequestData(requestBody, testkit) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
92
|
+
parseEnvelope(requestBody).forEach(function (_a) {
|
|
93
|
+
var header = _a.header, payload = _a.payload;
|
|
94
|
+
if (header.type === 'transaction') {
|
|
95
|
+
testkit.transactions().push((0, transformers_1.transformTransaction)(payload));
|
|
96
|
+
}
|
|
97
|
+
else if (header.type === 'event') {
|
|
98
|
+
testkit.reports().push((0, transformers_1.transformReport)(payload));
|
|
99
|
+
}
|
|
100
|
+
else if (header.type === 'log') {
|
|
101
|
+
// Log items are containers: their payload is { items: SerializedLog[] }
|
|
102
|
+
var logs = (payload && payload.items) || [];
|
|
103
|
+
logs.forEach(function (log) { return testkit.logs().push((0, transformers_1.transformLog)(log)); });
|
|
104
|
+
}
|
|
105
|
+
});
|
|
38
106
|
}
|
|
39
107
|
exports.handleEnvelopeRequestData = handleEnvelopeRequestData;
|
|
40
108
|
//# sourceMappingURL=parsers.js.map
|
package/dist/parsers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentryTransport.d.ts","sourceRoot":"","sources":["../src/sentryTransport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sentryTransport.d.ts","sourceRoot":"","sources":["../src/sentryTransport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAmD3D"}
|
package/dist/sentryTransport.js
CHANGED
|
@@ -29,6 +29,11 @@ function createSentryTransport(testkit) {
|
|
|
29
29
|
else if (headers.type === 'event') {
|
|
30
30
|
testkit.reports().push((0, transformers_1.transformReport)(data));
|
|
31
31
|
}
|
|
32
|
+
else if (headers.type === 'log') {
|
|
33
|
+
// Log items are containers: their payload is { items: SerializedLog[] }
|
|
34
|
+
var logs = (data && data.items) || [];
|
|
35
|
+
logs.forEach(function (log) { return testkit.logs().push((0, transformers_1.transformLog)(log)); });
|
|
36
|
+
}
|
|
32
37
|
});
|
|
33
38
|
return Promise.resolve();
|
|
34
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentryTransport.js","sourceRoot":"","sources":["../src/sentryTransport.ts"],"names":[],"mappings":";;;AACA,+
|
|
1
|
+
{"version":3,"file":"sentryTransport.js","sourceRoot":"","sources":["../src/sentryTransport.ts"],"names":[],"mappings":";;;AACA,+CAIuB;AAGvB,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO;QACL,8BAA8B;QAC9B,IAAM,SAAS,GAAG,UAAS,KAAY;YACrC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;gBAChC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAA,mCAAoB,EAAC,KAAK,CAAC,CAAC,CAAA;aACzD;iBAAM;gBACL,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAA,8BAAe,EAAC,KAAK,CAAC,CAAC,CAAA;aAC/C;YAED,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE,SAAS;gBACjB,KAAK,OAAA;aACN,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,4BAA4B;QAC5B,IAAM,IAAI,GAAG,UAAS,QAAa;YACxB,IAAA,KAAK,GAAI,QAAQ,GAAZ,CAAY;YAE1B,mBAAmB;YACnB,KAAK,CAAC,OAAO,CAAC,UAAC,EAAe;oBAAd,OAAO,QAAA,EAAE,IAAI,QAAA;gBAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;oBAClC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAA,mCAAoB,EAAC,IAAI,CAAC,CAAC,CAAA;iBACxD;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;oBACnC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,CAAA;iBAC9C;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;oBACjC,wEAAwE;oBACxE,IAAM,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;oBACvC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAA,2BAAY,EAAC,GAAG,CAAC,CAAC,EAAtC,CAAsC,CAAC,CAAA;iBACnE;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC,CAAA;QAED,IAAM,KAAK,GAAG;YACZ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC,CAAA;QAED,OAAO;YACL,6DAA6D;YAC7D,YAAY,EAAE,SAAS;YACvB,SAAS,WAAA;YACT,IAAI,MAAA;YAEJ,6CAA6C;YAC7C,KAAK,OAAA;YACL,KAAK,EAAE,KAAK,EAAE,qBAAqB;SACpC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAnDD,sDAmDC"}
|
package/dist/testkit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testkit.d.ts","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testkit.d.ts","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4B,OAAO,EAAe,MAAM,SAAS,CAAA;AAsCxE,wBAAgB,aAAa,IAAI,OAAO,CAuHvC"}
|
package/dist/testkit.js
CHANGED
|
@@ -6,11 +6,35 @@ var transformers_1 = require("./transformers");
|
|
|
6
6
|
function getException(report) {
|
|
7
7
|
return report.error;
|
|
8
8
|
}
|
|
9
|
+
function matches(value, matcher) {
|
|
10
|
+
return typeof matcher === 'string'
|
|
11
|
+
? value === matcher
|
|
12
|
+
: value !== undefined && matcher.test(value);
|
|
13
|
+
}
|
|
14
|
+
function waitFor(kind, getItems, count, _a) {
|
|
15
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.timeout, timeout = _c === void 0 ? 1000 : _c;
|
|
16
|
+
return new Promise(function (resolve, reject) {
|
|
17
|
+
var startedAt = Date.now();
|
|
18
|
+
var check = function () {
|
|
19
|
+
var items = getItems();
|
|
20
|
+
if (items.length >= count) {
|
|
21
|
+
resolve(items);
|
|
22
|
+
}
|
|
23
|
+
else if (Date.now() - startedAt >= timeout) {
|
|
24
|
+
reject(new Error("Expected at least ".concat(count, " ").concat(kind, " within ").concat(timeout, "ms, but only ").concat(items.length, " were captured")));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
setTimeout(check, 10);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
check();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
9
33
|
function createTestkit() {
|
|
10
34
|
var reports = [];
|
|
11
35
|
var transactions = [];
|
|
12
|
-
var
|
|
13
|
-
var
|
|
36
|
+
var logs = [];
|
|
37
|
+
var createRequestHandler = function (baseUrl) { return function (request) {
|
|
14
38
|
var url = request.url();
|
|
15
39
|
if (!url.startsWith(baseUrl)) {
|
|
16
40
|
return;
|
|
@@ -20,35 +44,61 @@ function createTestkit() {
|
|
|
20
44
|
reports.push((0, transformers_1.transformReport)(JSON.parse(request.postData())));
|
|
21
45
|
}
|
|
22
46
|
if (/\/api\/[0-9]*\/envelope/.test(path)) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
(0, parsers_1.parseEnvelope)(request.postData()).forEach(function (_a) {
|
|
48
|
+
var header = _a.header, payload = _a.payload;
|
|
49
|
+
if (header.type === 'transaction') {
|
|
50
|
+
transactions.push((0, transformers_1.transformTransaction)(payload));
|
|
51
|
+
}
|
|
52
|
+
else if (header.type === 'event') {
|
|
53
|
+
reports.push((0, transformers_1.transformReport)(payload));
|
|
54
|
+
}
|
|
55
|
+
else if (header.type === 'log') {
|
|
56
|
+
var items = (payload && payload.items) || [];
|
|
57
|
+
items.forEach(function (log) { return logs.push((0, transformers_1.transformLog)(log)); });
|
|
58
|
+
}
|
|
59
|
+
});
|
|
30
60
|
}
|
|
31
61
|
}; };
|
|
32
|
-
|
|
33
|
-
|
|
62
|
+
// Puppeteer and Playwright expose the same request surface:
|
|
63
|
+
// page.on/off('request') with request.url() and request.postData()
|
|
64
|
+
var createPageListener = function () {
|
|
65
|
+
var handler = null;
|
|
66
|
+
return {
|
|
34
67
|
startListening: function (page, baseUrl) {
|
|
35
68
|
if (baseUrl === void 0) { baseUrl = 'https://sentry.io'; }
|
|
36
|
-
|
|
37
|
-
page.on('request',
|
|
69
|
+
handler = createRequestHandler(baseUrl);
|
|
70
|
+
page.on('request', handler);
|
|
38
71
|
},
|
|
39
72
|
stopListening: function (page) {
|
|
40
|
-
page.off('request',
|
|
73
|
+
page.off('request', handler);
|
|
41
74
|
},
|
|
42
|
-
}
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
puppeteer: createPageListener(),
|
|
79
|
+
playwright: createPageListener(),
|
|
43
80
|
reports: function () {
|
|
44
81
|
return reports;
|
|
45
82
|
},
|
|
46
83
|
transactions: function () {
|
|
47
84
|
return transactions;
|
|
48
85
|
},
|
|
86
|
+
logs: function () {
|
|
87
|
+
return logs;
|
|
88
|
+
},
|
|
89
|
+
waitForReports: function (count, options) {
|
|
90
|
+
return waitFor('reports', function () { return reports; }, count, options);
|
|
91
|
+
},
|
|
92
|
+
waitForTransactions: function (count, options) {
|
|
93
|
+
return waitFor('transactions', function () { return transactions; }, count, options);
|
|
94
|
+
},
|
|
95
|
+
waitForLogs: function (count, options) {
|
|
96
|
+
return waitFor('logs', function () { return logs; }, count, options);
|
|
97
|
+
},
|
|
49
98
|
reset: function () {
|
|
50
99
|
reports = [];
|
|
51
100
|
transactions = [];
|
|
101
|
+
logs = [];
|
|
52
102
|
},
|
|
53
103
|
getExceptionAt: function (index) {
|
|
54
104
|
if (reports[index]) {
|
|
@@ -64,6 +114,18 @@ function createTestkit() {
|
|
|
64
114
|
return err && err.name === e.name && err.message === e.message;
|
|
65
115
|
});
|
|
66
116
|
},
|
|
117
|
+
findReportByMessage: function (message) {
|
|
118
|
+
return reports.find(function (r) { var _a; return matches(r.message, message) || matches((_a = r.error) === null || _a === void 0 ? void 0 : _a.message, message); });
|
|
119
|
+
},
|
|
120
|
+
findTransaction: function (name) {
|
|
121
|
+
return transactions.find(function (t) { return matches(t.name, name); });
|
|
122
|
+
},
|
|
123
|
+
reportsWithTag: function (key, value) {
|
|
124
|
+
return reports.filter(function (r) { return key in r.tags && (value === undefined || r.tags[key] === value); });
|
|
125
|
+
},
|
|
126
|
+
transactionsWithTag: function (key, value) {
|
|
127
|
+
return transactions.filter(function (t) { return key in t.tags && (value === undefined || t.tags[key] === value); });
|
|
128
|
+
},
|
|
67
129
|
isExist: function (e) {
|
|
68
130
|
return this.findReport(e) !== undefined;
|
|
69
131
|
},
|
package/dist/testkit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testkit.js","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"testkit.js","sourceRoot":"","sources":["../src/testkit.ts"],"names":[],"mappings":"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"}
|
package/dist/transformers.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Report, Transaction } from './types';
|
|
1
|
+
import { Log, Report, Transaction } from './types';
|
|
2
2
|
export declare function transformReport(report: any): Report;
|
|
3
|
+
export declare function transformLog(log: any): Log;
|
|
3
4
|
export declare function transformTransaction(item: any): Transaction;
|
|
4
5
|
//# sourceMappingURL=transformers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,SAAS,CAAA;AAE/D,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAuBnD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAoB1C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,CAgB3D"}
|
package/dist/transformers.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transformTransaction = exports.transformReport = void 0;
|
|
3
|
+
exports.transformTransaction = exports.transformLog = exports.transformReport = void 0;
|
|
4
4
|
function transformReport(report) {
|
|
5
|
+
var _a, _b, _c;
|
|
5
6
|
var exception = report.exception && report.exception.values && report.exception.values[0];
|
|
6
7
|
var error = exception
|
|
7
8
|
? {
|
|
@@ -19,10 +20,32 @@ function transformReport(report) {
|
|
|
19
20
|
release: report.release,
|
|
20
21
|
user: report.user,
|
|
21
22
|
tags: report.tags || {},
|
|
23
|
+
flags: (_c = (_b = (_a = report.contexts) === null || _a === void 0 ? void 0 : _a.flags) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : [],
|
|
22
24
|
originalReport: report,
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
exports.transformReport = transformReport;
|
|
28
|
+
function transformLog(log) {
|
|
29
|
+
// Serialized log attributes are typed wrappers, e.g. { value: 42, type: 'integer' }
|
|
30
|
+
var attributes = {};
|
|
31
|
+
Object.keys(log.attributes || {}).forEach(function (key) {
|
|
32
|
+
var attribute = log.attributes[key];
|
|
33
|
+
attributes[key] =
|
|
34
|
+
attribute && typeof attribute === 'object' && 'value' in attribute
|
|
35
|
+
? attribute.value
|
|
36
|
+
: attribute;
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
level: log.level,
|
|
40
|
+
message: log.body,
|
|
41
|
+
attributes: attributes,
|
|
42
|
+
timestamp: log.timestamp,
|
|
43
|
+
traceId: log.trace_id,
|
|
44
|
+
severityNumber: log.severity_number,
|
|
45
|
+
originalLog: log,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.transformLog = transformLog;
|
|
26
49
|
function transformTransaction(item) {
|
|
27
50
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
28
51
|
return {
|
package/dist/transformers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":";;;AAEA,SAAgB,eAAe,CAAC,MAAW
|
|
1
|
+
{"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
|