@checkly/playwright-core 1.51.17 → 1.51.18-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/checkly/index.js +16 -0
- package/lib/checkly/secretsFilter.js +66 -1
- package/lib/client/fetch.js +10 -2
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/protocolFormatter.js +68 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +320 -0
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/vite/traceViewer/sw.bundle.js +3 -7888
- package/package.json +2 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _secretsFilter = require("./secretsFilter");
|
|
7
|
+
Object.keys(_secretsFilter).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _secretsFilter[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _secretsFilter[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -3,13 +3,77 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.secretsFilter = void 0;
|
|
6
|
+
exports.secretsFilter = exports.addSecret = void 0;
|
|
7
|
+
var diagnostics_channel = _interopRequireWildcard(require("node:diagnostics_channel"));
|
|
7
8
|
var _escapeRegExp = _interopRequireDefault(require("./escapeRegExp"));
|
|
8
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
9
12
|
/* Copyright Checkly
|
|
10
13
|
*/
|
|
11
14
|
|
|
12
15
|
const IdentityFunction = s => s;
|
|
16
|
+
const dynamicallyAddedSecrets = new Set();
|
|
17
|
+
let cachedAuthorizationHeaderSecrets = null;
|
|
18
|
+
const extractAuthorizationHeaderValue = authorizationHeaderValue => {
|
|
19
|
+
const spaceIndex = authorizationHeaderValue.indexOf(' ');
|
|
20
|
+
if (spaceIndex === -1) return authorizationHeaderValue;
|
|
21
|
+
return authorizationHeaderValue.slice(spaceIndex + 1);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* We use diagnostics_channel.subscribe to intercept HTTP(S) requests not made through
|
|
26
|
+
* Playwright's request fixture. The request fixture outputs the Authorization header
|
|
27
|
+
* value before executing the request, but direct Node.js HTTP calls bypass this mechanism.
|
|
28
|
+
* By subscribing to these diagnostic channels, we can capture authorization secrets from
|
|
29
|
+
* all HTTP requests made in the test environment.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
// For http/https
|
|
33
|
+
diagnostics_channel.subscribe('http.client.request.start', message => {
|
|
34
|
+
const {
|
|
35
|
+
request
|
|
36
|
+
} = message;
|
|
37
|
+
const auth = request.getHeader('authorization');
|
|
38
|
+
if (auth) {
|
|
39
|
+
dynamicallyAddedSecrets.add(extractAuthorizationHeaderValue(auth));
|
|
40
|
+
cachedAuthorizationHeaderSecrets = new RegExp(Array.from(dynamicallyAddedSecrets).map(_escapeRegExp.default).join('|'), 'g');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// For undici (powers global fetch in Node 18+)
|
|
45
|
+
diagnostics_channel.subscribe('undici:request:create', message => {
|
|
46
|
+
var _request$headers;
|
|
47
|
+
const {
|
|
48
|
+
request
|
|
49
|
+
} = message;
|
|
50
|
+
const auth = (_request$headers = request.headers) === null || _request$headers === void 0 ? void 0 : _request$headers.authorization;
|
|
51
|
+
if (auth) {
|
|
52
|
+
dynamicallyAddedSecrets.add(extractAuthorizationHeaderValue(auth));
|
|
53
|
+
cachedAuthorizationHeaderSecrets = new RegExp(Array.from(dynamicallyAddedSecrets).map(_escapeRegExp.default).join('|'), 'g');
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const addSecret = secret => {
|
|
57
|
+
try {
|
|
58
|
+
if (!secret || typeof secret !== 'string') return;
|
|
59
|
+
const secretValue = extractAuthorizationHeaderValue(secret);
|
|
60
|
+
if (!secretValue) return;
|
|
61
|
+
dynamicallyAddedSecrets.add(secretValue);
|
|
62
|
+
const escapedSecrets = Array.from(dynamicallyAddedSecrets).map(s => {
|
|
63
|
+
try {
|
|
64
|
+
return (0, _escapeRegExp.default)(s);
|
|
65
|
+
} catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}).filter(Boolean);
|
|
69
|
+
if (escapedSecrets.length > 0) cachedAuthorizationHeaderSecrets = new RegExp(escapedSecrets.join('|'), 'g');
|
|
70
|
+
console.log(`[CHECKLY_RUNTIME_SECRET]${secretValue}[/CHECKLY_RUNTIME_SECRET]`);
|
|
71
|
+
} catch (error) {
|
|
72
|
+
// Silently fail to avoid breaking the application
|
|
73
|
+
// Error could be from RegExp construction or console.log
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.addSecret = addSecret;
|
|
13
77
|
const secretsFilter = () => {
|
|
14
78
|
const disabled = process.env['CHECKLY_INTERNAL_ENABLE_PATCHED_TRACING'] !== 'true';
|
|
15
79
|
if (disabled) return IdentityFunction;
|
|
@@ -40,6 +104,7 @@ const secretsFilter = () => {
|
|
|
40
104
|
|
|
41
105
|
// Scrub secrets
|
|
42
106
|
if (cachedRegex) filtered = filtered.replaceAll(cachedRegex, '*********');
|
|
107
|
+
if (cachedAuthorizationHeaderSecrets) filtered = filtered.replaceAll(cachedAuthorizationHeaderSecrets, '*********');
|
|
43
108
|
return filtered;
|
|
44
109
|
};
|
|
45
110
|
};
|
package/lib/client/fetch.js
CHANGED
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.APIResponse = exports.APIRequestContext = exports.APIRequest = void 0;
|
|
7
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
7
9
|
var _browserContext = require("./browserContext");
|
|
8
10
|
var _channelOwner = require("./channelOwner");
|
|
9
11
|
var _errors = require("./errors");
|
|
@@ -13,9 +15,8 @@ var _assert = require("../utils/isomorphic/assert");
|
|
|
13
15
|
var _fileUtils = require("./fileUtils");
|
|
14
16
|
var _headers = require("../utils/isomorphic/headers");
|
|
15
17
|
var _rtti = require("../utils/isomorphic/rtti");
|
|
16
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
17
18
|
var _fetch = require("../checkly/fetch");
|
|
18
|
-
var
|
|
19
|
+
var _secretsFilter = require("../checkly/secretsFilter");
|
|
19
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -218,6 +219,13 @@ class APIRequestContext extends _channelOwner.ChannelOwner {
|
|
|
218
219
|
const fixtures = {
|
|
219
220
|
__testHookLookup: options.__testHookLookup
|
|
220
221
|
};
|
|
222
|
+
|
|
223
|
+
// [Checkly] We need to parse the headers in case there is the Authorization one.
|
|
224
|
+
for (const header of headers || []) {
|
|
225
|
+
if (header.name.toLowerCase() === 'authorization') (0, _secretsFilter.addSecret)(header.value);
|
|
226
|
+
}
|
|
227
|
+
// [/Checkly]
|
|
228
|
+
|
|
221
229
|
const result = await this._channel.fetch({
|
|
222
230
|
url,
|
|
223
231
|
params: typeof options.params === 'object' ? objectToArray(options.params) : undefined,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var bidiCommands_d_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(bidiCommands_d_exports);
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2024 Google Inc.
|
|
20
|
+
* Modifications copyright (c) Microsoft Corporation.
|
|
21
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
22
|
+
*/
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var bidiProtocolCore_exports = {};
|
|
20
|
+
__export(bidiProtocolCore_exports, {
|
|
21
|
+
BrowsingContext: () => BrowsingContext,
|
|
22
|
+
ErrorCode: () => ErrorCode,
|
|
23
|
+
Input: () => Input,
|
|
24
|
+
Log: () => Log,
|
|
25
|
+
Network: () => Network,
|
|
26
|
+
Script: () => Script,
|
|
27
|
+
Session: () => Session
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(bidiProtocolCore_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2024 Google Inc.
|
|
33
|
+
* Modifications copyright (c) Microsoft Corporation.
|
|
34
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
35
|
+
*/
|
|
36
|
+
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
|
|
37
|
+
ErrorCode2["InvalidArgument"] = "invalid argument";
|
|
38
|
+
ErrorCode2["InvalidSelector"] = "invalid selector";
|
|
39
|
+
ErrorCode2["InvalidSessionId"] = "invalid session id";
|
|
40
|
+
ErrorCode2["InvalidWebExtension"] = "invalid web extension";
|
|
41
|
+
ErrorCode2["MoveTargetOutOfBounds"] = "move target out of bounds";
|
|
42
|
+
ErrorCode2["NoSuchAlert"] = "no such alert";
|
|
43
|
+
ErrorCode2["NoSuchElement"] = "no such element";
|
|
44
|
+
ErrorCode2["NoSuchFrame"] = "no such frame";
|
|
45
|
+
ErrorCode2["NoSuchHandle"] = "no such handle";
|
|
46
|
+
ErrorCode2["NoSuchHistoryEntry"] = "no such history entry";
|
|
47
|
+
ErrorCode2["NoSuchIntercept"] = "no such intercept";
|
|
48
|
+
ErrorCode2["NoSuchNode"] = "no such node";
|
|
49
|
+
ErrorCode2["NoSuchRequest"] = "no such request";
|
|
50
|
+
ErrorCode2["NoSuchScript"] = "no such script";
|
|
51
|
+
ErrorCode2["NoSuchStoragePartition"] = "no such storage partition";
|
|
52
|
+
ErrorCode2["NoSuchUserContext"] = "no such user context";
|
|
53
|
+
ErrorCode2["NoSuchWebExtension"] = "no such web extension";
|
|
54
|
+
ErrorCode2["SessionNotCreated"] = "session not created";
|
|
55
|
+
ErrorCode2["UnableToCaptureScreen"] = "unable to capture screen";
|
|
56
|
+
ErrorCode2["UnableToCloseBrowser"] = "unable to close browser";
|
|
57
|
+
ErrorCode2["UnableToSetCookie"] = "unable to set cookie";
|
|
58
|
+
ErrorCode2["UnableToSetFileInput"] = "unable to set file input";
|
|
59
|
+
ErrorCode2["UnderspecifiedStoragePartition"] = "underspecified storage partition";
|
|
60
|
+
ErrorCode2["UnknownCommand"] = "unknown command";
|
|
61
|
+
ErrorCode2["UnknownError"] = "unknown error";
|
|
62
|
+
ErrorCode2["UnsupportedOperation"] = "unsupported operation";
|
|
63
|
+
return ErrorCode2;
|
|
64
|
+
})(ErrorCode || {});
|
|
65
|
+
var Session;
|
|
66
|
+
((Session2) => {
|
|
67
|
+
let UserPromptHandlerType;
|
|
68
|
+
((UserPromptHandlerType2) => {
|
|
69
|
+
UserPromptHandlerType2["Accept"] = "accept";
|
|
70
|
+
UserPromptHandlerType2["Dismiss"] = "dismiss";
|
|
71
|
+
UserPromptHandlerType2["Ignore"] = "ignore";
|
|
72
|
+
})(UserPromptHandlerType = Session2.UserPromptHandlerType || (Session2.UserPromptHandlerType = {}));
|
|
73
|
+
})(Session || (Session = {}));
|
|
74
|
+
var BrowsingContext;
|
|
75
|
+
((BrowsingContext2) => {
|
|
76
|
+
let ReadinessState;
|
|
77
|
+
((ReadinessState2) => {
|
|
78
|
+
ReadinessState2["None"] = "none";
|
|
79
|
+
ReadinessState2["Interactive"] = "interactive";
|
|
80
|
+
ReadinessState2["Complete"] = "complete";
|
|
81
|
+
})(ReadinessState = BrowsingContext2.ReadinessState || (BrowsingContext2.ReadinessState = {}));
|
|
82
|
+
})(BrowsingContext || (BrowsingContext = {}));
|
|
83
|
+
((BrowsingContext2) => {
|
|
84
|
+
let UserPromptType;
|
|
85
|
+
((UserPromptType2) => {
|
|
86
|
+
UserPromptType2["Alert"] = "alert";
|
|
87
|
+
UserPromptType2["Beforeunload"] = "beforeunload";
|
|
88
|
+
UserPromptType2["Confirm"] = "confirm";
|
|
89
|
+
UserPromptType2["Prompt"] = "prompt";
|
|
90
|
+
})(UserPromptType = BrowsingContext2.UserPromptType || (BrowsingContext2.UserPromptType = {}));
|
|
91
|
+
})(BrowsingContext || (BrowsingContext = {}));
|
|
92
|
+
((BrowsingContext2) => {
|
|
93
|
+
let CreateType;
|
|
94
|
+
((CreateType2) => {
|
|
95
|
+
CreateType2["Tab"] = "tab";
|
|
96
|
+
CreateType2["Window"] = "window";
|
|
97
|
+
})(CreateType = BrowsingContext2.CreateType || (BrowsingContext2.CreateType = {}));
|
|
98
|
+
})(BrowsingContext || (BrowsingContext = {}));
|
|
99
|
+
var Network;
|
|
100
|
+
((Network2) => {
|
|
101
|
+
let SameSite;
|
|
102
|
+
((SameSite2) => {
|
|
103
|
+
SameSite2["Strict"] = "strict";
|
|
104
|
+
SameSite2["Lax"] = "lax";
|
|
105
|
+
SameSite2["None"] = "none";
|
|
106
|
+
})(SameSite = Network2.SameSite || (Network2.SameSite = {}));
|
|
107
|
+
})(Network || (Network = {}));
|
|
108
|
+
((Network2) => {
|
|
109
|
+
let InterceptPhase;
|
|
110
|
+
((InterceptPhase2) => {
|
|
111
|
+
InterceptPhase2["BeforeRequestSent"] = "beforeRequestSent";
|
|
112
|
+
InterceptPhase2["ResponseStarted"] = "responseStarted";
|
|
113
|
+
InterceptPhase2["AuthRequired"] = "authRequired";
|
|
114
|
+
})(InterceptPhase = Network2.InterceptPhase || (Network2.InterceptPhase = {}));
|
|
115
|
+
})(Network || (Network = {}));
|
|
116
|
+
var Script;
|
|
117
|
+
((Script2) => {
|
|
118
|
+
let ResultOwnership;
|
|
119
|
+
((ResultOwnership2) => {
|
|
120
|
+
ResultOwnership2["Root"] = "root";
|
|
121
|
+
ResultOwnership2["None"] = "none";
|
|
122
|
+
})(ResultOwnership = Script2.ResultOwnership || (Script2.ResultOwnership = {}));
|
|
123
|
+
})(Script || (Script = {}));
|
|
124
|
+
var Log;
|
|
125
|
+
((Log2) => {
|
|
126
|
+
let Level;
|
|
127
|
+
((Level2) => {
|
|
128
|
+
Level2["Debug"] = "debug";
|
|
129
|
+
Level2["Info"] = "info";
|
|
130
|
+
Level2["Warn"] = "warn";
|
|
131
|
+
Level2["Error"] = "error";
|
|
132
|
+
})(Level = Log2.Level || (Log2.Level = {}));
|
|
133
|
+
})(Log || (Log = {}));
|
|
134
|
+
var Input;
|
|
135
|
+
((Input2) => {
|
|
136
|
+
let PointerType;
|
|
137
|
+
((PointerType2) => {
|
|
138
|
+
PointerType2["Mouse"] = "mouse";
|
|
139
|
+
PointerType2["Pen"] = "pen";
|
|
140
|
+
PointerType2["Touch"] = "touch";
|
|
141
|
+
})(PointerType = Input2.PointerType || (Input2.PointerType = {}));
|
|
142
|
+
})(Input || (Input = {}));
|
|
143
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
144
|
+
0 && (module.exports = {
|
|
145
|
+
BrowsingContext,
|
|
146
|
+
ErrorCode,
|
|
147
|
+
Input,
|
|
148
|
+
Log,
|
|
149
|
+
Network,
|
|
150
|
+
Script,
|
|
151
|
+
Session
|
|
152
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var bidiProtocolPermissions_exports = {};
|
|
20
|
+
__export(bidiProtocolPermissions_exports, {
|
|
21
|
+
Permissions: () => Permissions
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(bidiProtocolPermissions_exports);
|
|
24
|
+
/**
|
|
25
|
+
* @license
|
|
26
|
+
* Copyright 2024 Google Inc.
|
|
27
|
+
* Modifications copyright (c) Microsoft Corporation.
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/
|
|
30
|
+
var Permissions;
|
|
31
|
+
((Permissions2) => {
|
|
32
|
+
let PermissionState;
|
|
33
|
+
((PermissionState2) => {
|
|
34
|
+
PermissionState2["Granted"] = "granted";
|
|
35
|
+
PermissionState2["Denied"] = "denied";
|
|
36
|
+
PermissionState2["Prompt"] = "prompt";
|
|
37
|
+
})(PermissionState = Permissions2.PermissionState || (Permissions2.PermissionState = {}));
|
|
38
|
+
})(Permissions || (Permissions = {}));
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
Permissions
|
|
42
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var protocol_d_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(protocol_d_exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var protocol_d_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(protocol_d_exports);
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var pageBinding_exports = {};
|
|
20
|
+
__export(pageBinding_exports, {
|
|
21
|
+
createPageBindingScript: () => createPageBindingScript,
|
|
22
|
+
deliverBindingResult: () => deliverBindingResult,
|
|
23
|
+
takeBindingHandle: () => takeBindingHandle
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(pageBinding_exports);
|
|
26
|
+
var import_builtins = require("../utils/isomorphic/builtins");
|
|
27
|
+
var import_utilityScriptSerializers = require("../utils/isomorphic/utilityScriptSerializers");
|
|
28
|
+
function addPageBinding(playwrightBinding, bindingName, needsHandle, utilityScriptSerializersFactory, builtins2) {
|
|
29
|
+
const { serializeAsCallArgument } = utilityScriptSerializersFactory(builtins2);
|
|
30
|
+
const binding = globalThis[playwrightBinding];
|
|
31
|
+
globalThis[bindingName] = (...args) => {
|
|
32
|
+
const me = globalThis[bindingName];
|
|
33
|
+
if (needsHandle && args.slice(1).some((arg) => arg !== void 0))
|
|
34
|
+
throw new Error(`exposeBindingHandle supports a single argument, ${args.length} received`);
|
|
35
|
+
let callbacks = me["callbacks"];
|
|
36
|
+
if (!callbacks) {
|
|
37
|
+
callbacks = new builtins2.Map();
|
|
38
|
+
me["callbacks"] = callbacks;
|
|
39
|
+
}
|
|
40
|
+
const seq = (me["lastSeq"] || 0) + 1;
|
|
41
|
+
me["lastSeq"] = seq;
|
|
42
|
+
let handles = me["handles"];
|
|
43
|
+
if (!handles) {
|
|
44
|
+
handles = new builtins2.Map();
|
|
45
|
+
me["handles"] = handles;
|
|
46
|
+
}
|
|
47
|
+
const promise = new Promise((resolve, reject) => callbacks.set(seq, { resolve, reject }));
|
|
48
|
+
let payload;
|
|
49
|
+
if (needsHandle) {
|
|
50
|
+
handles.set(seq, args[0]);
|
|
51
|
+
payload = { name: bindingName, seq };
|
|
52
|
+
} else {
|
|
53
|
+
const serializedArgs = [];
|
|
54
|
+
for (let i = 0; i < args.length; i++) {
|
|
55
|
+
serializedArgs[i] = serializeAsCallArgument(args[i], (v) => {
|
|
56
|
+
return { fallThrough: v };
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
payload = { name: bindingName, seq, serializedArgs };
|
|
60
|
+
}
|
|
61
|
+
binding(JSON.stringify(payload));
|
|
62
|
+
return promise;
|
|
63
|
+
};
|
|
64
|
+
globalThis[bindingName].__installed = true;
|
|
65
|
+
}
|
|
66
|
+
function takeBindingHandle(arg) {
|
|
67
|
+
const handles = globalThis[arg.name]["handles"];
|
|
68
|
+
const handle = handles.get(arg.seq);
|
|
69
|
+
handles.delete(arg.seq);
|
|
70
|
+
return handle;
|
|
71
|
+
}
|
|
72
|
+
function deliverBindingResult(arg) {
|
|
73
|
+
const callbacks = globalThis[arg.name]["callbacks"];
|
|
74
|
+
if ("error" in arg)
|
|
75
|
+
callbacks.get(arg.seq).reject(arg.error);
|
|
76
|
+
else
|
|
77
|
+
callbacks.get(arg.seq).resolve(arg.result);
|
|
78
|
+
callbacks.delete(arg.seq);
|
|
79
|
+
}
|
|
80
|
+
function createPageBindingScript(playwrightBinding, name, needsHandle) {
|
|
81
|
+
return `(${addPageBinding.toString()})(${JSON.stringify(playwrightBinding)}, ${JSON.stringify(name)}, ${needsHandle}, (${import_utilityScriptSerializers.source}), (${import_builtins.builtins})())`;
|
|
82
|
+
}
|
|
83
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
84
|
+
0 && (module.exports = {
|
|
85
|
+
createPageBindingScript,
|
|
86
|
+
deliverBindingResult,
|
|
87
|
+
takeBindingHandle
|
|
88
|
+
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var recorderSignalProcessor_exports = {};
|
|
20
|
+
__export(recorderSignalProcessor_exports, {
|
|
21
|
+
RecorderSignalProcessor: () => RecorderSignalProcessor
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(recorderSignalProcessor_exports);
|
|
24
|
+
var import_debug = require("../utils/debug");
|
|
25
|
+
var import_time = require("../../utils/isomorphic/time");
|
|
26
|
+
var import_recorderUtils = require("./recorderUtils");
|
|
27
|
+
class RecorderSignalProcessor {
|
|
28
|
+
constructor(actionSink) {
|
|
29
|
+
this._lastAction = null;
|
|
30
|
+
this._delegate = actionSink;
|
|
31
|
+
}
|
|
32
|
+
addAction(actionInContext) {
|
|
33
|
+
this._lastAction = actionInContext;
|
|
34
|
+
this._delegate.addAction(actionInContext);
|
|
35
|
+
}
|
|
36
|
+
signal(pageAlias, frame, signal) {
|
|
37
|
+
const timestamp = (0, import_time.monotonicTime)();
|
|
38
|
+
if (signal.name === "navigation" && frame._page.mainFrame() === frame) {
|
|
39
|
+
const lastAction = this._lastAction;
|
|
40
|
+
const signalThreshold = (0, import_debug.isUnderTest)() ? 500 : 5e3;
|
|
41
|
+
let generateGoto = false;
|
|
42
|
+
if (!lastAction)
|
|
43
|
+
generateGoto = true;
|
|
44
|
+
else if (lastAction.action.name !== "click" && lastAction.action.name !== "press" && lastAction.action.name !== "fill")
|
|
45
|
+
generateGoto = true;
|
|
46
|
+
else if (timestamp - lastAction.startTime > signalThreshold)
|
|
47
|
+
generateGoto = true;
|
|
48
|
+
if (generateGoto) {
|
|
49
|
+
this.addAction({
|
|
50
|
+
frame: {
|
|
51
|
+
pageGuid: frame._page.guid,
|
|
52
|
+
pageAlias,
|
|
53
|
+
framePath: []
|
|
54
|
+
},
|
|
55
|
+
action: {
|
|
56
|
+
name: "navigate",
|
|
57
|
+
url: frame.url(),
|
|
58
|
+
signals: []
|
|
59
|
+
},
|
|
60
|
+
startTime: timestamp,
|
|
61
|
+
endTime: timestamp
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
(0, import_recorderUtils.generateFrameSelector)(frame).then((framePath) => {
|
|
67
|
+
const signalInContext = {
|
|
68
|
+
frame: {
|
|
69
|
+
pageGuid: frame._page.guid,
|
|
70
|
+
pageAlias,
|
|
71
|
+
framePath
|
|
72
|
+
},
|
|
73
|
+
signal,
|
|
74
|
+
timestamp
|
|
75
|
+
};
|
|
76
|
+
this._delegate.addSignal(signalInContext);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
RecorderSignalProcessor
|
|
83
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var protocol_d_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(protocol_d_exports);
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var builtins_exports = {};
|
|
20
|
+
__export(builtins_exports, {
|
|
21
|
+
Date: () => Date,
|
|
22
|
+
Intl: () => Intl,
|
|
23
|
+
Map: () => Map,
|
|
24
|
+
Set: () => Set,
|
|
25
|
+
builtins: () => builtins,
|
|
26
|
+
cancelAnimationFrame: () => cancelAnimationFrame,
|
|
27
|
+
cancelIdleCallback: () => cancelIdleCallback,
|
|
28
|
+
clearInterval: () => clearInterval,
|
|
29
|
+
clearTimeout: () => clearTimeout,
|
|
30
|
+
performance: () => performance,
|
|
31
|
+
requestAnimationFrame: () => requestAnimationFrame,
|
|
32
|
+
requestIdleCallback: () => requestIdleCallback,
|
|
33
|
+
setInterval: () => setInterval,
|
|
34
|
+
setTimeout: () => setTimeout
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(builtins_exports);
|
|
37
|
+
function builtins(global) {
|
|
38
|
+
global = global ?? globalThis;
|
|
39
|
+
if (!global["__playwright_builtins__"]) {
|
|
40
|
+
const builtins2 = {
|
|
41
|
+
setTimeout: global.setTimeout?.bind(global),
|
|
42
|
+
clearTimeout: global.clearTimeout?.bind(global),
|
|
43
|
+
setInterval: global.setInterval?.bind(global),
|
|
44
|
+
clearInterval: global.clearInterval?.bind(global),
|
|
45
|
+
requestAnimationFrame: global.requestAnimationFrame?.bind(global),
|
|
46
|
+
cancelAnimationFrame: global.cancelAnimationFrame?.bind(global),
|
|
47
|
+
requestIdleCallback: global.requestIdleCallback?.bind(global),
|
|
48
|
+
cancelIdleCallback: global.cancelIdleCallback?.bind(global),
|
|
49
|
+
performance: global.performance,
|
|
50
|
+
eval: global.eval?.bind(global),
|
|
51
|
+
Intl: global.Intl,
|
|
52
|
+
Date: global.Date,
|
|
53
|
+
Map: global.Map,
|
|
54
|
+
Set: global.Set
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(global, "__playwright_builtins__", { value: builtins2, configurable: false, enumerable: false, writable: false });
|
|
57
|
+
}
|
|
58
|
+
return global["__playwright_builtins__"];
|
|
59
|
+
}
|
|
60
|
+
const instance = builtins();
|
|
61
|
+
const setTimeout = instance.setTimeout;
|
|
62
|
+
const clearTimeout = instance.clearTimeout;
|
|
63
|
+
const setInterval = instance.setInterval;
|
|
64
|
+
const clearInterval = instance.clearInterval;
|
|
65
|
+
const requestAnimationFrame = instance.requestAnimationFrame;
|
|
66
|
+
const cancelAnimationFrame = instance.cancelAnimationFrame;
|
|
67
|
+
const requestIdleCallback = instance.requestIdleCallback;
|
|
68
|
+
const cancelIdleCallback = instance.cancelIdleCallback;
|
|
69
|
+
const performance = instance.performance;
|
|
70
|
+
const Intl = instance.Intl;
|
|
71
|
+
const Date = instance.Date;
|
|
72
|
+
const Map = instance.Map;
|
|
73
|
+
const Set = instance.Set;
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
Date,
|
|
77
|
+
Intl,
|
|
78
|
+
Map,
|
|
79
|
+
Set,
|
|
80
|
+
builtins,
|
|
81
|
+
cancelAnimationFrame,
|
|
82
|
+
cancelIdleCallback,
|
|
83
|
+
clearInterval,
|
|
84
|
+
clearTimeout,
|
|
85
|
+
performance,
|
|
86
|
+
requestAnimationFrame,
|
|
87
|
+
requestIdleCallback,
|
|
88
|
+
setInterval,
|
|
89
|
+
setTimeout
|
|
90
|
+
});
|