UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 37.9 kB
!function(e){const t=class{constructor(e){this.domAutomationController_=e,this.controlTaken_=!1,this.timerId_=-1,this._asyncInvocationId=0}static createKeyEvent(e){return new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,key:e})}};async function o(e,t){const o=self.SDK.targetManager.rootTarget().targetAgent(),{browserContextId:n}=await o.invoke_createBrowserContext();t&&t.push(n);const{targetId:s}=await o.invoke_createTarget({url:"about:blank",browserContextId:n});await o.invoke_attachToTarget({targetId:s,flatten:!0});const a=self.SDK.targetManager.targets().find((e=>e.id()===s)),r=a.pageAgent();return await r.invoke_enable(),await r.invoke_navigate({url:e}),a}async function n(e){const t=self.SDK.targetManager.rootTarget().targetAgent();await t.invoke_disposeBrowserContext({browserContextId:e})}async function s(e,t){return(await e.runtimeAgent().invoke_evaluate({expression:t})).result.value}t.prototype.fail=function(e){if(!this.controlTaken_)throw e;this.reportFailure_(e)},t.prototype.assertEquals=function(e,t,o){if(e!==t){let n="Expected: '"+e+"', but was '"+t+"'";o&&(n=o+"("+n+")"),this.fail(n)}},t.prototype.assertTrue=function(e,t){this.assertEquals(!0,Boolean(e),t)},t.prototype.takeControl=function(e){const{slownessFactor:t}={slownessFactor:1,...e};this.controlTaken_=!0;const o=this,n=20*t;this.timerId_=setTimeout((function(){o.reportFailure_(`Timeout exceeded: ${n} sec`)}),1e3*n)},t.prototype.releaseControl=function(){-1!==this.timerId_&&(clearTimeout(this.timerId_),this.timerId_=-1),this.controlTaken_=!1,this.reportOk_()},t.prototype.reportOk_=function(){this.domAutomationController_.send("[OK]")},t.prototype.reportFailure_=function(e){-1!==this.timerId_&&(clearTimeout(this.timerId_),this.timerId_=-1),this.domAutomationController_.send("[FAILED] "+e)},t.prototype.setupLegacyFilesForTest=async function(){try{await Promise.all([self.runtime.loadLegacyModule("core/common/common-legacy.js"),self.runtime.loadLegacyModule("core/sdk/sdk-legacy.js"),self.runtime.loadLegacyModule("core/host/host-legacy.js"),self.runtime.loadLegacyModule("ui/legacy/legacy-legacy.js"),self.runtime.loadLegacyModule("models/workspace/workspace-legacy.js"),self.runtime.loadLegacyModule("models/trace/trace-legacy.js")]),this.reportOk_()}catch(e){this.reportFailure_(e)}},t.prototype.dispatchOnTestSuite=async function(e){const t=e.shift();try{await this[t].apply(this,e),this.controlTaken_||this.reportOk_()}catch(e){this.reportFailure_(e)}},t.prototype.waitForAsync=function(e){const t=Array.prototype.slice.call(arguments);this.takeControl(),t.push(this.releaseControl.bind(this)),this.dispatchOnTestSuite(t)},t.prototype.addSniffer=function(e,t,o,n){const s=e[t];"function"!=typeof s&&this.fail("Cannot find method to override: "+t);const a=this;e[t]=function(r){let i;try{i=s.apply(this,arguments)}finally{n||(e[t]=s)}try{o.apply(this,arguments)}catch(e){a.fail("Exception in overriden method '"+t+"': "+e)}return i}},t.prototype.waitForThrottler=function(e,t){const o=this;let n=!0;o.addSniffer(e,"schedule",(function(){n&&o.fail("Unexpected Throttler.schedule")})),function s(){if(!e._isRunningProcess&&!e._process)return n=!1,void t();o.addSniffer(e,"processCompletedForTests",s)}()},t.prototype.showPanel=function(e){return self.UI.inspectorView.showPanel(e)},t.prototype.testShowScriptsTab=function(){const e=this;this.showPanel("sources").then(function(){this._waitUntilScriptsAreParsed(["debugger_test_page.html"],(function(){e.releaseControl()}))}.bind(this)),this.takeControl()},t.prototype.testShowRecorderTab=function(){this.showPanel("chrome_recorder").then((()=>{this.releaseControl()})).catch((e=>{this.fail("Loading Recorder panel failed: "+e.message)})),this.takeControl()},t.prototype.testContentScriptIsPresent=function(){const e=this;this.showPanel("sources").then((function(){e._waitUntilScriptsAreParsed(["page_with_content_script.html","simple_content_script.js"],(function(){e.releaseControl()}))})),this.takeControl()},t.prototype.testNoScriptDuplicatesOnPanelSwitch=function(){const e=this;function t(){e.showPanel("elements").then((function(){setTimeout(o,0)}))}function o(){e.showPanel("sources").then((function(){setTimeout(n,0)}))}function n(){e.assertTrue(e._scriptsAreParsed(["debugger_test_page.html"]),"Some scripts are missing."),s(),e.releaseControl()}function s(){const t=e.nonAnonymousUISourceCodes_();for(let o=0;o<t.length;o++)for(let n=o+1;n<t.length;n++)e.assertTrue(t[o].url()!==t[n].url(),"Found script duplicates: "+e.uiSourceCodesToString_(t))}this.showPanel("sources").then((function(){e._waitUntilScriptsAreParsed(["debugger_test_page.html"],(function(){s(),setTimeout(t,0)}))})),this.takeControl({slownessFactor:10})},t.prototype.testPauseWhenLoadingDevTools=function(){self.SDK.targetManager.primaryPageTarget().model(SDK.DebuggerModel).debuggerPausedDetails||(this.showPanel("sources").then(function(){this._waitForScriptPause(this.releaseControl.bind(this))}.bind(this)),this.takeControl())},t.prototype.testNetworkSize=function(){const e=this;this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(t,o){e.assertEquals(25,t.resourceSize,"Incorrect total data length"),e.releaseControl()})),e.evaluateInConsole_("window.location.reload(true);",(function(e){})),this.takeControl({slownessFactor:10})},t.prototype.testNetworkSyncSize=function(){const e=this;this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(t,o){e.assertEquals(25,t.resourceSize,"Incorrect total data length"),e.releaseControl()})),e.evaluateInConsole_('let xhr = new XMLHttpRequest(); xhr.open("GET", "chunked", false); xhr.send(null);',(function(){})),this.takeControl({slownessFactor:10})},t.prototype.testNetworkRawHeadersText=function(){const e=this;this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(t,o){t.responseHeadersText||e.fail("Failure: resource does not have response headers text");const n=t.responseHeadersText.indexOf("Date:");e.assertEquals(112,t.responseHeadersText.substring(n).length,"Incorrect response headers text length"),e.releaseControl()})),e.evaluateInConsole_("window.location.reload(true);",(function(e){})),this.takeControl({slownessFactor:10})},t.prototype.testNetworkTiming=function(){const e=this;this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(t,o){e.assertTrue(t.timing.receiveHeadersEnd-t.timing.connectStart>=70,"Time between receiveHeadersEnd and connectStart should be >=70ms, but was receiveHeadersEnd="+t.timing.receiveHeadersEnd+", connectStart="+t.timing.connectStart+"."),e.assertTrue(t.responseReceivedTime-t.startTime>=.07,"Time between responseReceivedTime and startTime should be >=0.07s, but was responseReceivedTime="+t.responseReceivedTime+", startTime="+t.startTime+"."),e.assertTrue(t.endTime-t.startTime>=.14,"Time between endTime and startTime should be >=0.14s, but was endtime="+t.endTime+", startTime="+t.startTime+"."),e.releaseControl()})),e.evaluateInConsole_("window.location.reload(true);",(function(e){})),this.takeControl({slownessFactor:10})},t.prototype.testPushTimes=function(e){const t=this;let o=2;this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(e,n){t.assertTrue("number"==typeof e.timing.pushStart&&e.timing.pushStart>0,`pushStart is invalid: ${e.timing.pushStart}`),t.assertTrue("number"==typeof e.timing.pushEnd,`pushEnd is invalid: ${e.timing.pushEnd}`),t.assertTrue(e.timing.pushStart<e.startTime,"pushStart should be before startTime"),e.url().endsWith("?pushUseNullEndTime")?t.assertTrue(0===e.timing.pushEnd,`pushEnd should be 0 but is ${e.timing.pushEnd}`):(t.assertTrue(e.timing.pushStart<e.timing.pushEnd,`pushStart should be before pushEnd (${e.timing.pushStart} >= ${e.timing.pushEnd})`),t.assertTrue(e.timing.pushEnd<e.endTime,"pushEnd should be before endTime"),t.assertTrue(e.startTime<e.timing.pushEnd,"pushEnd should be after startTime")),--o||t.releaseControl()}),!0),t.evaluateInConsole_("addImage('"+e+"')",(function(e){})),t.evaluateInConsole_("addImage('"+e+"?pushUseNullEndTime')",(function(e){})),this.takeControl()},t.prototype.testConsoleOnNavigateBack=function(){function e(){return SDK.ConsoleModel.allMessagesUnordered().filter((e=>e.source!==Protocol.Log.LogEntrySource.Violation))}function t(e){e&&e.data.source===Protocol.Log.LogEntrySource.Violation||(self.SDK.targetManager.removeModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,t,this),this.evaluateInConsole_("clickLink();",o.bind(this)))}function o(){this.assertEquals(3,e().length),this.evaluateInConsole_("history.back();",n.bind(this))}function n(){this.evaluateInConsole_("void 0;",s.bind(this))}function s(){this.assertEquals(7,e().length),this.releaseControl()}1===e().length?t.call(this,null):self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,t,this),this.takeControl()},t.prototype.testSharedWorker=function(){this.evaluateInConsole_("globalVar",function(e){this.assertEquals("2011",e),this.releaseControl()}.bind(this)),this.takeControl()},t.prototype.testPauseInSharedWorkerInitialization1=function(){this.takeControl(),this._waitForTargets(1,function(){ProtocolClient.test.deprecatedRunAfterPendingDispatches(this.releaseControl.bind(this))}.bind(this))},t.prototype.testPauseInSharedWorkerInitialization2=function(){function e(e){const t=e.data.messageText;"connected"!==t&&this.fail("Unexpected message: "+t),this.releaseControl()}this.takeControl(),this._waitForTargets(1,function t(){const o=self.SDK.targetManager.models(SDK.DebuggerModel)[0];if(o.isPaused())return self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,e,this),void o.resume();this._waitForScriptPause(t.bind(this))}.bind(this))},t.prototype.testSharedWorkerNetworkPanel=function(){this.takeControl(),this.showPanel("network").then((()=>{document.querySelector("#network-container")||this.fail("unable to find #network-container"),this.releaseControl()}))},t.prototype.enableTouchEmulation=function(){const e=new Emulation.DeviceModeModel((function(){}));e._target=self.SDK.targetManager.primaryPageTarget(),e._applyTouch(!0,!0)},t.prototype.waitForDebuggerPaused=function(){self.SDK.targetManager.primaryPageTarget().model(SDK.DebuggerModel).debuggerPausedDetails||(this.takeControl(),this._waitForScriptPause(this.releaseControl.bind(this)))},t.prototype.switchToPanel=function(e){this.showPanel(e).then(this.releaseControl.bind(this)),this.takeControl()},t.prototype.testDeviceMetricsOverrides=function(){function t(){return JSON.stringify({width:e.innerWidth,height:e.innerHeight,deviceScaleFactor:e.devicePixelRatio})}const o=this;async function n(e,n,s){await self.SDK.targetManager.primaryPageTarget().emulationAgent().invoke_setDeviceMetricsOverride(e),o.evaluateInConsole_("("+t.toString()+")()",(function(t){o.assertEquals(`'${JSON.stringify(n)}'`,t,"Wrong metrics for params: "+JSON.stringify(e)),s()}))}function s(){n({width:1200,height:1e3,deviceScaleFactor:1,mobile:!1,fitWindow:!1},{width:1200,height:1e3,deviceScaleFactor:1},a)}function a(){n({width:1200,height:1e3,deviceScaleFactor:3,mobile:!1,fitWindow:!0},{width:1200,height:1e3,deviceScaleFactor:3},r)}function r(){n({width:1200,height:1e3,deviceScaleFactor:3,mobile:!1,fitWindow:!1},{width:1200,height:1e3,deviceScaleFactor:3},i)}function i(){o.releaseControl()}o.takeControl(),n({width:1200,height:1e3,deviceScaleFactor:1,mobile:!1,fitWindow:!0},{width:1200,height:1e3,deviceScaleFactor:1},s)},t.prototype.testDispatchKeyEventShowsAutoFill=function(){const e=this;let t=!1;function o(){self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"rawKeyDown",key:"Down",windowsVirtualKeyCode:40,nativeVirtualKeyCode:40}),self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"keyUp",key:"Down",windowsVirtualKeyCode:40,nativeVirtualKeyCode:40})}function n(t){e.assertEquals("'Abbf'",t),e.releaseControl()}this.takeControl({slownessFactor:10}),self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,(function(s){const a=s.data.messageText;"ready"!==a||t||(t=!0,o()),"didShowSuggestions"===a&&(self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"rawKeyDown",key:"Enter",windowsVirtualKeyCode:13,nativeVirtualKeyCode:13}),self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"keyUp",key:"Enter",windowsVirtualKeyCode:13,nativeVirtualKeyCode:13}),e.evaluateInConsole_('document.getElementById("name").value',n))}),this);const s=SDK.ConsoleModel.allMessagesUnordered();if(s.length){const e=s[0].messageText;this.assertEquals("ready",e),o()}},t.prototype.testKeyEventUnhandled=function(){function e(e){this.assertEquals("keyup",e.data.type),this.assertEquals("F8",e.data.key),this.assertEquals(119,e.data.keyCode),this.assertEquals(0,e.data.modifiers),this.assertEquals("F8",e.data.code),this.releaseControl()}this.takeControl(),Host.InspectorFrontendHost.events.addEventListener(Host.InspectorFrontendHostAPI.Events.KeyEventUnhandled,(function t(o){this.assertEquals("keydown",o.data.type),this.assertEquals("F8",o.data.key),this.assertEquals(119,o.data.keyCode),this.assertEquals(0,o.data.modifiers),this.assertEquals("",o.data.code),Host.InspectorFrontendHost.events.removeEventListener(Host.InspectorFrontendHostAPI.Events.KeyEventUnhandled,t,this),Host.InspectorFrontendHost.events.addEventListener(Host.InspectorFrontendHostAPI.Events.KeyEventUnhandled,e,this),self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"keyUp",key:"F8",code:"F8",windowsVirtualKeyCode:119,nativeVirtualKeyCode:119})}),this),self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"rawKeyDown",key:"F8",windowsVirtualKeyCode:119,nativeVirtualKeyCode:119})},t.prototype.testForwardedKeysChanged=function(){this.takeControl(),this.addSniffer(self.UI.shortcutRegistry,"registerBindings",(()=>{self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"rawKeyDown",key:"F1",windowsVirtualKeyCode:112,nativeVirtualKeyCode:112})})),this.addSniffer(self.UI.shortcutRegistry,"handleKey",(e=>{this.assertEquals(112,e),this.releaseControl()})),self.Common.settings.moduleSetting("activeKeybindSet").set("vsCode")},t.prototype.testDispatchKeyEventDoesNotCrash=function(){self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"rawKeyDown",windowsVirtualKeyCode:35,key:"End"}),self.SDK.targetManager.primaryPageTarget().inputAgent().invoke_dispatchKeyEvent({type:"keyUp",windowsVirtualKeyCode:35,key:"End"})},t.prototype.testShowCertificate=function(){Host.InspectorFrontendHost.showCertificateViewer(["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"])},t.prototype.testOfflineNetworkConditions=async function(){const e=this;self.SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.OfflineConditions),this.addSniffer(SDK.NetworkDispatcher.prototype,"finishNetworkRequest",(function(t){e.assertEquals("net::ERR_INTERNET_DISCONNECTED",t.localizedFailDescription,"Request should have failed"),e.releaseControl()})),e.takeControl(),e.evaluateInConsole_('await fetch("/");',(function(e){}))},t.prototype.testEmulateNetworkConditions=function(){const e=this;function t(t,o,n){self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,(function t(s){const a=o.indexOf(s.data.messageText);-1!==a?(o.splice(a,1),o.length||(self.SDK.targetManager.removeModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,t,this),n())):e.fail("Unexpected message: "+s.data.messageText)}),this),self.SDK.multitargetNetworkManager.setNetworkConditions(t)}function o(){t(MobileThrottling.networkPresets[1],["online event: online = true","connection change event: type = cellular; downlinkMax = 0.3814697265625; effectiveType = 2g"],n)}function n(){t(MobileThrottling.networkPresets[0],["connection change event: type = cellular; downlinkMax = 1.373291015625; effectiveType = 3g"],e.releaseControl.bind(e))}e.takeControl(),t(MobileThrottling.networkPresets[2],["offline event: online = false","connection change event: type = none; downlinkMax = 0; effectiveType = 4g"],o)},t.prototype.testScreenshotRecording=function(){const e=this;const t=self.Common.settings.createSetting("timelineCaptureFilmStrip",!1);t.set(!0),e.evaluateInConsole_(function(e){let t=0;const o=document.createElement("div");o.setAttribute("style","left: 0px; top: 0px; width: 100px; height: 100px; position: absolute;"),document.body.appendChild(o),requestAnimationFrame((function n(){const s=[0,0,0];s[t%3]=255,o.style.backgroundColor="rgb("+s.join(",")+")",++t>10?requestAnimationFrame(e):requestAnimationFrame(n)}))}.toString(),(function(){})),e.invokeAsyncWithTimeline_("performActionsInPage",(function(){t.set(!1);const o=UI.panels.timeline._performanceModel.filmStripModel().frames();e.assertTrue(o.length>4&&"number"==typeof o.length),function(t){const o=[];for(const e of t)e.imageDataPromise().then(n);function n(t){const o=new Image;e.assertTrue(Boolean(t),"No image data for frame"),o.addEventListener("load",s),o.src="data:image/jpg;base64,"+t}function s(n){o.push(n.target),o.length===t.length&&function(t){let o=0,n=0,s=0;const a=document.createElement("canvas"),r=a.getContext("2d");for(const i of t){e.assertTrue(i.naturalWidth>10),e.assertTrue(i.naturalHeight>10),a.width=i.naturalWidth,a.height=i.naturalHeight,r.drawImage(i,0,0);const t=r.getImageData(0,0,1,1),l=Array.prototype.join.call(t.data,",");t.data[0]>200?o++:t.data[1]>200?n++:t.data[2]>200?s++:e.fail("Unexpected color: "+l)}e.assertTrue(o&&n&&s,"Color check failed"),e.releaseControl()}(o)}}(o)})),e.takeControl()},t.prototype.testSettings=function(){const e=this;function t(t){Main.Main.instanceForTest.createSettings(t);const o=self.Common.settings.createLocalSetting("local",void 0);e.assertEquals("object",typeof o.get()),e.assertEquals("local",o.get().s),e.assertEquals(1,o.get().n);const n=self.Common.settings.createSetting("global",void 0);e.assertEquals("object",typeof n.get()),e.assertEquals("global",n.get().s),e.assertEquals(2,n.get().n),e.releaseControl()}!function(){self.Common.settings.createLocalSetting("local",void 0).set({s:"local",n:1});self.Common.settings.createSetting("global",void 0).set({s:"global",n:2})}(),e.takeControl(),setTimeout((function(){Root.Runtime.experiments.clearForTest(),Host.InspectorFrontendHost.getPreferences(t)}),0)},t.prototype.testWindowInitializedOnNavigateBack=function(){const e=this;e.takeControl();function t(){const t=SDK.ConsoleModel.allMessagesUnordered();e.assertEquals(1,t.length),e.assertTrue(-1===t[0].messageText.indexOf("Uncaught")),e.releaseControl()}1===SDK.ConsoleModel.allMessagesUnordered().length?t():self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,t.bind(this),this)},t.prototype.testConsoleContextNames=function(){const e=this;function t(){const t=Console.ConsoleView.instance().consoleContextSelector,o=[];for(const e of t.items)o.push(t.titleFor(e));e.assertEquals("top",o[0]),e.assertEquals("Simple content script",o[1]),e.releaseControl()}e.takeControl(),this.showPanel("console").then((()=>this._waitForExecutionContexts(2,t.bind(this))))},t.prototype.testRawHeadersWithHSTS=function(e){const t=this;t.takeControl({slownessFactor:10}),self.SDK.targetManager.addModelListener(SDK.NetworkManager,SDK.NetworkManager.Events.ResponseReceived,(function(n){const s=n.data.request;if(!s.url().startsWith("http"))return;switch(++o){case 1:t.assertEquals(301,s.statusCode),t.assertEquals("Moved Permanently",s.statusText),t.assertTrue(e.endsWith(s.responseHeaderValue("Location")));break;case 2:t.assertTrue(s.url().startsWith("http://")),t.assertEquals(307,s.statusCode),t.assertEquals("Internal Redirect",s.statusText),t.assertEquals("HSTS",s.responseHeaderValue("Non-Authoritative-Reason")),t.assertTrue(s.responseHeaderValue("Location").startsWith("https://"));break;case 3:t.assertTrue(s.url().startsWith("https://")),t.assertTrue(s.requestHeaderValue("Referer").startsWith("http://127.0.0.1")),t.assertEquals(200,s.statusCode),t.assertEquals("OK",s.statusText),t.assertEquals("132",s.responseHeaderValue("Content-Length")),t.releaseControl()}})),this.evaluateInConsole_(`\n let img = document.createElement('img');\n img.src = "${e}";\n document.body.appendChild(img);\n `,(()=>{}));let o=0},t.prototype.testDOMWarnings=function(){const e=SDK.ConsoleModel.allMessagesUnordered();this.assertEquals(1,e.length);this.assertTrue(e[0].messageText.startsWith("[DOM] Found 2 elements with non-unique id #dup:"))},t.prototype.waitForTestResultsInConsole=function(){const e=SDK.ConsoleModel.allMessagesUnordered();for(let t=0;t<e.length;++t){const o=e[t].messageText;if("PASS"===o)return;/^FAIL/.test(o)&&this.fail(o)}self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,(function(e){const t=e.data.messageText;"PASS"===t?this.releaseControl():/^FAIL/.test(t)&&this.fail(t)}),this),this.takeControl({slownessFactor:10})},t.prototype.waitForTestResultsAsMessage=function(){const e=t=>{if(!t.data.testOutput)return;top.removeEventListener("message",e);const o=t.data.testOutput;"PASS"===o?this.releaseControl():this.fail(o)};top.addEventListener("message",e),this.takeControl()},t.prototype._overrideMethod=function(e,t,o){const n=e[t];"function"==typeof n?e[t]=function(){let s;try{s=n.apply(e,arguments)}finally{e[t]=n}return o.apply(n,arguments),s}:this.fail(`TestSuite._overrideMethod: ${t} is not a function`)},t.prototype.startTimeline=function(e){const t=this;this.showPanel("timeline").then((function(){const o=UI.panels.timeline;t._overrideMethod(o,"recordingStarted",e),o._toggleRecording()}))},t.prototype.stopTimeline=function(e){const t=UI.panels.timeline;this._overrideMethod(t,"loadingComplete",e),t._toggleRecording()},t.prototype.invokePageFunctionAsync=function(e,t,o){const n=arguments[arguments.length-1],s=`DONE: ${e}.${++this._asyncInvocationId}`,a=arguments.length<3?"":Array.prototype.slice.call(arguments,1,-1).map((e=>JSON.stringify(e))).join(",")+",";this.evaluateInConsole_(`${e}(${a} function() { console.log('${s}'); });`,(function(){})),self.SDK.targetManager.addModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,(function e(t){t.data.messageText===s&&(self.SDK.targetManager.removeModelListener(SDK.ConsoleModel,SDK.ConsoleModel.Events.MessageAdded,e),n())}))},t.prototype.invokeAsyncWithTimeline_=function(e,t){const o=this;function n(){o.stopTimeline(t)}this.startTimeline((function(){o.invokePageFunctionAsync(e,n)}))},t.prototype.enableExperiment=function(e){Root.Runtime.experiments.enableForTest(e)},t.prototype.checkInputEventsPresent=function(){const e=new Set(arguments),t=UI.panels.timeline._performanceModel.timelineModel().virtualThreads().find((e=>e.isMainFrame)).asyncEventsByGroup.get(TimelineModel.TimelineModel.AsyncEventGroup.input)||[],o="InputLatency::";for(const n of t)if(n.name.startsWith(o)&&!(n.steps.length<2)){if(n.name.startsWith(o+"Mouse")&&"number"!=typeof TimelineModel.TimelineData.forEvent(n.steps[0]).timeWaitingForMainThread)throw`Missing timeWaitingForMainThread on ${n.name}`;e.delete(n.name.substr(14))}if(e.size)throw"Some expected events are not found: "+Array.from(e.keys()).join(",")},t.prototype.testInspectedElementIs=async function(e){this.takeControl(),await self.runtime.loadLegacyModule("panels/elements/elements-legacy.js"),Elements.ElementsPanel.firstInspectElementNodeNameForTest||await new Promise((e=>this.addSniffer(Elements.ElementsPanel,"firstInspectElementCompletedForTest",e))),this.assertEquals(e,Elements.ElementsPanel.firstInspectElementNodeNameForTest),this.releaseControl()},t.prototype.testDisposeEmptyBrowserContext=async function(e){this.takeControl();const t=self.SDK.targetManager.rootTarget().targetAgent(),{browserContextId:o}=await t.invoke_createBrowserContext(),n=await t.invoke_getBrowserContexts();this.assertEquals(n.browserContextIds.length,1),await t.invoke_disposeBrowserContext({browserContextId:o});const s=await t.invoke_getBrowserContexts();this.assertEquals(s.browserContextIds.length,0),this.releaseControl()},t.prototype.testNewWindowFromBrowserContext=async function(e){this.takeControl();const t=self.SDK.targetManager.rootTarget().targetAgent(),{browserContextId:o}=await t.invoke_createBrowserContext(),{targetId:n}=await t.invoke_createTarget({url:"data:text/html,<!DOCTYPE html>",browserContextId:o,newWindow:!0});await t.invoke_attachToTarget({targetId:n,flatten:!0}),await t.invoke_disposeBrowserContext({browserContextId:o}),this.releaseControl()},t.prototype.testCreateBrowserContext=async function(e){this.takeControl();const t=[],a=self.SDK.targetManager.rootTarget().targetAgent(),r=await o(e,t),i=await o(e,t),l=await a.invoke_getBrowserContexts();this.assertEquals(l.browserContextIds.length,2),this.assertTrue(l.browserContextIds.includes(t[0])),this.assertTrue(l.browserContextIds.includes(t[1])),await s(r,'localStorage.setItem("page1", "page1")'),await s(i,'localStorage.setItem("page2", "page2")'),this.assertEquals(await s(r,'localStorage.getItem("page1")'),"page1"),this.assertEquals(await s(r,'localStorage.getItem("page2")'),null),this.assertEquals(await s(i,'localStorage.getItem("page1")'),null),this.assertEquals(await s(i,'localStorage.getItem("page2")'),"page2");const c=[];self.SDK.targetManager.observeTargets({targetAdded:()=>{},targetRemoved:e=>c.push(e)}),await Promise.all([n(t[0]),n(t[1])]),this.assertEquals(c.length,2),this.assertEquals(-1!==c.indexOf(r),!0),this.assertEquals(-1!==c.indexOf(i),!0),this.releaseControl()},t.prototype.testInputDispatchEventsToOOPIF=async function(){async function e(e){return await s(e,"\n (function() {\n var result = window.logs.join(' ');\n window.logs = [];\n return result;\n })()")}let t,o;this.takeControl(),await new Promise((e=>this._waitForTargets(2,e)));const n=self.SDK.targetManager.primaryPageTarget().inputAgent(),a=self.SDK.targetManager.primaryPageTarget().runtimeAgent();await n.invoke_dispatchMouseEvent({type:"mousePressed",button:"left",clickCount:1,x:10,y:10}),await n.invoke_dispatchMouseEvent({type:"mouseMoved",button:"left",clickCount:1,x:10,y:20}),await n.invoke_dispatchMouseEvent({type:"mouseReleased",button:"left",clickCount:1,x:10,y:20}),await n.invoke_dispatchMouseEvent({type:"mousePressed",button:"left",clickCount:1,x:230,y:140}),await n.invoke_dispatchMouseEvent({type:"mouseMoved",button:"left",clickCount:1,x:230,y:150}),await n.invoke_dispatchMouseEvent({type:"mouseReleased",button:"left",clickCount:1,x:230,y:150}),t="Event type: mousedown button: 0 x: 10 y: 10 Event type: mouseup button: 0 x: 10 y: 20",this.assertEquals(t,await e(self.SDK.targetManager.targets()[0])),o="Event type: mousedown button: 0 x: 30 y: 40 Event type: mouseup button: 0 x: 30 y: 50",this.assertEquals(o,await e(self.SDK.targetManager.targets()[1])),await n.invoke_dispatchKeyEvent({type:"keyDown",key:"a"}),await a.invoke_evaluate({expression:"document.querySelector('iframe').focus()"}),await n.invoke_dispatchKeyEvent({type:"keyDown",key:"a"}),t="Event type: keydown",this.assertEquals(t,await e(self.SDK.targetManager.targets()[0])),o="Event type: keydown",this.assertEquals(o,await e(self.SDK.targetManager.targets()[1])),await n.invoke_dispatchTouchEvent({type:"touchStart",touchPoints:[{x:10,y:10}]}),await n.invoke_dispatchTouchEvent({type:"touchEnd",touchPoints:[]}),await n.invoke_dispatchTouchEvent({type:"touchStart",touchPoints:[{x:230,y:140}]}),await n.invoke_dispatchTouchEvent({type:"touchEnd",touchPoints:[]}),t="Event type: touchstart touch x: 10 touch y: 10",this.assertEquals(t,await e(self.SDK.targetManager.targets()[0])),o="Event type: touchstart touch x: 30 touch y: 40",this.assertEquals(o,await e(self.SDK.targetManager.targets()[1])),this.releaseControl()},t.prototype.testLoadResourceForFrontend=async function(e,t){const o=this,n=new Set(["cache-control","pragma"]);function s(e,t,s,a,r){return new Promise((i=>{Host.ResourceLoader.load(e,t,(function(e,t,l,c){o.assertEquals(s,c.statusCode);const d=[];for(const e in t){const t=e.toLowerCase();n.has(t)&&d.push(t)}d.sort(),o.assertEquals(a.join(", "),d.join(", ")),o.assertEquals(r,l),i()}))}))}this.takeControl({slownessFactor:10}),await s(e+"non-existent.html",void 0,404,[],""),await s(e+"hello.html",void 0,200,[],"<!doctype html>\n<p>hello</p>\n"),await s(e+"echoheader?x-devtools-test",{"x-devtools-test":"Foo"},200,["cache-control"],"Foo"),await s(e+"set-header?pragma:%20no-cache",void 0,200,["pragma"],"pragma: no-cache"),await self.SDK.targetManager.primaryPageTarget().runtimeAgent().invoke_evaluate({expression:"fetch(\"/set-cookie?devtools-test-cookie=Bar\",\n {credentials: 'include'})",awaitPromise:!0}),await s(e+"echoheader?Cookie",void 0,200,["cache-control"],"devtools-test-cookie=Bar"),await self.SDK.targetManager.primaryPageTarget().runtimeAgent().invoke_evaluate({expression:"fetch(\"/set-cookie?devtools-test-cookie=same-site-cookie;SameSite=Lax\",\n {credentials: 'include'})",awaitPromise:!0}),await s(e+"echoheader?Cookie",void 0,200,["cache-control"],"devtools-test-cookie=same-site-cookie"),await s("data:text/html,<body>hello</body>",void 0,200,[],"<body>hello</body>"),await s(t,void 0,200,[],"<!DOCTYPE html>\n<html>\n<body>\nDummy page.\n</body>\n</html>\n"),await s(t+"thisfileshouldnotbefound",void 0,404,[],""),this.releaseControl()},t.prototype.testExtensionWebSocketUserAgentOverride=async function(e){this.takeControl();const t="test user agent";self.SDK.multitargetNetworkManager.setUserAgentOverride(t),self.SDK.targetManager.addModelListener(SDK.NetworkManager,SDK.NetworkManager.Events.RequestUpdated,function(e){const o=e.data;if(o.resourceType()!==Common.resourceTypes.WebSocket)return;if(!o.requestHeadersText())return;let n="no user-agent header";for(const{name:e,value:t}of o.requestHeaders())"user-agent"===e.toLowerCase()&&(n=t);this.assertEquals(t,n),this.releaseControl()}.bind(this)),this.evaluateInConsole_(`new WebSocket('ws://127.0.0.1:${e}')`,(()=>{}))},t.prototype.testExtensionWebSocketOfflineNetworkConditions=async function(e){self.SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.OfflineConditions),this.addSniffer(SDK.NetworkDispatcher.prototype,"webSocketClosed",(()=>{this.releaseControl()})),this.takeControl(),this.evaluateInConsole_(`new WebSocket('ws://127.0.0.1:${e}/echo-with-no-extension')`,(()=>{}))},t.prototype.uiSourceCodesToString_=function(e){const t=[];for(let o=0;o<e.length;o++)t.push('"'+e[o].url()+'"');return t.join(",")},t.prototype.testSourceMapsFromExtension=function(e){this.takeControl();self.SDK.targetManager.primaryPageTarget().model(SDK.DebuggerModel).sourceMapManager().addEventListener(SDK.SourceMapManager.Events.SourceMapAttached,this.releaseControl.bind(this)),this.evaluateInConsole_(`console.log(1) //# sourceMappingURL=chrome-extension://${e}/source.map`,(()=>{}))},t.prototype.testSourceMapsFromDevtools=function(){this.takeControl();self.SDK.targetManager.primaryPageTarget().model(SDK.DebuggerModel).sourceMapManager().addEventListener(SDK.SourceMapManager.Events.SourceMapWillAttach,this.releaseControl.bind(this)),this.evaluateInConsole_("console.log(1) //# sourceMappingURL=devtools://devtools/bundled/devtools_compatibility.js",(()=>{}))},t.prototype.testDoesNotCrashOnSourceMapsFromUnknownScheme=function(){this.evaluateInConsole_("console.log(1) //# sourceMappingURL=invalid-scheme://source.map",(()=>{}))},t.prototype.nonAnonymousUISourceCodes_=function(){return self.Workspace.workspace.uiSourceCodes().filter((function(e){return!e.project().isServiceProject()}))},t.prototype.evaluateInConsole_=function(e,t){function o(){self.UI.context.removeFlavorChangeListener(SDK.ExecutionContext,n,this);Console.ConsoleView.instance().prompt.appendCommand(e),this.addSniffer(Console.ConsoleView.prototype,"consoleMessageAddedForTest",function(e){t(e.toMessageElement().deepTextContent())}.bind(this))}function n(){self.Common.console.showPromise().then(o.bind(this))}self.UI.context.flavor(SDK.ExecutionContext)?n.call(this):self.UI.context.addFlavorChangeListener(SDK.ExecutionContext,n,this)},t.prototype._scriptsAreParsed=function(e){const t=this.nonAnonymousUISourceCodes_(),o=e.slice(0);for(let e=0;e<t.length;++e)for(let n=0;n<o.length;++n)if(-1!==t[e].name().search(o[n])){o.splice(n,1);break}return 0===o.length},t.prototype._waitForScriptPause=function(e){this.addSniffer(SDK.DebuggerModel.prototype,"pausedScript",e)},t.prototype._waitUntilScriptsAreParsed=function(e,t){const o=this;!function n(){o._scriptsAreParsed(e)?t():o.addSniffer(UI.panels.sources.sourcesView(),"addUISourceCode",n)}()},t.prototype._waitForTargets=function(e,t){(function o(){self.SDK.targetManager.targets().length>=e?t.call(null):this.addSniffer(SDK.TargetManager.prototype,"createTarget",o.bind(this))}).call(this)},t.prototype._waitForExecutionContexts=function(e,t){const o=self.SDK.targetManager.primaryPageTarget().model(SDK.RuntimeModel);(function n(){o.executionContexts().length>=e?t.call(null):this.addSniffer(SDK.RuntimeModel.prototype,"executionContextCreated",n.bind(this))}).call(this)},e.uiTests=new t(e.domAutomationController)}(window);