@checkly/playwright-core 1.41.26 → 1.42.11
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/ThirdPartyNotices.txt +3 -3
- package/bin/reinstall_chrome_beta_win.ps1 +2 -1
- package/bin/reinstall_chrome_stable_win.ps1 +2 -1
- package/bin/reinstall_msedge_beta_win.ps1 +2 -1
- package/bin/reinstall_msedge_dev_win.ps1 +2 -1
- package/bin/reinstall_msedge_stable_win.ps1 +2 -1
- package/browsers.json +14 -15
- package/cli.js +2 -1
- package/lib/checkly/fetch.js +28 -1
- package/lib/cli/cli.js +2 -1
- package/lib/cli/driver.js +9 -1
- package/lib/cli/program.js +12 -4
- package/lib/client/browserContext.js +1 -1
- package/lib/client/channelOwner.js +1 -1
- package/lib/client/clientHelper.js +5 -1
- package/lib/client/connection.js +1 -1
- package/lib/client/consoleMessage.js +1 -1
- package/lib/client/electron.js +3 -0
- package/lib/client/events.js +1 -0
- package/lib/client/frame.js +2 -1
- package/lib/client/harRouter.js +7 -1
- package/lib/client/page.js +25 -6
- package/lib/common/debugLogger.js +3 -1
- package/lib/common/socksProxy.js +1 -1
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/recorderSource.js +1 -1
- package/lib/outofprocess.js +1 -1
- package/lib/protocol/validator.js +60 -30
- package/lib/remote/playwrightConnection.js +1 -1
- package/lib/remote/playwrightServer.js +72 -166
- package/lib/server/android/android.js +1 -1
- package/lib/server/browserType.js +2 -2
- package/lib/server/chromium/chromium.js +5 -4
- package/lib/server/chromium/crConnection.js +1 -1
- package/lib/server/chromium/crNetworkManager.js +1 -3
- package/lib/server/chromium/crPage.js +45 -2
- package/lib/server/chromium/crPdf.js +8 -2
- package/lib/server/console.js +1 -3
- package/lib/server/debugController.js +0 -3
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dispatchers/browserContextDispatcher.js +3 -2
- package/lib/server/dispatchers/dispatcher.js +9 -10
- package/lib/server/dispatchers/electronDispatcher.js +13 -0
- package/lib/server/dispatchers/frameDispatcher.js +0 -6
- package/lib/server/dispatchers/networkDispatchers.js +1 -0
- package/lib/server/dispatchers/pageDispatcher.js +14 -10
- package/lib/server/dom.js +130 -167
- package/lib/server/electron/electron.js +38 -12
- package/lib/server/electron/loader.js +4 -2
- package/lib/server/fetch.js +1 -0
- package/lib/server/firefox/ffAccessibility.js +2 -1
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffPage.js +1 -1
- package/lib/server/frames.js +39 -20
- package/lib/server/helper.js +1 -1
- package/lib/server/page.js +49 -5
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +1 -1
- package/lib/server/progress.js +3 -11
- package/lib/server/recorder/csharp.js +1 -1
- package/lib/server/recorder/java.js +36 -4
- package/lib/server/recorder.js +2 -2
- package/lib/server/registry/browserFetcher.js +1 -1
- package/lib/server/registry/dependencies.js +5 -4
- package/lib/server/registry/index.js +48 -30
- package/lib/server/registry/nativeDeps.js +0 -94
- package/lib/server/trace/recorder/snapshotter.js +1 -1
- package/lib/server/trace/recorder/tracing.js +5 -2
- package/lib/server/trace/viewer/traceViewer.js +1 -1
- package/lib/server/transport.js +4 -2
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkPage.js +2 -2
- package/lib/utils/comparators.js +4 -4
- package/lib/utils/fileUtils.js +4 -0
- package/lib/utils/hostPlatform.js +1 -1
- package/lib/utils/index.js +33 -0
- package/lib/utils/isomorphic/locatorParser.js +6 -4
- package/lib/utils/isomorphic/stringUtils.js +5 -0
- package/lib/utils/network.js +32 -0
- package/lib/utils/processLauncher.js +7 -0
- package/lib/utils/rtti.js +7 -4
- package/lib/utils/wsServer.js +5 -3
- package/lib/utilsBundleImpl/index.js +4 -4
- package/lib/vite/htmlReport/index.html +11 -11
- package/lib/vite/{traceViewer/assets/codeMirrorModule-GJA8DRmd.js → recorder/assets/codeMirrorModule-W69B4LBB.js} +1 -1
- package/lib/vite/recorder/assets/{index-yg8ypzl6.js → index-Ly3PcVUb.js} +2 -2
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-2ImvVqMb.js → codeMirrorModule-BK3t1EEu.js} +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-cc2329e4.js +15593 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-d725feea.js +15586 -0
- package/lib/vite/traceViewer/assets/{codeMirrorModule-fqJB1XDu.js → codeMirrorModule-e5a15eec.js} +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-kT-uS7F4.js +15592 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-rcsC5no8.js +15592 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-yboVpgC0.js +15592 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-ytMY1awF.js +15585 -0
- package/lib/vite/traceViewer/assets/wsPort-54626118.js +18361 -0
- package/lib/vite/traceViewer/assets/{wsPort-uVqol1LI.js → wsPort-964mA9MZ.js} +18 -18
- package/lib/vite/traceViewer/assets/wsPort-CAXygIGt.js +18540 -0
- package/lib/vite/traceViewer/assets/wsPort-a88a6a12.js +18361 -0
- package/lib/vite/traceViewer/assets/{wsPort-722747dc.js → wsPort-cb764cde.js} +1 -1
- package/lib/vite/traceViewer/assets/wsPort-lTlmZhJd.js +18564 -0
- package/lib/vite/traceViewer/assets/wsPort-xpIMLVfx.js +18540 -0
- package/lib/vite/traceViewer/assets/wsPort-yM58htfg.js +18360 -0
- package/lib/vite/traceViewer/assets/xtermModule-60687b6b.js +6410 -0
- package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
- package/lib/vite/traceViewer/codeMirrorModule.eb494ea9.css +344 -0
- package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
- package/lib/vite/traceViewer/{index.0d08c336.js → index.4a8ee36e.js} +1 -1
- package/lib/vite/traceViewer/index.55e65778.js +181 -0
- package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
- package/lib/vite/traceViewer/index.5nqVcfiC.js +180 -0
- package/lib/vite/traceViewer/index.742fd3e5.js +181 -0
- package/lib/vite/traceViewer/index.76e9f312.css +124 -0
- package/lib/vite/traceViewer/{index.LR1HufLs.js → index.cbtHmFgM.js} +1 -1
- package/lib/vite/traceViewer/index.html +3 -3
- package/lib/vite/traceViewer/index.ici1bqta.js +180 -0
- package/lib/vite/traceViewer/index.mxOcKqpu.js +180 -0
- package/lib/vite/traceViewer/index.zXVxM5ps.js +180 -0
- package/lib/vite/traceViewer/sw.bundle.js +4 -4
- package/lib/vite/traceViewer/uiMode.216233d5.js +1484 -0
- package/lib/vite/traceViewer/uiMode.2c31018f.css +1324 -0
- package/lib/vite/traceViewer/{uiMode.c1ebfc43.js → uiMode.468b0309.js} +1 -1
- package/lib/vite/traceViewer/uiMode.67C8Ij-c.js +1490 -0
- package/lib/vite/traceViewer/uiMode.F_k6a2aC.js +1488 -0
- package/lib/vite/traceViewer/uiMode.NjZAwD_B.js +1485 -0
- package/lib/vite/traceViewer/uiMode.YQRCZjm8.js +1485 -0
- package/lib/vite/traceViewer/uiMode.b2068d00.js +1484 -0
- package/lib/vite/traceViewer/uiMode.e-PLonGl.js +1490 -0
- package/lib/vite/traceViewer/{uiMode.PlLkrJDI.js → uiMode.fcU_T5Nf.js} +1 -1
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
- package/lib/vite/traceViewer/uiMode.ybQP_6Xr.js +10 -0
- package/lib/vite/traceViewer/wsPort.997c92cf.css +3513 -0
- package/lib/vite/traceViewer/wsPort.Oa05jfrO.css +3513 -0
- package/lib/vite/traceViewer/wsPort.p5jUwABW.css +3450 -0
- package/lib/vite/traceViewer/xtermModule.125f4259.css +191 -0
- package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
- package/package.json +6 -5
- package/types/protocol.d.ts +367 -53
- package/types/types.d.ts +220 -50
- package/LICENSE +0 -202
- package/NOTICE +0 -5
- package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-2mdjgmqe.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-56536a77.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-A2_PGeGB.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-GluP1cQ1.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-aUzO-LID.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-b361a51f.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-f333a775.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-y3M3aAqy.js +0 -24
- package/lib/vite/traceViewer/assets/wsPort-762c6840.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-93o0i57c.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-L8WBvZfK.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-Rvwd4WC-.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-db501ca9.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-dlD7vDkY.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-qI0zJPR7.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-qOE2NWrO.js +0 -69
- package/lib/vite/traceViewer/assets/wsPort-sh0wpjYp.js +0 -69
- package/lib/vite/traceViewer/index.4X7zDysg.js +0 -2
- package/lib/vite/traceViewer/index.4xhUWj1f.js +0 -2
- package/lib/vite/traceViewer/index.HkJgzlGy.js +0 -2
- package/lib/vite/traceViewer/index.Ox-CymYJ.js +0 -2
- package/lib/vite/traceViewer/index.d05939c9.js +0 -2
- package/lib/vite/traceViewer/index.ed9a3c58.js +0 -2
- package/lib/vite/traceViewer/index.kRjx5sAJ.js +0 -2
- package/lib/vite/traceViewer/index.krETyIB_.js +0 -2
- package/lib/vite/traceViewer/index.o6j3Cv4u.js +0 -2
- package/lib/vite/traceViewer/uiMode.1Wcp_Kto.js +0 -10
- package/lib/vite/traceViewer/uiMode.3ff70f7d.js +0 -4
- package/lib/vite/traceViewer/uiMode.8e0454c4.js +0 -4
- package/lib/vite/traceViewer/uiMode.GTNzARcV.js +0 -10
- package/lib/vite/traceViewer/uiMode.Rcwfn0db.js +0 -10
- package/lib/vite/traceViewer/uiMode.YGPXSUMv.js +0 -10
- package/lib/vite/traceViewer/uiMode.YYFJGvtV.js +0 -10
- package/lib/vite/traceViewer/uiMode.qpn6w4df.js +0 -10
- package/lib/vite/traceViewer/uiMode.zV-7Lf9v.js +0 -10
- package/lib/vite/traceViewer/wsPort.kSgQKQ0y.css +0 -1
|
@@ -248,6 +248,17 @@ _validatorPrimitives.scheme.APIResponse = (0, _validatorPrimitives.tObject)({
|
|
|
248
248
|
headers: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue')),
|
|
249
249
|
requestHeaders: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue')),
|
|
250
250
|
responseHeaders: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue')),
|
|
251
|
+
requestBody: (0, _validatorPrimitives.tObject)({
|
|
252
|
+
data: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tAny),
|
|
253
|
+
failOnStatusCode: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean),
|
|
254
|
+
formData: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue'))),
|
|
255
|
+
//form
|
|
256
|
+
ignoreHTTPSErrors: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean),
|
|
257
|
+
maxRedirects: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
258
|
+
multipart: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue'))),
|
|
259
|
+
params: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tType)('NameValue'))),
|
|
260
|
+
timeout: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber)
|
|
261
|
+
}),
|
|
251
262
|
body: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tAny),
|
|
252
263
|
method: _validatorPrimitives.tString,
|
|
253
264
|
tokenizedURL: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
@@ -429,13 +440,6 @@ _validatorPrimitives.scheme.DebugControllerSourceChangedEvent = (0, _validatorPr
|
|
|
429
440
|
_validatorPrimitives.scheme.DebugControllerPausedEvent = (0, _validatorPrimitives.tObject)({
|
|
430
441
|
paused: _validatorPrimitives.tBoolean
|
|
431
442
|
});
|
|
432
|
-
_validatorPrimitives.scheme.DebugControllerBrowsersChangedEvent = (0, _validatorPrimitives.tObject)({
|
|
433
|
-
browsers: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tObject)({
|
|
434
|
-
contexts: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tObject)({
|
|
435
|
-
pages: (0, _validatorPrimitives.tArray)(_validatorPrimitives.tString)
|
|
436
|
-
}))
|
|
437
|
-
}))
|
|
438
|
-
});
|
|
439
443
|
_validatorPrimitives.scheme.DebugControllerInitializeParams = (0, _validatorPrimitives.tObject)({
|
|
440
444
|
codegenId: _validatorPrimitives.tString,
|
|
441
445
|
sdkLanguage: (0, _validatorPrimitives.tEnum)(['javascript', 'python', 'java', 'csharp'])
|
|
@@ -819,7 +823,6 @@ _validatorPrimitives.scheme.BrowserContextBindingCallEvent = (0, _validatorPrimi
|
|
|
819
823
|
binding: (0, _validatorPrimitives.tChannel)(['BindingCall'])
|
|
820
824
|
});
|
|
821
825
|
_validatorPrimitives.scheme.BrowserContextConsoleEvent = (0, _validatorPrimitives.tObject)({
|
|
822
|
-
page: (0, _validatorPrimitives.tChannel)(['Page']),
|
|
823
826
|
type: _validatorPrimitives.tString,
|
|
824
827
|
text: _validatorPrimitives.tString,
|
|
825
828
|
args: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tChannel)(['ElementHandle', 'JSHandle'])),
|
|
@@ -827,7 +830,8 @@ _validatorPrimitives.scheme.BrowserContextConsoleEvent = (0, _validatorPrimitive
|
|
|
827
830
|
url: _validatorPrimitives.tString,
|
|
828
831
|
lineNumber: _validatorPrimitives.tNumber,
|
|
829
832
|
columnNumber: _validatorPrimitives.tNumber
|
|
830
|
-
})
|
|
833
|
+
}),
|
|
834
|
+
page: (0, _validatorPrimitives.tChannel)(['Page'])
|
|
831
835
|
});
|
|
832
836
|
_validatorPrimitives.scheme.BrowserContextCloseEvent = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
833
837
|
_validatorPrimitives.scheme.BrowserContextDialogEvent = (0, _validatorPrimitives.tObject)({
|
|
@@ -1030,6 +1034,9 @@ _validatorPrimitives.scheme.PageFrameAttachedEvent = (0, _validatorPrimitives.tO
|
|
|
1030
1034
|
_validatorPrimitives.scheme.PageFrameDetachedEvent = (0, _validatorPrimitives.tObject)({
|
|
1031
1035
|
frame: (0, _validatorPrimitives.tChannel)(['Frame'])
|
|
1032
1036
|
});
|
|
1037
|
+
_validatorPrimitives.scheme.PageLocatorHandlerTriggeredEvent = (0, _validatorPrimitives.tObject)({
|
|
1038
|
+
uid: _validatorPrimitives.tNumber
|
|
1039
|
+
});
|
|
1033
1040
|
_validatorPrimitives.scheme.PageRouteEvent = (0, _validatorPrimitives.tObject)({
|
|
1034
1041
|
route: (0, _validatorPrimitives.tChannel)(['Route'])
|
|
1035
1042
|
});
|
|
@@ -1085,6 +1092,16 @@ _validatorPrimitives.scheme.PageGoForwardParams = (0, _validatorPrimitives.tObje
|
|
|
1085
1092
|
_validatorPrimitives.scheme.PageGoForwardResult = (0, _validatorPrimitives.tObject)({
|
|
1086
1093
|
response: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tChannel)(['Response']))
|
|
1087
1094
|
});
|
|
1095
|
+
_validatorPrimitives.scheme.PageRegisterLocatorHandlerParams = (0, _validatorPrimitives.tObject)({
|
|
1096
|
+
selector: _validatorPrimitives.tString
|
|
1097
|
+
});
|
|
1098
|
+
_validatorPrimitives.scheme.PageRegisterLocatorHandlerResult = (0, _validatorPrimitives.tObject)({
|
|
1099
|
+
uid: _validatorPrimitives.tNumber
|
|
1100
|
+
});
|
|
1101
|
+
_validatorPrimitives.scheme.PageResolveLocatorHandlerNoReplyParams = (0, _validatorPrimitives.tObject)({
|
|
1102
|
+
uid: _validatorPrimitives.tNumber
|
|
1103
|
+
});
|
|
1104
|
+
_validatorPrimitives.scheme.PageResolveLocatorHandlerNoReplyResult = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
1088
1105
|
_validatorPrimitives.scheme.PageReloadParams = (0, _validatorPrimitives.tObject)({
|
|
1089
1106
|
timeout: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
1090
1107
|
waitUntil: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tType)('LifecycleEvent'))
|
|
@@ -1100,26 +1117,22 @@ _validatorPrimitives.scheme.PageExpectScreenshotParams = (0, _validatorPrimitive
|
|
|
1100
1117
|
frame: (0, _validatorPrimitives.tChannel)(['Frame']),
|
|
1101
1118
|
selector: _validatorPrimitives.tString
|
|
1102
1119
|
})),
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
}))),
|
|
1120
|
-
maskColor: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
1121
|
-
style: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString)
|
|
1122
|
-
}))
|
|
1120
|
+
comparator: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
1121
|
+
maxDiffPixels: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
1122
|
+
maxDiffPixelRatio: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
1123
|
+
threshold: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tNumber),
|
|
1124
|
+
fullPage: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean),
|
|
1125
|
+
clip: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tType)('Rect')),
|
|
1126
|
+
omitBackground: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean),
|
|
1127
|
+
caret: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tEnum)(['hide', 'initial'])),
|
|
1128
|
+
animations: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tEnum)(['disabled', 'allow'])),
|
|
1129
|
+
scale: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tEnum)(['css', 'device'])),
|
|
1130
|
+
mask: (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tObject)({
|
|
1131
|
+
frame: (0, _validatorPrimitives.tChannel)(['Frame']),
|
|
1132
|
+
selector: _validatorPrimitives.tString
|
|
1133
|
+
}))),
|
|
1134
|
+
maskColor: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
1135
|
+
style: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString)
|
|
1123
1136
|
});
|
|
1124
1137
|
_validatorPrimitives.scheme.PageExpectScreenshotResult = (0, _validatorPrimitives.tObject)({
|
|
1125
1138
|
diff: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBinary),
|
|
@@ -1247,7 +1260,9 @@ _validatorPrimitives.scheme.PagePdfParams = (0, _validatorPrimitives.tObject)({
|
|
|
1247
1260
|
bottom: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
1248
1261
|
left: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString),
|
|
1249
1262
|
right: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tString)
|
|
1250
|
-
}))
|
|
1263
|
+
})),
|
|
1264
|
+
tagged: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean),
|
|
1265
|
+
outline: (0, _validatorPrimitives.tOptional)(_validatorPrimitives.tBoolean)
|
|
1251
1266
|
});
|
|
1252
1267
|
_validatorPrimitives.scheme.PagePdfResult = (0, _validatorPrimitives.tObject)({
|
|
1253
1268
|
pdf: _validatorPrimitives.tBinary
|
|
@@ -2299,6 +2314,16 @@ _validatorPrimitives.scheme.ElectronApplicationInitializer = (0, _validatorPrimi
|
|
|
2299
2314
|
context: (0, _validatorPrimitives.tChannel)(['BrowserContext'])
|
|
2300
2315
|
});
|
|
2301
2316
|
_validatorPrimitives.scheme.ElectronApplicationCloseEvent = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
2317
|
+
_validatorPrimitives.scheme.ElectronApplicationConsoleEvent = (0, _validatorPrimitives.tObject)({
|
|
2318
|
+
type: _validatorPrimitives.tString,
|
|
2319
|
+
text: _validatorPrimitives.tString,
|
|
2320
|
+
args: (0, _validatorPrimitives.tArray)((0, _validatorPrimitives.tChannel)(['ElementHandle', 'JSHandle'])),
|
|
2321
|
+
location: (0, _validatorPrimitives.tObject)({
|
|
2322
|
+
url: _validatorPrimitives.tString,
|
|
2323
|
+
lineNumber: _validatorPrimitives.tNumber,
|
|
2324
|
+
columnNumber: _validatorPrimitives.tNumber
|
|
2325
|
+
})
|
|
2326
|
+
});
|
|
2302
2327
|
_validatorPrimitives.scheme.ElectronApplicationBrowserWindowParams = (0, _validatorPrimitives.tObject)({
|
|
2303
2328
|
page: (0, _validatorPrimitives.tChannel)(['Page'])
|
|
2304
2329
|
});
|
|
@@ -2321,6 +2346,11 @@ _validatorPrimitives.scheme.ElectronApplicationEvaluateExpressionHandleParams =
|
|
|
2321
2346
|
_validatorPrimitives.scheme.ElectronApplicationEvaluateExpressionHandleResult = (0, _validatorPrimitives.tObject)({
|
|
2322
2347
|
handle: (0, _validatorPrimitives.tChannel)(['ElementHandle', 'JSHandle'])
|
|
2323
2348
|
});
|
|
2349
|
+
_validatorPrimitives.scheme.ElectronApplicationUpdateSubscriptionParams = (0, _validatorPrimitives.tObject)({
|
|
2350
|
+
event: (0, _validatorPrimitives.tEnum)(['console']),
|
|
2351
|
+
enabled: _validatorPrimitives.tBoolean
|
|
2352
|
+
});
|
|
2353
|
+
_validatorPrimitives.scheme.ElectronApplicationUpdateSubscriptionResult = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
2324
2354
|
_validatorPrimitives.scheme.ElectronApplicationCloseParams = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
2325
2355
|
_validatorPrimitives.scheme.ElectronApplicationCloseResult = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
2326
2356
|
_validatorPrimitives.scheme.AndroidInitializer = (0, _validatorPrimitives.tOptional)((0, _validatorPrimitives.tObject)({}));
|
|
@@ -11,7 +11,7 @@ var _socksProxy = require("../common/socksProxy");
|
|
|
11
11
|
var _utils = require("../utils");
|
|
12
12
|
var _android = require("../server/android/android");
|
|
13
13
|
var _debugControllerDispatcher = require("../server/dispatchers/debugControllerDispatcher");
|
|
14
|
-
var _debugLogger = require("../
|
|
14
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
15
15
|
/**
|
|
16
16
|
* Copyright (c) Microsoft Corporation.
|
|
17
17
|
*
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var _utilsBundle = require("../utilsBundle");
|
|
6
|
+
exports.PlaywrightServer = void 0;
|
|
8
7
|
var _playwright = require("../server/playwright");
|
|
9
8
|
var _playwrightConnection = require("./playwrightConnection");
|
|
10
|
-
var
|
|
11
|
-
var _debugLogger = require("../
|
|
9
|
+
var _semaphore = require("../utils/semaphore");
|
|
10
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
12
11
|
var _utils = require("../utils");
|
|
13
|
-
var
|
|
12
|
+
var _wsServer = require("../utils/wsServer");
|
|
14
13
|
/**
|
|
15
14
|
* Copyright (c) Microsoft Corporation.
|
|
16
15
|
*
|
|
@@ -27,178 +26,85 @@ var _transport = require("../server/transport");
|
|
|
27
26
|
* limitations under the License.
|
|
28
27
|
*/
|
|
29
28
|
|
|
30
|
-
let lastConnectionId = 0;
|
|
31
|
-
const kConnectionSymbol = Symbol('kConnection');
|
|
32
29
|
class PlaywrightServer {
|
|
33
30
|
constructor(options) {
|
|
34
31
|
this._preLaunchedPlaywright = void 0;
|
|
35
|
-
this._wsServer = void 0;
|
|
36
|
-
this._server = void 0;
|
|
37
32
|
this._options = void 0;
|
|
33
|
+
this._wsServer = void 0;
|
|
38
34
|
this._options = options;
|
|
39
35
|
if (options.preLaunchedBrowser) this._preLaunchedPlaywright = options.preLaunchedBrowser.attribution.playwright;
|
|
40
36
|
if (options.preLaunchedAndroidDevice) this._preLaunchedPlaywright = options.preLaunchedAndroidDevice._android.attribution.playwright;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
67
|
-
_debugLogger.debugLogger.log('server', 'Listening at ' + wsEndpoint);
|
|
68
|
-
this._wsServer = new _utilsBundle.wsServer({
|
|
69
|
-
noServer: true,
|
|
70
|
-
perMessageDeflate: _transport.perMessageDeflate
|
|
71
|
-
});
|
|
72
|
-
const browserSemaphore = new Semaphore(this._options.maxConnections);
|
|
73
|
-
const controllerSemaphore = new Semaphore(1);
|
|
74
|
-
const reuseBrowserSemaphore = new Semaphore(1);
|
|
75
|
-
if (process.env.PWTEST_SERVER_WS_HEADERS) {
|
|
76
|
-
this._wsServer.on('headers', (headers, request) => {
|
|
77
|
-
headers.push(process.env.PWTEST_SERVER_WS_HEADERS);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
server.on('upgrade', (request, socket, head) => {
|
|
81
|
-
var _this$_wsServer;
|
|
82
|
-
const pathname = new URL('http://localhost' + request.url).pathname;
|
|
83
|
-
if (pathname !== this._options.path) {
|
|
84
|
-
socket.write(`HTTP/${request.httpVersion} 400 Bad Request\r\n\r\n`);
|
|
85
|
-
socket.destroy();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const uaError = (0, _utils.userAgentVersionMatchesErrorMessage)(request.headers['user-agent'] || '');
|
|
89
|
-
if (uaError) {
|
|
90
|
-
socket.write(`HTTP/${request.httpVersion} 428 Precondition Required\r\n\r\n${uaError}`);
|
|
91
|
-
socket.destroy();
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
(_this$_wsServer = this._wsServer) === null || _this$_wsServer === void 0 || _this$_wsServer.handleUpgrade(request, socket, head, ws => {
|
|
95
|
-
var _this$_wsServer2;
|
|
96
|
-
return (_this$_wsServer2 = this._wsServer) === null || _this$_wsServer2 === void 0 ? void 0 : _this$_wsServer2.emit('connection', ws, request);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
this._wsServer.on('connection', (ws, request) => {
|
|
100
|
-
_debugLogger.debugLogger.log('server', 'Connected client ws.extension=' + ws.extensions);
|
|
101
|
-
const url = new URL('http://localhost' + (request.url || ''));
|
|
102
|
-
const browserHeader = request.headers['x-playwright-browser'];
|
|
103
|
-
const browserName = url.searchParams.get('browser') || (Array.isArray(browserHeader) ? browserHeader[0] : browserHeader) || null;
|
|
104
|
-
const proxyHeader = request.headers['x-playwright-proxy'];
|
|
105
|
-
const proxyValue = url.searchParams.get('proxy') || (Array.isArray(proxyHeader) ? proxyHeader[0] : proxyHeader);
|
|
106
|
-
const launchOptionsHeader = request.headers['x-playwright-launch-options'] || '';
|
|
107
|
-
const launchOptionsHeaderValue = Array.isArray(launchOptionsHeader) ? launchOptionsHeader[0] : launchOptionsHeader;
|
|
108
|
-
const launchOptionsParam = url.searchParams.get('launch-options');
|
|
109
|
-
let launchOptions = {};
|
|
110
|
-
try {
|
|
111
|
-
launchOptions = JSON.parse(launchOptionsParam || launchOptionsHeaderValue);
|
|
112
|
-
} catch (e) {}
|
|
113
|
-
const id = String(++lastConnectionId);
|
|
114
|
-
_debugLogger.debugLogger.log('server', `[${id}] serving connection: ${request.url}`);
|
|
37
|
+
const browserSemaphore = new _semaphore.Semaphore(this._options.maxConnections);
|
|
38
|
+
const controllerSemaphore = new _semaphore.Semaphore(1);
|
|
39
|
+
const reuseBrowserSemaphore = new _semaphore.Semaphore(1);
|
|
40
|
+
this._wsServer = new _wsServer.WSServer({
|
|
41
|
+
onUpgrade: (request, socket) => {
|
|
42
|
+
const uaError = (0, _utils.userAgentVersionMatchesErrorMessage)(request.headers['user-agent'] || '');
|
|
43
|
+
if (uaError) return {
|
|
44
|
+
error: `HTTP/${request.httpVersion} 428 Precondition Required\r\n\r\n${uaError}`
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
onHeaders: headers => {
|
|
48
|
+
if (process.env.PWTEST_SERVER_WS_HEADERS) headers.push(process.env.PWTEST_SERVER_WS_HEADERS);
|
|
49
|
+
},
|
|
50
|
+
onConnection: (request, url, ws, id) => {
|
|
51
|
+
const browserHeader = request.headers['x-playwright-browser'];
|
|
52
|
+
const browserName = url.searchParams.get('browser') || (Array.isArray(browserHeader) ? browserHeader[0] : browserHeader) || null;
|
|
53
|
+
const proxyHeader = request.headers['x-playwright-proxy'];
|
|
54
|
+
const proxyValue = url.searchParams.get('proxy') || (Array.isArray(proxyHeader) ? proxyHeader[0] : proxyHeader);
|
|
55
|
+
const launchOptionsHeader = request.headers['x-playwright-launch-options'] || '';
|
|
56
|
+
const launchOptionsHeaderValue = Array.isArray(launchOptionsHeader) ? launchOptionsHeader[0] : launchOptionsHeader;
|
|
57
|
+
const launchOptionsParam = url.searchParams.get('launch-options');
|
|
58
|
+
let launchOptions = {};
|
|
59
|
+
try {
|
|
60
|
+
launchOptions = JSON.parse(launchOptionsParam || launchOptionsHeaderValue);
|
|
61
|
+
} catch (e) {}
|
|
115
62
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
63
|
+
// Instantiate playwright for the extension modes.
|
|
64
|
+
const isExtension = this._options.mode === 'extension';
|
|
65
|
+
if (isExtension) {
|
|
66
|
+
if (!this._preLaunchedPlaywright) this._preLaunchedPlaywright = (0, _playwright.createPlaywright)({
|
|
67
|
+
sdkLanguage: 'javascript',
|
|
68
|
+
isServer: true
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
let clientType = 'launch-browser';
|
|
72
|
+
let semaphore = browserSemaphore;
|
|
73
|
+
if (isExtension && url.searchParams.has('debug-controller')) {
|
|
74
|
+
clientType = 'controller';
|
|
75
|
+
semaphore = controllerSemaphore;
|
|
76
|
+
} else if (isExtension) {
|
|
77
|
+
clientType = 'reuse-browser';
|
|
78
|
+
semaphore = reuseBrowserSemaphore;
|
|
79
|
+
} else if (this._options.mode === 'launchServer') {
|
|
80
|
+
clientType = 'pre-launched-browser-or-android';
|
|
81
|
+
semaphore = browserSemaphore;
|
|
82
|
+
}
|
|
83
|
+
return new _playwrightConnection.PlaywrightConnection(semaphore.acquire(), clientType, ws, {
|
|
84
|
+
socksProxyPattern: proxyValue,
|
|
85
|
+
browserName,
|
|
86
|
+
launchOptions
|
|
87
|
+
}, {
|
|
88
|
+
playwright: this._preLaunchedPlaywright,
|
|
89
|
+
browser: this._options.preLaunchedBrowser,
|
|
90
|
+
androidDevice: this._options.preLaunchedAndroidDevice,
|
|
91
|
+
socksProxy: this._options.preLaunchedSocksProxy
|
|
92
|
+
}, id, () => semaphore.release());
|
|
93
|
+
},
|
|
94
|
+
onClose: async () => {
|
|
95
|
+
_debugLogger.debugLogger.log('server', 'closing browsers');
|
|
96
|
+
if (this._preLaunchedPlaywright) await Promise.all(this._preLaunchedPlaywright.allBrowsers().map(browser => browser.close({
|
|
97
|
+
reason: 'Playwright Server stopped'
|
|
98
|
+
})));
|
|
99
|
+
_debugLogger.debugLogger.log('server', 'closed browsers');
|
|
135
100
|
}
|
|
136
|
-
const connection = new _playwrightConnection.PlaywrightConnection(semaphore.acquire(), clientType, ws, {
|
|
137
|
-
socksProxyPattern: proxyValue,
|
|
138
|
-
browserName,
|
|
139
|
-
launchOptions
|
|
140
|
-
}, {
|
|
141
|
-
playwright: this._preLaunchedPlaywright,
|
|
142
|
-
browser: this._options.preLaunchedBrowser,
|
|
143
|
-
androidDevice: this._options.preLaunchedAndroidDevice,
|
|
144
|
-
socksProxy: this._options.preLaunchedSocksProxy
|
|
145
|
-
}, id, () => semaphore.release());
|
|
146
|
-
ws[kConnectionSymbol] = connection;
|
|
147
101
|
});
|
|
148
|
-
return wsEndpoint;
|
|
149
102
|
}
|
|
150
|
-
async
|
|
151
|
-
|
|
152
|
-
if (!server) return;
|
|
153
|
-
_debugLogger.debugLogger.log('server', 'closing websocket server');
|
|
154
|
-
const waitForClose = new Promise(f => server.close(f));
|
|
155
|
-
// First disconnect all remaining clients.
|
|
156
|
-
await Promise.all(Array.from(server.clients).map(async ws => {
|
|
157
|
-
const connection = ws[kConnectionSymbol];
|
|
158
|
-
if (connection) await connection.close();
|
|
159
|
-
try {
|
|
160
|
-
ws.terminate();
|
|
161
|
-
} catch (e) {}
|
|
162
|
-
}));
|
|
163
|
-
await waitForClose;
|
|
164
|
-
_debugLogger.debugLogger.log('server', 'closing http server');
|
|
165
|
-
if (this._server) await new Promise(f => this._server.close(f));
|
|
166
|
-
this._wsServer = undefined;
|
|
167
|
-
this._server = undefined;
|
|
168
|
-
_debugLogger.debugLogger.log('server', 'closed server');
|
|
169
|
-
_debugLogger.debugLogger.log('server', 'closing browsers');
|
|
170
|
-
if (this._preLaunchedPlaywright) await Promise.all(this._preLaunchedPlaywright.allBrowsers().map(browser => browser.close({
|
|
171
|
-
reason: 'Playwright Server stopped'
|
|
172
|
-
})));
|
|
173
|
-
_debugLogger.debugLogger.log('server', 'closed browsers');
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
exports.PlaywrightServer = PlaywrightServer;
|
|
177
|
-
class Semaphore {
|
|
178
|
-
constructor(max) {
|
|
179
|
-
this._max = void 0;
|
|
180
|
-
this._acquired = 0;
|
|
181
|
-
this._queue = [];
|
|
182
|
-
this._max = max;
|
|
183
|
-
}
|
|
184
|
-
setMax(max) {
|
|
185
|
-
this._max = max;
|
|
186
|
-
}
|
|
187
|
-
acquire() {
|
|
188
|
-
const lock = new _manualPromise.ManualPromise();
|
|
189
|
-
this._queue.push(lock);
|
|
190
|
-
this._flush();
|
|
191
|
-
return lock;
|
|
192
|
-
}
|
|
193
|
-
release() {
|
|
194
|
-
--this._acquired;
|
|
195
|
-
this._flush();
|
|
103
|
+
async listen(port = 0, hostname) {
|
|
104
|
+
return this._wsServer.listen(port, hostname, this._options.path);
|
|
196
105
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
++this._acquired;
|
|
200
|
-
this._queue.shift().resolve();
|
|
201
|
-
}
|
|
106
|
+
async close() {
|
|
107
|
+
await this._wsServer.close();
|
|
202
108
|
}
|
|
203
109
|
}
|
|
204
|
-
exports.
|
|
110
|
+
exports.PlaywrightServer = PlaywrightServer;
|
|
@@ -16,7 +16,7 @@ var _progress = require("../progress");
|
|
|
16
16
|
var _crBrowser = require("../chromium/crBrowser");
|
|
17
17
|
var _helper = require("../helper");
|
|
18
18
|
var _transport = require("../../protocol/transport");
|
|
19
|
-
var _debugLogger = require("../../
|
|
19
|
+
var _debugLogger = require("../../utils/debugLogger");
|
|
20
20
|
var _processLauncher = require("../../utils/processLauncher");
|
|
21
21
|
var _timeoutSettings = require("../../common/timeoutSettings");
|
|
22
22
|
var _instrumentation = require("../instrumentation");
|
|
@@ -17,7 +17,7 @@ var _timeoutSettings = require("../common/timeoutSettings");
|
|
|
17
17
|
var _utils = require("../utils");
|
|
18
18
|
var _fileUtils = require("../utils/fileUtils");
|
|
19
19
|
var _helper = require("./helper");
|
|
20
|
-
var _debugLogger = require("../
|
|
20
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
21
21
|
var _instrumentation = require("./instrumentation");
|
|
22
22
|
var _manualPromise = require("../utils/manualPromise");
|
|
23
23
|
var _protocolError = require("./protocolError");
|
|
@@ -164,7 +164,7 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
164
164
|
const registryExecutable = _registry.registry.findExecutable(options.channel || this._name);
|
|
165
165
|
if (!registryExecutable || registryExecutable.browserName !== this._name) throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
|
|
166
166
|
executable = registryExecutable.executablePathOrDie(this.attribution.playwright.options.sdkLanguage);
|
|
167
|
-
await
|
|
167
|
+
await _registry.registry.validateHostRequirementsForExecutablesIfNeeded([registryExecutable], this.attribution.playwright.options.sdkLanguage);
|
|
168
168
|
}
|
|
169
169
|
const waitForWSEndpoint = options.useWebSocket || (_options$args = options.args) !== null && _options$args !== void 0 && _options$args.some(a => a.startsWith('--remote-debugging-port')) ? new _manualPromise.ManualPromise() : undefined;
|
|
170
170
|
const waitForJuggler = this._name === 'firefox' ? new _manualPromise.ManualPromise() : undefined;
|
|
@@ -19,7 +19,7 @@ var _userAgent = require("../../utils/userAgent");
|
|
|
19
19
|
var _ascii = require("../../utils/ascii");
|
|
20
20
|
var _utils = require("../../utils");
|
|
21
21
|
var _fileUtils = require("../../utils/fileUtils");
|
|
22
|
-
var _debugLogger = require("../../
|
|
22
|
+
var _debugLogger = require("../../utils/debugLogger");
|
|
23
23
|
var _progress = require("../progress");
|
|
24
24
|
var _timeoutSettings = require("../../common/timeoutSettings");
|
|
25
25
|
var _helper = require("../helper");
|
|
@@ -68,7 +68,7 @@ class Chromium extends _browserType.BrowserType {
|
|
|
68
68
|
'User-Agent': (0, _userAgent.getUserAgent)()
|
|
69
69
|
};else if (headersMap && !Object.keys(headersMap).some(key => key.toLowerCase() === 'user-agent')) headersMap['User-Agent'] = (0, _userAgent.getUserAgent)();
|
|
70
70
|
const artifactsDir = await _fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
|
|
71
|
-
const wsEndpoint = await urlToWSEndpoint(progress, endpointURL);
|
|
71
|
+
const wsEndpoint = await urlToWSEndpoint(progress, endpointURL, headersMap);
|
|
72
72
|
progress.throwIfAborted();
|
|
73
73
|
const chromeTransport = await _transport.WebSocketTransport.connect(progress, wsEndpoint, headersMap);
|
|
74
74
|
const cleanedUp = new _manualPromise.ManualPromise();
|
|
@@ -305,12 +305,13 @@ class Chromium extends _browserType.BrowserType {
|
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
307
|
exports.Chromium = Chromium;
|
|
308
|
-
async function urlToWSEndpoint(progress, endpointURL) {
|
|
308
|
+
async function urlToWSEndpoint(progress, endpointURL, headers) {
|
|
309
309
|
if (endpointURL.startsWith('ws')) return endpointURL;
|
|
310
310
|
progress.log(`<ws preparing> retrieving websocket url from ${endpointURL}`);
|
|
311
311
|
const httpURL = endpointURL.endsWith('/') ? `${endpointURL}json/version/` : `${endpointURL}/json/version/`;
|
|
312
312
|
const json = await (0, _network.fetchData)({
|
|
313
|
-
url: httpURL
|
|
313
|
+
url: httpURL,
|
|
314
|
+
headers
|
|
314
315
|
}, async (_, resp) => new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.\n` + `This does not look like a DevTools server, try connecting via ws://.`));
|
|
315
316
|
return JSON.parse(json).webSocketDebuggerUrl;
|
|
316
317
|
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
|
|
7
7
|
var _utils = require("../../utils");
|
|
8
8
|
var _events = require("events");
|
|
9
|
-
var _debugLogger = require("../../
|
|
9
|
+
var _debugLogger = require("../../utils/debugLogger");
|
|
10
10
|
var _helper = require("../helper");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
12
|
/**
|
|
@@ -268,10 +268,8 @@ class CRNetworkManager {
|
|
|
268
268
|
// We do not support intercepting redirects.
|
|
269
269
|
if (redirectedFrom || !this._userRequestInterceptionEnabled && this._protocolRequestInterceptionEnabled) {
|
|
270
270
|
var _redirectedFrom;
|
|
271
|
-
let headers = undefined;
|
|
272
|
-
const previousHeaderOverrides = (_redirectedFrom = redirectedFrom) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._originalRequestRoute) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._alreadyContinuedParams) === null || _redirectedFrom === void 0 ? void 0 : _redirectedFrom.headers;
|
|
273
271
|
// Chromium does not preserve header overrides between redirects, so we have to do it ourselves.
|
|
274
|
-
|
|
272
|
+
const headers = (_redirectedFrom = redirectedFrom) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._originalRequestRoute) === null || _redirectedFrom === void 0 || (_redirectedFrom = _redirectedFrom._alreadyContinuedParams) === null || _redirectedFrom === void 0 ? void 0 : _redirectedFrom.headers;
|
|
275
273
|
this._session._sendMayFail('Fetch.continueRequest', {
|
|
276
274
|
requestId: requestPausedEvent.requestId,
|
|
277
275
|
headers
|
|
@@ -970,7 +970,8 @@ class FrameSession {
|
|
|
970
970
|
const options = this._crPage._browserContext._options;
|
|
971
971
|
await this._client.send('Emulation.setUserAgentOverride', {
|
|
972
972
|
userAgent: options.userAgent || '',
|
|
973
|
-
acceptLanguage: options.locale
|
|
973
|
+
acceptLanguage: options.locale,
|
|
974
|
+
userAgentMetadata: calculateUserAgentMetadata(options)
|
|
974
975
|
});
|
|
975
976
|
}
|
|
976
977
|
async _setDefaultFontFamilies(session) {
|
|
@@ -1127,4 +1128,46 @@ async function emulateTimezone(session, timezoneId) {
|
|
|
1127
1128
|
throw exception;
|
|
1128
1129
|
}
|
|
1129
1130
|
}
|
|
1130
|
-
const contextDelegateSymbol = Symbol('delegate');
|
|
1131
|
+
const contextDelegateSymbol = Symbol('delegate');
|
|
1132
|
+
|
|
1133
|
+
// Chromium reference: https://source.chromium.org/chromium/chromium/src/+/main:components/embedder_support/user_agent_utils.cc;l=434;drc=70a6711e08e9f9e0d8e4c48e9ba5cab62eb010c2
|
|
1134
|
+
function calculateUserAgentMetadata(options) {
|
|
1135
|
+
const ua = options.userAgent;
|
|
1136
|
+
if (!ua) return undefined;
|
|
1137
|
+
const metadata = {
|
|
1138
|
+
mobile: !!options.isMobile,
|
|
1139
|
+
model: '',
|
|
1140
|
+
architecture: 'x64',
|
|
1141
|
+
platform: 'Windows',
|
|
1142
|
+
platformVersion: ''
|
|
1143
|
+
};
|
|
1144
|
+
const androidMatch = ua.match(/Android (\d+(\.\d+)?(\.\d+)?)/);
|
|
1145
|
+
const iPhoneMatch = ua.match(/iPhone OS (\d+(_\d+)?)/);
|
|
1146
|
+
const iPadMatch = ua.match(/iPad; CPU OS (\d+(_\d+)?)/);
|
|
1147
|
+
const macOSMatch = ua.match(/Mac OS X (\d+(_\d+)?(_\d+)?)/);
|
|
1148
|
+
const windowsMatch = ua.match(/Windows\D+(\d+(\.\d+)?(\.\d+)?)/);
|
|
1149
|
+
if (androidMatch) {
|
|
1150
|
+
metadata.platform = 'Android';
|
|
1151
|
+
metadata.platformVersion = androidMatch[1];
|
|
1152
|
+
metadata.architecture = 'arm';
|
|
1153
|
+
} else if (iPhoneMatch) {
|
|
1154
|
+
metadata.platform = 'iOS';
|
|
1155
|
+
metadata.platformVersion = iPhoneMatch[1];
|
|
1156
|
+
metadata.architecture = 'arm';
|
|
1157
|
+
} else if (iPadMatch) {
|
|
1158
|
+
metadata.platform = 'iOS';
|
|
1159
|
+
metadata.platformVersion = iPadMatch[1];
|
|
1160
|
+
metadata.architecture = 'arm';
|
|
1161
|
+
} else if (macOSMatch) {
|
|
1162
|
+
metadata.platform = 'macOS';
|
|
1163
|
+
metadata.platformVersion = macOSMatch[1];
|
|
1164
|
+
if (!ua.includes('Intel')) metadata.architecture = 'arm';
|
|
1165
|
+
} else if (windowsMatch) {
|
|
1166
|
+
metadata.platform = 'Windows';
|
|
1167
|
+
metadata.platformVersion = windowsMatch[1];
|
|
1168
|
+
} else if (ua.toLowerCase().includes('linux')) {
|
|
1169
|
+
metadata.platform = 'Linux';
|
|
1170
|
+
}
|
|
1171
|
+
if (ua.includes('ARM')) metadata.architecture = 'arm';
|
|
1172
|
+
return metadata;
|
|
1173
|
+
}
|
|
@@ -107,7 +107,9 @@ class CRPDF {
|
|
|
107
107
|
landscape = false,
|
|
108
108
|
pageRanges = '',
|
|
109
109
|
preferCSSPageSize = false,
|
|
110
|
-
margin = {}
|
|
110
|
+
margin = {},
|
|
111
|
+
tagged = false,
|
|
112
|
+
outline = false
|
|
111
113
|
} = options;
|
|
112
114
|
let paperWidth = 8.5;
|
|
113
115
|
let paperHeight = 11;
|
|
@@ -124,6 +126,8 @@ class CRPDF {
|
|
|
124
126
|
const marginLeft = convertPrintParameterToInches(margin.left) || 0;
|
|
125
127
|
const marginBottom = convertPrintParameterToInches(margin.bottom) || 0;
|
|
126
128
|
const marginRight = convertPrintParameterToInches(margin.right) || 0;
|
|
129
|
+
const generateDocumentOutline = outline;
|
|
130
|
+
const generateTaggedPDF = tagged;
|
|
127
131
|
const result = await this._client.send('Page.printToPDF', {
|
|
128
132
|
transferMode: 'ReturnAsStream',
|
|
129
133
|
landscape,
|
|
@@ -139,7 +143,9 @@ class CRPDF {
|
|
|
139
143
|
marginLeft,
|
|
140
144
|
marginRight,
|
|
141
145
|
pageRanges,
|
|
142
|
-
preferCSSPageSize
|
|
146
|
+
preferCSSPageSize,
|
|
147
|
+
generateTaggedPDF,
|
|
148
|
+
generateDocumentOutline
|
|
143
149
|
});
|
|
144
150
|
return await (0, _crProtocolHelper.readProtocolStream)(this._client, result.stream);
|
|
145
151
|
}
|
package/lib/server/console.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ConsoleMessage = void 0;
|
|
7
|
-
var _instrumentation = require("./instrumentation");
|
|
8
7
|
/**
|
|
9
8
|
* Copyright (c) Microsoft Corporation.
|
|
10
9
|
*
|
|
@@ -21,9 +20,8 @@ var _instrumentation = require("./instrumentation");
|
|
|
21
20
|
* limitations under the License.
|
|
22
21
|
*/
|
|
23
22
|
|
|
24
|
-
class ConsoleMessage
|
|
23
|
+
class ConsoleMessage {
|
|
25
24
|
constructor(page, type, text, args, location) {
|
|
26
|
-
super(page, 'console-message');
|
|
27
25
|
this._type = void 0;
|
|
28
26
|
this._text = void 0;
|
|
29
27
|
this._args = void 0;
|