In my last post I showed how to create a screenshot with puppeteer. In the example, I set the height and width of the viewport myself. But there's another option: you can emulate devices with puppeteer. So you can create screenshots as if they were taken on a device. Setting the device not only sets the correct viewport, but also uses the userAgent of this device. So you'll fetch a webpage as if you were on that device.
const puppeteer = require('puppeteer'); // get the full list of available devices. console.log(puppeteer.devices); // ... // let's emulate an iPhone 6 await page.emulate(puppeteer.devices['iPhone 6']); // there are also devices in landscape mode await page.emulate(puppeteer.devices['Pixel 2 landscape']);
Here's the complete code with device emulation
// npm i puppeteer const puppeteer = require('puppeteer'); // we're using async/await - so we need an async function, that we can run const run = async () => { // open the browser and prepare a page const browser = await puppeteer.launch(); const page = await browser.newPage(); // it's better to emulate before going to the page, because otherwise a resize would happen await page.emulate(puppeteer.devices['iPhone 6']); await page.goto('https://codesnacks.net/'); await page.screenshot({ path: 'codesnacks.png', fullPage: true, }); // close the browser await browser.close(); }; // run the async function run();
Top comments (0)