donobu 5.61.3 → 5.63.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/dist/cli/donobu-cli.js +2 -1
- package/dist/esm/cli/donobu-cli.js +2 -1
- package/dist/esm/lib/test/testExtension.js +7 -4
- package/dist/esm/lib/test/utils/triageTestFailure.d.ts +0 -7
- package/dist/esm/lib/test/utils/triageTestFailure.js +2 -13
- package/dist/esm/main.d.ts +2 -1
- package/dist/esm/main.js +4 -1
- package/dist/esm/managers/DonobuFlowsManager.d.ts +1 -1
- package/dist/esm/managers/DonobuFlowsManager.js +4 -3
- package/dist/esm/persistence/flows/FlowsPersistence.d.ts +40 -0
- package/dist/esm/persistence/flows/FlowsPersistence.js +41 -0
- package/dist/esm/persistence/flows/FlowsPersistenceDonobuApi.d.ts +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceDonobuApi.js +3 -3
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts +1 -3
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js +6 -7
- package/dist/esm/utils/Logger.d.ts +22 -0
- package/dist/esm/utils/Logger.js +39 -11
- package/dist/esm/utils/PageLogListeners.d.ts +30 -10
- package/dist/esm/utils/PageLogListeners.js +37 -21
- package/dist/lib/test/testExtension.js +7 -4
- package/dist/lib/test/utils/triageTestFailure.d.ts +0 -7
- package/dist/lib/test/utils/triageTestFailure.js +2 -13
- package/dist/main.d.ts +2 -1
- package/dist/main.js +4 -1
- package/dist/managers/DonobuFlowsManager.d.ts +1 -1
- package/dist/managers/DonobuFlowsManager.js +4 -3
- package/dist/persistence/flows/FlowsPersistence.d.ts +40 -0
- package/dist/persistence/flows/FlowsPersistence.js +41 -0
- package/dist/persistence/flows/FlowsPersistenceDonobuApi.d.ts +1 -1
- package/dist/persistence/flows/FlowsPersistenceDonobuApi.js +3 -3
- package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts +1 -3
- package/dist/persistence/flows/FlowsPersistenceSqlite.js +6 -7
- package/dist/utils/Logger.d.ts +22 -0
- package/dist/utils/Logger.js +39 -11
- package/dist/utils/PageLogListeners.d.ts +30 -10
- package/dist/utils/PageLogListeners.js +37 -21
- package/package.json +1 -1
|
@@ -3,18 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerPageLogListeners = registerPageLogListeners;
|
|
4
4
|
const Logger_1 = require("./Logger");
|
|
5
5
|
/**
|
|
6
|
-
* Registers Playwright page event listeners that route browser console
|
|
7
|
-
* and network request/response data to the {@link browserLogger}
|
|
8
|
-
* {@link networkLogger} Winston loggers
|
|
9
|
-
* {@link FlowLogBufferTransport}
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* Registers Playwright page event listeners that route browser console
|
|
7
|
+
* messages and network request/response data to the {@link browserLogger}
|
|
8
|
+
* and {@link networkLogger} Winston loggers, whose
|
|
9
|
+
* {@link FlowLogBufferTransport} captures entries into a per-flow log
|
|
10
|
+
* buffer. Called from both {@link WebTargetInspector.handleNewPage}
|
|
11
|
+
* (Studio-launched flows) and the Playwright test extension fixture.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
* (
|
|
15
|
-
*
|
|
13
|
+
* By default, entries are routed by the ambient AsyncLocalStorage logging
|
|
14
|
+
* context (or the process-local fallback). Pass `opts` to bind this page's
|
|
15
|
+
* listeners to an explicit flow + buffer instead. That binding is required
|
|
16
|
+
* whenever one test drives multiple pages with distinct flows (e.g.
|
|
17
|
+
* multi-user collab tests): the ambient context belongs to the primary
|
|
18
|
+
* page's flow, so an unbound secondary page would leak its entries —
|
|
19
|
+
* stamped with the wrong flowId — into the primary flow's buffer.
|
|
20
|
+
*
|
|
21
|
+
* The binding is stamped onto each entry's meta at emit time (see
|
|
22
|
+
* {@link FLOW_LOG_ROUTING}) rather than scoped via AsyncLocalStorage:
|
|
23
|
+
* winston defers format + transport delivery under backpressure, so
|
|
24
|
+
* ALS-based scoping would resolve against whatever context is live at drain
|
|
25
|
+
* time and silently misroute entries during synchronous log bursts.
|
|
16
26
|
*/
|
|
17
|
-
function registerPageLogListeners(page) {
|
|
27
|
+
function registerPageLogListeners(page, opts) {
|
|
28
|
+
const routing = opts
|
|
29
|
+
? { [Logger_1.FLOW_LOG_ROUTING]: { flowId: opts.flowId, logBuffer: opts.logBuffer } }
|
|
30
|
+
: undefined;
|
|
31
|
+
// Merge the routing stamp into a log call's meta. Leaves the unbound
|
|
32
|
+
// call path byte-identical (meta stays undefined when both are absent).
|
|
33
|
+
const stamp = (meta) => routing ? { ...meta, ...routing } : meta;
|
|
18
34
|
page.on('console', (msg) => {
|
|
19
35
|
const { url, lineNumber, columnNumber } = msg.location();
|
|
20
36
|
const hasSourceLocation = lineNumber !== 0 || columnNumber !== 0;
|
|
@@ -25,24 +41,24 @@ function registerPageLogListeners(page) {
|
|
|
25
41
|
: undefined;
|
|
26
42
|
switch (msg.type()) {
|
|
27
43
|
case 'error':
|
|
28
|
-
Logger_1.browserLogger.error(msg.text(), meta);
|
|
44
|
+
Logger_1.browserLogger.error(msg.text(), stamp(meta));
|
|
29
45
|
break;
|
|
30
46
|
case 'warning':
|
|
31
|
-
Logger_1.browserLogger.warn(msg.text(), meta);
|
|
47
|
+
Logger_1.browserLogger.warn(msg.text(), stamp(meta));
|
|
32
48
|
break;
|
|
33
49
|
case 'debug':
|
|
34
|
-
Logger_1.browserLogger.debug(msg.text(), meta);
|
|
50
|
+
Logger_1.browserLogger.debug(msg.text(), stamp(meta));
|
|
35
51
|
break;
|
|
36
52
|
default:
|
|
37
|
-
Logger_1.browserLogger.info(msg.text(), meta);
|
|
53
|
+
Logger_1.browserLogger.info(msg.text(), stamp(meta));
|
|
38
54
|
break;
|
|
39
55
|
}
|
|
40
56
|
});
|
|
41
57
|
page.on('pageerror', (error) => {
|
|
42
|
-
Logger_1.browserLogger.error(error.message, {
|
|
58
|
+
Logger_1.browserLogger.error(error.message, stamp({
|
|
43
59
|
stack: error.stack,
|
|
44
60
|
url: page.url(),
|
|
45
|
-
});
|
|
61
|
+
}));
|
|
46
62
|
});
|
|
47
63
|
// Fallback timing: track request start times keyed by the Request object
|
|
48
64
|
// itself (via WeakMap) so concurrent requests to the same URL don't collide.
|
|
@@ -71,24 +87,24 @@ function registerPageLogListeners(page) {
|
|
|
71
87
|
resourceType: request.resourceType(),
|
|
72
88
|
};
|
|
73
89
|
if (status >= 500) {
|
|
74
|
-
Logger_1.networkLogger.error(request.url(), meta);
|
|
90
|
+
Logger_1.networkLogger.error(request.url(), stamp(meta));
|
|
75
91
|
}
|
|
76
92
|
else if (status >= 400) {
|
|
77
|
-
Logger_1.networkLogger.warn(request.url(), meta);
|
|
93
|
+
Logger_1.networkLogger.warn(request.url(), stamp(meta));
|
|
78
94
|
}
|
|
79
95
|
else {
|
|
80
|
-
Logger_1.networkLogger.info(request.url(), meta);
|
|
96
|
+
Logger_1.networkLogger.info(request.url(), stamp(meta));
|
|
81
97
|
}
|
|
82
98
|
});
|
|
83
99
|
page.on('requestfailed', (request) => {
|
|
84
100
|
const duration = getDuration(request);
|
|
85
|
-
Logger_1.networkLogger.error(`${request.url()} FAILED: ${request.failure()?.errorText}`, {
|
|
101
|
+
Logger_1.networkLogger.error(`${request.url()} FAILED: ${request.failure()?.errorText}`, stamp({
|
|
86
102
|
method: request.method(),
|
|
87
103
|
url: request.url(),
|
|
88
104
|
resourceType: request.resourceType(),
|
|
89
105
|
failureReason: request.failure()?.errorText,
|
|
90
106
|
duration,
|
|
91
|
-
});
|
|
107
|
+
}));
|
|
92
108
|
});
|
|
93
109
|
}
|
|
94
110
|
//# sourceMappingURL=PageLogListeners.js.map
|