Best JavaScript code snippet using playwright-internal
Page.js
Source: Page.js
...578 inspect: "æ£æ¥",579 },580 })581 }582 _onCrashed() {583 this.isCrashed = true584 if (this.$dom) {585 let crashedDOM = document.createElement("div")586 crashedDOM.innerHTML =587 '<div style="width: 100%; position: absolute; left: 0; top: 0; height: 100%; z-index: 2; background: #fff; padding: 100px; font-size: 24px; color: #444; line-height: 32px; "><svg t="1598317803345" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2065" width="32" height="32" style=" margin-right: 20px; display: inline-block; vertical-align: top; "><path d="M1024 519.9872C1024 484.4544 984.9344 0 506.2656 0 79.36 0 0 433.0496 0 522.5984c0 323.2768 298.24 372.8384 298.24 372.8384-16.2304 86.528 43.1616 147.0464 137.3696 103.936 77.056 52.8896 132.352 4.096 132.352 4.096 62.464 34.5088 158.6688-7.1168 145.152-108.9536 0 0 310.8864-63.0784 310.8864-374.4768M299.008 649.216c-78.8992 0-142.8992-75.9808-142.8992-169.7792 0-93.696 64-169.6768 142.848-169.6768 79.0016 0 143.0016 75.9296 143.0016 169.6768 0 93.7984-64 169.8304-142.9504 169.8304m275.7632 87.808c-3.072 58.112-101.7344 77.1072-112.1792 0-1.1264-15.9744 13.568-77.312 56.064-77.312 42.4448 0 58.9824 58.2656 56.1152 77.1584m150.016-87.6544c-78.9504 0-142.9504-76.032-142.9504-169.8304 0-93.696 64-169.6768 143.0016-169.6768 78.9504 0 142.9504 75.9296 142.9504 169.6768 0 93.7984-64 169.8304-142.9504 169.8304" p-id="2066" fill="currentColor"></path></svg>åå·ï¼å´©æºå¦ï¼</div>'588 this.$dom.appendChild(crashedDOM)589 } else {590 }591 }592 _onDestroyed() {593 this.isDestroyed = true594 }595 goHome() {596 return this.goto(this.options.startUrl || "about:blank")...
extensionHost.js
Source: extensionHost.js
1/*---------------------------------------------------------------------------------------------2 * Copyright (c) Microsoft Corporation. All rights reserved.3 * Licensed under the MIT License. See License.txt in the project root for license information.4 *--------------------------------------------------------------------------------------------*/5var __assign = (this && this.__assign) || Object.assign || function(t) {6 for (var s, i = 1, n = arguments.length; i < n; i++) {7 s = arguments[i];8 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))9 t[p] = s[p];10 }11 return t;12};13var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {14 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;15 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);16 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;17 return c > 3 && r && Object.defineProperty(target, key, r), r;18};19var __param = (this && this.__param) || function (paramIndex, decorator) {20 return function (target, key) { decorator(target, key, paramIndex); }21};22define(["require", "exports", "vs/nls", "vs/base/common/errorMessage", "vs/base/common/objects", "vs/base/common/uri", "vs/base/common/winjs.base", "vs/base/common/platform", "vs/base/node/ports", "vs/platform/message/common/message", "vs/platform/lifecycle/common/lifecycle", "vs/platform/windows/common/windows", "vs/platform/workspace/common/workspace", "vs/platform/telemetry/common/telemetry", "child_process", "electron", "vs/platform/node/product", "vs/platform/environment/common/environment", "vs/base/parts/ipc/node/ipc.net", "net", "vs/base/common/event", "vs/workbench/services/configuration/common/configuration", "vs/workbench/services/crashReporter/electron-browser/crashReporterService", "vs/platform/broadcast/electron-browser/broadcastService", "vs/base/common/paths", "vs/platform/extensions/common/extensionHost", "vs/base/common/lifecycle", "vs/base/node/console", "vs/platform/configuration/common/configurationRegistry", "vs/platform/log/common/log"], function (require, exports, nls, errorMessage_1, objects, uri_1, winjs_base_1, platform_1, ports_1, message_1, lifecycle_1, windows_1, workspace_1, telemetry_1, child_process_1, electron_1, product_1, environment_1, ipc_net_1, net_1, event_1, configuration_1, crashReporterService_1, broadcastService_1, paths_1, extensionHost_1, lifecycle_2, console_1, configurationRegistry_1, log_1) {23 'use strict';24 Object.defineProperty(exports, "__esModule", { value: true });25 var ExtensionHostProcessWorker = /** @class */ (function () {26 function ExtensionHostProcessWorker(27 /* intentionally not injected */ _extensionService, _contextService, _messageService, _windowsService, _windowService, _broadcastService, _lifecycleService, _environmentService, _configurationService, _telemetryService, _crashReporterService, _logService) {28 var _this = this;29 this._extensionService = _extensionService;30 this._contextService = _contextService;31 this._messageService = _messageService;32 this._windowsService = _windowsService;33 this._windowService = _windowService;34 this._broadcastService = _broadcastService;35 this._lifecycleService = _lifecycleService;36 this._environmentService = _environmentService;37 this._configurationService = _configurationService;38 this._telemetryService = _telemetryService;39 this._crashReporterService = _crashReporterService;40 this._logService = _logService;41 this._onCrashed = new event_1.Emitter();42 this.onCrashed = this._onCrashed.event;43 // handle extension host lifecycle a bit special when we know we are developing an extension that runs inside44 this._isExtensionDevHost = this._environmentService.isExtensionDevelopment;45 this._isExtensionDevDebug = (typeof this._environmentService.debugExtensionHost.port === 'number');46 this._isExtensionDevDebugBrk = !!this._environmentService.debugExtensionHost.break;47 this._isExtensionDevTestFromCli = this._isExtensionDevHost && !!this._environmentService.extensionTestsPath && !this._environmentService.debugExtensionHost.break;48 this._lastExtensionHostError = null;49 this._terminating = false;50 this._namedPipeServer = null;51 this._extensionHostProcess = null;52 this._extensionHostConnection = null;53 this._messageProtocol = null;54 this._toDispose = [];55 this._toDispose.push(this._onCrashed);56 this._toDispose.push(this._lifecycleService.onWillShutdown(function (e) { return _this._onWillShutdown(e); }));57 this._toDispose.push(this._lifecycleService.onShutdown(function (reason) { return _this.terminate(); }));58 this._toDispose.push(this._broadcastService.onBroadcast(function (b) { return _this._onBroadcast(b); }));59 var globalExitListener = function () { return _this.terminate(); };60 process.once('exit', globalExitListener);61 this._toDispose.push({62 dispose: function () {63 process.removeListener('exit', globalExitListener);64 }65 });66 }67 ExtensionHostProcessWorker.prototype.dispose = function () {68 this.terminate();69 };70 ExtensionHostProcessWorker.prototype._onBroadcast = function (broadcast) {71 var _this = this;72 // Close Ext Host Window Request73 if (broadcast.channel === extensionHost_1.EXTENSION_CLOSE_EXTHOST_BROADCAST_CHANNEL && this._isExtensionDevHost) {74 var extensionPaths = broadcast.payload;75 if (Array.isArray(extensionPaths) && extensionPaths.some(function (path) { return paths_1.isEqual(_this._environmentService.extensionDevelopmentPath, path, !platform_1.isLinux); })) {76 this._windowService.closeWindow();77 }78 }79 if (broadcast.channel === extensionHost_1.EXTENSION_RELOAD_BROADCAST_CHANNEL && this._isExtensionDevHost) {80 var extensionPaths = broadcast.payload;81 if (Array.isArray(extensionPaths) && extensionPaths.some(function (path) { return paths_1.isEqual(_this._environmentService.extensionDevelopmentPath, path, !platform_1.isLinux); })) {82 this._windowService.reloadWindow();83 }84 }85 };86 ExtensionHostProcessWorker.prototype.start = function () {87 var _this = this;88 if (this._terminating) {89 // .terminate() was called90 return null;91 }92 if (!this._messageProtocol) {93 this._messageProtocol = winjs_base_1.TPromise.join([this._tryListenOnPipe(), this._tryFindDebugPort()]).then(function (data) {94 var pipeName = data[0];95 var portData = data[1];96 var opts = {97 env: objects.mixin(objects.deepClone(process.env), {98 AMD_ENTRYPOINT: 'vs/workbench/node/extensionHostProcess',99 PIPE_LOGGING: 'true',100 VERBOSE_LOGGING: true,101 VSCODE_WINDOW_ID: String(_this._windowService.getCurrentWindowId()),102 VSCODE_IPC_HOOK_EXTHOST: pipeName,103 VSCODE_HANDLES_UNCAUGHT_ERRORS: true,104 VSCODE_LOG_STACK: !_this._isExtensionDevTestFromCli && (_this._isExtensionDevHost || !_this._environmentService.isBuilt || product_1.default.quality !== 'stable' || _this._environmentService.verbose)105 }),106 // We only detach the extension host on windows. Linux and Mac orphan by default107 // and detach under Linux and Mac create another process group.108 // We detach because we have noticed that when the renderer exits, its child processes109 // (i.e. extension host) are taken down in a brutal fashion by the OS110 detached: !!platform_1.isWindows,111 execArgv: undefined,112 silent: true113 };114 if (portData.actual) {115 opts.execArgv = [116 '--nolazy',117 (_this._isExtensionDevDebugBrk ? '--inspect-brk=' : '--inspect=') + portData.actual118 ];119 if (!portData.expected) {120 // No one asked for 'inspect' or 'inspect-brk', only us. We add another121 // option such that the extension host can manipulate the execArgv array122 opts.env.VSCODE_PREVENT_FOREIGN_INSPECT = true;123 }124 }125 var crashReporterOptions = _this._crashReporterService.getChildProcessStartOptions('extensionHost');126 if (crashReporterOptions) {127 opts.env.CRASH_REPORTER_START_OPTIONS = JSON.stringify(crashReporterOptions);128 }129 // Run Extension Host as fork of current process130 _this._extensionHostProcess = child_process_1.fork(uri_1.default.parse(require.toUrl('bootstrap')).fsPath, ['--type=extensionHost'], opts);131 _this._extensionHostProcess.stdout.setEncoding('utf8');132 _this._extensionHostProcess.stderr.setEncoding('utf8');133 var onStdout = event_1.fromNodeEventEmitter(_this._extensionHostProcess.stdout, 'data');134 var onStderr = event_1.fromNodeEventEmitter(_this._extensionHostProcess.stderr, 'data');135 var onOutput = event_1.anyEvent(event_1.mapEvent(onStdout, function (o) { return ({ data: "%c" + o, format: [''] }); }), event_1.mapEvent(onStderr, function (o) { return ({ data: "%c" + o, format: ['color: red'] }); }));136 // Debounce all output, so we can render it in the Chrome console as a group137 var onDebouncedOutput = event_1.debounceEvent(onOutput, function (r, o) {138 return r139 ? { data: r.data + o.data, format: r.format.concat(o.format) }140 : { data: o.data, format: o.format };141 }, 100);142 // Print out extension host output143 onDebouncedOutput(function (data) {144 var inspectorUrlIndex = !_this._environmentService.isBuilt && data.data && data.data.indexOf('chrome-devtools://');145 if (inspectorUrlIndex >= 0) {146 console.log("%c[Extension Host] %cdebugger inspector at " + data.data.substr(inspectorUrlIndex), 'color: blue', 'color: black');147 }148 else {149 console.group('Extension Host');150 console.log.apply(console, [data.data].concat(data.format));151 console.groupEnd();152 }153 });154 // Support logging from extension host155 _this._extensionHostProcess.on('message', function (msg) {156 if (msg && msg.type === '__$console') {157 _this._logExtensionHostMessage(msg);158 }159 });160 // Lifecycle161 _this._extensionHostProcess.on('error', function (err) { return _this._onExtHostProcessError(err); });162 _this._extensionHostProcess.on('exit', function (code, signal) { return _this._onExtHostProcessExit(code, signal); });163 // Notify debugger that we are ready to attach to the process if we run a development extension164 if (_this._isExtensionDevHost && portData.actual) {165 _this._broadcastService.broadcast({166 channel: extensionHost_1.EXTENSION_ATTACH_BROADCAST_CHANNEL,167 payload: {168 debugId: _this._environmentService.debugExtensionHost.debugId,169 port: portData.actual170 }171 });172 }173 _this._inspectPort = portData.actual;174 // Help in case we fail to start it175 var startupTimeoutHandle;176 if (!_this._environmentService.isBuilt || _this._isExtensionDevHost) {177 startupTimeoutHandle = setTimeout(function () {178 var msg = _this._isExtensionDevDebugBrk179 ? nls.localize('extensionHostProcess.startupFailDebug', "Extension host did not start in 10 seconds, it might be stopped on the first line and needs a debugger to continue.")180 : nls.localize('extensionHostProcess.startupFail', "Extension host did not start in 10 seconds, that might be a problem.");181 _this._messageService.show(message_1.Severity.Warning, msg);182 }, 10000);183 }184 // Initialize extension host process with hand shakes185 return _this._tryExtHostHandshake().then(function (protocol) {186 clearTimeout(startupTimeoutHandle);187 return protocol;188 });189 });190 }191 return this._messageProtocol;192 };193 /**194 * Start a server (`this._namedPipeServer`) that listens on a named pipe and return the named pipe name.195 */196 ExtensionHostProcessWorker.prototype._tryListenOnPipe = function () {197 var _this = this;198 return new winjs_base_1.TPromise(function (resolve, reject) {199 var pipeName = ipc_net_1.generateRandomPipeName();200 _this._namedPipeServer = net_1.createServer();201 _this._namedPipeServer.on('error', reject);202 _this._namedPipeServer.listen(pipeName, function () {203 _this._namedPipeServer.removeListener('error', reject);204 resolve(pipeName);205 });206 });207 };208 /**209 * Find a free port if extension host debugging is enabled.210 */211 ExtensionHostProcessWorker.prototype._tryFindDebugPort = function () {212 var _this = this;213 var expected;214 var startPort = 9333;215 if (typeof this._environmentService.debugExtensionHost.port === 'number') {216 startPort = expected = this._environmentService.debugExtensionHost.port;217 }218 else {219 return winjs_base_1.TPromise.as({ expected: undefined, actual: 0 });220 }221 return new winjs_base_1.TPromise(function (c, e) {222 return ports_1.findFreePort(startPort, 10 /* try 10 ports */, 5000 /* try up to 5 seconds */).then(function (port) {223 if (!port) {224 console.warn('%c[Extension Host] %cCould not find a free port for debugging', 'color: blue', 'color: black');225 }226 else {227 if (expected && port !== expected) {228 console.warn("%c[Extension Host] %cProvided debugging port " + expected + " is not free, using " + port + " instead.", 'color: blue', 'color: black');229 }230 if (_this._isExtensionDevDebugBrk) {231 console.warn("%c[Extension Host] %cSTOPPED on first line for debugging on port " + port, 'color: blue', 'color: black');232 }233 else {234 console.info("%c[Extension Host] %cdebugger listening on port " + port, 'color: blue', 'color: black');235 }236 }237 return c({ expected: expected, actual: port });238 });239 });240 };241 ExtensionHostProcessWorker.prototype._tryExtHostHandshake = function () {242 var _this = this;243 return new winjs_base_1.TPromise(function (resolve, reject) {244 // Wait for the extension host to connect to our named pipe245 // and wrap the socket in the message passing protocol246 var handle = setTimeout(function () {247 _this._namedPipeServer.close();248 _this._namedPipeServer = null;249 reject('timeout');250 }, 60 * 1000);251 _this._namedPipeServer.on('connection', function (socket) {252 clearTimeout(handle);253 _this._namedPipeServer.close();254 _this._namedPipeServer = null;255 _this._extensionHostConnection = socket;256 resolve(new ipc_net_1.Protocol(_this._extensionHostConnection));257 });258 }).then(function (protocol) {259 // 1) wait for the incoming `ready` event and send the initialization data.260 // 2) wait for the incoming `initialized` event.261 return new winjs_base_1.TPromise(function (resolve, reject) {262 var handle = setTimeout(function () {263 reject('timeout');264 }, 60 * 1000);265 var disposable = protocol.onMessage(function (msg) {266 if (msg === 'ready') {267 // 1) Extension Host is ready to receive messages, initialize it268 _this._createExtHostInitData().then(function (data) { return protocol.send(JSON.stringify(data)); });269 return;270 }271 if (msg === 'initialized') {272 // 2) Extension Host is initialized273 clearTimeout(handle);274 // stop listening for messages here275 disposable.dispose();276 // release this promise277 resolve(protocol);278 return;279 }280 console.error("received unexpected message during handshake phase from the extension host: ", msg);281 });282 });283 });284 };285 ExtensionHostProcessWorker.prototype._createExtHostInitData = function () {286 var _this = this;287 return winjs_base_1.TPromise.join([this._telemetryService.getTelemetryInfo(), this._extensionService.getExtensions()]).then(function (_a) {288 var telemetryInfo = _a[0], extensionDescriptions = _a[1];289 var configurationData = __assign({}, _this._configurationService.getConfigurationData(), { configurationScopes: {} });290 var r = {291 parentPid: process.pid,292 environment: {293 isExtensionDevelopmentDebug: _this._isExtensionDevDebug,294 appRoot: _this._environmentService.appRoot,295 appSettingsHome: _this._environmentService.appSettingsHome,296 disableExtensions: _this._environmentService.disableExtensions,297 userExtensionsHome: _this._environmentService.extensionsPath,298 extensionDevelopmentPath: _this._environmentService.extensionDevelopmentPath,299 extensionTestsPath: _this._environmentService.extensionTestsPath,300 // globally disable proposed api when built and not insiders developing extensions301 enableProposedApiForAll: !_this._environmentService.isBuilt || (!!_this._environmentService.extensionDevelopmentPath && product_1.default.nameLong.indexOf('Insiders') >= 0),302 enableProposedApiFor: _this._environmentService.args['enable-proposed-api'] || []303 },304 workspace: _this._contextService.getWorkbenchState() === workspace_1.WorkbenchState.EMPTY ? null : _this._contextService.getWorkspace(),305 extensions: extensionDescriptions,306 // Send configurations scopes only in development mode.307 configuration: !_this._environmentService.isBuilt || _this._environmentService.isExtensionDevelopment ? __assign({}, configurationData, { configurationScopes: configurationRegistry_1.getScopes() }) : configurationData,308 telemetryInfo: telemetryInfo,309 args: _this._environmentService.args,310 execPath: _this._environmentService.execPath,311 windowId: _this._windowService.getCurrentWindowId(),312 logLevel: _this._logService.getLevel()313 };314 return r;315 });316 };317 ExtensionHostProcessWorker.prototype._logExtensionHostMessage = function (entry) {318 // Send to local console unless we run tests from cli319 if (!this._isExtensionDevTestFromCli) {320 console_1.log(entry, 'Extension Host');321 }322 // Log on main side if running tests from cli323 if (this._isExtensionDevTestFromCli) {324 (_a = this._windowsService).log.apply(_a, [entry.severity].concat(console_1.parse(entry).args));325 }326 else if (!this._environmentService.isBuilt || this._isExtensionDevHost) {327 this._broadcastService.broadcast({328 channel: extensionHost_1.EXTENSION_LOG_BROADCAST_CHANNEL,329 payload: {330 logEntry: entry,331 debugId: this._environmentService.debugExtensionHost.debugId332 }333 });334 }335 var _a;336 };337 ExtensionHostProcessWorker.prototype._onExtHostProcessError = function (err) {338 var errorMessage = errorMessage_1.toErrorMessage(err);339 if (errorMessage === this._lastExtensionHostError) {340 return; // prevent error spam341 }342 this._lastExtensionHostError = errorMessage;343 this._messageService.show(message_1.Severity.Error, nls.localize('extensionHostProcess.error', "Error from the extension host: {0}", errorMessage));344 };345 ExtensionHostProcessWorker.prototype._onExtHostProcessExit = function (code, signal) {346 if (this._terminating) {347 // Expected termination path (we asked the process to terminate)348 return;349 }350 // Unexpected termination351 if (!this._isExtensionDevHost) {352 this._onCrashed.fire([code, signal]);353 }354 else if (!this._isExtensionDevTestFromCli) {355 this._windowService.closeWindow();356 }357 else {358 electron_1.ipcRenderer.send('vscode:exit', code);359 }360 };361 ExtensionHostProcessWorker.prototype.getInspectPort = function () {362 return this._inspectPort;363 };364 ExtensionHostProcessWorker.prototype.terminate = function () {365 var _this = this;366 if (this._terminating) {367 return;368 }369 this._terminating = true;370 lifecycle_2.dispose(this._toDispose);371 if (!this._messageProtocol) {372 // .start() was not called373 return;374 }375 this._messageProtocol.then(function (protocol) {376 // Send the extension host a request to terminate itself377 // (graceful termination)378 protocol.send({379 type: '__$terminate'380 });381 // Give the extension host 60s, after which we will382 // try to kill the process and release any resources383 setTimeout(function () { return _this._cleanResources(); }, 60 * 1000);384 }, function (err) {385 // Establishing a protocol with the extension host failed, so386 // try to kill the process and release any resources.387 _this._cleanResources();388 });389 };390 ExtensionHostProcessWorker.prototype._cleanResources = function () {391 if (this._namedPipeServer) {392 this._namedPipeServer.close();393 this._namedPipeServer = null;394 }395 if (this._extensionHostConnection) {396 this._extensionHostConnection.end();397 this._extensionHostConnection = null;398 }399 if (this._extensionHostProcess) {400 this._extensionHostProcess.kill();401 this._extensionHostProcess = null;402 }403 };404 ExtensionHostProcessWorker.prototype._onWillShutdown = function (event) {405 // If the extension development host was started without debugger attached we need406 // to communicate this back to the main side to terminate the debug session407 if (this._isExtensionDevHost && !this._isExtensionDevTestFromCli && !this._isExtensionDevDebug) {408 this._broadcastService.broadcast({409 channel: extensionHost_1.EXTENSION_TERMINATE_BROADCAST_CHANNEL,410 payload: {411 debugId: this._environmentService.debugExtensionHost.debugId412 }413 });414 event.veto(winjs_base_1.TPromise.timeout(100 /* wait a bit for IPC to get delivered */).then(function () { return false; }));415 }416 };417 ExtensionHostProcessWorker = __decorate([418 __param(1, workspace_1.IWorkspaceContextService),419 __param(2, message_1.IMessageService),420 __param(3, windows_1.IWindowsService),421 __param(4, windows_1.IWindowService),422 __param(5, broadcastService_1.IBroadcastService),423 __param(6, lifecycle_1.ILifecycleService),424 __param(7, environment_1.IEnvironmentService),425 __param(8, configuration_1.IWorkspaceConfigurationService),426 __param(9, telemetry_1.ITelemetryService),427 __param(10, crashReporterService_1.ICrashReporterService),428 __param(11, log_1.ILogService)429 ], ExtensionHostProcessWorker);430 return ExtensionHostProcessWorker;431 }());432 exports.ExtensionHostProcessWorker = ExtensionHostProcessWorker;
...
ffPage.js
Source: ffPage.js
...271 const worker = this._workers.get(event.workerId);272 if (!worker) return;273 worker.session.dispatchMessage(JSON.parse(event.message));274 }275 async _onCrashed(event) {276 this._session.markAsCrashed();277 this._page._didCrash();278 }279 _onVideoRecordingStarted(event) {280 this._browserContext._browser._videoStarted(this._browserContext, event.screencastId, event.file, this.pageOrError());281 }282 async exposeBinding(binding) {283 await this._session.send('Page.addBinding', {284 name: binding.name,285 script: binding.source286 });287 }288 didClose() {289 this._session.dispose();...
servant.js
Source: servant.js
1/*!---------------------------------------------------------2* Copyright (C) Microsoft Corporation. All rights reserved.3*--------------------------------------------------------*/4/// <reference path="./declare/node.d.ts" />5/// <reference path="./declare/atom-browser.d.ts" />6'use strict';7var BrowserWindow = require('browser-window');8var env = require('./env');9var ManagedBrowserWindow = (function () {10 function ManagedBrowserWindow(opts, owner, onDisposedCallback) {11 var _this = this;12 this.id = String(++ManagedBrowserWindow.INSTANCE_COUNT);13 this.owner = owner;14 this._onDisposedCallback = onDisposedCallback;15 this.masterProcessId = opts.pid;16 this.masterRequestId = opts.reqId;17 var bounds = require('screen').getPrimaryDisplay().bounds;18 this.browserWindow = new BrowserWindow({19 x: 10 + bounds.x + (ManagedBrowserWindow.INSTANCE_COUNT * 50) % Math.floor(bounds.width / 2),20 y: 10 + bounds.y + (ManagedBrowserWindow.INSTANCE_COUNT * 50) % Math.floor(bounds.height / 2),21 width: 800,22 height: 600,23 show: false,24 frame: true,25 kiosk: false26 });27 this.browserWindow.setTitle(opts.name);28 this._onFrameFinishLoad = function () {29 _this.postMessage({30 $tbw: true,31 ownerProcessId: _this.masterProcessId,32 communicationId: _this.id,33 appRoot: env.appRoot,34 module: opts.module,35 initData: opts.initData36 });37 _this.owner.send('ticino:servant:opened', {38 reqId: _this.masterRequestId,39 id: _this.id40 });41 };42 this.browserWindow.webContents.on('did-frame-finish-load', this._onFrameFinishLoad);43 this.browserWindow.loadUrl('file://' + __dirname.replace(/\\/g, '/') + '/index-servant.html');44 this._onCrashed = function () {45 try {46 _this.owner.send('ticino:servant:crashed', {47 $tbw_id: _this.id48 });49 }50 catch (e) {51 console.warn('Could not notify owner that managed browser process crashed: ', e);52 }53 _this._dispose(true);54 };55 this.browserWindow.webContents.on('crashed', this._onCrashed);56 }57 ManagedBrowserWindow.prototype._dispose = function (isCrash) {58 try {59 this.browserWindow.webContents.removeAllListeners();60 }61 catch (e) {62 console.warn('Could not remove all listeners from managed browser process: ', e);63 }64 try {65 this.browserWindow.destroy();66 }67 catch (e) {68 console.warn('Could not destroy managed browser process: ', e);69 }70 this.id = null;71 this.masterProcessId = -1;72 this.masterRequestId = -1;73 this.browserWindow = null;74 this.owner = null;75 this._onFrameFinishLoad = null;76 this._onCrashed = null;77 var onDisposed = this._onDisposedCallback;78 this._onDisposedCallback = null;79 onDisposed();80 };81 ManagedBrowserWindow.prototype.dispose = function () {82 this._dispose(false);83 };84 ManagedBrowserWindow.prototype.getId = function () {85 return this.id;86 };87 ManagedBrowserWindow.prototype.postMessage = function (msg) {88 if (this.browserWindow.webContents) {89 this.browserWindow.webContents.send('tbw', msg);90 }91 else {92 console.warn('Cannot send message to managed browser window (because [I am]|[it is] shutting down?)');93 }94 };95 ManagedBrowserWindow.prototype.sendMessageToOwner = function (msg) {96 this.owner.send('tbw', msg);97 };98 ManagedBrowserWindow.prototype.reveal = function () {99 this.browserWindow.openDevTools();100 this.browserWindow.show();101 };102 ManagedBrowserWindow.prototype.hide = function () {103 this.browserWindow.closeDevTools();104 this.browserWindow.hide();105 };106 ManagedBrowserWindow.INSTANCE_COUNT = 0;107 return ManagedBrowserWindow;108})();
...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: `example.png` });15 await browser._onCrashed();16 await browser.close();17})();18 at processTicksAndRejections (internal/process/task_queues.js:93:5)19const { chromium } = require('playwright');20(async () => {21 const browser = await chromium.launch();22 const context = await browser.newContext();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page._onCrashed();6 await browser.close();7})();8const { chromium } = require('playwright');9(async () => {10 const browser = await chromium.launch();11 const page = await browser.newPage();12 await page._onCrashed();13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const page = await browser.newPage();19 await page._onCrashed();20 await browser.close();21})();22const { chromium } = require('playwright');23(async () => {24 const browser = await chromium.launch();25 const page = await browser.newPage();26 await page._onCrashed();27 await browser.close();28})();29const { chromium } = require('playwright');30(async () => {31 const browser = await chromium.launch();32 const page = await browser.newPage();33 await page._onCrashed();34 await browser.close();35})();36const { chromium } = require('playwright');37(async () => {38 const browser = await chromium.launch();39 const page = await browser.newPage();40 await page._onCrashed();41 await browser.close();42})();43const { chromium } = require('playwright');44(async () => {45 const browser = await chromium.launch();46 const page = await browser.newPage();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const page = await browser.newPage();5 await page._onCrashed();6 await browser.close();7})();8 at Page._onCrashed (C:\Users\user\playwright\test.js:8:24)9 at processTicksAndRejections (internal/process/task_queues.js:97:5)10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch();13 const page = await browser.newPage();14 const url = await page.url();15 console.log(url);16 await browser.close();17})();18const { chromium } = require('playwright');19(async () => {20 const browser = await chromium.launch();21 const page = await browser.newPage();22 const url = await page.url();23 console.log(url);24 await browser.close();25})();26const { chromium } = require('playwright');27(async () => {
Using AI Code Generation
1const { chromium } = require('playwright');2const { _onCrashed } = require('playwright/lib/server/crBrowser');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 _onCrashed(page, 'crashed');8})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async() => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page.evaluate(() => {6 document.querySelector('body').innerHTML = '<iframe></iframe>';7 });8 await page._onCrashed();9 await browser.close();10})();11 at Frame._onCrashed (C:\Users\abc\playwright\playwright\lib\server\frame.js:119:15)12 at Page._onCrashed (C:\Users\abc\playwright\playwright\lib\server\page.js:105:23)13 at Object.onCrashed (C:\Users\abc\playwright\playwright\lib\server\chromium\crBrowser.js:34:24)14 at CDPSession.emit (events.js:315:20)15 at CDPSession._onMessage (C:\Users\abc\playwright\playwright\lib\server\cdpsession.js:94:10)16 at WebSocketTransport._ws.addEventListener.event (C:\Users\abc\playwright\playwright\lib\server\webSocketTransport.js:32:24)17 at WebSocket.onMessage (C:\Users\abc\playwright\playwright\lib\server\webSocket.js:99:14)18 at WebSocket.emit (events.js:315:20)19 at Receiver.receiverOnMessage (C:\Users\abc\playwright\playwright\node_modules\ws\lib\websocket.js:800:20)20 at Receiver.emit (events.js:315:20)
Using AI Code Generation
1const playwright = require('playwright');2const { _onCrashed } = require('playwright/lib/server/browserServer');3(async () => {4 const browser = await playwright['chromium'].launch();5 const page = await browser.newPage();6 await browser.close();7 _onCrashed();8})();
Using AI Code Generation
1const { _onCrashed } = require('playwright/lib/server/chromium/crBrowser');2_onCrashed.call(browser, 'Crashed');3const { _onClosed } = require('playwright/lib/server/chromium/crBrowser');4_onClosed.call(browser, 'Closed');5const { _onDisconnected } = require('playwright/lib/server/chromium/crBrowser');6_onDisconnected.call(browser, 'Disconnected');7const { _onTargetCrashed } = require('playwright/lib/server/chromium/crBrowser');8_onTargetCrashed.call(browser, 'TargetCrashed', 'TargetCrashed');9const { _onTargetDestroyed } = require('playwright/lib/server/chromium/crBrowser');10_onTargetDestroyed.call(browser, 'TargetDestroyed', 'TargetDestroyed');11const { _onTargetChanged } = require('playwright/lib/server/chromium/crBrowser');12_onTargetChanged.call(browser, 'TargetChanged', 'TargetChanged');13const { _onTargetCreated } = require('playwright/lib/server/chromium/crBrowser');14_onTargetCreated.call(browser, 'TargetCreated', 'TargetCreated');15const { _onTargetDetached } = require('playwright/lib/server/chromium/crBrowser');16_onTargetDetached.call(browser, 'TargetDetached', 'TargetDetached');17const { _onTargetAttached } = require('playwright/lib/server/chromium/crBrowser');18_onTargetAttached.call(browser, 'TargetAttached', 'TargetAttached');19const { _onTargetInfoChanged } = require('playwright/lib/server/chromium/crBrowser');20_onTargetInfoChanged.call(browser, 'TargetInfoChanged', 'TargetInfoChanged');21const { _onTargetDestroyed } = require('playwright
Using AI Code Generation
1const playwright = require('playwright');2const { _onCrashed } = require('playwright/lib/server/browserType');3const { BrowserType } = require('playwright/lib/server/browserType');4const browserType = playwright.chromium;5_onCrashed.call(browserType, () => {6 console.log('crashed');7});8const playwright = require('playwright');9const { _onCrashed } = require('playwright/lib/server/browserType');10const { BrowserType } = require('playwright/lib/server/browserType');11const browserType = playwright.chromium;12_onCrashed.call(browserType, () => {13 console.log('crashed');14});15const playwright = require('playwright');16const { _onCrashed } = require('playwright/lib/server/browserType');17const { BrowserType } = require('playwright/lib/server/browserType');18const browserType = playwright.chromium;19_onCrashed.call(browserType, () => {20 console.log('crashed');21});22const playwright = require('playwright');23const { _onCrashed } = require('playwright/lib/server/browserType');24const { BrowserType } = require('playwright/lib/server/browserType');25const browserType = playwright.chromium;26_onCrashed.call(browserType, () => {27 console.log('crashed');28});29const playwright = require('playwright');30const { _onCrashed } = require('playwright/lib/server/browserType');31const { BrowserType } = require('playwright/lib/server/browserType');32const browserType = playwright.chromium;33_onCrashed.call(browserType, () => {34 console.log('crashed');35});36const playwright = require('playwright');37const { _onCrashed } = require('playwright/lib/server/browserType');38const { BrowserType } = require('playwright/lib/server/browserType');39const browserType = playwright.chromium;40_onCrashed.call(browserType, () => {41 console.log('crashed');42});
Using AI Code Generation
1const { _onCrashed } = require('playwright/lib/server/crBrowser');2const { BrowserContext } = require('playwright/lib/server/browserContext');3const { Browser } = require('playwright/lib/server/browser');4const browser = await Browser.connect({5});6const context = await browser.newContext();7const page = await context.newPage();8await page.evaluate(() => {9 window.crash();10});11_onCrashed.call(context, new Error('test'));12await browser.close();13const { _onCrashed } = require('playwright/lib/server/crBrowser');14const { BrowserContext } = require('playwright/lib/server/browserContext');15const { Browser } = require('playwright/lib/server/browser');16const browser = await Browser.connect({17});18const context = await browser.newContext();19const page = await context.newPage();20await page.evaluate(() => {21 window.crash();22});23_onCrashed.call(context, new Error('test'));24await browser.close();25const { _onCrashed } = require('playwright/lib/server/crBrowser');26const { BrowserContext } = require('playwright/lib/server/browserContext');27const { Browser } = require('playwright/lib/server/browser');28const browser = await Browser.connect({
Jest + Playwright - Test callbacks of event-based DOM library
firefox browser does not start in playwright
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!