Best JavaScript code snippet using playwright-internal
inboxonly.js
Source:inboxonly.js
...102 // } catch (ex) {103 // console.error(ex);104 // // await browser.close()105 // }106 await page.bringToFront();107 await page.authenticate({108 username: item.proxyUsername,109 password: item.proxyPassword,110 });111 await page.bringToFront();112 for (let i = 0; i <= 11; i++) {113 await sleep(1000);114 if (i == 11) {115 i = 0;116 }117 https://mail.google.com/mail/u/1/#search/in%3Ainbox+welcome+OR+liberty/FMfcgzGmthmXxmntkRPvnCnWBNrlpkTn118 await page.bringToFront();119 await Promise.all([page.keyboard.press("Enter")]);120 await Promise.all([page.keyboard.press("Enter")]);121 try {122 123 // await page.goto(124 // `https://mail.google.com/mail/u/${i}/#inbox`,125 // pressenter(page,i),126 // // https://mail.google.com/mail/u/${i}/h/1skwmxqy8dsdn/?&127 // {128 129 // waitUntil:"domcontentloaded",130 131 // timeout: 1* 1000* 60,132 // },133 134 // );135 await sleep(9000)136 await page.goto(`https://mail.google.com/mail/u/${i}/#inbox`, {waituntil: "domcontentloaded"});137 // //Find the iFrame with the URL http://www.allwebco-templates.com/support/138 // const frame = await page.frames().find(f => f.url() === `https://mail.google.com/mail/u/${i-1}/#search/in%3Ainbox+welcome+OR+liberty/FMfcgzGmthmXxmntkRPvnCnWBNrlpkTn`);139 // if(!frame){140 // console.log("iFrame not found with the specified url");141 142 // }143 // await Promise.all([page.keyboard.press("Enter")]);144 // await Promise.all([page.keyboard.press("Enter")]);145 146 } catch (ex) {147 148 console.error(ex);149 // await browser.close()150 }151 await page.bringToFront();152 if ((await page.$("#main-message > h1 > span")) !== null) {153 let proxyreconnect = await eval(154 page,155 `() => document.querySelector('#main-message > h1 > span').innerText == 'No internet'`156 );157 if (proxyreconnect == true) {158 await page.reload({159 waitUntil: ["networkidle0", "domcontentloaded"],160 });161 }162 }163 await Promise.all([page.keyboard.press("Enter")]);164 await Promise.all([page.keyboard.press("Enter")]);165 await page.bringToFront();166 // if(i == 0){167 // let pages3 = await browser.pages();168 // await pages3[0].close();169 // }170 // for (let j = 0; i <= 2; j++) {171 if ((await page.$("#maia-main > form > p > input")) !== null) {172 await page.click("#maia-main > form > p > input");173 }174 await Promise.all([page.keyboard.press("Enter")]);175 await page.bringToFront();176 await Promise.all([page.keyboard.press("Enter")]);177 await Promise.all([page.keyboard.press("Enter")]);178 const searchmail = '[aria-label="Search mail"]';179 await page.waitForSelector(searchmail);180 await page.click(searchmail);181 await page.bringToFront();182 let pages13 = await browser.pages();183 if (pages13[1]) {184 await pages13[1].close();185 }186 if (pages13[2]) {187 await pages13[2].close();188 }189 if (pages13[3]) {190 await pages13[3].close();191 }192 await Promise.all([page.keyboard.press("Enter")]);193 await Promise.all([page.keyboard.press("Enter")]);194 // await searchmail.click({ clickCount: 3 });195 await page.type(searchmail, `in:spam `);196 await Promise.all([page.keyboard.press("Enter")]);197 await page.bringToFront();198 await sleep(20000);199 const checkPrice = await page.$x(200 "//td[contains(text(), 'Hooray, no spam here!')]"201 );202 console.log(checkPrice.length);203 204 if (checkPrice.length == 0) {205 const click1 = await page.$x(206 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[1]/td[2]"207 );208 await page.bringToFront();209 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[3]/div[5]/div[2]/div/table/tbody/tr[1]/td[2]"210 if (click1.length) {211 await click1[0].click();212 }213 const click2 = await page.$x(214 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[2]/td[2]"215 );216 if (click2.length) {217 await click2[0].click();218 }219 const click3 = await page.$x(220 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[3]/td[2]"221 );222 if (click3.length) {223 await click3[0].click();224 }225 const click4 = await page.$x(226 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[4]/td[2]"227 );228 if (click4.length) {229 await click4[0].click();230 }231 const click5 = await page.$x(232 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[5]/td[2]"233 );234 if (click5.length) {235 await click5[0].click();236 }237 const click6 = await page.$x(238 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[6]/td[2]"239 );240 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[3]/div[5]/div[2]/div/table/tbody/tr[1]/td[2]"241 if (click6.length) {242 await click6[0].click();243 }244 const click7 = await page.$x(245 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[7]/td[2]"246 );247 if (click7.length) {248 await click7[0].click();249 }250 const click8 = await page.$x(251 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[8]/td[2]"252 );253 if (click8.length) {254 await click8[0].click();255 }256 const click9 = await page.$x(257 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[9]/td[2]"258 );259 if (click9.length) {260 await click9[0].click();261 }262 const click10 = await page.$x(263 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[4]/div[2]/div/table/tbody/tr[10]/td[2]"264 );265 if (click10.length) {266 await click10[0].click();267 }268 await page.bringToFront();269 await sleep(2000);270 let notspamcheck = await eval(271 page,272 `() => document.getElementsByClassName('Bn')[1].innerText == 'Not spam'`273 );274 await page.bringToFront();275 await sleep(3000);276 // let notspamclick = await eval(page, `() => document.getElementsByClassName('Bn')[1]`);277 if (notspamcheck == true) {278 await page.click(279 "div.D.E.G-atb.PY > div.nH.aqK > div.Cq.aqL > div > div > div:nth-child(3) > div > div"280 );281 }282 await page.bringToFront();283 await sleep(15000)284 }285 await page.bringToFront();286 await page.goto(287 `https://mail.google.com/mail/u/${i}/#inbox`,288 // https://mail.google.com/mail/u/${i}/h/1skwmxqy8dsdn/?&289 {290 waitUntil: "domcontentloaded",291 timeout: 1000 * 60 * 5,292 }293 );294 await page.bringToFront();295 for (let i = 0; i < 20; i++) {296 await sleep(5000);297 await page.waitForSelector('[aria-label="Search mail"]');298 await page.bringToFront();299 await page.click('[aria-label="Search mail"]');300 await page.bringToFront();301 if (i == 0) {302 await page.type(303 '[aria-label="Search mail"]',304 `in:inbox welcome OR liberty `305 );306 }307 await page.bringToFront();308 // is:unread in:inbox welcome OR liberty309 await Promise.all([page.keyboard.press("Enter")]);310 await page.bringToFront();311 logger.log("mailsync:", i);312 // document.getElementsByClassName('v1')[0].innerText == 'Loading...'313 if (i == 0) {314 await sleep(15000);315 await page.bringToFront();316 } else {317 await sleep(5000);318 }319 await page.bringToFront();320 await eval(321 page,322 `() => document.getElementsByClassName('xY a4W')[10].click()`323 );324 await page.bringToFront();325 // const firstmail = await page.$x(326 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[3]/div[5]/div[2]/div/table/tbody/tr[1]"327 // );328 // if (firstmail[0] == undefined) {329 // const firstmailoptional = await page.$x(330 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[2]/div[5]/div[2]/div/table/tbody/tr[1]"331 // );332 // await sleep(2000);333 // await firstmailoptional[0].click();334 // } else {335 // await firstmail[0].click();336 // }337 await page.bringToFront();338 let pages13 = await browser.pages();339 if (pages13[1]) {340 await pages13[1].close();341 }342 await page.bringToFront();343 await sleep(3000);344 let pages14 = await browser.pages();345 if (pages14[1]) {346 await pages14[1].close();347 }348 await page.bringToFront();349 const aElementsWithHi = await page.$x("//a[contains(string(),'Hi ')]");350 if (aElementsWithHi.length) { 351 if (aElementsWithHi[0] >= 1) {352 aElementsWithHi[0].click();353 } else {354 await sleep(2000)355 await page.bringToFront();356 const headerWithHi = await page.$x("//a[contains(string(),'Hi')]");357 headerWithHi[0].click();358 }359 await page.bringToFront();360 await sleep(7000);361 await page.bringToFront();362 let pages2 = await browser.pages();363 if (pages2[1]) {364 await pages2[1].close();365 }366 if (pages2[2]) {367 await pages2[2].close();368 }369 if (pages2[3]) {370 await pages2[3].close();371 }372 await page.bringToFront();373 const starclick = await page.$x(374 "//div[contains(@aria-label, 'Not starred')]"375 );376 await sleep(2000);377 await page.bringToFront();378 if (starclick.length >= 1) {379 await starclick[0].click();380 }381 await sleep(8000);382 await page.bringToFront();383 let impcheck = await eval(384 page,385 `() => document.getElementsByClassName('pG')[20].ariaLabel`386 );387 await sleep(1000);388 // console.log(impcheck)389 await page.bringToFront();390 if (impcheck == "Not important") {391 const tryagain = await page.$x(392 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[4]/div/table/tr/td[1]/div[2]/div[1]/div[2]/div[1]/span/div[1]"393 );394 395 396 if(tryagain[0] == undefined){397 const tryagain1 = await page.$x(398 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[3]/div/table/tr/td[1]/div[2]/div[1]/div[2]/div[1]/span/div[1]"399 );400 await tryagain1[0].click();401 }else{402 await tryagain[0].click();403 }404 }405 await page.bringToFront();406 // const impclick = await page.$x(407 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[4]/div/table/tr/td[1]/div[2]/div[1]/div[2]/div[1]/span"408 // );409 // // await sleep(1000);410 // if (impclick.length >= 1) {411 // await impclick[0].click();412 // }413 // await sleep(2000)414 // document.getElementsByClassName('bAq')[0].innerText == 'Conversation marked as not important.'415 // try{416 // let impcheck = await eval(417 // page,418 // `() => document.getElementsByClassName('bAq')`419 // );420 // console.log(impcheck)421 // if (impcheck == true) {422 // const confirmimpclick = await page.$x(423 // "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[2]/div/div[1]/div/div[4]/div/table/tr/td[1]/div[2]/div[1]/div[2]/div[1]/span"424 // );425 // if (confirmimpclick.length >= 1) {426 // await confirmimpclick[0].click();427 // }428 // }429 // }catch(ex)430 // {431 // console.log(ex)432 // }433 await page.bringToFront();434 }435 await sleep(3000);436 await page.bringToFront();437 const Archive = await page.$x(438 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[1]/div[4]/div[1]/div/div[2]/div[1]"439 );440 if (Archive[0]) {441 await Archive[0].click();442 } else {443 const Archive1 = await page.$x(444 "/html/body/div[7]/div[3]/div/div[2]/div[1]/div[2]/div/div/div/div/div[1]/div[3]/div[1]/div/div[2]/div[1]"445 );446 await Archive1[0].click();447 }448 await page.bringToFront();449 await Promise.all([page.keyboard.press("Enter")]);450 await Promise.all([page.keyboard.press("Enter")]);451 }452 }453 }454 // await browser.close();455 // processBrowsers(browser,page)456 return "DONE";457 } catch (ex) {458 console.log(ex);459 }460}461module.exports = {462 gmailProcess,...
TrackerManager.js
Source:TrackerManager.js
1///<reference path="DEDesigner.ts"/>2///<reference path="../Util.ts"/>3var DEJS;4(function (DEJS) {5 var TrackerManager = (function () {6 function TrackerManager(designer) {7 this.trackers = {};8 this.zoom = 100;9 this.lockProportions = true;10 this.designer = designer;11 }12 TrackerManager.prototype.track = function (element, forceRedraw) {13 var _this = this;14 if (typeof forceRedraw === "undefined") { forceRedraw = false; }15 if (element) {16 var tracker = this.trackers[element.id];17 if (!tracker)18 tracker = this.trackers[element.id] = new Tracker(element, this.designer.canvas, function (action) {19 return _this.onTrackerMouseDown(action);20 }, this);21 else22 tracker.update(forceRedraw);23 } else {24 for (var key in this.trackers) {25 this.trackers[key].update(forceRedraw);26 }27 }28 };29 TrackerManager.prototype.stopTrack = function (element) {30 if (element) {31 var tracker = this.trackers[element.id];32 if (tracker) {33 tracker.remove();34 delete this.trackers[element.id];35 }36 } else {37 this.clear();38 }39 };40 TrackerManager.prototype.clear = function () {41 for (var key in this.trackers) {42 this.trackers[key].remove();43 delete this.trackers[key];44 }45 };46 TrackerManager.prototype.processClick = function (x, y) {47 for (var key in this.trackers) {48 var tracker = this.trackers[key];49 if (tracker.processClick(x, y))50 return true;51 }52 return false;53 };54 TrackerManager.prototype.setLockProportions = function (lockProportions) {55 if (lockProportions == this.lockProportions)56 return;57 this.lockProportions = lockProportions;58 this.track(null, true);59 };60 TrackerManager.prototype.onTrackerMouseDown = function (action) {61 this.designer.trackerAction(action);62 };63 TrackerManager.prototype.markTracker = function (element) {64 element.node.isTracker = true;65 return element;66 };67 TrackerManager.prototype.setZoom = function (zoom) {68 if (zoom == this.zoom)69 return;70 this.zoom = zoom;71 this.track();72 };73 return TrackerManager;74 })();75 DEJS.TrackerManager = TrackerManager;76 var Tracker = (function () {77 function Tracker(element, canvas, mouseHandler, trackerManager) {78 this.element = element;79 this.canvas = canvas;80 this.mouseHandler = mouseHandler;81 this.trackerManager = trackerManager;82 this.draw();83 }84 Tracker.prototype.draw = function () {85 var obj = this.element.node.objectLink;86 var bbox = DEJS.Util.getBBox(this.element, true);87 this.lastBBox = bbox;88 var boxColor = "#494949";89 var padding = 0;90 var x, y;91 this.box = this.canvas.rect(bbox.x - padding, bbox.y - padding, bbox.width + padding * 2, bbox.height + padding * 2).attr({ "opacity": 0.7, "stroke": boxColor, "stroke-dasharray": "- " });92 var preloaderSize = Math.min(bbox.width + padding * 2, bbox.height + padding * 2);93 this.preloader = this.canvas.image(DEJS.Model.ConfigManager.imagePreloaderPath(), bbox.x + ((bbox.width + padding * 2) - preloaderSize) / 2, bbox.y + ((bbox.height + padding * 2) - preloaderSize) / 2, preloaderSize, preloaderSize); //.attr({ "opacity": 0.7 });94 this.preloader.hide();95 if (obj && obj.canRotate()) {96 x = this.getTrackerXY(DEJS.Action.Rotate, bbox).x;97 y = this.getTrackerXY(DEJS.Action.Rotate, bbox).y;98 this.rotateEl = this.trackerIcon(x, y, DEJS.Action.Rotate);99 }100 if (obj && obj.canDelete()) {101 x = this.getTrackerXY(DEJS.Action.Delete, bbox).x;102 y = this.getTrackerXY(DEJS.Action.Delete, bbox).y;103 this.deleteEl = this.trackerIcon(x, y, DEJS.Action.Delete);104 }105 if (obj && obj.canResize()) {106 if (!this.trackerManager.lockProportions) {107 x = this.getTrackerXY(DEJS.Action.ResizeH, bbox).x;108 y = this.getTrackerXY(DEJS.Action.ResizeH, bbox).y;109 this.resizeHEl = this.trackerIcon(x, y, DEJS.Action.ResizeH);110 x = this.getTrackerXY(DEJS.Action.ResizeV, bbox).x;111 y = this.getTrackerXY(DEJS.Action.ResizeV, bbox).y;112 this.resizeVEl = this.trackerIcon(x, y, DEJS.Action.ResizeV);113 }114 x = this.getTrackerXY(DEJS.Action.Resize, bbox).x;115 y = this.getTrackerXY(DEJS.Action.Resize, bbox).y;116 this.resizeEl = this.trackerIcon(x, y, DEJS.Action.Resize);117 }118 //-----119 x = this.getTrackerXY(DEJS.Action.BringToFront, bbox).x;120 y = this.getTrackerXY(DEJS.Action.BringToFront, bbox).y;121 this.BringToFront = this.trackerIcon(x, y, DEJS.Action.BringToFront);122 //-----123 this.update();124 };125 Tracker.prototype.update = function (forceRedraw) {126 if (typeof forceRedraw === "undefined") { forceRedraw = false; }127 var bbox = DEJS.Util.getBBox(this.element, true);128 if (forceRedraw || (bbox.width != this.lastBBox.width || bbox.height != this.lastBBox.height)) {129 this.remove();130 this.draw();131 return;132 }133 var padding = 0;134 var transform = this.element.transform();135 var matrix = this.element.matrix;136 //var r = this.element.matrix.split().rotate;137 var r = DEJS.Util.getMatrixRotate(matrix, bbox.x + bbox.width / 2, bbox.y + bbox.height / 2);138 var scaleX = DEJS.Util.getMatrixScaleX(matrix);139 var scaleY = DEJS.Util.getMatrixScaleY(matrix);140 var x;141 var y;142 var x2;143 var y2;144 if (this.box) {145 x = this.getTrackerXY("", bbox).x;146 y = this.getTrackerXY("", bbox).y;147 x2 = matrix.x(x, y);148 y2 = matrix.y(x, y);149 var newWidth = bbox.width * Math.abs(scaleX) * this.trackerManager.zoom / 100;150 var newHeight = bbox.height * Math.abs(scaleY) * this.trackerManager.zoom / 100;151 this.box.attr({ x: x2, y: y2, width: newWidth, height: newHeight });152 var ns = 100 / this.trackerManager.zoom;153 this.box.transform("s" + ns + "," + ns + "," + x2 + "," + y2 + "r" + r + "," + x2 + "," + y2);154 if (this.preloader) {155 var preloaderSize = Math.min(newWidth, newHeight);156 this.preloader.attr({ x: x2 + (newWidth - preloaderSize) / 2, y: y2 + (newHeight - preloaderSize) / 2, width: preloaderSize, height: preloaderSize });157 this.preloader.transform("s" + ns + "," + ns + "," + x2 + "," + y2 + "r" + r + "," + x2 + "," + y2);158 var obj = this.element.node.objectLink;159 if (obj && obj.showPreloader) {160 this.preloader.show();161 } else {162 this.preloader.hide();163 }164 }165 }166 if (this.resizeEl) {167 x = this.getTrackerXY(DEJS.Action.Resize, bbox).x;168 y = this.getTrackerXY(DEJS.Action.Resize, bbox).y;169 x2 = matrix.x(x, y);170 y2 = matrix.y(x, y);171 this.resizeEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);172 DEJS.Util.scaleElement(this.resizeEl, 100 / this.trackerManager.zoom, true);173 }174 if (this.resizeHEl) {175 x = this.getTrackerXY(DEJS.Action.ResizeH, bbox).x;176 y = this.getTrackerXY(DEJS.Action.ResizeH, bbox).y;177 x2 = matrix.x(x, y);178 y2 = matrix.y(x, y);179 this.resizeHEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);180 DEJS.Util.scaleElement(this.resizeHEl, 100 / this.trackerManager.zoom, true);181 }182 if (this.resizeVEl) {183 x = this.getTrackerXY(DEJS.Action.ResizeV, bbox).x;184 y = this.getTrackerXY(DEJS.Action.ResizeV, bbox).y;185 x2 = matrix.x(x, y);186 y2 = matrix.y(x, y);187 this.resizeVEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);188 DEJS.Util.scaleElement(this.resizeVEl, 100 / this.trackerManager.zoom, true);189 }190 if (this.rotateEl) {191 x = this.getTrackerXY(DEJS.Action.Rotate, bbox).x;192 y = this.getTrackerXY(DEJS.Action.Rotate, bbox).y;193 x2 = matrix.x(x, y);194 y2 = matrix.y(x, y);195 this.rotateEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);196 DEJS.Util.scaleElement(this.rotateEl, 100 / this.trackerManager.zoom, true);197 }198 if (this.deleteEl) {199 x = this.getTrackerXY(DEJS.Action.Delete, bbox).x;200 y = this.getTrackerXY(DEJS.Action.Delete, bbox).y;201 x2 = matrix.x(x, y);202 y2 = matrix.y(x, y);203 this.deleteEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);204 DEJS.Util.scaleElement(this.deleteEl, 100 / this.trackerManager.zoom, true);205 }206 if (this.moveEl) {207 x = this.getTrackerXY(DEJS.Action.Move, bbox).x;208 y = this.getTrackerXY(DEJS.Action.Move, bbox).y;209 x2 = matrix.x(x, y);210 y2 = matrix.y(x, y);211 this.moveEl.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);212 DEJS.Util.scaleElement(this.moveEl, 100 / this.trackerManager.zoom, true);213 }214 //-----215 if (this.BringToFront) {216 x = this.getTrackerXY(DEJS.Action.BringToFront, bbox).x;217 y = this.getTrackerXY(DEJS.Action.BringToFront, bbox).y;218 x2 = matrix.x(x, y);219 y2 = matrix.y(x, y);220 this.BringToFront.transform("t" + (x2 - x) + "," + (y2 - y) + "r" + r);221 DEJS.Util.scaleElement(this.BringToFront, 100 / this.trackerManager.zoom, true);222 }223 //-----224 };225 Tracker.prototype.remove = function () {226 this.box.remove();227 if (this.preloader)228 this.preloader.remove();229 if (this.resizeEl)230 this.resizeEl.remove();231 if (this.resizeHEl)232 this.resizeHEl.remove();233 if (this.resizeVEl)234 this.resizeVEl.remove();235 if (this.rotateEl)236 this.rotateEl.remove();237 if (this.deleteEl)238 this.deleteEl.remove();239 if (this.moveEl)240 this.moveEl.remove();241 //-----242 if (this.BringToFront)243 this.BringToFront.remove();244 //-----245 };246 Tracker.prototype.trackerIcon = function (x, y, action) {247 var _this = this;248 var w = mobilesafari ? 32 : 21;249 var addName = mobilesafari ? "_32px" : "";250 var element;251 switch (action) {252 case DEJS.Action.Resize:253 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/resize" + addName + ".png", x - w / 2, y - w / 2, w, w);254 break;255 case DEJS.Action.ResizeH:256 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/resizeH" + addName + ".png", x - w / 2, y - w / 2, w, w);257 break;258 case DEJS.Action.ResizeV:259 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/resizeV" + addName + ".png", x - w / 2, y - w / 2, w, w);260 break;261 case DEJS.Action.Rotate:262 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/rotate" + addName + ".png", x - w / 2, y - w / 2, w, w);263 break;264 case DEJS.Action.Delete:265 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/delete" + addName + ".png", x - w / 2, y - w / 2, w, w);266 break;267 //-----268 case DEJS.Action.BringToFront:269 element = this.canvas.image(DEJS.Model.ConfigManager.assetsUrl + "img/tracker/bringtofront" + addName + ".png", x - w / 2, y - w / 2, w, w);270 break;271 //-----272 default:273 element = this.canvas.ellipse(x, y, w / 2, w / 2).attr({274 "stroke-width": 1,275 "stroke": "grey",276 "fill": "white"277 });278 break;279 }280 element.node.id = "de-tracker-" + action;281 element.attr("cursor", "pointer").mouseover(function () {282 this.attr("fill", "grey");283 }).mouseout(function () {284 this.attr("fill", "white");285 }).mousedown(function (event) {286 return _this.onTrackerMouseDown(event, action);287 }).dblclick(function (dblclickEvent) {288 //this.paper.editor.trackers[0].object.rotate(0, true);289 //this.paper.editor.updateTracker();290 });291 if (mobilesafari) {292 element.node.addEventListener("touchstart", function (event) {293 return _this.onTrackerMouseDown(event, action);294 }, false);295 }296 this.markTracker(element);297 return element;298 };299 Tracker.prototype.onTrackerMouseDown = function (event, action) {300 if (this.mouseHandler)301 this.mouseHandler(action);302 };303 Tracker.prototype.markTracker = function (element) {304 element.node.isTracker = true;305 return element;306 };307 Tracker.prototype.processClick = function (x, y) {308 if (this.resizeEl && DEJS.Util.isClicked(x, y, this.resizeEl)) {309 this.onTrackerMouseDown(null, DEJS.Action.Resize);310 return true;311 }312 if (this.resizeHEl && DEJS.Util.isClicked(x, y, this.resizeHEl)) {313 this.onTrackerMouseDown(null, DEJS.Action.ResizeH);314 return true;315 }316 if (this.resizeVEl && DEJS.Util.isClicked(x, y, this.resizeVEl)) {317 this.onTrackerMouseDown(null, DEJS.Action.ResizeV);318 return true;319 }320 if (this.rotateEl && DEJS.Util.isClicked(x, y, this.rotateEl)) {321 this.onTrackerMouseDown(null, DEJS.Action.Rotate);322 return true;323 }324 if (this.deleteEl && DEJS.Util.isClicked(x, y, this.deleteEl)) {325 this.onTrackerMouseDown(null, DEJS.Action.Delete);326 return true;327 }328 if (this.moveEl && DEJS.Util.isClicked(x, y, this.moveEl)) {329 this.onTrackerMouseDown(null, DEJS.Action.Move);330 return true;331 }332 //-----333 if (this.BringToFront && DEJS.Util.isClicked(x, y, this.BringToFront)) {334 this.onTrackerMouseDown(null, DEJS.Action.BringToFront);335 return true;336 }337 //-----338 return false;339 };340 Tracker.prototype.getTrackerXY = function (action, bbox) {341 var x;342 var y;343 var padding = 0;344 switch (action) {345 case DEJS.Action.Resize:346 x = bbox.x + bbox.width + padding;347 y = bbox.y + bbox.height + padding;348 break;349 case DEJS.Action.ResizeH:350 x = bbox.x + bbox.width + padding;351 y = bbox.y + bbox.height / 2;352 break;353 case DEJS.Action.ResizeV:354 x = bbox.x + bbox.width / 2;355 y = bbox.y + bbox.height + padding;356 break;357 case DEJS.Action.Rotate:358 x = bbox.x - padding;359 y = bbox.y + bbox.height + padding;360 break;361 case DEJS.Action.Delete:362 x = bbox.x + bbox.width + padding;363 y = bbox.y - padding;364 break;365 //-----366 case DEJS.Action.BringToFront:367 x = bbox.x - padding;368 y = bbox.y - padding;369 break;370 //-----371 default:372 x = bbox.x;373 y = bbox.y;374 break;375 }376 var m = this.element.matrix;377 var cx = m.x(bbox.x + bbox.width / 2, bbox.y + bbox.height / 2);378 var cy = m.y(bbox.x + bbox.width / 2, bbox.y + bbox.height / 2);379 var curRotate = DEJS.Util.getMatrixRotate(m, cx, cy);380 var m2 = Raphael.matrix(1, 0, 0, 1, 0, 0);381 m2.rotate(0 - curRotate, cx, cy);382 m2.add(m.a, m.b, m.c, m.d, m.e, m.f);383 var flipH = m2.a < 0;384 var flipV = m2.d < 0;385 if (flipH)386 x = 2 * bbox.x + bbox.width - x;387 if (flipV)388 y = 2 * bbox.y + bbox.width - y;389 return { x: x, y: y, flipH: flipH, flipV: flipV };390 };391 return Tracker;392 })();393 DEJS.Tracker = Tracker;...
loginonly.js
Source:loginonly.js
...130 catch(ex) {131 console.error(ex)132 await browser.close()133 }134 await page.bringToFront();135 await sleep(5000);136 // await page.authenticate({137 // username: currentItem.proxyUsername,138 // password: currentItem.proxyPassword,139 // });140 await page.bringToFront();141 await sleep(3000);142 if ((await page.$('#reload-button')) !== null) {143 await page.click('#reload-button');144 }145 if(currentItem.seedno == 1) {146 // try{147 await page.goto("http://accounts.google.com ", {148 waitUntil: "domcontentloaded",149 timeout: 0,150 });151// } catch(ex){152// await browser.close()153// } 154 }155 await sleep(3000);156 if ((await page.$('#reload-button')) !== null) {157 await page.click('#reload-button');158 }159 // let pages1 = await browser.pages();160 // await pages1[0].close();161 if ((await page.$('div[class="BHzsHc"]')) !== null) {162 await page.click('div[class="BHzsHc"]');163 }164 if ((await page.$('input[type="email"]')) !== null) {165 await sleep(3000);166 // await page.waitForSelector('input[type="email"]');167 // await page.type('input[type="email"]', currentItem.email);168 const email = await page.$x("//input[@type='email'] ");169 await sleep(5000);170 await email[0].type(currentItem.email);171 await page.bringToFront();172 await Promise.all([page.keyboard.press("Enter")]);173 await sleep(5000);174 // await page.waitForSelector('input[type="password"]');175 await page.bringToFront();176 // await sleep(3000);177 // await page.type('input[type="password"]', currentItem.pwd),178 const pwd = await page.$x("//input[@type='password'] ");179 await sleep(5000);180 await pwd[0].type(currentItem.pwd);181 await sleep(6000);182 await Promise.all([page.keyboard.press("Enter")]);183 }184 await sleep(3000);185 if ((await page.$('#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span')) !== null) {186 await page.click('#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span');187 }188 await sleep(3000);189 // if ((await page.$('div[class="lCoei YZVTmd SmR8"]')) !== null) {190 // await page.waitForSelector('div[class="lCoei YZVTmd SmR8"]');191 // await sleep(3000);192 // await page.click('div[class="lCoei YZVTmd SmR8"]');193 // // await page.click('div[class="vxx8jf"]');194 // await sleep(3000);195 // await page.waitForSelector('input[type="email"]');196 // await sleep(3000);197 // await page.type('input[type="email"]', currentItem.recovery);198 // await page.bringToFront();199 // await Promise.all([page.keyboard.press("Enter")]);200 // }201 if ((await page.$('div[class="lCoei YZVTmd SmR8"]')) !== null) {202 const doesntHave = await page.$x("//*[@class='vxx8jf']");203 if (doesntHave[2]) {204 await doesntHave[2].click();205 await sleep(3000);206 await page.waitForSelector('input[type="email"]');207 await sleep(3000);208 await page.type('input[type="email"]', currentItem.recovery);209 await page.bringToFront();210 await Promise.all([page.keyboard.press("Enter")]);211 // await sleep(6000)212 } else {213 await page.waitForSelector('div[class="lCoei YZVTmd SmR8"]');214 await sleep(3000);215 await page.click('div[class="lCoei YZVTmd SmR8"]');216 // await page.click('div[class="vxx8jf"]');217 await sleep(3000);218 await page.waitForSelector('input[type="email"]');219 await sleep(3000);220 await page.type('input[type="email"]', currentItem.recovery);221 await page.bringToFront();222 await Promise.all([page.keyboard.press("Enter")]);223 }224 }225 //not now click226 await sleep(3000);227 if ((await page.$('div[class="VfPpkd-RLmnJb"]')) !== null) {228 await sleep(3000);229 await page.click('div[class="VfPpkd-RLmnJb"]');230 }231 if (232 (await page.$(233 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > div.VfPpkd-RLmnJb"234 )) !== null235 ) {236 await sleep(3000);237 await page.click(238 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > div.VfPpkd-RLmnJb"239 );240 }241 if (242 (await page.$(243 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > span"244 )) !== null245 ) {246 await sleep(3000);247 await page.click(248 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > span"249 );250 }251 await page.bringToFront();252 //confirm click253 if (254 (await page.$(255 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"256 )) !== null257 ) {258 await sleep(3000);259 await page.click(260 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"261 );262 await page.bringToFront();263 }264 if (265 (await page.$(266 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > div.ZFr60d.CeoRYc"267 )) !== null268 ) {269 await sleep(3000);270 await page.click(271 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > div.ZFr60d.CeoRYc"272 );273 }274 if ((await page.$('div[class="ZFr60d"]')) !== null) {275 await sleep(3000);276 await page.click('div[class="ZFr60d"]');277 }278 if (279 (await page.$(280 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"281 )) !== null282 ) {283 await sleep(3000);284 await page.click(285 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"286 );287 }288 if ((await page.$('div[class="VfPpkd"]')) !== null) {289 await sleep(3000);290 await page.click('div[class="VfPpkd"]');291 }292 logger.log(`email:${currentItem.email} login sucessfully`)293 294 295 // 1296 for (let i = 1; i <= 10; i++) {297 try{298 if (i == 10) {299 logger.log('all user login sucessfully');300 break;301 }302 await sleep(5000);303 await page.bringToFront();304 // await page.authenticate({305 // username: browserArr[1].proxyUsername,306 // password: browserArr[1].proxyPassword,307 // });308 let pages5 = await browser.pages();309 if(pages5[1]){310 await pages5[1].close();311 }312 await sleep(3000);313 if ((await page.$('#reload-button')) !== null) {314 await page.click('#reload-button');315 }316 await page.bringToFront();317 try{318 await page.goto("https://accounts.google.com/signin/v2/identifier?service=accountsettings&continue=https%3A%2F%2Fmyaccount.google.com%2F%3Fpli%3D1&ec=GAlAwAE&flowName=GlifWebSignIn&flowEntry=AddSession", {319 waitUntil: "domcontentloaded",320 timeout: 0,321 });322} catch(ex){323 await browser.close()324} 325await page.bringToFront();326 327 328 await sleep(3000);329 if ((await page.$('#reload-button')) !== null) {330 await page.click('#reload-button');331 }332 await page.bringToFront();333 // let pages11 = await browser.pages();334 // await pages11[0].close();335 if ((await page.$('div[class="BHzsHc"]')) !== null) {336 await page.click('div[class="BHzsHc"]');337 }338 await page.bringToFront();339 await page.bringToFront();340 if ((await page.$('input[type="email"]')) !== null) {341 await sleep(3000);342 await page.waitForSelector('input[type="email"]');343 await page.type('input[type="email"]', browserArr[i].email);344 await Promise.all([page.keyboard.press("Enter")]);345 await sleep(5000);346 await page.waitForSelector('input[type="password"]');347 await sleep(3000);348 await page.type('input[type="password"]', browserArr[i].pwd),349 await sleep(6000);350 await Promise.all([page.keyboard.press("Enter")]);351 }352 353 await page.bringToFront();354 await sleep(3000);355 if ((await page.$('#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span')) !== null) {356 await page.click('#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span');357 }358 await sleep(3000);359 await page.bringToFront();360 if ((await page.$('div[class="lCoei YZVTmd SmR8"]')) !== null) {361 await page.waitForSelector('div[class="lCoei YZVTmd SmR8"]');362 await sleep(3000);363 await page.click('div[class="lCoei YZVTmd SmR8"]');364 // await page.click('div[class="vxx8jf"]');365 await sleep(3000);366 await page.bringToFront();367 await page.waitForSelector('input[type="email"]');368 await sleep(3000);369 await page.type('input[type="email"]', browserArr[i].recovery);370 await Promise.all([page.keyboard.press("Enter")]);371 }372 await page.bringToFront();373 //not now click374 await page.bringToFront();375 await sleep(3000);376 if ((await page.$('div[class="VfPpkd-RLmnJb"]')) !== null) {377 await sleep(3000);378 await page.click('div[class="VfPpkd-RLmnJb"]');379 }380 await page.bringToFront();381 if (382 (await page.$(383 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > div.VfPpkd-RLmnJb"384 )) !== null385 ) {386 await sleep(3000);387 await page.click(388 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > div.VfPpkd-RLmnJb"389 );390 }391 await page.bringToFront();392 if (393 (await page.$(394 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > span"395 )) !== null396 ) {397 await sleep(3000);398 await page.click(399 "#yDmH0d > c-wiz > div > div > div > div.L5MEH.Bokche.ypEC4c > div.lq3Znf > div:nth-child(1) > button > span"400 );401 }402 await page.bringToFront();403 //confirm click404 if (405 (await page.$(406 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"407 )) !== null408 ) {409 await sleep(3000);410 await page.click(411 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"412 );413 }414 await page.bringToFront();415 if (416 (await page.$(417 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > div.ZFr60d.CeoRYc"418 )) !== null419 ) {420 await sleep(3000);421 await page.click(422 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > div.ZFr60d.CeoRYc"423 );424 }425 await page.bringToFront();426 if ((await page.$('div[class="ZFr60d"]')) !== null) {427 await sleep(3000);428 await page.click('div[class="ZFr60d"]');429 }430 await page.bringToFront();431 if (432 (await page.$(433 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"434 )) !== null435 ) {436 await sleep(3000);437 await page.click(438 "#yDmH0d > c-wiz.yip5uc.SSPGKf > c-wiz > div > div.p9lFnc > div > div > div > div.ZRg0lb.Kn8Efe > div:nth-child(3) > div > div.yKBrKe > div > span > span"439 );440 }441 await page.bringToFront();442 if ((await page.$('div[class="VfPpkd"]')) !== null) {443 await sleep(3000);444 await page.click('div[class="VfPpkd"]');445 }446 await page.bringToFront();447 logger.log(`email:${browserArr[i].email} login sucessfully`)448}catch(err){449 logger.log(`email:${browserArr[i].email} NOT LOGIN`)450 continue;451}452}453await page.bringToFront();454 455 // await browser.close();456 457 return "DONE";458}459module.exports = {460 gmailProcess,461};462const sleep = (time) => {463 return new Promise((resolve) => {464 setTimeout(() => {465 resolve(true);466 }, time);467 });...
popup-options.js
Source:popup-options.js
...6 })7 describe('button - raw/markdown', () => {8 before(async () => {9 // popup10 await popup.bringToFront()11 // defaults button12 await popup.click('button:nth-of-type(2)')13 })14 it('render markdown as html', async () => {15 // go to page serving markdown as text/markdown16 await content.goto('http://localhost:3000/correct-content-type')17 await content.bringToFront()18 await content.waitFor(300)19 t.equal(20 await content.evaluate(() =>21 document.querySelector('#_html p strong').innerText22 ),23 'bold',24 'markdown should be rendered'25 )26 // popup27 await popup.bringToFront()28 t.strictEqual(29 await popup.evaluate(() =>30 state.raw31 ),32 false,33 'state.raw should equal false'34 )35 t.equal(36 await popup.evaluate(() =>37 document.querySelector('.m-button:first-child').innerText.toLowerCase()38 ),39 'markdown',40 'button text should equal markdown'41 )42 })43 it('display raw markdown', async () => {44 // raw button45 await content.bringToFront()46 await popup.click('button:nth-of-type(1)')47 // content auto reloads48 await content.waitFor(300)49 t.equal(50 await content.evaluate(() =>51 document.querySelector('#_markdown').innerText52 ),53 '**bold**',54 'markdown should not be rendered'55 )56 // popup57 await popup.bringToFront()58 t.strictEqual(59 await popup.evaluate(() =>60 state.raw61 ),62 true,63 'state.raw should equal true'64 )65 t.equal(66 await popup.evaluate(() =>67 document.querySelector('.m-button:first-child').innerText.toLowerCase()68 ),69 'html',70 'button text should equal html'71 )72 })73 })74 describe('set theme', () => {75 before(async () => {76 // popup77 await popup.bringToFront()78 // defaults button79 await popup.click('button:nth-of-type(2)')80 // theme tab81 await popup.click('.m-tabs a:nth-of-type(1)')82 })83 it('github theme should be set by default', async () => {84 // go to page serving markdown as text/markdown85 await content.goto('http://localhost:3000/correct-content-type')86 await content.bringToFront()87 await content.waitFor(300)88 t.strictEqual(89 await content.evaluate(() =>90 /github\.css$/.test(91 document.querySelector('#_theme').getAttribute('href')92 )93 ),94 true,95 'github theme styles should be included'96 )97 })98 it('set github-dark theme', async () => {99 // select github-dark theme100 await content.bringToFront()101 await popup.select('.m-panel:nth-of-type(1) select', 'github-dark')102 // content auto reloads103 await content.waitFor(300)104 t.strictEqual(105 await content.evaluate(() =>106 /github-dark\.css$/.test(107 document.querySelector('#_theme').getAttribute('href')108 )109 ),110 true,111 'github-dark theme styles should be included'112 )113 })114 it('popup should preserve state', async () => {115 // reload popup116 await popup.bringToFront()117 await popup.reload()118 await popup.waitFor(300)119 t.equal(120 await popup.evaluate(() =>121 state.theme.name122 ),123 'github-dark',124 'state.theme.name should equal github-dark'125 )126 t.equal(127 await popup.evaluate(() =>128 document.querySelectorAll('.m-panel:nth-of-type(1) select option')[129 document.querySelector('.m-panel:nth-of-type(1) select').selectedIndex130 ].innerText131 ),132 'github-dark',133 'dom select option should be github-dark'134 )135 })136 })137 describe('set compiler options - marked', () => {138 before(async () => {139 // popup140 await popup.bringToFront()141 // defaults button142 await popup.click('button:nth-of-type(2)')143 // compiler tab144 await popup.click('.m-tabs a:nth-of-type(2)')145 })146 it('gfm is enabled by default', async () => {147 // go to page serving markdown as text/markdown148 await content.goto('http://localhost:3000/compiler-options-marked')149 await content.bringToFront()150 await content.waitFor(300)151 t.equal(152 await content.evaluate(() =>153 document.querySelector('#_html p del').innerText154 ),155 'strikethrough',156 'gfm should be rendered'157 )158 })159 it('gfm is disabled', async () => {160 // disable gfm161 await content.bringToFront()162 // gfm switch163 await popup.click('.m-panel:nth-of-type(2) .m-switch:nth-of-type(2)')164 // content auto reloads165 await content.waitFor(300)166 t.equal(167 await content.evaluate(() =>168 document.querySelector('#_html p').innerText169 ),170 '~~strikethrough~~',171 'gfm should not be rendered'172 )173 })174 it('popup should preserve state', async () => {175 // reload popup176 await popup.bringToFront()177 await popup.reload()178 await popup.waitFor(300)179 t.equal(180 await popup.evaluate(() =>181 document.querySelectorAll('.m-panel:nth-of-type(2) .m-select option')[182 document.querySelector('.m-panel:nth-of-type(2) .m-select').selectedIndex183 ].innerText184 ),185 'marked',186 'dom select option should be marked'187 )188 t.strictEqual(189 await popup.evaluate(() =>190 state.options.gfm191 ),192 false,193 'state.options.gfm should be false'194 )195 t.strictEqual(196 await popup.evaluate(() =>197 document.querySelector('.m-panel:nth-of-type(2) .m-switch:nth-of-type(2)').classList.contains('is-checked')198 ),199 false,200 'dom gfm checkbox should be disabled'201 )202 })203 })204 describe('set compiler options - remark', () => {205 before(async () => {206 // popup207 await popup.bringToFront()208 // defaults button209 await popup.click('button:nth-of-type(2)')210 // compiler tab211 await popup.click('.m-tabs a:nth-of-type(2)')212 })213 it('marked should render gfm task lists by default', async () => {214 // go to page serving markdown as text/markdown215 await content.goto('http://localhost:3000/compiler-options-remark')216 await content.bringToFront()217 await content.waitFor(300)218 t.equal(219 await content.evaluate(() =>220 document.querySelector('#_html ul li').getAttribute('class')221 ),222 null,223 'no class on dom li'224 )225 t.strictEqual(226 await content.evaluate(() =>227 document.querySelector('#_html ul li [type=checkbox]').hasAttribute('disabled')228 ),229 true,230 'dom li should contain checkbox in it'231 )232 t.equal(233 await content.evaluate(() =>234 document.querySelector('#_html ul li').innerText235 ),236 ' task',237 'dom li should contain the task text'238 )239 })240 it('remark should render gfm task lists by default', async () => {241 // select remark compiler242 await content.bringToFront()243 await popup.select('.m-panel:nth-of-type(2) select', 'remark')244 // content auto reloads245 await content.waitFor(300)246 t.equal(247 await content.evaluate(() =>248 document.querySelector('#_html ul li').getAttribute('class')249 ),250 'task-list-item',251 'dom li should have a class set'252 )253 t.strictEqual(254 await content.evaluate(() =>255 document.querySelector('#_html ul li [type=checkbox]').hasAttribute('disabled')256 ),257 true,258 'dom li should contain checkbox in it'259 )260 t.equal(261 await content.evaluate(() =>262 document.querySelector('#_html ul li').innerText263 ),264 ' task',265 'dom li should contain the task text'266 )267 })268 it('remark disable gfm', async () => {269 // redraw popup270 await popup.bringToFront()271 await popup.reload()272 await popup.waitFor(300)273 // disable gfm274 await content.bringToFront()275 // gfm switch276 await popup.click('.m-panel:nth-of-type(2) .m-switch[title~=GFM]')277 // content auto reloads278 await content.waitFor(300)279 t.equal(280 await content.evaluate(() =>281 document.querySelector('#_html ul li').innerText282 ),283 '[ ] task',284 'gfm task lists should not be rendered'285 )286 })287 it('popup should preserve state', async () => {288 // reload popup289 await popup.bringToFront()290 await popup.reload()291 await popup.waitFor(300)292 t.equal(293 await popup.evaluate(() =>294 document.querySelectorAll('.m-panel:nth-of-type(2) .m-select option')[295 document.querySelector('.m-panel:nth-of-type(2) .m-select').selectedIndex296 ].innerText297 ),298 'remark',299 'dom select option should be remark'300 )301 t.strictEqual(302 await popup.evaluate(() =>303 state.options.gfm304 ),305 false,306 'state.options.gfm should be false'307 )308 t.strictEqual(309 await popup.evaluate(() =>310 document.querySelector('.m-panel:nth-of-type(2) .m-switch[title~=GFM]').classList.contains('is-checked')311 ),312 false,313 'dom gfm checkbox should be disabled'314 )315 })316 })317 describe('set content options - toc', () => {318 before(async () => {319 // popup320 await popup.bringToFront()321 // defaults button322 await popup.click('button:nth-of-type(2)')323 // content tab324 await popup.click('.m-tabs a:nth-of-type(3)')325 })326 it('toc is disabled by default', async () => {327 // go to page serving markdown as text/markdown328 await content.goto('http://localhost:3000/content-options-toc')329 await content.bringToFront()330 await content.waitFor(300)331 t.strictEqual(332 await content.evaluate(() =>333 document.querySelector('#_toc')334 ),335 null,336 'toc should be disabled'337 )338 })339 it('enable toc', async () => {340 // enable toc341 await content.bringToFront()342 // toc switch343 await popup.click('.m-panel:nth-of-type(3) .m-switch:nth-of-type(3)')344 // content auto reloads345 await content.waitFor(300)346 t.deepStrictEqual(347 await content.evaluate(() =>348 Array.from(document.querySelectorAll('#_toc ._ul a'))349 .map((a) => ({href: a.getAttribute('href'), text: a.innerText}))350 ),351 [352 {href: '#h1', text: 'h1'},353 {href: '#h2', text: 'h2'},354 {href: '#h3', text: 'h3'},355 ],356 'toc should be rendered'357 )358 })359 })360 describe('set content options - scroll', () => {361 before(async () => {362 // popup363 await popup.bringToFront()364 // defaults button365 await popup.click('button:nth-of-type(2)')366 // content tab367 await popup.click('.m-tabs a:nth-of-type(3)')368 })369 it('preserve scroll position by default', async () => {370 // go to page serving markdown as text/markdown371 await content.goto('http://localhost:3000/content-options-scroll')372 await content.bringToFront()373 await content.waitFor(300)374 // scroll down 200px375 await content.evaluate(() =>376 document.querySelector('body').scrollTop = 200377 )378 await content.waitFor(300)379 // reload page380 await content.reload()381 await content.waitFor(300)382 t.strictEqual(383 await content.evaluate(() =>384 document.querySelector('body').scrollTop,385 ),386 200,387 'scrollTop should be 200px'388 )389 })390 it('scroll to top', async () => {391 // disable scroll option392 await content.bringToFront()393 // scroll switch394 await popup.click('.m-panel:nth-of-type(3) .m-switch:nth-of-type(2)')395 // content auto reloads396 await content.waitFor(300)397 t.strictEqual(398 await content.evaluate(() =>399 document.querySelector('body').scrollTop,400 ),401 0,402 'scrollTop should be 0px'403 )404 // scroll down 200px405 await content.evaluate(() =>406 document.querySelector('body').scrollTop = 200407 )408 await content.waitFor(300)409 // reload page410 await content.reload()411 await content.waitFor(300)412 t.strictEqual(413 await content.evaluate(() =>414 document.querySelector('body').scrollTop,415 ),416 0,417 'scrollTop should be 0px'418 )419 })420 it('scroll to anchor', async () => {421 // click on header link422 await content.click('h2 a')423 await content.waitFor(300)424 t.strictEqual(425 await content.evaluate(() =>426 document.querySelector('body').scrollTop + 1427 ),428 await content.evaluate(() =>429 document.querySelector('h2').offsetTop430 ),431 'page should be scrolled to the anchor'432 )433 // scroll down 200px434 await content.evaluate(() =>435 document.querySelector('body').scrollTop += 200436 )437 await content.waitFor(300)438 t.strictEqual(439 await content.evaluate(() =>440 document.querySelector('body').scrollTop + 1441 ),442 await content.evaluate(() =>443 document.querySelector('h2').offsetTop + 200444 ),445 'page should be scrolled below the anchor'446 )447 // reload page448 await content.reload()449 await content.waitFor(300)450 t.strictEqual(451 await content.evaluate(() =>452 document.querySelector('body').scrollTop453 ),454 await content.evaluate(() =>455 document.querySelector('h2').offsetTop456 ),457 'page should be scrolled back to the anchor'458 )459 })460 })461 describe('set content options - autoreload', () => {462 before(async () => {463 // popup464 await popup.bringToFront()465 // defaults button466 await popup.click('button:nth-of-type(2)')467 // content tab468 await popup.click('.m-tabs a:nth-of-type(3)')469 await content.goto('about:blank')470 await content.bringToFront()471 await content.waitFor(300)472 // go to test page473 await content.goto('http://localhost:3000/popup-autoreload')474 await content.bringToFront()475 await content.waitFor(300)476 // enable autoreload477 await content.bringToFront()478 // autoreload switch479 await popup.click('.m-panel:nth-of-type(3) .m-switch:nth-of-type(5)')480 // content auto reloads481 await content.waitFor(300)482 // TODO: wait for https://github.com/GoogleChrome/puppeteer/pull/2812483 // update autoreload interval484 // await content.evaluate(() => state.ms = 250)485 })486 it('test ajax autoreload with non UTF-8 encoding and inactive tab', async () => {487 t.equal(488 await content.evaluate(() =>489 document.querySelector('#_html p').innerText.trim()490 ),491 'ä½ å¥½',492 'first request'493 )494 // the initial interval is 1000495 await content.waitFor(1300)496 t.equal(497 await content.evaluate(() =>498 document.querySelector('#_html p').innerText.trim()499 ),500 'ä½ å¥½',501 'second request - xhr body is UTF-8 - should not trigger reload'502 )503 // the initial interval is 1000504 await content.waitFor(1300)505 t.equal(506 await content.evaluate(() =>507 document.querySelector('#_html p').innerText.trim()508 ),509 'ä½ å¥½ä½ å¥½',510 'third request - actual change'511 )512 // popup513 await popup.bringToFront()514 // the initial interval is 1000515 await content.waitFor(1300)516 await content.bringToFront()517 t.equal(518 await content.evaluate(() =>519 document.querySelector('#_html p').innerText.trim()520 ),521 'ä½ å¥½ä½ å¥½ä½ å¥½',522 'fourth request - should reload inactive tab'523 )524 })525 })...
test.js
Source:test.js
...36 $div1 = $container.find('#div1'),37 $div2 = $container.find('#div2'),38 $div3 = $container.find('#div3');39 QUnit.expect(3);40 stacker.bringToFront($div1);41 assert.equal(stacker.getCurrent(), 1010, 'index has been correctly incremented');42 stacker.bringToFront($div2);43 assert.equal(stacker.getCurrent(), 1020, 'index has been correctly incremented');44 stacker.bringToFront($div3);45 assert.equal(stacker.getCurrent(), 1030, 'index has been correctly incremented');46 });47 QUnit.module('.bringToFront()');48 QUnit.test('set the highest zIndex', function (assert) {49 var stacker = stackerFactory(),50 $container = $(fixtureContainer),51 $div1 = $container.find('#div1');52 QUnit.expect(3);53 assert.equal($div1.css('z-index'), 'auto', 'no z-index is set');54 stacker.bringToFront($div1);55 assert.equal($div1.css('z-index'), stacker.getCurrent(), 'z-index has been set to ' + stacker.getCurrent());56 stacker.reset($div1);57 assert.equal($div1.css('z-index'), 'auto', 'z-index has been removed');58 });59 QUnit.test('does not increase z-index if already max', function (assert) {60 var stacker = stackerFactory(),61 $container = $(fixtureContainer),62 $div1 = $container.find('#div1'),63 index;64 QUnit.expect(3);65 assert.equal($div1.css('z-index'), 'auto', 'no z-index is set');66 stacker.bringToFront($div1);67 index = stacker.getCurrent();68 assert.equal($div1.css('z-index'), index, 'z-index has been set');69 stacker.bringToFront($div1);70 assert.equal($div1.css('z-index'), index, 'z-index has not been increased again');71 });72 QUnit.test('increase z-index of multiple elements', function (assert) {73 var stacker = stackerFactory(),74 $container = $(fixtureContainer),75 $div1 = $container.find('#div1'),76 $div2 = $container.find('#div2'),77 $div3 = $container.find('#div3'),78 index1,79 index2 = 'auto',80 index3 = 'auto';81 QUnit.expect(18);82 stacker.bringToFront($div1);83 index1 = stacker.getCurrent();84 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');85 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');86 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');87 stacker.bringToFront($div2);88 index2 = stacker.getCurrent();89 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');90 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');91 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');92 stacker.bringToFront($div3);93 index3 = stacker.getCurrent();94 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');95 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');96 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');97 stacker.bringToFront($div1);98 index1 = stacker.getCurrent();99 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');100 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');101 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');102 stacker.bringToFront($div3);103 index3 = stacker.getCurrent();104 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');105 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');106 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');107 stacker.bringToFront($div2);108 index2 = stacker.getCurrent();109 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');110 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');111 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');112 });113 QUnit.module('.autoBringToFront()');114 QUnit.test('set the highest zIndex on mousedown', function (assert) {115 var stacker = stackerFactory(),116 $container = $(fixtureContainer),117 $div1 = $container.find('#div1'),118 $div2 = $container.find('#div2'),119 $div3 = $container.find('#div3'),120 index1,121 index2 = 'auto',122 index3 = 'auto';123 QUnit.expect(18);124 stacker.autoBringToFront($div1);125 stacker.autoBringToFront($div2);126 stacker.autoBringToFront($div3);127 $div1.trigger('mousedown');128 index1 = stacker.getCurrent();129 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');130 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');131 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');132 $div2.trigger('mousedown');133 index2 = stacker.getCurrent();134 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');135 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');136 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');137 $div3.trigger('mousedown');138 index3 = stacker.getCurrent();139 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');140 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');141 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');142 $div1.trigger('mousedown');143 index1 = stacker.getCurrent();144 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');145 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');146 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');147 $div3.trigger('mousedown');148 index3 = stacker.getCurrent();149 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');150 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');151 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');152 $div2.trigger('mousedown');153 index2 = stacker.getCurrent();154 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');155 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');156 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');157 });158 QUnit.module('Scopes');159 QUnit.test('handle different scopes', function(assert) {160 var stacker1 = stackerFactory('scope1'),161 stacker2 = stackerFactory('scope2'),162 stacker3 = stackerFactory('scope3'),163 $container = $(fixtureContainer),164 $div1 = $container.find('#div1'),165 $div2 = $container.find('#div2'),166 $div3 = $container.find('#div3'),167 $div4 = $container.find('#div4'),168 $div5 = $container.find('#div5'),169 $div6 = $container.find('#div6'),170 index1,171 index2 = 'auto',172 index3 = 'auto',173 index4 = 'auto',174 index5 = 'auto',175 index6 = 'auto';176 QUnit.expect(36);177 stacker1.bringToFront($div1);178 index1 = stacker1.getCurrent();179 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');180 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');181 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');182 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');183 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');184 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');185 stacker2.bringToFront($div2);186 index2 = stacker2.getCurrent();187 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');188 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');189 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');190 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');191 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');192 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');193 stacker3.bringToFront($div3);194 index3 = stacker3.getCurrent();195 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');196 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');197 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');198 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');199 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');200 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');201 stacker1.bringToFront($div4);202 index4 = stacker1.getCurrent();203 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');204 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');205 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');206 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');207 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');208 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');209 stacker3.bringToFront($div6);210 index6 = stacker3.getCurrent();211 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');212 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');213 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');214 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');215 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');216 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');217 stacker2.bringToFront($div5);218 index5 = stacker2.getCurrent();219 assert.equal($div1.css('z-index'), index1, 'div1 has the correct z-index');220 assert.equal($div2.css('z-index'), index2, 'div2 has the correct z-index');221 assert.equal($div3.css('z-index'), index3, 'div3 has the correct z-index');222 assert.equal($div4.css('z-index'), index4, 'div4 has the correct z-index');223 assert.equal($div5.css('z-index'), index5, 'div5 has the correct z-index');224 assert.equal($div6.css('z-index'), index6, 'div6 has the correct z-index');225 });...
containerManagerTestTest.js
Source:containerManagerTestTest.js
...62 this.createPanels(3, cmp);63 }, function(cmp) {64 var stackManager = this.getStackManager(cmp);65 var panelRefs = this.getPanelRefs(cmp);66 stackManager.bringToFront(panelRefs[0]);67 this.verifyZIndices(this.getPanelRefs(cmp), ['4', '2', '3']);68 stackManager.bringToFront(panelRefs[1].getElement());69 this.verifyZIndices(this.getPanelRefs(cmp), ['4', '5', '3']);70 stackManager.bringToFront(panelRefs[2].getGlobalId());71 this.verifyZIndices(this.getPanelRefs(cmp), ['4', '5', '6']);72 }]73 },74 testStackManager: {75 attributes: {"useContainer": "true"},76 test: [function(cmp) {77 //initial panel_id => zIndex78 //panel_1 => 1 panelRefs[0]79 //panel_2 => 2 panelRefs[1]80 //panel_3 => 3 panelRefs[2]81 //panel_4 => 4 panelRefs[3]82 //panel_5 => 5 panelRefs[4]83 this.createPanels(5, cmp);84 }, function(cmp) {85 var stackManager = this.getStackManager(cmp);86 var panelRefs = this.getPanelRefs(cmp);87 var length = panelRefs.length;88 //after sendToBack89 //reverse loop90 //panel_5 => 5 =>sendToBack 0,1,2,3,491 //panel_4 => 4 =>sendToBack 0,1,2,392 //panel_3 => 3 =>sendToBack 0,1,293 //panel_2 => 2 =>sendToBack 0,194 //panel_1 => 1 =>sendToBack 095 panelRefs.slice(0,5).reverse().forEach(function(panel) {96 var panelEl = panel.getElement();97 stackManager.sendToBack(panelEl);98 });99 panelRefs.forEach(function(panel, index) {100 var panelEl = panel.getElement();101 $A.test.assertEquals(index, parseInt(panelEl.style.zIndex),102 "(sendToBack) Incorrect z-index value for panel id: " + panelEl.id);103 });104 //after bringToFront105 //regular loop106 //panel_1 => 1 =>bringToFront 5107 //panel_2 => 2 =>bringToFront 5,6108 //panel_3 => 3 =>bringToFront 5,6,7109 //panel_4 => 4 =>bringToFront 5,6,7,8110 //panel_5 => 5 =>bringToFront 5,6,7,8,9111 panelRefs.forEach(function(panel) {112 var panelEl = panel.getElement();113 stackManager.bringToFront(panelEl);114 });115 panelRefs.forEach(function(panel, index) {116 var panelEl = panel.getElement();117 $A.test.assertEquals((index+length), parseInt(panelEl.style.zIndex),118 "(bringToFront) Incorrect z-index value for panel id: " + panelEl.id);119 });120 }, function(cmp) {121 var panelRefs = this.getPanelRefs(cmp);122 var panel_2 = panelRefs[1];123 //delete panel_2 and assert newly assigned zIndexes124 panel_2.destroy();125 //1-5, 3-7, 4-8, 5-9126 //after you destroy panel_2, z-indexes will get recomputed127 //only if you call sendToBack or bringToFront...
filter.js
Source:filter.js
...102 await sleep(1000);103 if (i == 11) {104 i = 0;105 }106 await page.bringToFront();107 try {108 await page.goto(109 `https://mail.google.com/mail/u/${i}/#settings/filters`,110 // https://mail.google.com/mail/u/${i}/h/1skwmxqy8dsdn/?&111 {112 waitUntil: "domcontentloaded",113 timeout: 1000 * 60 * 5,114 }115 );116 } catch (ex) {117 console.error(ex);118 // await browser.close()119 }120 await sleep(40000);121 await page.bringToFront();122 if (item.from == "delete") {123 const deleteFilter = await page.$x("//span[contains(., 'delete')]");124 if (deleteFilter[0]) {125 await deleteFilter[0].click();126 await page.bringToFront();127 await sleep(3000);128 const confirm = await page.$x("//button[contains(., 'OK')]");129 await confirm[0].click();130 await page.bringToFront();131 await sleep(3000);132 }133 } else {134 const createFilter = await page.$x(135 "//span[contains(., 'Create a new filter')]"136 );137 await createFilter[0].click();138 await page.bringToFront();139 await sleep(3000);140 // const from = await page.$x("//*[@class='ZH nr aQa']");141 // await from[0].type(item.from);142 // await sleep(1000)143 // const to = await page.$x("//*[@class='ZH nr aQf']");144 // await to[0].type(item.to);145 // await sleep(1000)146 // const subject = await page.$x("//*[@class='ZH nr aQd']");147 // await subject[0].type(item.subject);148 // await sleep(1000)149 // const hasWord = await page.$x("//*[@class='ZH nr aQb']");150 // await hasWord[0].type(item.hasword);151 // await sleep(1000)152 const doesntHave = await page.$x("//*[@class='ZH nr aP9']");153 await doesntHave[0].type("qwerty");154 await page.bringToFront();155 await sleep(1000);156 const clickcreateFilter = await page.$x("//*[@class='acM']");157 await clickcreateFilter[0].click();158 await page.bringToFront();159 await sleep(7000);160 const starcheck = await page.$x("//label[contains(., 'Star it')]");161 await starcheck[0].click();162 await page.bringToFront();163 await sleep(1000);164 const alwaymarkimp = await page.$x(165 "//label[contains(., 'Always mark it as important')]"166 );167 await alwaymarkimp[0].click();168 await page.bringToFront();169 await sleep(1000);170 const neverspam = await page.$x(171 "//label[contains(., 'Never send it to Spam')]"172 );173 await neverspam[0].click();174 await page.bringToFront();175 await sleep(1000);176 const categoryas = await page.$x(177 "//label[contains(., 'Categorize as:')]"178 );179 await categoryas[0].click();180 await page.bringToFront();181 await sleep(3000);182 // const categorycheck = await page.$x(183 // "//div[contains(., 'Choose category...')]"184 // );//*[@id=":82"]185 // if (categorycheck.length > 0) {186 // await categorycheck[0].click();187 // } else {188 // throw new Error(" Link not found");189 // }190 const categorycheck = await page.$x(191 "//*[@class='J-J5-Ji J-JN-M-I-JG']"192 );193 await categorycheck[2].click();194 await page.bringToFront();195 await sleep(2000);196 const clickprimary = await page.$x(197 "//div[@class='J-N'][contains(., 'Primary')]"198 );199 // const clickprimary = await page.$x(200 // );201 await clickprimary[0].click();202 await page.bringToFront();203 // const selectCategory = await page.$x("//div[contains(., 'Choose category...')]");204 // await selectCategory[0].click();205 // const selectCategory = await page.$x("//div[contains(@class, 'J-J5-Ji J-JN-M-I-Jm')]");206 // await selectCategory[0].click();207 // const primary = await page.$x("//div[contains(@aria-activedescendant, ':8q')]");208 // await primary[0].click();209 await sleep(1000);210 const finalclickcreateFilter = await page.$x(211 "//*[@class='T-I J-J5-Ji Zx acL T-I-atl L3']"212 );213 await page.bringToFront();214 await finalclickcreateFilter[0].click();215 await page.bringToFront();216 }217 }218 }219 return "DONE";220}221module.exports = {222 filterProcess,223};224const sleep = (time) => {225 return new Promise((resolve) => {226 setTimeout(() => {227 resolve(true);228 }, time);229 });...
origin-csp.js
Source:origin-csp.js
...12 await advanced.waitFor(800)13 })14 describe('not correct content-type + non matching path', () => {15 before(async () => {16 await advanced.bringToFront()17 // enable csp18 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {19 await advanced.click('.m-list li:nth-of-type(1) .m-switch')20 }21 // go to page serving content with strict csp22 await content.goto('http://localhost:3000/csp-no-header-no-path')23 await content.bringToFront()24 await content.waitFor(300)25 })26 it('non matching urls should be skipped', async () => {27 t.strictEqual(28 await content.evaluate(() => {29 try {30 window.localStorage31 }32 catch (err) {33 return err.message.split(':')[1].trim()34 }35 }),36 `The document is sandboxed and lacks the 'allow-same-origin' flag.`,37 'localStorage should not be accessible'38 )39 })40 })41 describe('correct content-type + non matching path', () => {42 before(async () => {43 await advanced.bringToFront()44 // enable csp45 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {46 await advanced.click('.m-list li:nth-of-type(1) .m-switch')47 }48 // go to page serving content with strict csp49 await content.goto('http://localhost:3000/csp-match-header')50 await content.bringToFront()51 await content.waitFor(300)52 })53 it('non matching urls cannot be checked for enabled csp', async () => {54 t.strictEqual(55 await content.evaluate(() => {56 try {57 window.localStorage58 }59 catch (err) {60 return err.message.split(':')[1].trim()61 }62 }),63 `The document is sandboxed and lacks the 'allow-same-origin' flag.`,64 'localStorage should not be accessible'65 )66 })67 })68 describe('not correct content-type + matching path', () => {69 before(async () => {70 await advanced.bringToFront()71 // enable csp72 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {73 await advanced.click('.m-list li:nth-of-type(1) .m-switch')74 }75 // go to page serving content with strict csp76 await content.goto('http://localhost:3000/csp-match-path')77 await content.bringToFront()78 await content.waitFor(300)79 })80 it('webRequest.onHeadersReceived event is enabled', async () => {81 t.strictEqual(82 await content.evaluate(() =>83 window.localStorage.toString()84 ),85 '[object Storage]',86 'localStorage should be accessible'87 )88 })89 })90 describe('disable - enable - disable', () => {91 it('full cycle', async () => {92 // 1. disable93 await advanced.bringToFront()94 // disable csp95 if (await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {96 await advanced.click('.m-list li:nth-of-type(1) .m-switch')97 }98 await advanced.waitFor(300)99 // go to page serving content with strict csp100 await content.goto('http://localhost:3000/csp-match-path')101 await content.bringToFront()102 await content.waitFor(300)103 t.strictEqual(104 await content.evaluate(() => {105 try {106 window.localStorage107 }108 catch (err) {109 return err.message.split(':')[1].trim()110 }111 }),112 `The document is sandboxed and lacks the 'allow-same-origin' flag.`,113 'localStorage should not be accessible'114 )115 // 2. enable116 await advanced.bringToFront()117 // enable csp118 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {119 await advanced.click('.m-list li:nth-of-type(1) .m-switch')120 }121 await advanced.waitFor(300)122 // go to page serving content with strict csp123 await content.goto('http://localhost:3000/csp-match-path')124 await content.bringToFront()125 await content.waitFor(300)126 t.strictEqual(127 await content.evaluate(() =>128 window.localStorage.toString()129 ),130 '[object Storage]',131 'localStorage should be accessible'132 )133 // 3. disable134 await advanced.bringToFront()135 // disable csp136 if (await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {137 await advanced.click('.m-list li:nth-of-type(1) .m-switch')138 }139 await advanced.waitFor(300)140 // go to page serving content with strict csp141 await content.goto('http://localhost:3000/csp-match-path')142 await content.bringToFront()143 await content.waitFor(300)144 t.strictEqual(145 await content.evaluate(() => {146 try {147 window.localStorage148 }149 catch (err) {150 return err.message.split(':')[1].trim()151 }152 }),153 `The document is sandboxed and lacks the 'allow-same-origin' flag.`,154 'localStorage should not be accessible'155 )156 })157 })158 describe('persist state', () => {159 it('enable csp', async () => {160 await advanced.bringToFront()161 // enable csp162 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {163 await advanced.click('.m-list li:nth-of-type(1) .m-switch')164 }165 await advanced.reload()166 await advanced.waitFor(300)167 // expand origin168 await advanced.click('.m-list li:nth-of-type(1)')169 t.strictEqual(170 await advanced.evaluate(() =>171 document.querySelector('.m-list li:nth-of-type(1) .m-switch').classList.contains('is-checked')172 ),173 true,174 'csp checkbox should be enabled'175 )176 })177 it('disable csp', async () => {178 await advanced.bringToFront()179 // disable csp180 if (await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {181 await advanced.click('.m-list li:nth-of-type(1) .m-switch')182 }183 await advanced.reload()184 await advanced.waitFor(300)185 // expand origin186 await advanced.click('.m-list li:nth-of-type(1)')187 t.strictEqual(188 await advanced.evaluate(() =>189 document.querySelector('.m-list li:nth-of-type(1) .m-switch').classList.contains('is-checked')190 ),191 false,192 'csp checkbox should be disabled'193 )194 })195 })196 describe('enable csp + suspend the event page', () => {197 before(async () => {198 await advanced.bringToFront()199 // enable csp200 if (!await advanced.evaluate(() => origins.state.origins['http://localhost:3000'].csp)) {201 await advanced.click('.m-list li:nth-of-type(1) .m-switch')202 }203 // chrome://extensions204 await extensions.bringToFront()205 // enable developer mode206 await extensions.evaluate(() => {207 Array.from(208 document.querySelector('extensions-manager').shadowRoot209 .querySelector('extensions-item-list').shadowRoot210 .querySelectorAll('extensions-item'))[0].shadowRoot211 .querySelector('#enable-toggle').click()212 })213 // disable the extension214 await extensions.evaluate(() => {215 Array.from(216 document.querySelector('extensions-manager').shadowRoot217 .querySelector('extensions-item-list').shadowRoot218 .querySelectorAll('extensions-item'))[0].shadowRoot219 .querySelector('#enable-toggle').click()220 })221 await extensions.waitFor(300)222 // check223 t.equal(224 await extensions.evaluate(() =>225 Array.from(226 document.querySelector('extensions-manager').shadowRoot227 .querySelector('extensions-item-list').shadowRoot228 .querySelectorAll('extensions-item'))[0].shadowRoot229 .querySelector('#inspect-views a').innerText230 ),231 'background page (Inactive)',232 'background page should be inactive'233 )234 // go to page serving content with strict csp235 await content.goto('http://localhost:3000/csp-match-path')236 await content.bringToFront()237 await content.waitFor(300)238 })239 it('the tab is reloaded on event page wakeup', async () => {240 t.strictEqual(241 await content.evaluate(() =>242 window.localStorage.toString()243 ),244 '[object Storage]',245 'localStorage should be accessible'246 )247 })248 })...
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.bringToFront();7 await browser.close();8})();
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.bringToFront();7 await page.screenshot({ path: `example.png` });8 await browser.close();9})();
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.bringToFront();7 await page.screenshot({path: 'test.png'});8 await browser.close();9})();
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.bringToFront();7 await page.screenshot({path: 'google.png'});8 await browser.close();9})();
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.bringToFront();6 await browser.close();7})();8const { chromium } = require('playwright');9(async () => {10 const browser = await chromium.launch();11 const page = await browser.newPage();12 console.log(await page.title());13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const page = await browser.newPage();19 console.log(await page.url());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.setViewportSize({ width: 1280, height: 720 });27 console.log(await page.viewportSize());28 await browser.close();29})();30const { chromium } = require('playwright');31(async () => {32 const browser = await chromium.launch();33 const page = await browser.newPage();34 console.log(await page.content());35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch();40 const page = await browser.newPage();
Using AI Code Generation
1const { webkit } = require('playwright');2const browser = await webkit.launch();3const context = await browser.newContext();4const page = await context.newPage();5await page.bringToFront();6await browser.close();7const { webkit } = require('playwright');8const browser = await webkit.launch();9const context = await browser.newContext();10const page = await context.newPage();11await page.bringToFront();12await browser.close();13const { webkit } = require('playwright');14const browser = await webkit.launch();15const context = await browser.newContext();16const page = await context.newPage();17await page.bringToFront();18await browser.close();19const { webkit } = require('playwright');20const browser = await webkit.launch();21const context = await browser.newContext();22const page = await context.newPage();23await page.bringToFront();24await browser.close();25const { webkit } = require('playwright');26const browser = await webkit.launch();27const context = await browser.newContext();28const page = await context.newPage();29await page.bringToFront();30await browser.close();31const { webkit } = require('playwright');32const browser = await webkit.launch();33const context = await browser.newContext();34const page = await context.newPage();35await page.bringToFront();36await browser.close();
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.click('#js-link-box-en');6 await page.waitForSelector('#searchInput');7 await page.click('#searchInput');8 await page.keyboard.type('Playwright');9 await page.click('#search-form > fieldset > button');10 await page.waitForSelector('text=Playwright is a Node.js library to automate Chromium, Firefox and WebKit with a single API.');11 const elementHandle = await page.$('text=Playwright is a Node.js library to automate Chromium, Firefox and WebKit with a single API.');12 await elementHandle.bringToFront();13 await page.screenshot({ path: 'screenshot.png' });14 await browser.close();15})();16const { chromium } = require('playwright');17(async () => {18 const browser = await chromium.launch();19 const page = await browser.newPage();20 await page.click('#js-link-box-en');21 await page.waitForSelector('#searchInput');22 await page.click('#searchInput');23 await page.keyboard.type('Playwright');24 await page.click('#search-form > fieldset > button');25 await page.waitForSelector('text=Playwright is a Node.js library to automate Chromium, Firefox and WebKit with a single API.');26 const elementHandle = await page.$('text=Playwright is a Node.js library to automate Chromium, Firefox and WebKit with a single API.');27 await elementHandle.bringToFront();28 const point = await elementHandle.clickablePoint();29 console.log(point);30 await browser.close();31})();32const { chromium } = require('playwright');33(async () => {34 const browser = await chromium.launch();35 const page = await browser.newPage();36 await page.click('#js-link-box-en');
Using AI Code Generation
1const { getPlaywright } = require('playwright-core/lib/server/playwright');2const playwright = getPlaywright(require('playwright-core'));3const { firefox } = playwright;4(async () => {5 const browser = await firefox.launch({ headless: false });6 const page = await browser.newPage();7 await page.bringToFront();8 await browser.close();9})();
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!!