How to use OnChannelRedirect method in Playwright Internal

Best JavaScript code snippet using playwright-internal

streamListener.js

Source:streamListener.js Github

copy

Full Screen

1/*2 ***** BEGIN LICENSE BLOCK *****3 4 Copyright © 2009 Center for History and New Media5 George Mason University, Fairfax, Virginia, USA6 http://zotero.org7 8 This file is part of Zotero.9 10 Zotero is free software: you can redistribute it and/or modify11 it under the terms of the GNU Affero General Public License as published by12 the Free Software Foundation, either version 3 of the License, or13 (at your option) any later version.14 15 Zotero is distributed in the hope that it will be useful,16 but WITHOUT ANY WARRANTY; without even the implied warranty of17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the18 GNU Affero General Public License for more details.19 20 You should have received a copy of the GNU Affero General Public License21 along with Zotero. If not, see <http://www.gnu.org/licenses/>.22 23 ***** END LICENSE BLOCK *****24*/25/**26 * Stream listener that can handle both download and upload requests27 *28 * Possible properties of data object:29 * - onStart: f(request)30 * - onProgress: f(request, progress, progressMax)31 * - onStop: f(request, status, response)32 * - onCancel: f(request, status)33 * - streams: array of streams to close on completion34 */35Zotero.Sync.Storage.StreamListener = function (data) {36 this._data = data;37}38Zotero.Sync.Storage.StreamListener.prototype = {39 _channel: null,40 41 // nsIProgressEventSink42 onProgress: function (request, context, progress, progressMax) {43 Zotero.debug("onProgress with " + progress + "/" + progressMax);44 this._onProgress(request, progress, progressMax);45 },46 47 onStatus: function (request, context, status, statusArg) {48 Zotero.debug('onStatus with ' + status);49 },50 51 // nsIRequestObserver52 // Note: For uploads, this isn't called until data is done uploading53 onStartRequest: function (request, context) {54 Zotero.debug('onStartRequest');55 this._response = "";56 57 this._onStart(request);58 },59 60 onStopRequest: function (request, context, status) {61 Zotero.debug('onStopRequest with ' + status);62 63 // Some errors from https://developer.mozilla.org/en-US/docs/Table_Of_Errors64 var msg = "";65 switch (status) {66 // Normal67 case 0:68 break;69 70 // NS_BINDING_ABORTED71 case 0x804b0002:72 msg = "Request cancelled";73 break;74 75 // NS_ERROR_NET_INTERRUPT76 case 0x804B0047:77 msg = "Request interrupted";78 break;79 80 // NS_ERROR_NET_TIMEOUT81 case 0x804B000E:82 msg = "Request timed out";83 break;84 85 default:86 msg = "Request failed";87 break;88 }89 90 if (msg) {91 msg += " in Zotero.Sync.Storage.StreamListener.onStopRequest() (" + status + ")";92 Components.utils.reportError(msg);93 Zotero.debug(msg, 1);94 }95 96 this._onStop(request, status);97 },98 99 // nsIWebProgressListener100 onProgressChange: function (wp, request, curSelfProgress,101 maxSelfProgress, curTotalProgress, maxTotalProgress) {102 //Zotero.debug("onProgressChange with " + curTotalProgress + "/" + maxTotalProgress);103 104 // onProgress gets called too, so this isn't necessary105 //this._onProgress(request, curTotalProgress, maxTotalProgress);106 },107 108 onStateChange: function (wp, request, stateFlags, status) {109 Zotero.debug("onStateChange with " + stateFlags);110 111 if (stateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_REQUEST) {112 if (stateFlags & Components.interfaces.nsIWebProgressListener.STATE_START) {113 this._onStart(request);114 }115 else if (stateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) {116 this._onStop(request, status);117 }118 }119 },120 121 onStatusChange: function (progress, request, status, message) {122 Zotero.debug("onStatusChange with '" + message + "'");123 },124 onLocationChange: function () {125 Zotero.debug('onLocationChange');126 },127 onSecurityChange: function () {128 Zotero.debug('onSecurityChange');129 },130 131 // nsIStreamListener132 onDataAvailable: function (request, context, stream, sourceOffset, length) {133 Zotero.debug('onDataAvailable');134 var scriptableInputStream = 135 Components.classes["@mozilla.org/scriptableinputstream;1"]136 .createInstance(Components.interfaces.nsIScriptableInputStream);137 scriptableInputStream.init(stream);138 139 var data = scriptableInputStream.read(length);140 Zotero.debug(data);141 this._response += data;142 },143 144 // nsIChannelEventSink145 //146 // If this._data.onChannelRedirect exists, it should return a promise resolving to true to147 // follow the redirect or false to cancel it148 onChannelRedirect: Zotero.Promise.coroutine(function* (oldChannel, newChannel, flags) {149 Zotero.debug('onChannelRedirect');150 151 if (this._data && this._data.onChannelRedirect) {152 let result = yield this._data.onChannelRedirect(oldChannel, newChannel, flags);153 if (!result) {154 oldChannel.cancel(Components.results.NS_BINDING_ABORTED);155 newChannel.cancel(Components.results.NS_BINDING_ABORTED);156 Zotero.debug("Cancelling redirect");157 // TODO: Prevent onStateChange error158 return false;159 }160 }161 162 // if redirecting, store the new channel163 this._channel = newChannel;164 }),165 166 asyncOnChannelRedirect: function (oldChan, newChan, flags, redirectCallback) {167 Zotero.debug('asyncOnRedirect');168 169 this.onChannelRedirect(oldChan, newChan, flags)170 .then(function (result) {171 redirectCallback.onRedirectVerifyCallback(172 result ? Components.results.NS_SUCCEEDED : Components.results.NS_FAILED173 );174 })175 .catch(function (e) {176 Zotero.logError(e);177 redirectCallback.onRedirectVerifyCallback(Components.results.NS_FAILED);178 });179 },180 181 // nsIHttpEventSink182 onRedirect: function (oldChannel, newChannel) {183 Zotero.debug('onRedirect');184 185 var newURL = Zotero.HTTP.getDisplayURI(newChannel.URI).spec;186 Zotero.debug("Redirecting to " + newURL);187 },188 189 190 //191 // Private methods192 //193 _onStart: function (request) {194 Zotero.debug('Starting request');195 if (this._data && this._data.onStart) {196 this._data.onStart(request);197 }198 },199 200 _onProgress: function (request, progress, progressMax) {201 if (this._data && this._data.onProgress) {202 this._data.onProgress(request, progress, progressMax);203 }204 },205 206 _onStop: function (request, status) {207 var cancelled = status == 0x804b0002; // NS_BINDING_ABORTED208 209 if (!cancelled && status == 0 && request instanceof Components.interfaces.nsIHttpChannel) {210 request.QueryInterface(Components.interfaces.nsIHttpChannel);211 try {212 status = request.responseStatus;213 }214 catch (e) {215 Zotero.debug("Request responseStatus not available", 1);216 status = 0;217 }218 Zotero.debug('Request ended with status code ' + status);219 request.QueryInterface(Components.interfaces.nsIRequest);220 }221 else {222 Zotero.debug('Request ended with status ' + status);223 status = 0;224 }225 226 if (this._data.streams) {227 for (let stream of this._data.streams) {228 stream.close();229 }230 }231 232 if (cancelled) {233 if (this._data.onCancel) {234 this._data.onCancel(request, status);235 }236 }237 else {238 if (this._data.onStop) {239 this._data.onStop(request, status, this._response);240 }241 }242 243 this._channel = null;244 },245 246 // nsIInterfaceRequestor247 getInterface: function (iid) {248 try {249 return this.QueryInterface(iid);250 }251 catch (e) {252 throw Components.results.NS_NOINTERFACE;253 }254 },255 256 QueryInterface: function(iid) {257 if (iid.equals(Components.interfaces.nsISupports) ||258 iid.equals(Components.interfaces.nsIInterfaceRequestor) ||259 iid.equals(Components.interfaces.nsIChannelEventSink) || 260 iid.equals(Components.interfaces.nsIProgressEventSink) ||261 iid.equals(Components.interfaces.nsIHttpEventSink) ||262 iid.equals(Components.interfaces.nsIStreamListener) ||263 iid.equals(Components.interfaces.nsIWebProgressListener)) {264 return this;265 }266 throw Components.results.NS_NOINTERFACE;267 },268 269 _safeSpec: function (uri) {270 return uri.scheme + '://' + uri.username + ':********@'271 + uri.hostPort + uri.pathQueryRef272 },...

Full Screen

Full Screen

policy.js

Source:policy.js Github

copy

Full Screen

1/* ***** BEGIN LICENSE BLOCK *****2 * Version: MPL 1.13 *4 * The contents of this file are subject to the Mozilla Public License Version5 * 1.1 (the "License"); you may not use this file except in compliance with6 * the License. You may obtain a copy of the License at7 * http://www.mozilla.org/MPL/8 *9 * Software distributed under the License is distributed on an "AS IS" basis,10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License11 * for the specific language governing rights and limitations under the12 * License.13 *14 * The Original Code is Adblock Plus.15 *16 * The Initial Developer of the Original Code is17 * Wladimir Palant.18 * Portions created by the Initial Developer are Copyright (C) 2006-200919 * the Initial Developer. All Rights Reserved.20 *21 * Contributor(s):22 * 2009-2010: Wang Congming <lovelywcm@gmail.com> Modified for AutoProxy.23 *24 * ***** END LICENSE BLOCK ***** */25/**26 * Content policy implementation.27 * This file is included from AutoProxy.js.28 */29var effectiveTLD = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService);30const ok = Ci.nsIContentPolicy.ACCEPT;31var policy =32{33 /**34 * Map of content type identifiers by their name.35 * @type Object36 */37 type: null,38 /**39 * Map of content type names by their identifiers (reverse of type map).40 * @type Object41 */42 typeDescr: null,43 /**44 * Map of localized content type names by their identifiers.45 * @type Object46 */47 localizedDescr: null,48 /**49 * Assigned in shouldLoad() & used by autoMatching().50 * Since autoMatching is called by applyFilter,51 * but we can't get such information within applyFilter(?).52 */53 Wnd: null, // nsIDOMWindow54 Node: null, // nsIDOMElement55 ContentType: "", // String56 ContentURI: null, // nsIURI57 init: function() {58 var types = ["OTHER", "SCRIPT", "IMAGE", "STYLESHEET", "OBJECT", "SUBDOCUMENT", "DOCUMENT", "XBL", "PING", "XMLHTTPREQUEST", "OBJECT_SUBREQUEST", "DTD", "FONT", "MEDIA"];59 // type constant by type description and type description by type constant60 this.type = {};61 this.typeDescr = {};62 this.localizedDescr = {};63 var iface = Ci.nsIContentPolicy;64 for each (let typeName in types)65 {66 if ("TYPE_" + typeName in iface)67 {68 this.type[typeName] = iface["TYPE_" + typeName];69 this.typeDescr[this.type[typeName]] = typeName;70 this.localizedDescr[this.type[typeName]] = aup.getString("type_label_" + typeName.toLowerCase());71 }72 }73 this.type.BACKGROUND = 0xFFFE;74 this.typeDescr[0xFFFE] = "BACKGROUND";75 this.localizedDescr[0xFFFE] = aup.getString("type_label_background");76 },77 /**78 * Checks whether a node should be proxyed according to rules79 * @param location {nsIURI}80 * @return {Boolean} true if the node should be proxyed81 */82 autoMatching: function(location) {83 var match = null, docDomain = "extension", thirdParty = false, contentType = 3;84 var wnd, node, locationText = location.spec;85 if (location == this.ContentURI) {86 wnd = this.Wnd; node = this.Node; contentType = this.ContentType;87 // Data loaded by plugins should be attached to the document88 if ((contentType == this.type.OTHER || contentType == this.type.OBJECT_SUBREQUEST) && node instanceof Element)89 node = node.ownerDocument;90 // Fix type for background images91 if (contentType == this.type.IMAGE && node.nodeType == Node.DOCUMENT_NODE)92 contentType = this.type.BACKGROUND;93 // Fix type for objects misrepresented as frames or images94 if (contentType != this.type.OBJECT && (node instanceof Ci.nsIDOMHTMLObjectElement || node instanceof Ci.nsIDOMHTMLEmbedElement))95 contentType = this.type.OBJECT;96 docDomain = wnd.location.host;97 thirdParty = this.isThirdParty(location, docDomain);98 }99 match = whitelistMatcher.matchesAny(locationText, this.typeDescr[contentType] || "", docDomain, thirdParty);100 if (match == null)101 match = blacklistMatcher.matchesAny(locationText, this.typeDescr[contentType] || "", docDomain, thirdParty);102 // Store node data.103 // Skip this step if the request is established by a Firefox extension104 // * no sidebar window can be used to display extension's http request;105 // * shouldLoad() doesn't check extension's request, any way to do this?106 // * just like onChannelRedirect() did for 301/302 redirection.107 if (location == this.ContentURI) {108 var data = RequestList.getDataForWindow(wnd);109 data.addNode(node, contentType, docDomain, thirdParty, locationText, match);110 }111 if (match && arguments.length == 1)112 filterStorage.increaseHitCount(match);113 return match;114 },115 /**116 * Checks whether the location's origin is different from document's origin.117 */118 isThirdParty: function(/**nsIURI*/location, /**String*/ docDomain) /**Boolean*/119 {120 if (!location || !docDomain)121 return true;122 try123 {124 return effectiveTLD.getBaseDomain(location) != effectiveTLD.getBaseDomainFromHost(docDomain);125 }126 catch (e)127 {128 // EffectiveTLDService throws on IP addresses, just compare the host name129 let host = "";130 try131 {132 host = location.host;133 } catch (e) {}134 return host != docDomain;135 }136 },137 //138 // nsISupports interface implementation139 //140 QueryInterface: aup.QueryInterface,141 //142 // nsIContentPolicy interface implementation143 //144 shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra)145 {146 if (proxy.isProxyableScheme(contentLocation)) {147 // Interpret unknown types as "other"148 if (!(contentType in this.typeDescr))149 contentType = this.type.OTHER;150 this.Wnd = getWindow(node);151 this.Node = node;152 this.ContentType = contentType;153 this.ContentURI = unwrapURL(contentLocation);154 }155 return ok;156 },157 shouldProcess: function(contentType, contentLocation, requestOrigin, insecNode, mimeType, extra)158 {159 return ok;160 },161 //162 // nsIChannelEventSink interface implementation163 //164 onChannelRedirect: function(oldChannel, newChannel, flags)165 {166 try {167 // Look for the request both in the origin window and in its parent (for frames)168 let contexts = [getRequestWindow(newChannel)];169 if (!contexts[0])170 contexts.pop();171 else if (contexts[0] && contexts[0].parent != contexts[0])172 contexts.push(contexts[0].parent);173 else if (contexts[0] && contexts[0].parent == contexts[0])174 {175 contexts.push(Cc["@mozilla.org/appshell/window-mediator;1"]176 .getService(Ci.nsIWindowMediator)177 .getMostRecentWindow("navigator:browser"));178 contexts.shift();179 }180 let info = null;181 for each (let context in contexts)182 {183 // Did we record the original request in its own window?184 let data = RequestList.getDataForWindow(context, true);185 if (data)186 info = data.getURLInfo(oldChannel.originalURI.spec);187 if (info)188 {189 let nodes = info.nodes;190 let node = (nodes.length > 0 ? nodes[nodes.length - 1] : context.document);191 this.Wnd = context;192 this.Node = node;193 this.ContentType = info.type;194 this.ContentURI = newChannel.URI;195 this.autoMatching(newChannel.URI, true);196 return;197 }198 }199 }200 catch (e)201 {202 // We shouldn't throw exceptions here - this will prevent the redirect.203 dump("AutoProxy: Unexpected error in policy.onChannelRedirect: " + e + "\n");204 }205 },206 asyncOnChannelRedirect: function(oldChannel, newChannel, flags, cb)207 {208 this.onChannelRedirect(oldChannel, newChannel, flags);209 cb.onRedirectVerifyCallback(0);210 }211};...

Full Screen

Full Screen

test_history_redirects.js

Source:test_history_redirects.js Github

copy

Full Screen

1/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */2/* vim:set ts=2 sw=2 sts=2 et: */3/* Any copyright is dedicated to the Public Domain.4 http://creativecommons.org/publicdomain/zero/1.0/ */5/* Tests history redirects handling */6let hs = Cc["@mozilla.org/browser/nav-history-service;1"].7 getService(Ci.nsINavHistoryService);8let bh = hs.QueryInterface(Ci.nsIBrowserHistory);9const PERMA_REDIR_PATH = "/permaredir";10const TEMP_REDIR_PATH = "/tempredir";11const FOUND_PATH = "/found";12const HTTPSVR = new HttpServer();13const PORT = 4444;14HTTPSVR.registerPathHandler(PERMA_REDIR_PATH, permaRedirHandler);15HTTPSVR.registerPathHandler(TEMP_REDIR_PATH, tempRedirHandler);16HTTPSVR.registerPathHandler(FOUND_PATH, foundHandler);17const EXPECTED_SESSION_ID = 1;18const STATUS = {19 REDIRECT_PERMANENT: [301, "Moved Permanently"],20 REDIRECT_TEMPORARY: [302, "Moved"],21 FOUND: [200, "Found"],22}23const PERMA_REDIR_URL = "http://localhost:" + PORT + PERMA_REDIR_PATH;24const TEMP_REDIR_URL = "http://localhost:" + PORT + TEMP_REDIR_PATH;25const FOUND_URL = "http://localhost:" + PORT + FOUND_PATH;26// PERMANENT REDIRECT27function permaRedirHandler(aMeta, aResponse) {28 // Redirect permanently to TEMP_REDIR_URL29 PathHandler(aMeta, aResponse, "REDIRECT_PERMANENT", TEMP_REDIR_URL);30}31// TEMPORARY REDIRECT32function tempRedirHandler(aMeta, aResponse) {33 // Redirect temporarily to FOUND_URL34 PathHandler(aMeta, aResponse, "REDIRECT_TEMPORARY", FOUND_URL);35}36// FOUND37function foundHandler(aMeta, aResponse) {38 PathHandler(aMeta, aResponse, "FOUND");39}40function PathHandler(aMeta, aResponse, aChannelEvent, aRedirURL) {41 aResponse.setStatusLine(aMeta.httpVersion,42 STATUS[aChannelEvent][0], // Code43 STATUS[aChannelEvent][1]); // Text44 if (aRedirURL)45 aResponse.setHeader("Location", aRedirURL, false);46 //aResponse.setHeader("Content-Type", "text/html", false);47 let body = STATUS[aChannelEvent][1] + "\r\n";48 aResponse.bodyOutputStream.write(body, body.length);49}50function run_test() {51 do_test_pending();52 HTTPSVR.start(PORT);53 var chan = NetUtil.ioService54 .newChannelFromURI(uri("http://localhost:4444/permaredir"));55 var listener = new ChannelListener();56 chan.notificationCallbacks = listener;57 chan.asyncOpen(listener, null);58 // The test will continue on onStopRequest.59}60function continue_test() {61 let stmt = DBConn().createStatement(62 "SELECT v.id, h.url, v.from_visit, v.visit_date, v.visit_type, v.session " +63 "FROM moz_historyvisits v " +64 "JOIN moz_places h on h.id = v.place_id " +65 "ORDER BY v.id ASC");66 const EXPECTED = [67 { id: 1,68 url: PERMA_REDIR_URL,69 from_visit: 0,70 visit_type: Ci.nsINavHistoryService.TRANSITION_LINK,71 session: EXPECTED_SESSION_ID },72 { id: 2,73 url: TEMP_REDIR_URL,74 from_visit: 1,75 visit_type: Ci.nsINavHistoryService.TRANSITION_REDIRECT_PERMANENT,76 session: EXPECTED_SESSION_ID },77 { id: 3,78 url: FOUND_URL,79 from_visit: 2,80 visit_type: Ci.nsINavHistoryService.TRANSITION_REDIRECT_TEMPORARY,81 session: EXPECTED_SESSION_ID },82 ];83 try {84 while(stmt.executeStep()) {85 let comparator = EXPECTED.shift();86 do_log_info("Checking that '" + comparator.url +87 "' was entered into the DB correctly");88 do_check_eq(stmt.row.id, comparator.id);89 do_check_eq(stmt.row.url, comparator.url);90 do_check_eq(stmt.row.from_visit, comparator.from_visit);91 do_check_eq(stmt.row.visit_type, comparator.visit_type);92 do_check_eq(stmt.row.session, comparator.session);93 }94 }95 finally {96 stmt.finalize();97 }98 HTTPSVR.stop(do_test_finished);99}100/**101 * Read count bytes from stream and return as a String object102 */103function read_stream(stream, count) {104 /* assume stream has non-ASCII data */105 var wrapper =106 Components.classes["@mozilla.org/binaryinputstream;1"]107 .createInstance(Components.interfaces.nsIBinaryInputStream);108 wrapper.setInputStream(stream);109 /* JS methods can be called with a maximum of 65535 arguments, and input110 streams don't have to return all the data they make .available() when111 asked to .read() that number of bytes. */112 var data = [];113 while (count > 0) {114 var bytes = wrapper.readByteArray(Math.min(65535, count));115 data.push(String.fromCharCode.apply(null, bytes));116 count -= bytes.length;117 if (bytes.length == 0)118 do_throw("Nothing read from input stream!");119 }120 return data.join('');121}122function ChannelListener() {123}124ChannelListener.prototype = {125 _buffer: "",126 _got_onstartrequest: false,127 _got_onchannelredirect: false,128 QueryInterface: XPCOMUtils.generateQI([129 Ci.nsIStreamListener,130 Ci.nsIRequestObserver,131 Ci.nsIInterfaceRequestor,132 Ci.nsIChannelEventSink,133 ]),134 // nsIInterfaceRequestor135 getInterface: function (aIID) {136 try {137 return this.QueryInterface(aIID);138 } catch (e) {139 throw Components.results.NS_NOINTERFACE;140 }141 },142 onStartRequest: function(request, context) {143 do_log_info("onStartRequest");144 this._got_onstartrequest = true;145 },146 onDataAvailable: function(request, context, stream, offset, count) {147 this._buffer = this._buffer.concat(read_stream(stream, count));148 },149 onStopRequest: function(request, context, status) {150 do_log_info("onStopRequest");151 this._got_onstoprequest++;152 let success = Components.isSuccessCode(status);153 do_check_true(success);154 do_check_true(this._got_onstartrequest);155 do_check_true(this._got_onchannelredirect);156 do_check_true(this._buffer.length > 0);157 continue_test();158 },159 // nsIChannelEventSink160 asyncOnChannelRedirect: function (aOldChannel, aNewChannel, aFlags, callback) {161 do_log_info("onChannelRedirect");162 this._got_onchannelredirect = true;163 callback.onRedirectVerifyCallback(Components.results.NS_OK);164 },...

Full Screen

Full Screen

channel-event-sink.js

Source:channel-event-sink.js Github

copy

Full Screen

...29 ChannelEventSinkFactory.unregister();30 }31 },32 // eslint-disable-next-line no-shadow33 asyncOnChannelRedirect(oldChannel, newChannel, flags, callback) {34 for (const collector of this.collectors) {35 try {36 collector.onChannelRedirect(oldChannel, newChannel, flags);37 } catch (ex) {38 console.error(39 "StackTraceCollector.onChannelRedirect threw an exception",40 ex41 );42 }43 }44 callback.onRedirectVerifyCallback(Cr.NS_OK);45 },46};47const ChannelEventSinkFactory = XPCOMUtils.generateSingletonFactory(...

