This commit is contained in:
Kevin McIntyre
2025-06-18 01:00:00 -04:00
commit f84b511895
228 changed files with 42509 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
const { PNG } = require("pngjs");
async function screenshot(driver) {
var dimensions = await driver.executeScript(`return {
scrollWidth: document.body.offsetWidth,
scrollHeight: document.body.offsetHeight,
innerWidth: window.innerWidth || document.documentElement.clientWidth,
innerHeight: window.innerHeight || document.documentElement.clientHeight
}`);
const combinedImage = new PNG({
width: dimensions.scrollWidth,
height: dimensions.scrollHeight
});
const xnum = Math.ceil(dimensions.scrollWidth / dimensions.innerWidth);
const ynum = Math.ceil(dimensions.scrollHeight / dimensions.innerHeight);
for (let x = 0; x < xnum; x++) {
for (let y = 0; y < ynum; y++) {
var scrollpos = await driver.executeScript(`
window.scrollTo(${x * dimensions.innerWidth}, ${y * dimensions.innerHeight});
return { x: window.scrollX || window.pageXOffset, y: window.scrollY || window.pageYOffset }`)
// Delay for Safari
await driver.sleep(500);
const datauri = await driver.takeScreenshot();
const image = PNG.sync.read(Buffer.from(datauri, "base64"));
PNG.bitblt(image, combinedImage,
0, 0,
Math.min(image.width, combinedImage.width - scrollpos.x),
Math.min(image.height, combinedImage.height - scrollpos.y),
scrollpos.x,
scrollpos.y);
}
}
return PNG.sync.write(combinedImage);
}
module.exports = screenshot;