Best JavaScript code snippet using playwright-internal
sync.js
Source:sync.js
1/* ***** BEGIN LICENSE BLOCK *****2 * Version: MPL 1.1/GPL 2.0/LGPL 2.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 LdapRW.15 *16 * The Initial Developer of the Original Code is17 * Ilnur Kiyamov <ilnurathome@gmail.com>.18 * Portions created by the Initial Developer are Copyright (C) 201019 * the Initial Developer. All Rights Reserved.20 *21 * Contributor(s):22 * 23 * Alternatively, the contents of this file may be used under the terms of24 * either the GNU General Public License Version 2 or later (the "GPL"), or25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),26 * in which case the provisions of the GPL or the LGPL are applicable instead27 * of those above. If you wish to allow use of your version of this file only28 * under the terms of either the GPL or the LGPL, and not to allow others to29 * use your version of this file under the terms of the MPL, indicate your30 * decision by deleting the provisions above and replace them with the notice31 * and other provisions required by the GPL or the LGPL. If you do not delete32 * the provisions above, a recipient may use your version of this file under33 * the terms of any one of the MPL, the GPL or the LGPL.34 *35 * ***** END LICENSE BLOCK ***** */36function debugsync(str){37// dump("sync.js: " + str);38}39function dumperrors(str){40 ldapsyncabort();41 dump(str+ "\n");42 alert(str);43}44// error collector45var errorstorage = {46 data:[],47 length: 0,48 add: function(err) {49 dump("");50 data[length++] = err;51 }52};53function queryerror(msg, dn, card) {54 if (msg) this.msg = msg;55 if (dn) this.dn = dn;56 if (card) this.card = card;57}58queryerror.prototype = {59 msg: null,60 dn: null,61 card: null62}63var QUEUESEARCHADD = 1;64var QUEUESEARCHGET = 2;65var QUEUEUPDATEADD = 3;66var QUEUEUPDATEGET = 4;67var QUEUEADDADD = 5;68var QUEUEADDGET = 6;69var QUEUERENADD = 7;70var QUEUERENGET = 8;71var QUEUEDELADD = 9;72var QUEUEDELGET = 10;73var ERRGET = 11;74var ERRSOL = 12;75var ldaprw_sync_abort = false;76function ldapsyncabort() {77 debugsync("ldapsyncabort\n");78 ldaprw_sync_abort = true;79}80// debug info81var alldn = [];82var allmsg = [];83var maillists = {};84/////////////////85/*86load("chrome://ldaprw/content/abtoldap.js"); 87load("chrome://ldaprw/content/ldaptoab.js"); 88load("chrome://ldaprw/content/ldapsource.js");89load("chrome://ldaprw/content/sync.js");90load("chrome://ldaprw/content/prefs.js");91*/92/*93 var abManager = Components.classes["@mozilla.org/abmanager;1"].getService(Components.interfaces.nsIAbManager);94var mybook = pref.book;95 var cards = mybook.childCards;96 var card = cards.getNext()97card instanceof Components.interfaces.nsIAbCard98var propers = card.properties; while ( propers.hasMoreElements() ) { var p = propers.getNext(); if ( p instanceof Components.interfaces.nsIProperty ){ print(p.name + "\t" + p.value + "\n"); } }99 */100/*101 * Sync all book102 * @backstatus callback function (type, msg)103 *104 * example:105 * ldapsync( function() { 106 * switch(type){ 107 * case QUEUESEARCHADD: somecounter++; break; 108 * case QUEUESEARCHGET: anothercounter++; break109 * }} )110 *111 * */112function ldapsync(backstatus) {113 ldaprw_sync_abort = false;114 debugsync("ldapsync\n");115 var prefs = getprefs();116 for ( var i in prefs) {117 if (ldaprw_sync_abort) {break;}118 syncpolitic2(prefs[i],backstatus);119 }120}121/*122 * Generator for password manager interface123 * @uri 124 * */125function gengetpassword() {126 var counter=0;127// var queryURL = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(uri, null, null).QueryInterface(Components.interfaces.nsILDAPURL);128 /*129 * function getpassword returns string password or null130 * First call ask or get existing password and return it131 * Second call and other clear existing password and ask it again132 * When counter > 3 break with null133 * @queryURL 134 * @aMsg It's defined then password incorrect, clear it and ask again135 * */136 return function getpassword(queryURL, aMsg) {137 debugsync("getpassword "+ counter + "\n");138 if (queryURL == undefined) return null;139 140 if (counter > 0){ 141// debugsync("getpassword " + counter + "\t" + aMsg.errorCode + "\t" + LdapErrorsToStr(aMsg.errorCode) +"\n");142 try{143 var passwordManager = Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);144 var logins = passwordManager.findLogins( {}, queryURL.prePath, null, queryURL.spec); 145 if (logins.length>0) {146 passwordManager.removeLogin(logins[0])147 debugsync("old login removed");148 }149 }catch(e){150 dumperrors("getpassword:" + e + "\n" + e.stack + "\n");151 }152 debugsync("getpassword counter changed"+ counter + "\n");153 }154 if (counter++ > 2) return null;155 try {156 var pw = { value: ""};157 var authprompter = Components.classes["@mozilla.org/login-manager/prompter;1"] 158 .getService(Components.interfaces.nsIAuthPrompt);159 var res = authprompter.promptPassword("Ldap Server Password Need", "Ldap Server Password Request\n" + queryURL.host , queryURL.spec, Components.interfaces.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, pw);160 if (!res) {161 return null;162 }163 }catch(e){164 dumperrors("getpassword: "+e + "\n" + e.stack + "\n");165 } 166 return pw.value;167 }168}169/*170 * Second design of the sync function. The first function did send a request 171 * to fetch all records from server and then compared cards.172 *173 * Primary concept of second design is to move to functional style174 * @pref preferences175 * @backstatus callback function (type, aMsg)176 * */177function syncpolitic2(pref,backstatus, mybook){178 var abManager = Components.classes["@mozilla.org/abmanager;1"].getService(Components.interfaces.nsIAbManager);179 if (mybook == undefined ) mybook = pref.book;180 var queryURL = pref.queryURL;181 var mapper = new LdaptoAB();182 var mappertoldap = new ABtoLdap();183 var newcards = new Array(); 184// var maillists = CollectNodesMailLists(mybook);185 /*186 * Generator for callback function from ldap modify operations187 * @querymods Array of query objects188 * for example [ { dn: aMsg.dn, mods: mods} ] 189 * */190 function genmodquery(querymods) {191 var modquerycount = 0;192 /*193 * Callback function for modify operations194 * @aMsg ldap messages195 * */196 return function modquery(aMsg, mdn) {197 debugsync("modquery " + modquerycount + "\n");198 if (ldaprw_sync_abort ) {199 debugsync("modequery abortall\n");200 ldap.abortall();201 return null;202 }203 if (aMsg != undefined ){204 debugsync("modquery aMsg= " + aMsg.errorCode + "\n");205 if(aMsg.errorCode != Components.interfaces.nsILDAPErrors.SUCCESS ){206 if (backstatus != undefined) backstatus(ERRGET, 0);207 208 dumperrors("Error: modquery " + aMsg.errorCode + "\n" 209 + LdapErrorsToStr(aMsg.errorCode) + "\n"210 + aMsg.errorMessage );211 }212 if (backstatus != undefined) backstatus(QUEUEUPDATEGET, aMsg.type);213 }214 if ( modquerycount < querymods.length ) {215 debugsync( querymods[modquerycount].dn + " "216 + querymods[modquerycount].mods+ "\n");217 218 return querymods[modquerycount++];219 }220 return null;221 }222 }223 /*224 * Callback function for ldap search results operation225 * @aMsg ldap messages226 * */227 function callbacksearchresult(aMsg) {228// ldapcards[aMsg.dn] = aMsg;229// ldapcards[ldapcards.length] = aMsg;230 debugsync("callbacksearchresult " + aMsg.type +"\n");231 if (ldaprw_sync_abort ) {232 debugsync("callbacksearchresult abortall\n");233 ldap.abortall();234 return;235 }236 var d = aMsg.getValues ("modifytimestamp", {}).toString();237 var ldapdate = new Date ( Date.UTC (d.substring(0,4), d.substring(4,6) - 1, d.substring(6,8), d.substring(8,10), d.substring(10,12), d.substring(12,14) ) );238 /// Search card for dn if it not exists may be we get an "alien" card 239 var card = mybook.getCardFromProperty("dn", aMsg.dn, false);240 if ( card == undefined ) {241 debugsync("callbacksearchresult: can't find\n");242 return;243 }244 245 /*246 * Compare a card date with a ldap message247 * need to move it to function248 * */249 var carddate = new Date();250 var carddatestr = card.getProperty("LastModifiedDate", 0); 251 carddate.setTime( carddatestr + "000");252 var oldldapdate = new Date();253 var oldldapdatestr = card.getProperty("LdapModifiedDate", 0);254 oldldapdate.setTime(oldldapdatestr + "000");255 debugsync("callbacksearchresult ldapdate=" 256 + ldapdate.getTime() + " carddate =" 257 + carddate.getTime() + " oldldapdate = "258 + oldldapdate.getTime() + "\n" );259 260 if ( ldapdate.getTime() != carddate.getTime() ){261 if (ldapdate.getTime() > carddate.getTime()) {262 mapper.map(aMsg, card);263 debugsync("modify card in Book "+ aMsg.dn + "\n");264 var newcard= mybook.modifyCard(card);265 if (backstatus != undefined) backstatus(QUEUESEARCHGET, aMsg.type);266 } else {267 debugsync("modify card in LDAP "+ aMsg.dn + "\n");268 var oldcard = Components.classes["@mozilla.org/addressbook/cardproperty;1"].createInstance(Components.interfaces.nsIAbCard); 269 mapper.map(aMsg, oldcard);270 var mods = CreateNSMutArray();271 272 mappertoldap.map(card, mods, oldcard);273 if (mods.length >0){ 274 try { 275 ldap.modify (queryURL, pref.binddn, gengetpassword(), 276 genmodquery( [ { dn: aMsg.dn, mods: mods} ] ) ); 277 if (backstatus != undefined) backstatus(QUEUEUPDATEADD, 0);278 } catch (e) {279 dumperrors("Error: " + e+ "\n" + e.stack + "\n"); 280 } 281 }else{282 debugsync("modify card in LDAP nothing to modify\n");283 if (backstatus != undefined) backstatus(QUEUESEARCHGET, aMsg.type);284 }285 }286 } else {287 if (backstatus != undefined) backstatus(QUEUESEARCHGET, aMsg.type);288 }289 };290 /*291 * Generator for callback search queries292 * @queryURL293 * */294 function gengetsearchquery(queryURL){295 var allcards = mybook.childCards;296 var currentcard;297 /*298 * old "sync" card by card299 * */300 function iteration(){301 debugsync("iter \n");302 while ( allcards.hasMoreElements() ) {303 if (ldaprw_sync_abort ) {304 debugsync("modequery abortall\n");305 ldap.abortall();306 return null;307 }308 currentcard = allcards.getNext();309 if ( currentcard instanceof Components.interfaces.nsIAbCard) {310 var dn = currentcard.getProperty("dn", null);311 debugsync("iter while dn=" + dn + "\n");312 if ( dn ){313 if (backstatus != undefined) backstatus(QUEUESEARCHADD, 0);314 315 if ( currentcard.isMailList ) {316 // !!! never true317 // because card component of mailing list can't containing "dn"318 debugsync( "iter mailng list contains dn! dn=" + dn + "\n")319 maillists[currentcard.displayName].card = currentcard;320 // "(objectclass=groupOfNames)"321 return {dn: gendnML(pref, currentcard), filter: "(objectclass=" + pref.maillistClassesAR[0] + ")"};322// continue;323 } else {324 // "(objectclass=inetorgperson)"325 return {dn: dn, filter: "(objectclass=" + pref.objClassesAR[0] + ")"};326 }327 } else {328 if ( currentcard.isMailList ) {329 debugsync("iteration maillist\n");330 maillists[currentcard.displayName] = {card: currentcard};331// search mailing list on ldap server332// may be need to remove 'dn' from cards and create gendn function for all type card333 return {dn: gendnML(pref, currentcard), filter: "(objectclass=" + pref.maillistClassesAR[0] + ")"};334// newmaillisttoldap(currentcard);335 } else {336 debugsync("iteration new card new dn\n");337 newcardtoldap(currentcard);338 }339 }340 }341 }342 debugsync("iteration nothing to do\n")343 return null;344 }345 /*346 * Callback function for search operations347 * */348 return function(aMsg, mydn){349 debugsync("getsearchquery\n");350 if (ldaprw_sync_abort ) {351 debugsync("getsearchquery abortall\n");352 ldap.abortall();353 return null;354 }355 if ( aMsg == undefined ) return iteration();356 else357 if ( aMsg instanceof Components.interfaces.nsILDAPMessage) {358 //// debuging infos359// allmsg[allmsg.length] = aMsg;360// if ( mydn != undefined ) {361// alldn[alldn.length] = { msg: aMsg, mydn: mydn };362// debugsync("getsearchquery mydn=" + mydn.dn + "\n");363// }364 ////////////////////////365 if ( aMsg.errorCode == Components.interfaces.nsILDAPErrors.SUCCESS ){366 return iteration();367 }else 368 if ( aMsg.errorCode == Components.interfaces.nsILDAPErrors.NO_SUCH_OBJECT){369 //// debug370 var dumpstr = "getsearchquery new card ";371 try {372 if (aMsg.errorCode != undefined) {373 dumpstr+="errcode=" + aMsg.errorCode;374 }375 if (aMsg.matchedDn != undefined ) {376 dumpstr+= " matchedDn=" + aMsg.matchedDn;377 }378 if (mydn != undefined ) {379 dumpstr+= " dn=" + mydn.dn;380 }381 } catch(e) {382 debugsync(e);383 } finally {384 debugsync(dumpstr + "\n");385 }386 /////////////////////////////////////387 if (mydn != undefined ) {388 var card = mybook.getCardFromProperty("dn", mydn.dn, false);389 if ( card != undefined ) {390 newcardtoldap(card);391 } else {392 var rdnval = mydn.dn.split(',')[0].split('=')[1].replace(/^\s+|\s+$/g,'');393 var ml = maillists[rdnval];394 debugsync(ml.card.displayName + "\n");395 newmltoldap(ml.card); 396 }397 }398 return iteration();399 } else {400 if (backstatus != undefined) backstatus(ERRGET, 0);401 ldapsyncabort(); 402 ldap.abortall();403 dumperrors (aMsg.type + "\n" + aMsg.errorCode + "\t" + LdapErrorsToStr(aMsg.errorCode) + "\n" + aMsg.errorMessage);404 }405 }406 debugsync("getsearchquery nothing to do\n");407 return null; 408 }409 }410 411 var ldap = new LdapDataSource();412 var newcardtoldap = genaddtoldap(pref, ldap, backstatus);413 var newmltoldap = genaddtoldapML(pref, ldap, backstatus);414 415 // Prepare Array of requested attributes for ldap search request416 // need to refactor to use generator iterator from mapper or move to use417 // callback function418 var attrs = new Array(); 419 attrs[attrs.length]="objectClass";420 for (var i in mapper.__proto__) { 421 attrs[attrs.length] = i; 422 };423 424 ldap.init(attrs);425 try {426 // queryURL.filter = "(objectclass=inetorgperson)"427 ldap.query(queryURL, pref.binddn, gengetpassword(), gengetsearchquery(pref.queryURL), callbacksearchresult );428 } catch (e) {429 dumperrors ("Error: " + e + "\n" + e.stack + "\n");430 }431}432function genrdnML(pref, card) {433 //return pref.attrRdn + "=" + card.displayName;434 var basisRdn = card.getProperty(pref.basisRdn, "");435 if ( basisRdn.length > 0 ) {436 return pref.attrRdn + "=" + card.getProperty(pref.basisRdn); 437 } else {438 throw "genrdn: basisRdn.length = 0";439 }440}441function gendnML(pref,card) {442 return genrdnML(pref, card) + ',' + pref.queryURL.dn;443}444function genrdn(pref, card) {445// return pref.attrRdn + "=" + card.displayName; 446// var basisRdn = card.getProperty(pref.basisRdn, "");447 var basisRdn = pref.genRdn(card);448 if ( basisRdn.length > 0 ) {449 return pref.attrRdn + "=" + basisRdn;450 } else {451 debugsync("genrdn: basisRdn.length=" + basisRdn.length + "\n");452 throw "genrdn: basisRdn.length = 0";453 return null;454 }455}456function gendn(pref,card) {457 var rdn = genrdn(pref, card);458 debugsync("gendn: rdn="+rdn+"\n");459 return rdn + ',' + pref.queryURL.dn;460}461/*462 * Generator of callback function for add operation463 * */464function genaddtoldap(pref, ldapser, backstatus) {465 var mybook = pref.book;466 var queryURL = pref.queryURL;467 var mapper = new LdaptoAB();468 var mappertoldap = new ABtoLdap();469 var ldap = ldapser;470 if (ldap == undefined) { 471 var ldap = new LdapDataSource();472 var attrs = new Array(); 473 attrs[attrs.length]="objectClass";474 for (var i in mapper.__proto__) { 475 attrs[attrs.length] = i; 476 };477 ldap.init(attrs);478 }479 function genaddquery(card, addqueries) {480 var addquerycount = 0;481 return function addquery(aMsg, mdn) {482 debugsync("addquery " + addquerycount + "\n");483 if (ldaprw_sync_abort ) {484 try{485 if (backstatus != undefined) backstatus(ERRGET, 0);486 debugsync("addquery abortall\n");487 ldap.abortall();488 }catch(e){489 dumperrors("addquery aborting failed: " + e + "\n" + e.stack + "\n");490 }491 return null;492 }493 if (aMsg != undefined ){494 debugsync("addquery aMsg= " + aMsg.errorCode + "\n");495 if (aMsg.errorCode != Components.interfaces.nsILDAPErrors.SUCCESS) {496 try{497 ldapsyncabort();498 if (backstatus != undefined) backstatus(ERRGET, 0);499 dump("addtoldap: aborting\n");500 ldap.abortall();501 }catch(e){502 dumperrors("addquery aborting failed: " + e + "\n" + e.stack + "\n");503 }504 dumperrors("Error: addquery " + aMsg.errorCode + "\n" 505 + LdapErrorsToStr(aMsg.errorCode) + "\n"506 + aMsg.errorMessage + "\n"507 + card.getProperty("dn", "") + "\n");508 return null;509 }else{510 card.setProperty("dn", mdn.dn);511 var newcard= mybook.modifyCard(card);512 if (backstatus != undefined) backstatus(QUEUEADDGET, aMsg.type); 513 }514 }515 if ( addquerycount < addqueries.length ) {516 return addqueries[addquerycount++];517 }518 return null;519 }520 }521 return function(card){522 debugsync("New card\n");523 try {524 var oldcard = Components.classes["@mozilla.org/addressbook/cardproperty;1"] .createInstance(Components.interfaces.nsIAbCard);525 var mods = CreateNSMutArray();526 527 var dn = card.getProperty("dn", null);528 if ( !dn ){529 //dn = pref.attrRdn + "=" + card.displayName + "," + queryURL.dn;530 dn = gendn(pref, card);531 }532 debugsync("newcardtoldap dn=" + dn + "\n");533 mods.appendElement( CreateLDAPMod( "objectClass", pref.objClassesAR, Components.interfaces.nsILDAPModification.MOD_ADD | Components.interfaces.nsILDAPModification.MOD_BVALUES ), false );534 535 mappertoldap.map(card, mods, oldcard);536 537 ldap.add(queryURL, pref.binddn, gengetpassword(), genaddquery(card, [{dn: dn, mods: mods /* maybe need: , card:card */}]) );538 if (backstatus != undefined) backstatus(QUEUEADDADD, 0); 539 } catch(e) {540 dumperrors("Error: " + e+"\n" + e.stack + "\n");541 } 542 }543}544/*545 * Generator of callback function for add operation, mailing list546 * */547function genaddtoldapML(pref, ldapser, backstatus) {548 var abManager = Components.classes["@mozilla.org/abmanager;1"].getService(Components.interfaces.nsIAbManager);549 var mybook = pref.book;550 var queryURL = pref.queryURL;551 var mapper = new LdaptoML();552 var mappertoldap = new MLtoLdap();553 var ldap = ldapser;554 if (ldap == undefined) { 555 var ldap = new LdapDataSource();556 }557 function genaddquery(card, addqueries) {558 var addquerycount = 0;559 return function addquery(aMsg, mdn) {560 debugsync("addquery " + addquerycount + "\n");561 if (ldaprw_sync_abort ) {562 debugsync("addquery abortall\n");563 ldap.abortall();564 return null;565 }566 if (aMsg != undefined ){567 debugsync("addquery aMsg= " + aMsg.errorCode + "\n");568 if (aMsg.errorCode != Components.interfaces.nsILDAPErrors.SUCCESS) {569 dumperrors("Error: addquery " + aMsg.errorCode + "\n" 570 + LdapErrorsToStr(aMsg.errorCode) + "\n"571 + aMsg.errorMessage + "\n"572 + card.getProperty("dn", "") + "\n");573 return null;574 }else{575// var newcard= mybook.modifyCard(card);576 if (backstatus != undefined) backstatus(QUEUEADDGET, aMsg.type); 577 }578 }579 if ( addquerycount < addqueries.length ) {580 return addqueries[addquerycount++];581 }582 return null;583 }584 }585 return function(card){586 debugsync("New mailing list to ldap\n");587 try {588 var node = abManager.getDirectory(card.mailListURI);589 var ml = { card: card, node: node}; 590 var mods = CreateNSMutArray();591 592 var dn = gendnML(pref, card);593 debugsync("new ml to ldap dn=" + dn + "\n");594 mods.appendElement( CreateLDAPMod( "objectClass", pref.maillistClassesAR, Components.interfaces.nsILDAPModification.MOD_ADD | Components.interfaces.nsILDAPModification.MOD_BVALUES ), false );595 debugsync("new ml to ldap mods.length=" + mods.length + "\n");596 597 mappertoldap.map(ml, mods);598 //// Thunderbird can't store 'dn' in mailing list nsAbCard599 //card.setProperty("dn", dn);600 debugsync("new ml to ldap mods.length=" + mods.length + "\n");601 602 ldap.add(queryURL, pref.binddn, gengetpassword(), genaddquery(card, [{dn: dn, mods: mods}]) );603 if (backstatus != undefined) backstatus(QUEUEADDADD, 0); 604 } catch(e) {605 dumperrors("Error: " + e+"\n" + e.stack + "\n");606 } 607 }608}609/*610 * Add new card to address book from ldap or modify existing card611 * */612function addcardfromldap(book, aMsg, replace){613 614 var mapper = new LdaptoAB();615 var card = book.getCardFromProperty("dn", aMsg.dn, false);616 if ( card == undefined ) {617 var card = Components.classes["@mozilla.org/addressbook/cardproperty;1"].createInstance(Components.interfaces.nsIAbCard); 618 mapper.map(aMsg, card);619 // NEED to change code to use onnsIAbCardPropsDo(card, func)620 var propers = card.properties; 621 while ( propers.hasMoreElements() ) { 622 var p = propers.getNext(); 623 if ( p instanceof Components.interfaces.nsIProperty ){ 624 debugsync(p.name + "\t" + p.value + "\n"); 625 } 626 } 627 var newcard= book.addCard(card);628 return 0;629 } else {630 if (replace){631 mapper.map(aMsg, card);632 var newcard= book.modifyCard(card); 633 return 0;634 }635 }636 return 1;...
search-ui-routerSpec.js
Source:search-ui-routerSpec.js
1/* globals window */2xdescribe('search router', function () {3 'use strict';4 var $q,5 $state,6 $stateParams,7 searchService,8 uiRouterTester,9 $httpBackend;10 beforeEach(module('ovpApp.search.router'));11 beforeEach(module('ovpApp.search.searchService'));12 beforeEach(inject(function ($rootScope, $injector, _$q_, _$state_,13 _$stateParams_, _searchService_, _$httpBackend_) {14 $q = _$q_;15 $state = _$state_;16 $stateParams = _$stateParams_;17 $httpBackend = _$httpBackend_;18 uiRouterTester = new UiRouterTester($injector);19 searchService = _searchService_;20 }));21 describe('basic routes', function () {22 describe('parent', function () {23 it('should not go to abstract parent search state', function () {24 uiRouterTester.goTo('/search');25 expect($state.current.name).toEqual('');26 });27 it('should be abstract', function () {28 var route = $state.get('search');29 expect(route.abstract).toEqual(true);30 });31 it('should be able to browse backwards to the ' +32 'app running before search started', function () {33 $httpBackend.whenGET('/js/ovpApp/search/quick-search-results.html')34 .respond(200, {});35 uiRouterTester.goTo('/search/term/something');36 window.history.back();37 expect($state.current.name).toEqual('');38 });39 });40 describe('quick results', function () {41 it('should go to quick results state', function () {42 $httpBackend.whenGET('/js/ovpApp/search/quick-search-results.html')43 .respond(200, {});44 uiRouterTester.goTo('/search/term/somesearchterm');45 expect($state.current.name).toEqual('state.quickresults');46 });47 it('should be child of parent state', function () {48 var parent = $state.get('search.quickresults');49 expect(parent.name).toEqual('search');50 });51 it('should have term param', function () {52 uiRouterTester.goTo('/search/term/somesearchterm');53 // I'm not positive this is going to work. Not sure if $stateParams54 // will have updated55 expect($stateParams.term).toEqual('somesearchterm');56 });57 it('should clear and cancel search quick results', function () {58 jasmine.spyOn(searchService, 'abortAll');59 uiRouterTester.goTo('/search/term/somesearchterm');60 uiRouterTester.goTo('/livetv');61 expect(searchService.abortAll).toHaveBeenCalled();62 });63 it('should cancel fetch when another search is executed', function () {64 jasmine.spyOn(searchService, 'abortAll');65 uiRouterTester.goTo('/search/term/somesearchterm');66 uiRouterTester.goTo('/search/term/othersearchterm');67 expect(searchService.abortAll).toHaveBeenCalled();68 uiRouterTester.goTo('/search/result/someresulturi');69 expect(searchService.abortAll).toHaveBeenCalled();70 uiRouterTester.goTo('/search/term/othersearchterm');71 expect(searchService.abortAll).toHaveBeenCalled();72 });73 });74 describe('results', function () {75 it('should go to results state', function () {76 uiRouterTester.goTo('/search/result/someresulturi');77 expect($state.current.name).toEqual('state.results');78 });79 it('should be child of parent state', function () {80 var parent = $state.get('search.results');81 expect(parent.name).toEqual('search');82 });83 it('should have result uri param', function () {84 uiRouterTester.goTo('/search/result/http://some.nns.uri.com');85 // I'm not positive this is going to work. Not sure if $stateParams86 // will have updated87 expect($stateParams.uri).toEqual('http://some.nns.uri.com');88 });89 it('should clear and cancel search results', function () {90 jasmine.spyOn(searchService, 'abortAll');91 uiRouterTester.goTo('/search/result/http://some.nns.uri.com');92 uiRouterTester.goTo('/livetv');93 expect(searchService.abortAll).toHaveBeenCalled();94 });95 it('should have grid and list view', function () {96 var state = $state.get('search.results');97 expect(state.views.list).toBeDefined();98 expect(state.views.grid).toBeDefined();99 });100 });101 });102 describe('resolves', inject(function ($rootScope) {103 describe('states with w/o views', function () {104 it('quick results', function () {105 jasmine.spyOn(searchService, 'getQuickResults').and.callFake(function () {106 return $q.when('something');107 });108 var onResolved = jasmine.createSpy();109 uiRouterTester.resolve('quickResults').forStateAndView('search.quickResults').then(onResolved);110 $rootScope.$apply();111 expect(onResolved).toHaveBeenCalledWith('something');112 });113 });114 describe('states w/views', function () {115 it('results list', function () {116 jasmine.spyOn(searchService, 'getResults').and.callFake(function () {117 return $q.when('something');118 });119 var onResolved = jasmine.createSpy();120 uiRouterTester.resolve('results')121 .forStateAndView('search.results', 'list@search.results').then(onResolved);122 $rootScope.$apply();123 expect(onResolved).toHaveBeenCalledWith('something');124 });125 it('results grid', function () {126 jasmine.spyOn(searchService, 'getResults').and.callFake(function () {127 return $q.when('something');128 });129 var onResolved = jasmine.createSpy();130 uiRouterTester.resolve('results')131 .forStateAndView('search.results', 'grid@search.results').then(onResolved);132 $rootScope.$apply();133 expect(onResolved).toHaveBeenCalledWith('something');134 });135 });136 }));...
CanvasPlayer.js
Source:CanvasPlayer.js
...58 } finally {59 killProcess();60 }61 }62 function abortAll() {63 aborters.forEach((aborter) => aborter());64 }65 function pause(seekTo) {66 if (terminated) return;67 if (!playing && commandedTime === seekTo) return;68 playing = false;69 commandedTime = seekTo;70 abortAll();71 command();72 }73 function play(playFrom) {74 if (terminated) return;75 if (playing && commandedTime === playFrom) return;76 playing = true;77 commandedTime = playFrom;78 abortAll();79 command();80 }81 function terminate() {82 if (terminated) return;83 terminated = true;84 abortAll();85 }86 return {87 play,88 pause,89 terminate,90 };...
StoryAbortButton.js
Source:StoryAbortButton.js
...25 useAllAbortListener(() => {26 console.log(">>>>> StoryAbortButton - (hook) ALL ABORT");27 });28 const onAbortAllClick = useCallback(() =>{29 abortAll();30 }, [context, abortAll]);31 return <div>32 {batches.length ? (<>33 <button onClick={onAbortAllClick} data-test="story-abort-all-button">Abort All</button>34 </>) : null}35 <br/>36 Batches:37 <ul>38 {batches.map((bId, i) =>39 <li key={bId}>40 <button data-test={`abort-batch-${i}`}41 onClick={() => abortBatch(bId)}>Abort batch: {bId}</button>42 </li>)}43 </ul>...
serviceFactory.js
Source:serviceFactory.js
...39 } else {40 throw new Error(serviceName + ' not found');41 }42 }43 function abortAll() {44 var tmpList = serviceInstanceList.concat([]);45 for (var i = 0, len = tmpList.length, service; i < len; i++) {46 service = tmpList[i];47 service && service.abort(true);48 }49 }50 return {51 setConfig: setConfig,52 set: set,53 get : get,54 addMiddleware : middleware.add,55 removeMiddleware : middleware.remove,56 abortAll: abortAll57 }...
scoped.js
Source:scoped.js
...35};36exports.restart = function restart(taskApi, type, id, update) {37 return taskApi.restart(type, id, update);38};39exports.abortAll = function abortAll(taskApi, type) {40 return taskApi.abortAll(type);41};42exports.restartAll = function restartAll(taskApi, type, update) {43 return taskApi.restartAll(type, update);...
requestsTracker.js
Source:requestsTracker.js
1import { wasAnyJediBornInCurrentPlanet } from './queries';2export default function requestsTracker(store) {3 const requestsByJediId = {};4 return () => {5 const state = store.getState();6 const darkJedisById = state.darkJedisById;7 const abortAll = wasAnyJediBornInCurrentPlanet(state);8 if (!abortAll) {9 Object.keys(darkJedisById).forEach(id => {10 const darkJedi = darkJedisById[id];11 if (darkJedi.fetching && !requestsByJediId[id]) {12 const xhr = new XMLHttpRequest();13 xhr.onreadystatechange = () => {14 if (xhr.readyState === 4 && xhr.status === 200) {15 const jedi = JSON.parse(xhr.response);16 store.dispatch({ type: 'RECEIVE_JEDI', jedi });17 }18 };19 xhr.open("GET", darkJedi.url || `http://localhost:3000/dark-jedis/${id}`, true);20 xhr.send();21 requestsByJediId[id] = xhr;22 }23 });24 }25 const idsToAbort = Object.keys(requestsByJediId).filter(id =>26 !darkJedisById[id] || abortAll27 );28 idsToAbort.forEach(id => {29 requestsByJediId[id].abort();30 delete requestsByJediId[id];31 });32 };...
index.js
Source:index.js
1var noop = function () {}2function abortAll(ary, abort, cb) {3 var n = ary.length4 if(!n) return cb(abort)5 ary.forEach(function (f) {6 if(f) f(abort, next)7 else next()8 })9 function next() {10 if(--n) return11 cb(abort)12 }13 if(!n) next()14}15module.exports = function (streams) {16 return function (abort, cb) {17 ;(function next () {18 if(abort)19 abortAll(streams, abort, cb)20 else if(!streams.length)21 cb(true)22 else if(!streams[0])23 streams.shift(), next()24 else25 streams[0](null, function (err, data) {26 if(err) {27 streams.shift() //drop the first, has already ended.28 if(err === true) next()29 else abortAll(streams, err, cb)30 }31 else32 cb(null, data)33 })34 })()35 }...
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: 'google.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: 'google.png' });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.screenshot({ path: 'google.png' });23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.screenshot({ path: 'google.png' });31 await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.screenshot({ path: 'google.png' });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();45 const page = await context.newPage();46 await page.screenshot({ path: 'google.png' });47 await browser.close();48})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.click('text=Get started');7 await page.waitForTimeout(1000);8 await context.abortAll();9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch({ headless: false });14 const context = await browser.newContext();15 const page = await context.newPage();16 await page.click('text=Get started');17 await page.waitForTimeout(1000);18 await context.abortAll();19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch({ headless: false });24 const context = await browser.newContext();25 const page = await context.newPage();26 await page.click('text=Get started');27 await page.waitForTimeout(1000);28 await context.abortAll();29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch({ headless: false });34 const context = await browser.newContext();35 const page = await context.newPage();36 await page.click('text=Get started');37 await page.waitForTimeout(1000);38 await context.abortAll();39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch({ headless: false });44 const context = await browser.newContext();45 const page = await context.newPage();46 await page.click('text=Get started');47 await page.waitForTimeout(1000);48 await context.abortAll();49 await browser.close();50})();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.pause();7 await page.pause();8 await page.pause();9 await browser.close();10})();11If you want to stop the execution of the script after the first page.goto() call, then you can use the page.close() method instead of the page.pause() method. The page.close() method closes the current page. If the current page is the last page in the current context, then the current
Using AI Code Generation
1(async () => {2 const browser = await chromium.launch();3 const context = await browser.newContext();4 const page = await context.newPage();5 await page.waitForTimeout(5000);6 await page.context().abortAll();7 await browser.close();8})();
Using AI Code Generation
1const { chromium } = require('playwright');2const { AbortController } = require('abort-controller');3const controller = new AbortController();4const { signal } = controller;5(async () => {6 const browser = await chromium.launch({ headless: false });7 const context = await browser.newContext();8 const page = await context.newPage();9 await page.waitForTimeout(10000);10 controller.abort();11 await page.waitForTimeout(10000);12 await browser.close();13})();
Using AI Code Generation
1const { Playwright } = require('playwright');2const playwright = new Playwright();3playwright.abortAll();4const { Playwright } = require('playwright');5const playwright = new Playwright();6playwright.abortAll();7const { Playwright } = require('playwright');8const playwright = new Playwright();9playwright.abortAll();10const { Playwright } = require('playwright');11const playwright = new Playwright();12playwright.abortAll();13const { Playwright } = require('playwright');14const playwright = new Playwright();15playwright.abortAll();16const { Playwright } = require('playwright');17const playwright = new Playwright();18playwright.abortAll();19const { Playwright } = require('playwright');20const playwright = new Playwright();21playwright.abortAll();22const { Playwright } = require('playwright');23const playwright = new Playwright();24playwright.abortAll();25const { Playwright } = require('playwright');26const playwright = new Playwright();27playwright.abortAll();28const { Playwright } = require('playwright');29const playwright = new Playwright();30playwright.abortAll();31const { Playwright } = require('playwright');32const playwright = new Playwright();33playwright.abortAll();34const { Playwright } = require('playwright');35const playwright = new Playwright();36playwright.abortAll();37const { Playwright } =
Using AI Code Generation
1const { chromium } = require('playwright');2const { AbortController } = require('abort-controller');3const controller = new AbortController();4const { signal } = controller;5(async () => {6 const browser = await chromium.launch();7 const context = await browser.newContext();8 const page = await context.newPage();9 await page.screenshot({ path: `google.png` });10 controller.abort();11 await browser.close();12})();13const { chromium } = require('playwright');14const { AbortController } = require('abort-controller');15const controller = new AbortController();16const { signal } = controller;17(async () => {18 const browser = await chromium.launch();19 const context = await browser.newContext();20 const page = await context.newPage();21 await page.screenshot({ path: `google.png` });22 controller.abort();23 await browser.close();24})();25const { chromium } = require('playwright');26const { AbortController } = require('abort-controller');27const controller = new AbortController();28const { signal } = controller;29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 await page.screenshot({ path: `google.png` });34 controller.abort();35 await browser.close();36})();37const { chromium } = require('playwright');38const { AbortController } = require('abort-controller');39const controller = new AbortController();40const { signal } = controller;41(async () => {42 const browser = await chromium.launch();43 const context = await browser.newContext();44 const page = await context.newPage();45 await page.screenshot({ path: `google.png` });46 controller.abort();47 await browser.close();48})();
Using AI Code Generation
1const { createServer } = require('playwright-core/lib/server/server');2const server = createServer();3server.abortAll();4const { createServer } = require('playwright-core/lib/server/server');5const server = createServer();6server.abortAll();7const { createServer } = require('playwright-core/lib/server/server');8const server = createServer();9server.abortAll();10const { createServer } = require('playwright-core/lib/server/server');11const server = createServer();12server.abortAll();13const { createServer } = require('playwright-core/lib/server/server');14const server = createServer();15server.abortAll();16const { createServer } = require('playwright-core/lib/server/server');17const server = createServer();18server.abortAll();19const { createServer } = require('playwright-core/lib/server/server');20const server = createServer();21server.abortAll();22const { createServer } = require('playwright-core/lib/server/server');23const server = createServer();24server.abortAll();25const { createServer } = require('playwright-core/lib/server/server');26const server = createServer();27server.abortAll();28const { createServer } = require('playwright-core/lib/server/server');29const server = createServer();30server.abortAll();
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!!