Full Screen

Full Screen

ChannelItem.js

Source:ChannelItem.js Github

copy

Full Screen

1class ChannelItem {2 constructor(data) {3 this.element = this.getElement(data);4 this.element.addEventListener(5 "click",6 e => this.onChannelRedirect(e),7 false8 );9 this.element.classList.add("ChannelItem");10 this.data = data;11 }12 onChannelRedirect(e) {13 e.preventDefault(e);14 e.stopPropagation(e);15 location.href = `channel.html?id=${this.id}`;16 }17 getElement(data) {18 var html = ` 19 <div class="column-in-channels channel-no-0" style="width: 142px; height:142px;">20 <div class="card-channel">21 <a href="/channel.html?id=${data.snippet.channelId}">22 <div class="channel-image" style="background-image: url(${23 data.snippet.thumbnails.high.url24 })"></div>25 </a>26 <h3 class="card-title"><a href="/channel.html?id=${27 data.snippet.channelId28 }">${data.snippet.channelTitle}</a></h3>29 <p><span class="small silver">&nbsp;</span></p>30 <div class="buffer-15"></div>31 </div>32 </div>33 `;34 return html.toHtmlElement();35 }36 setChannelDetails(data) {37 let thumbNailContainer = this.element.querySelector(38 ".image-round .image-channel"39 );40 thumbNailContainer.src = data.items[0].snippet.thumbnails.default.url;41 }...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

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.route('**/*', route => route.continue());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.route('**/*', route => route.continue());15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.route('**/*', route => route.continue());23 await browser.close();24})();

