-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full page screenshot not rendering correctly #620
Comments
Interesting example, thanks for sharing. On observing the page, I noticed that the bottom parts of the page load after scrolling. To replicate this behavior through Playwright, I've added a method const pw = require('playwright');
(async () => {
const browser = await pw.chromium.launch({ headless: false }); // or 'chromium', 'firefox'
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://www.waze.com/');
await scrollFullPage(page);
await page.screenshot({
path: 'example.png',
fullPage : true
});
await browser.close();
})();
async function scrollFullPage(page) {
await page.evaluate(async () => {
await new Promise(resolve => {
let totalHeight = 0;
const distance = 100;
const timer = setInterval(() => {
const scrollHeight = document.body.scrollHeight;
window.scrollBy(0, distance);
totalHeight += distance;
if (totalHeight >= scrollHeight){
clearInterval(timer);
resolve();
}
}, 100);
});
});
} |
Any chance this can be implemented as a method since there are many scenarios where we're in need of taking full page screenshots. |
Thanks @zac11. Full page screenshots are supported with the |
It's definitely due to the website animating in all images when inside the viewport. A fullpage screenshot scrolls too fast for the code to show the images. This isn't a puppeteer/playwright limitiation. I wonder if turning off CSS transitions before taking the screenshot would help? * {
transition: unset !important;
} |
Thanks @arjun27 , it worked for the given example. I appreciate your help. Will try with some other examples and let you know how I go. This project looks interesting, anyway I can contribute to the project? Say some doco, tutorial etc? |
There's this page https://extrasalt.org/ where even with the |
overflow-y: initial !important; |
Can scrollFullPage() be implemented with a flag option? I use gsap animations that load the website content when the user scrolls. In my case |
Similar issue here, I couldn't understand why the bottom of my page gets cropped while running Argos (visual regression tests) It turns out a widget on the page (the docs 👍 👎 rating widget) produces a layout shift when loading and it messes up with the fullPage screenshot. The bottom cropped part is exactly 109px which is the height this widget takes in practice. Screenshotting code, using Playwright 1.30: await handle.screenshot({
path: resolve(screenshotFolder, `${name}.png`),
type: "png",
fullPage: true,
mask: [page.locator('[data-visual-test="blackout"]')],
animations: "disabled",
...options,
}); Considering the widget is visible on both screenshots, it looks to me that there might be some kind of race condition happening in the playwright screenshotting logic. My intuition is:
Example page I found this issue on: https://deploy-preview-3780--react-native.netlify.app/architecture/overview |
Here is my code
If you see the content at the bottom of the page is not properly captured in screenshot. Any help will be appreciated.
The text was updated successfully, but these errors were encountered: