Best JavaScript code snippet using playwright-internal
jiwu.test.js
Source:jiwu.test.js  
...11}12function getCaseName() {13  return expect.getState().currentTestName.split(' ').slice(1).join(' ');14}15async function screenshotPage(page, fullPage = true) {16  const caseName = getCaseName();17  await page.screenshot({18    path: getPath(caseName),19    fullPage: fullPage,20  });21}22describe('http://www.jiwu.com', () => {23  it('YL1-åºå忢', async () => {24    await page.goto('http://nj.jiwu.com/');25    const ele = await page.waitForXPath(26      '/html/body/header/div[2]/div[1]/div[3]',27    );28    await ele.click();29    await page.waitForNavigation();30    expect(page.url()).toBe('http://www.jiwu.com/');31    await screenshotPage(page);32  });33  it('YL2-åºåäºä¸çº§åç»æç¹å»', async () => {34    await page.goto('http://www.jiwu.com/');35    const ele = await page.waitForXPath('/html/body/div[4]/dl[1]/dd[1]/a[1]');36    const url = await (await ele.getProperty('href')).jsonValue();37    await ele.click();38    await page.waitForNavigation();39    expect(page.url()).toBe(url);40    await screenshotPage(page);41  });42  it('YL3-ä»·æ ¼æ»è§æ°æ®', async () => {43    const page = await browser.newPage();44    await page.goto('http://nj.jiwu.com/fangjia/');45    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]`);46    await ele.screenshot({47      path: getPath(getCaseName()),48    });49  });50  it('YL4-ä»·æ ¼æ»è§ææ¡', async () => {51    const page = await browser.newPage();52    await page.goto('http://nj.jiwu.com/fangjia/');53    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[1]`);54    await ele.screenshot({55      path: getPath(getCaseName()),56    });57  });58  it('YL5-ä»·æ ¼æ»è§ä»·æ ¼å卿é®', async () => {59    const page = await browser.newPage();60    await page.goto('http://nj.jiwu.com/fangjia/');61    const ele = await page.waitForXPath(62      `/html/body/div[5]/div[1]/div[1]/div[3]`,63    );64    await ele.click();65    await page.$('.pop-box');66    await screenshotPage(page, false);67  });68  it('YL6-æ¿ä»·èµ°å¿å¾', async () => {69    const page = await browser.newPage();70    await page.goto('http://nj.jiwu.com/fangjia/');71    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[2]`);72    await page.waitForTimeout(500);73    await ele.screenshot({74      path: getPath(getCaseName()),75    });76  });77  it('YL7-æ¿ä»·èµ°å¿å¾é¼ æ ç§»å¨', async () => {78    const page = await browser.newPage();79    await page.goto('http://nj.jiwu.com/fangjia/');80    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[2]`);81    const box = await ele.boundingBox();82    await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);83    await page.waitForTimeout(500);84    await ele.screenshot({85      path: getPath(getCaseName()),86    });87  });88  it('YL8-æ¿ä»·èµ°å¿å¾å¹´ä»½åæ¢', async () => {89    const page = await browser.newPage();90    await page.goto('http://nj.jiwu.com/fangjia/');91    const button = await page.waitForXPath(92      `/html/body/div[5]/div[1]/div[2]/div[2]/a[2]`,93    );94    await button.click();95    await page.waitForTimeout(500);96    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[2]`);97    await ele.screenshot({98      path: getPath(getCaseName()),99    });100  });101  it('YL9-æ¿ä»·å°å¾æ°æ¿ç»è®¡', async () => {102    const page = await browser.newPage();103    await page.goto('http://nj.jiwu.com/fangjia/');104    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[2]`);105    const box = await ele.boundingBox();106    await page.waitForTimeout(500);107    await page.mouse.click(box.x + box.width / 2 + 30, box.y + box.height - 10);108    await page.waitForTimeout(500);109    await ele.screenshot({110      path: getPath(getCaseName()),111    });112  });113  it('YL10-æ¿ä»·å°å¾äºææ¿ç»è®¡', async () => {114    const page = await browser.newPage();115    await page.goto('http://nj.jiwu.com/fangjia/');116    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[2]`);117    const box = await ele.boundingBox();118    await page.waitForTimeout(500);119    await page.mouse.click(box.x + box.width / 2 - 30, box.y + box.height - 10);120    await page.waitForTimeout(500);121    await ele.screenshot({122      path: getPath(getCaseName()),123    });124  });125  it('YL11-åºåæ¿ä»·æè¡æ°æ¿äºææ¿åæ¢', async () => {126    const page = await browser.newPage();127    await page.goto('http://nj.jiwu.com/fangjia/');128    const button = await page.waitForXPath(129      `/html/body/div[5]/div[1]/div[4]/div[2]/a[2]`,130    );131    await button.click();132    await page.waitForTimeout(500);133    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[4]`);134    await ele.screenshot({135      path: getPath(getCaseName()),136    });137  });138  it('YL12-åºåæ¿ä»·æè¡åºå跳转', async () => {139    const page = await browser.newPage();140    await page.goto('http://nj.jiwu.com/fangjia/');141    const button = await page.waitForXPath(142      `/html/body/div[5]/div[1]/div[4]/div[3]/div[1]/ul/li[2]/span[2]/a`,143    );144    const url = await (await button.getProperty('href')).jsonValue();145    await button.click();146    await page.waitForNavigation();147    expect(page.url()).toBe(url);148    await page.waitForTimeout(500);149    await screenshotPage(page);150  });151  it('YL13-åºåæ¿ä»·æè¡æ´å¤æé®', async () => {152    const page = await browser.newPage();153    await page.goto('http://nj.jiwu.com/fangjia/');154    const button = await page.waitForXPath(155      `/html/body/div[5]/div[1]/div[4]/div[3]/div[1]/a`,156    );157    await button.click();158    await page.waitForTimeout(100);159    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[4]`);160    await ele.screenshot({161      path: getPath(getCaseName()),162    });163  });164  it('YL14-åºåå¨å®æ¥¼çæè¡æ°æ¿äºææ¿åæ¢', async () => {165    const page = await browser.newPage();166    await page.goto('http://nj.jiwu.com/fangjia/');167    const button = await page.waitForXPath(168      `/html/body/div[5]/div[1]/div[5]/div[2]/a[2]`,169    );170    await button.click();171    await page.waitForTimeout(500);172    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[5]`);173    await ele.screenshot({174      path: getPath(getCaseName()),175    });176  });177  it('YL15-åºåå¨å®æ¥¼çæè¡åºå跳转', async () => {178    const page = await browser.newPage();179    await page.goto('http://nj.jiwu.com/fangjia/');180    const button = await page.waitForXPath(181      `/html/body/div[5]/div[1]/div[5]/div[3]/div[1]/ul/li[2]/span[2]/a`,182    );183    const url = await (await button.getProperty('href')).jsonValue();184    await button.click();185    await page.waitForNavigation();186    expect(page.url()).toBe(url);187    await page.waitForTimeout(500);188    await screenshotPage(page);189  });190  it('YL16-åºåå¨å®æ¥¼çæè¡æ´å¤æé®', async () => {191    const page = await browser.newPage();192    await page.goto('http://nj.jiwu.com/fangjia/');193    const button = await page.waitForXPath(194      `/html/body/div[5]/div[1]/div[5]/div[3]/div[1]/a`,195    );196    await button.click();197    await page.waitForTimeout(100);198    const ele = await page.waitForXPath(`/html/body/div[5]/div[1]/div[5]`);199    await ele.screenshot({200      path: getPath(getCaseName()),201    });202  });203  it('YL17-ä»·æ ¼åå¸è¶å¿å¾', async () => {204    const page = await browser.newPage();205    await page.goto('http://nj.jiwu.com/fangjia/');206    const ele = await page.waitForXPath('/html/body/div[5]/div[1]/div[6]');207    await page.waitForTimeout(500);208    await ele.screenshot({209      path: getPath(),210    });211  });212  it('YL18-ä»·æ ¼å叿°æ¿äºææ¿åæ¢', async () => {213    const page = await browser.newPage();214    await page.goto('http://nj.jiwu.com/fangjia/');215    const ele = await page.waitForXPath('/html/body/div[5]/div[1]/div[6]');216    const button = await page.waitForXPath(217      '/html/body/div[5]/div[1]/div[6]/div[2]/a[2]',218    );219    await button.click();220    await page.waitForTimeout(500);221    await ele.screenshot({222      path: getPath(),223    });224  });225  it('YL19-äºææ¿æäº¤ä¿¡æ¯å±ç¤ºæ°æ®', async () => {226    const page = await browser.newPage();227    await page.goto('http://nj.jiwu.com/fangjia/');228    const ele = await page.waitForXPath('/html/body/div[5]/div[1]/div[7]');229    await ele.screenshot({230      path: getPath(),231    });232  });233  it('YL20-äºææ¿æäº¤ä¿¡æ¯æ¥çæ´å¤è·³è½¬', async () => {234    const page = await browser.newPage();235    await page.goto('http://nj.jiwu.com/fangjia/');236    const button = await page.waitForXPath(237      '/html/body/div[5]/div[1]/div[7]/div[1]/a',238    );239    await button.click();240    await page.waitForNavigation();241    await screenshotPage(page);242  });243  it('YL21-äºææ¿æäº¤ä¿¡æ¯ç¿»é¡µ', async () => {244    const page = await browser.newPage();245    await page.goto('http://nj.jiwu.com/jilu/');246    const button = await page.waitForXPath('//*[@id="pagination"]/div/a[4]');247    await button.click();248    await page.waitForNavigation();249    await screenshotPage(page);250  });251  it('YL22-æ¿äº§å¿«è®¯', async () => {252    const page = await browser.newPage();253    await page.goto('http://nj.jiwu.com/fangjia/');254    const ele = await page.waitForXPath('/html/body/div[5]/div[2]/div[1]');255    await ele.screenshot({256      path: getPath(),257    });258  });259  it('YL23-æ¿äº§å¿«è®¯é¼ æ ç§»å¨é«äº®', async () => {260    const page = await browser.newPage();261    await page.goto('http://nj.jiwu.com/fangjia/');262    const ele = await page.waitForXPath('/html/body/div[5]/div[2]/div[1]');263    const button = await page.waitForXPath(264      '/html/body/div[5]/div[2]/div[1]/ul/li[1]/a',265    );266    const box = await button.boundingBox();267    await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);268    await ele.screenshot({269      path: getPath(),270    });271  });272  it('YL24-æ¿äº§å¿«è®¯ç¹å»è·³è½¬', async () => {273    const page = await browser.newPage();274    await page.goto('http://nj.jiwu.com/fangjia/');275    const button = await page.waitForXPath(276      '/html/body/div[5]/div[2]/div[1]/ul/li[1]/a',277    );278    const url = await (await button.getProperty('href')).jsonValue();279    await page.goto(url);280    await screenshotPage(page);281  });282  it('YL25-ä¼éæ°æ¿ææ¡', async () => {283    const page = await browser.newPage();284    await page.goto('http://nj.jiwu.com/fangjia/');285    const ele = await page.waitForXPath('/html/body/div[5]/div[2]/div[2]');286    await ele.screenshot({287      path: getPath(),288    });289  });290  it('YL26-ä¼éæ°æ¿æ¥çå
¨å±', async () => {291    const page = await browser.newPage();292    await page.goto('http://nj.jiwu.com/fangjia/');293    const button = await page.waitForXPath(294      '/html/body/div[5]/div[2]/div[2]/div/a',295    );296    await button.click();297    await page.waitForNavigation();298    await screenshotPage(page);299  });300  it('YL27-ä¼éæ°æ¿è¯¦ç»é¡µ', async () => {301    const page = await browser.newPage();302    await page.goto('http://nj.jiwu.com/fangjia/');303    const button = await page.waitForXPath(304      '/html/body/div[5]/div[2]/div[2]/ul/li[1]/a',305    );306    const url = await (await button.getProperty('href')).jsonValue();307    await page.goto(url);308    await screenshotPage(page);309  });310  it('YL28-ä¼éæ°æ¿è¯¦æ
页缩ç¥å¾', async () => {311    const page = await browser.newPage();312    await page.goto('http://nj.jiwu.com/fangjia/');313    const button = await page.waitForXPath(314      '/html/body/div[5]/div[2]/div[2]/ul/li[1]/a',315    );316    const url = await (await button.getProperty('href')).jsonValue();317    await page.goto(url);318    const thumb = await page.waitForXPath(319      `//*[@id="lpan_banner"]/div[2]/div[3]`,320    );321    await thumb.screenshot({322      path: getPath(),323    });324  });325  it('YL29-ä¼éæ°æ¿è¯¦æ
页缩ç¥å¾ç¹å»åæ¢', async () => {326    const page = await browser.newPage();327    await page.goto('http://nj.jiwu.com/fangjia/');328    const button = await page.waitForXPath(329      '/html/body/div[5]/div[2]/div[2]/ul/li[1]/a',330    );331    const url = await (await button.getProperty('href')).jsonValue();332    await page.goto(url);333    const thumbButton = await page.waitForXPath(334      `//*[@id="lpan_banner"]/div[2]/div[3]/ul/li[2]/img`,335    );336    await thumbButton.click();337    const ele = await page.waitForXPath(`//*[@id="lpan_banner"]`);338    await ele.screenshot({339      path: getPath(),340    });341  });342  it('YL30-ä¼éäºææ¿ææ¡', async () => {343    const page = await browser.newPage();344    await page.goto('http://nj.jiwu.com/fangjia/');345    const ele = await page.waitForXPath('/html/body/div[5]/div[2]/div[3]');346    await ele.screenshot({347      path: getPath(),348    });349  });350  it('YL31-ä¼éäºææ¿æ¥çå
¨é¨', async () => {351    const page = await browser.newPage();352    await page.goto('http://nj.jiwu.com/fangjia/');353    const button = await page.waitForXPath(354      '/html/body/div[5]/div[2]/div[3]/div/a',355    );356    await button.click();357    await page.waitForNavigation();358    await screenshotPage(page);359  });360  it('YL32-ä¼éäºææ¿è¯¦ç»é¡µ', async () => {361    const page = await browser.newPage();362    await page.goto('http://nj.jiwu.com/fangjia/');363    const button = await page.waitForXPath(364      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',365    );366    const url = await (await button.getProperty('href')).jsonValue();367    await page.goto(url);368    await screenshotPage(page);369  });370  it('YL33-ä¼éäºææ¿ç¼©ç¥å¾', async () => {371    const page = await browser.newPage();372    await page.goto('http://nj.jiwu.com/fangjia/');373    const button = await page.waitForXPath(374      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',375    );376    const url = await (await button.getProperty('href')).jsonValue();377    await page.goto(url);378    const thumb = await page.waitForXPath(`//*[@id="imgs-box"]/div[2]/div[2]`);379    await thumb.screenshot({380      path: getPath(),381    });382  });383  it('YL34-ä¼éäºææ¿è¯¦æ
页缩ç¥å¾ç¹å»åæ¢', async () => {384    const page = await browser.newPage();385    await page.goto('http://nj.jiwu.com/fangjia/');386    const button = await page.waitForXPath(387      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',388    );389    const url = await (await button.getProperty('href')).jsonValue();390    await page.goto(url);391    const thumbButton = await page.waitForXPath(392      `//*[@id="imgs-box"]/div[2]/div[2]/div/ul/li[2]/a/img`,393    );394    await thumbButton.click();395    // çå¾
 effect ææ396    await page.waitForTimeout(200);397    const ele = await page.waitForXPath(398      '/html/body/div[3]/div[1]/div[2]/div[1]/div[1]/div',399    );400    await ele.screenshot({401      path: getPath(),402    });403  });404  it('YL35-ä¼éäºææ¿å
³æ³¨æ¿æº', async () => {405    const page = await browser.newPage();406    await page.goto('http://nj.jiwu.com/fangjia/');407    const link = await page.waitForXPath(408      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',409    );410    const url = await (await link.getProperty('href')).jsonValue();411    await page.goto(url);412    const button = await page.waitForXPath(413      '/html/body/div[3]/div[1]/div[1]/div[2]/span[1]/a',414    );415    await button.click();416    const modal = await page.$('.pop-wrap');417    const title = await page.evaluate(418      (ele) => ele.textContent,419      await modal.$('.tit'),420    );421    await screenshotPage(page, false);422    expect(title).toBe('å
³æ³¨æ¿æº');423  });424  it('YL36-ä¼éäºææ¿è·ååºä»·', async () => {425    const page = await browser.newPage();426    await page.goto('http://nj.jiwu.com/fangjia/');427    const link = await page.waitForXPath(428      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',429    );430    const url = await (await link.getProperty('href')).jsonValue();431    await page.goto(url);432    const button = await page.waitForXPath(433      '/html/body/div[3]/div[1]/div[1]/div[2]/span[2]/a',434    );435    await button.click();436    const modal = await page.$('.pop-wrap');437    const title = await page.evaluate(438      (ele) => ele.textContent,439      await modal.$('.tit'),440    );441    await screenshotPage(page, false);442    expect(title).toBe('è·ååºä»·');443  });444  it('YL37-ä¼éäºææ¿é¢çº¦çæ¿', async () => {445    const page = await browser.newPage();446    await page.goto('http://nj.jiwu.com/fangjia/');447    const link = await page.waitForXPath(448      '/html/body/div[5]/div[2]/div[3]/ul/li[1]/a',449    );450    const url = await (await link.getProperty('href')).jsonValue();451    await page.goto(url);452    const button = await page.waitForXPath(453      '/html/body/div[3]/div[1]/div[2]/div[2]/div[1]/ul[2]/li[4]/a',454    );455    await button.click();456    const modal = await page.$('.pop-wrap');457    const title = await page.evaluate(458      (ele) => ele.textContent,459      await modal.$('.tit'),460    );461    await screenshotPage(page, false);462    expect(title).toBe('é¢çº¦çæ¿');463  });464  it('YL38-ç½®ä¸ç®¡å®¶é¡¾é®ä¿¡æ¯', async () => {465    const page = await browser.newPage();466    await page.goto('http://suzhou.jiwu.com/zygj/');467    await screenshotPage(page);468  });469  it('YL39-ç½®ä¸ç®¡å®¶è·³è½¬ä¿¡æ¯è¯¦ç»é¡µ', async () => {470    const page = await browser.newPage();471    await page.goto('http://suzhou.jiwu.com/zygj/');472    const button = await page.waitForXPath(473      '/html/body/div[2]/div/div[1]/div[1]/ul/li[1]/div[1]/p[1]/a[1]',474    );475    await button.click();476    await page.waitForNavigation();477    await screenshotPage(page);478  });479  it('YL40-ç½®ä¸ç®¡å®¶å¨è¯¢æé®', async () => {480    const page = await browser.newPage();481    await page.goto('http://suzhou.jiwu.com/zygj/');482    const button = await page.waitForXPath(483      '/html/body/div[2]/div/div[1]/div[1]/ul/li[1]/div[1]/p[1]/a[1]',484    );485    await button.click();486    await page.waitForNavigation();487    const zixunButton = await page.waitForXPath(488      '/html/body/div[3]/div[1]/div[1]/div/div[1]/a',489    );490    await page.$eval('.panel-login', (ele) => {491      return ele.style.display === 'none';492    });493    await zixunButton.click();494    await page.$eval('.panel-login', (ele) => {495      return ele.style.display !== 'none';496    });497    await screenshotPage(page, false);498  });499  it('YL41-ç½®ä¸ç®¡å®¶æ»å¨æ¡ä¿¡æ¯', async () => {500    const page = await browser.newPage();501    await page.goto('http://suzhou.jiwu.com/zygj/');502    const button = await page.waitForXPath(503      '/html/body/div[2]/div/div[1]/div[1]/ul/li[1]/div[1]/p[1]/a[1]',504    );505    await button.click();506    await page.waitForNavigation();507    const dynamicInfo = await page.waitForXPath(508      '/html/body/div[3]/div[1]/div[2]/div',509    );510    await dynamicInfo.screenshot({511      path: getPath(`${getCaseName()}-æ»å¨å`),...shooter.js
Source:shooter.js  
...34  function hideUIFrame() {35    ui.iframe.hide();36    return Promise.resolve(null);37  }38  function screenshotPage(dataUrl, selectedPos, type, screenshotTaskFn) {39    let promise = Promise.resolve(dataUrl);40    if (!dataUrl) {41      promise = callBackground(42        "screenshotPage",43        selectedPos.toJSON(),44        type,45        window.devicePixelRatio46      );47    }48    catcher.watchPromise(49      promise.then(dataLoc => {50        screenshotTaskFn(dataLoc);51      })52    );53  }54  exports.downloadShot = function(selectedPos, previewDataUrl, type) {55    const shotPromise = previewDataUrl56      ? Promise.resolve(previewDataUrl)57      : hideUIFrame();58    catcher.watchPromise(59      shotPromise.then(dataUrl => {60        screenshotPage(dataUrl, selectedPos, type, url => {61          let typeFromDataUrl = blobConverters.getTypeFromDataUrl(url);62          typeFromDataUrl = typeFromDataUrl63            ? typeFromDataUrl.split("/", 2)[1]64            : null;65          shotObject.delAllClips();66          shotObject.addClip({67            createdDate: Date.now(),68            image: {69              url,70              type: typeFromDataUrl,71              location: selectedPos,72            },73          });74          ui.triggerDownload(url, shotObject.filename);75          uicontrol.deactivate();76        });77      })78    );79  };80  exports.preview = function(selectedPos, type) {81    catcher.watchPromise(82      hideUIFrame().then(dataUrl => {83        screenshotPage(dataUrl, selectedPos, type, url => {84          ui.iframe.usePreview();85          ui.Preview.display(url);86        });87      })88    );89  };90  let copyInProgress = null;91  exports.copyShot = function(selectedPos, previewDataUrl, type) {92    // This is pretty slow. We'll ignore additional user triggered copy events93    // while it is in progress.94    if (copyInProgress) {95      return;96    }97    // A max of five seconds in case some error occurs.98    copyInProgress = setTimeout(() => {99      copyInProgress = null;100    }, 5000);101    const unsetCopyInProgress = () => {102      if (copyInProgress) {103        clearTimeout(copyInProgress);104        copyInProgress = null;105      }106    };107    const shotPromise = previewDataUrl108      ? Promise.resolve(previewDataUrl)109      : hideUIFrame();110    catcher.watchPromise(111      shotPromise.then(dataUrl => {112        screenshotPage(dataUrl, selectedPos, type, url => {113          const blob = blobConverters.dataUrlToBlob(url);114          catcher.watchPromise(115            callBackground("copyShotToClipboard", blob).then(() => {116              uicontrol.deactivate();117              unsetCopyInProgress();118            }, unsetCopyInProgress)119          );120        });121      })122    );123  };124  exports.sendEvent = function(...args) {125    const maybeOptions = args[args.length - 1];126    if (typeof maybeOptions === "object") {...screenshot.js
Source:screenshot.js  
...22        });23        return nodeList;24    }2526    function screenshotPage() {27        urlsToAbsolute(document.images);28        urlsToAbsolute(document.querySelectorAll("link[rel='stylesheet']"));29        var screenshot = document.documentElement.cloneNode(true);30        var b = document.createElement('base');31        b.href = document.location.protocol + '//' + location.host;32        var head = screenshot.querySelector('head');33        head.insertBefore(b, head.firstChild);34        screenshot.style.pointerEvents = 'none';35        screenshot.style.overflow = 'hidden';36        screenshot.style.webkitUserSelect = 'none';37        screenshot.style.mozUserSelect = 'none';38        screenshot.style.msUserSelect = 'none';39        screenshot.style.oUserSelect = 'none';40        screenshot.style.userSelect = 'none';41        screenshot.dataset.scrollX = window.scrollX;42        screenshot.dataset.scrollY = window.scrollY;43        var script = document.createElement('script');44        script.textContent = '(' + addOnPageLoad_.toString() + ')();';45        screenshot.querySelector('body').appendChild(script);46        var blob = new Blob([screenshot.outerHTML], {47            type: 'text/html'48        });49        return blob;50    }5152    function addOnPageLoad_() {53        window.addEventListener('DOMContentLoaded', function (e) {54            var scrollX = document.documentElement.dataset.scrollX || 0;55            var scrollY = document.documentElement.dataset.scrollY || 0;56            window.scrollTo(scrollX, scrollY);57        });58    }5960    function generate() {61        window.URL = window.URL || window.webkitURL;62        window.open(window.URL.createObjectURL(screenshotPage()));63    }64    exports.screenshotPage = screenshotPage;65    exports.generate = generate;
...webpage-screenshot.js
Source:webpage-screenshot.js  
...59    })60  }61  function generate () {62    window.URL = window.URL || window.webkitURL63    window.open(window.URL.createObjectURL(screenshotPage()))64  }65  exports.screenshotPage = screenshotPage66  exports.generate = generate...java.js
Source:java.js  
...20            }21        });22        return nodeList;23    }24    function screenshotPage() {25        var wrapper = document.getElementById('wrapper');26        html2canvas(wrapper, {27            onrendered: function(canvas) {28                canvas.toBlob(function(blob) {29                    saveAs(blob, 'myScreenshot.png');30                });31            }32        });33    }34    function addOnPageLoad_() {35        window.addEventListener('DOMContentLoaded', function(e) {36            var scrollX = document.documentElement.dataset.scrollX || 0;37            var scrollY = document.documentElement.dataset.scrollY || 0;38            window.scrollTo(scrollX, scrollY);39        });40    }41    function generate() {42        console.log("burda");43        screenshotPage();44    }45    exports.screenshotPage = screenshotPage;46    exports.generate = generate;...screenshotTracker.js
Source:screenshotTracker.js  
...13            const bufferString= screenshotBuffer.toString("base64");14            setTimeout((data)=>{this.report(data)}, 50, bufferString)15           16          }, { handle: true });17        await page.addInitScript({ content: ` document.addEventListener('click', event => window.screenshotPage(event.target)); `});18    }19    report(elementData) {20        const eventData = {21            eventType: this.eventType,22            eventData: elementData23        };24        this.emit(this.eventType,JSON.stringify(eventData))25    }...pageScreenshot.js
Source:pageScreenshot.js  
1var config = require('./config').screenshot;2const puppeteer = require('puppeteer');3var textProcessor =  require('./textProcessor.js');4async function screenshotPage(callback){5    const screenshotPath = config.path + textProcessor.processText(config.name);6    7    const browser = await puppeteer.launch();8    const page = await browser.newPage();9    await page.goto(config.url, {waitUntil: 'load'});10    await page.setViewport({11      width: config.viewPort.width,12      height: config.viewPort.height,13    });14    if(config.customCSS != "") await page.addStyleTag({content: config.customCSS})15    const element = await page.$(config.selector);16    await element.screenshot({path: screenshotPath});17    await browser.close();18    console.log(screenshotPath);...App.js
Source:App.js  
1import React from "react";2import Navbar from "./components/Navbar/Navbar";3import Home from "./components/Home/Home";4import Features from "./components/Features/Features";5import Benefits from "./components/Benefits/Benefits";6import ScreenshotPage from "./components/ScreenshotsPage/ScreenshotPage";7import Download from "./components/Download/Download";8import Contact from "./components/contact/contact";9import "./App.css";10function App() {11  return (12    <div className="App">13      <Navbar />14      <Home />15      <Features />16      <Benefits />17      <ScreenshotPage />18      <Download />19      <Contact />20    </div>21  );22}...Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3  const browser = await chromium.launch();4  const context = await browser.newContext();5  const page = await context.newPage();6  await page.screenshot({ path: 'example.png' });7  await browser.close();8})();9### `screenshotPage(page, options)`10const { chromium } = require('playwright');11const { screenshotPage } = require('playwright-screenshot');12(async () => {13  const browser = await chromium.launch();14  const context = await browser.newContext();Using AI Code Generation
1const { chromium } = require('playwright');2const fs = require('fs');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const screenshot = await page.screenshot();8  fs.writeFileSync('google.png', screenshot);9  await browser.close();10})();Using AI Code Generation
1const { screenshotPage } = require('@playwright/test/lib/server/screenshotter');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const screenshot = await screenshotPage(page);8  console.log(screenshot);9  await browser.close();10})();11import { chromium } from 'playwright';12import { screenshotPage } from '@playwright/test/lib/server/screenshotter';13(async () => {14  const browser = await chromium.launch();15  const context = await browser.newContext();16  const page = await context.newPage();17  const screenshot = await screenshotPage(page);18  console.log(screenshot);19  await browser.close();20})();Using AI Code Generation
1const playwright = require('playwright');2const fs = require('fs');3(async () => {4  const browser = await playwright["chromium"].launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const screenshot = await page.screenshot({fullPage: true});8  fs.writeFileSync('test.png', screenshot);9  await browser.close();10})();11import { chromium } from 'playwright';12import * as fs from 'fs';13(async () => {14  const browser = await chromium.launch();15  const context = await browser.newContext();16  const page = await context.newPage();17  const screenshot = await page.screenshot({fullPage: true});18  fs.writeFileSync('test.png', screenshot);19  await browser.close();20})();Using AI Code Generation
1const playwright = require('playwright');2const { screenshotPage } = require('playwright/lib/server/screenshotter');3(async () => {4  const browser = await playwright['chromium'].launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const imageBuffer = await screenshotPage(page, 'jpeg', false);8  await browser.close();9  const fs = require('fs');10  fs.writeFileSync('test.jpeg', imageBuffer);11})();Using AI Code Generation
1const screenshotPage = require('@playwright/test').test.screenshotPage;2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  await screenshotPage(page, { path: 'screenshot.png' });8  await browser.close();9})();10const test = require('@playwright/test').test;11test.fixme('this test is skipped', async ({ page }) => {12  await page.screenshot({ path: 'screenshot.png' });13});14const test = require('@playwright/test').test;15test.only('this test is only one that runs', async ({ page }) => {16  await page.screenshot({ path: 'screenshot.png' });17});18test('this test is skipped', async ({ page }) => {19  await page.screenshot({ path: 'screenshot.png' });20});21const test = require('@playwright/test').test;22test.skip('this test is skipped', async ({ page }) => {23  await page.screenshot({ path: 'screenshot.png' });24});25const test = require('@playwright/test').test;26test.use({Using AI Code Generation
1const { screenshotPage } = require('playwright/lib/server/screenshotter');2const fs = require('fs');3(async () => {4  const browser = await playwright.chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const screenshot = await screenshotPage(page);8  fs.writeFileSync('screenshot.png', screenshot);9  await browser.close();10})();Using AI Code Generation
1const { screenshotPage } = require('@playwright/test/lib/screenshotter');2const path = require('path');3const fs = require('fs');4const { chromium } = require('playwright');5(async () => {6  const browser = await chromium.launch();7  const context = await browser.newContext();8  const page = await context.newPage();9  await screenshotPage(page, path.join(__dirname, 'test.png'));10  await browser.close();11})();12const { fixtures } = require('@playwright/test');13const { test, expect } = fixtures;14test('basic test', async ({ page }) => {15  const title = page.locator('text=Playwright');16  await expect(title).toBeVisible();17});18const { fixtures } = require('@playwright/test');19const { test, expect } = fixtures;20test('basic test', async ({ page }) => {21  const title = page.locator('text=Playwright');22  await expect(title).toBeVisible();23});24const { fixtures } = require('@playwright/test');25const { test, expect } = fixtures;26test('basic test', async ({ page }) => {27  const title = page.locator('text=Playwright');28  await expect(title).toBeVisible();29});30const { fixtures } = require('@playwright/test');31const { test, expect } = fixtures;32test('basic test', async ({ page }) => {33  const title = page.locator('text=Playwright');34  await expect(title).toBeVisible();35});Using AI Code Generation
1const { devices } = require('@playwright/test');2const iPhone = devices['iPhone 11 Pro'];3const { webkit } = require('playwright');4const browser = await webkit.launch();5const context = await browser.newContext({6  geolocation: { longitude: 12.492507, latitude: 41.889938 },7});8const page = await context.newPage();9await page.screenshot({ path: 'colosseum-iphone.png' });10await browser.close();11const { webkit } = require('playwright');12const { screenshotPage } = require('playwright-internal-api');13const browser = await webkit.launch();14const context = await browser.newContext();15const page = await context.newPage();16await screenshotPage(page, { path: 'google.png' });17await browser.close();18### screenshotPage(page, options)19await screenshotPage(page, { path: 'google.png' });20### screenshotElement(element, options)21const element = await page.$('div');22await screenshotElement(element, { path: 'google.png' });23MIT © [Arun Kumar S](Using AI Code Generation
1const { screenshotPage } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement.js');2const fs = require('fs');3const path = require('path');4(async () => {5  const page = await browser.newPage();6  const screenshot = await screenshotPage(page);7  fs.writeFileSync(path.join(__dirname, 'playwright.png'), screenshot);8})();9### `screenshotPage(page: Page, options: ScreenshotOptions): Promise<Buffer>`10interface ScreencastFrame {11  buffer: Buffer;12  width: number;13  height: number;14  timestamp: number;15  duration: number;16}17### `screencastFrameToBuffer(frame: ScreencastFrame): Buffer`18### `screencastFrameToPNG(frame: ScreencastFrame): Buffer`19### `screencastFrameToJPEG(frame: ScreencastFrame, quality: number = 80): Buffer`20### `screencastFrameToWebP(frame: ScreencastFrame, quality: number = 80): Buffer`21### `screencastFrameToGIF(frame: ScreencastFrame, options: GIFEncoderOptions = {}): Buffer`22### `screencastFrameToAVIF(frame: ScreencastFrame): Buffer`23### `screencastFrameToHEIF(frame: ScreencastFrame): Buffer`24### `screencastFrameToMPEG(frame: ScreencastFrameLambdaTest’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!!