Full Screen

Using AI Code Generation

copy

Full Screen

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.route('**', route => {7 console.log(route.request().url());8 route.continue();9 });10 await browser.close();11})();12const {chromium} = require('playwright');13(async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 const page = await context.newPage();17 await page.route('**', route => {18 console.log(route.request().url());19 route.continue();20 });21 await page.on('request', request => {22 if (request.url().includes('google')) {23 request.continue({24 });25 }26 });27 await browser.close();28})();29const {chromium} = require('playwright');30(async () => {31 const browser = await chromium.launch();32 const context = await browser.newContext();33 const page = await context.newPage();34 await page.route('**', route => {35 console.log(route.request().url());36 route.continue();37 });38 await page._client.send('Fetch.enable', {39 {40 },41 });42 await page._client.on('Fetch.requestPaused', async ({requestId}) => {43 const request = await page._client.send('Fetch.continueRequest', {44 });45 });46 await browser.close();47})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const page = await browser.newPage();5 const client = await page.context().newCDPSession(page);6 await client.send('Network.enable');7 await client.on('Network.responseReceived', (params) => {8 console.log('Network.responseReceived', params);9 });10 await client.on('Network.requestWillBeSent', (params) => {11 console.log('Network.requestWillBeSent', params);12 });13 await client.on('Network.onRequestWillBeSentExtraInfo', (params) => {14 console.log('Network.onRequestWillBeSentExtraInfo', params);15 });16 await client.on('Network.onBeforeRedirect', (params) => {17 console.log('Network.onBeforeRedirect', params);18 });19 await client.on('Network.onResponseReceivedExtraInfo', (params) => {20 console.log('Network.onResponseReceivedExtraInfo', params);21 });22 await client.on('Network.dataReceived', (params) => {23 console.log('Network.dataReceived', params);24 });25 await client.on('Network.loadingFinished', (params) => {26 console.log('Network.loadingFinished', params);27 });28 await client.on('Network.loadingFailed', (params) => {29 console.log('Network.loadingFailed', params);30 });31 await client.on('Network.onRequestServedFromCache', (params) => {32 console.log('Network.onRequestServedFromCache', params);33 });34 await client.on('Network.onRequestServedFromMemoryCache', (params) => {35 console.log('Network.onRequestServedFromMemoryCache', params);36 });37 await client.on('Network.onRequestServedFromDiskCache', (params) => {38 console.log('Network.onRequestServedFromDiskCache', params);39 });40 await client.on('Network.onLoadingFinished', (params) => {41 console.log('Network.onLoadingFinished', params);42 });43 await client.on('Network.onLoadingFailed', (params) => {44 console.log('Network.onLoadingFailed', params);45 });46 await client.on('Network.onResponseReceived', (params) => {47 console.log('Network.onResponseReceived', params);48 });49 await client.on('Network.onDataReceived', (params) => {50 console.log('

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({headless: false});4 const page = await browser.newPage();5 await page.route('**', route => route.continue());6 await browser.close();7})();8module.exports = {9 use: {10 launchOptions: {11 },12 },13 {14 use: {15 },16 },17 {18 use: {19 },20 },21 {22 use: {23 },24 },25 {26 use: {27 },28 },29};30module.exports = {31};32module.exports = {33 use: {34 launchOptions: {35 },36 },37 {38 use: {39 },40 },41 {42 use: {43 },44 },45 {46 use: {47 },48 },49 {50 use: {51 },52 },53};54module.exports = {

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { EventEmitter } = require('events');3const events = new EventEmitter();4(async () => {5 const browser = await chromium.launch({ headless: false });6 const context = await browser.newContext({ ignoreHTTPSErrors: true });7 await context.route('**/*', route => {8 const url = route.request().url();9 events.emit('request', url);10 route.continue();11 });12 const page = await context.newPage();13 console.log(response.status());14 await browser.close();15})();16events.on('request', (url) => {17 console.log(url);18});19const { chromium } = require('playwright');20const { EventEmitter } = require('events');21const events = new EventEmitter();22(async () => {23 const browser = await chromium.launch({ headless: false });24 const context = await browser.newContext({ ignoreHTTPSErrors: true });25 await context.route('**/*', route => {26 const url = route.request().url();27 events.emit('request', url);28 route.continue();29 });30 const page = await context.newPage();31 console.log(response.status());32 await browser.close();33})();34events.on('request', (url) => {35 console.log(url);36});37const { chromium } = require('playwright');38const { EventEmitter } = require('events');39const events = new EventEmitter();40(async () => {41 const browser = await chromium.launch({ headless: false });42 const context = await browser.newContext({ ignoreHTTPSErrors: true });43 await context.route('**/*', route => {

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { OnChannelRedirect } = require('playwright/lib/internal/chromium/crNetworkManager');3const { helper } = require('playwright/lib/helper');4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 const client = await page.context().newCDPSession(page);9 await client.send('Network.enable');10 client.on('Network.requestWillBeSent', (params) => {11 console.log('requestWillBeSent: ' + params.request.url);12 });13 client.on('Network.responseReceived', (params) => {14 console.log('responseReceived: ' + params.response.url);15 });16 client.on('Network.loadingFinished', (params) => {17 console.log('loadingFinished: ' + params.requestId);18 });19 client.on('Network.loadingFailed', (params) => {20 console.log('loadingFailed: ' + params.requestId);21 });22 OnChannelRedirect.call(client, (event) => {23 console.log('OnChannelRedirect: ' + event.redirectUrl);24 });25 await browser.close();26})();27const { helper } = require('../helper');28const { assert } = require('../helper');29const { Events } = require('../events');30const { Protocol } = require('./protocol');31const { NetworkManager } = require('../networkManager');32const { SecurityDetails } = require('../securityDetails');33const { ResourceTiming } = require('../resourceTiming');34const { Request } = require('../request');35const { Response } = require('../response');36const { HeadersArray } = require('../headersArray');37const { assertMaxArguments } = require('../helper');38const { SdkObject } = require('../instrumentation');39const { SdkObjectWithId } = require('../instrumentation');40class CrNetworkManager extends NetworkManager {41 * @param {!Puppeteer.CDPSession} client42 * @param {!Puppeteer.FrameManager} frameManager43 * @param {!Puppeteer.NetworkManager} networkManager44 constructor(client, frameManager, networkManager) {45 super(client, frameManager, networkManager);46 /** @type {!Map

Full Screen

Using AI Code Generation

copy

Full Screen

1const {chromium} = require('playwright');2const {OnChannelRedirect} = require('playwright/lib/utils/protocol-profiler');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const client = await page.context().newCDPSession(page);8 const profiler = new OnChannelRedirect(client);9 await profiler.start();10 await profiler.stop();11 const data = profiler.getEvents();12 console.log(data);13 await browser.close();14})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { HttpServer } = require('playwright-core/lib/server/httpServer');3const { HttpsServer } = require('playwright-core/lib/server/httpsServer');4const { WebSocketServer } = require('playwright-core/lib/server/webSocketServer');5const { WebSocketTransport } = require('playwright-core/lib/server/webSocketTransport');6const { BrowserContext } = require('playwright-core/lib/server/browserContext');7const { Browser } = require('playwright-core/lib/server/browser');8const { BrowserServer } = require('playwright-core/lib/server/browserServer');9const { BrowserType } = require('playwright-core/lib/server/browserType');10const { BrowserContextChannel } = require('playwright-core/lib/server/browserContextChannel');11const { BrowserTypeChannel } = require('playwright-core/lib/server/browserTypeChannel');12const { BrowserChannel } = require('playwright-core/lib/server/browserChannel');13const { BrowserServerChannel } = require('playwright-core/lib/server/browserServerChannel');14const { Playwright } = require('playwright-core/lib/server/playwright');15const { PlaywrightChannel } = require('playwright-core/lib/server/playwrightChannel');16const { createGuid } = require('playwright-core/lib/utils/utils');17const { assert } = require('playwright-core/lib/utils/utils');18const { BrowserContextBase } = require('playwright-core/lib/server/browserContextBase');19const { BrowserBase } = require('playwright-core/lib/server/browserBase');20const { BrowserTypeBase } = require('playwright-core/lib/server/browserTypeBase');21const { BrowserServerBase } = require('playwright-core/lib/server/browserServerBase');22const { PlaywrightBase } = require('playwright-core/lib/server/playwrightBase');23const { BrowserContextDispatcher } = require('playwright-core/lib/server/browserContextDispatcher');24const { BrowserDispatcher } = require('playwright-core/lib/server/browserDispatcher');25const { BrowserTypeDispatcher } = require('playwright-core/lib/server/browserTypeDispatcher');26const { BrowserServerDispatcher } = require('playwright-core/lib/server/browserServerDispatcher');27const { PlaywrightDispatcher } = require('playwright-core/lib/server/playwrightDispatcher');28const { BrowserContextOwner } = require('playwright-core/lib/server/browserContextOwner');29const { BrowserOwner } = require('playwright-core/lib/server/browserOwner');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const browser = await chromium.launch();3const page = await browser.newPage();4await page.route('**', route => {5 if (route.request().url().endsWith('test.mp3')) {6 route.fulfill({7 body: Buffer.from('test'),8 headers: {9 },10 });11 } else {12 route.continue();13 }14});15await page.close();16await browser.close();17const { chromium } = require('playwright');18const browser = await chromium.launch();19const page = await browser.newPage();20await page.route('**', route => {21 if (route.request().url().endsWith('test.mp3')) {22 route.fulfill({23 body: Buffer.from('test'),24 headers: {25 },26 });27 } else {28 route.continue();29 }30});31await page.close();32await browser.close();33const { chromium } = require('playwright');34const browser = await chromium.launch();35const page = await browser.newPage();36await page.route('**', route => {37 if (route.request().url().endsWith('test.mp3')) {38 route.fulfill({39 body: Buffer.from('test'),40 headers: {41 },42 });43 } else {44 route.continue();45 }46});47await page.close();48await browser.close();49const { chromium } = require('playwright');50const browser = await chromium.launch();51const page = await browser.newPage();52await page.route('**', route => {53 if (route.request().url().endsWith('test.mp3')) {

Full Screen

Playwright tutorial

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.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful