Setting up Puppeteer or Playwright locally

On this page

Let’s start by creating a new directory and navigating to it. Assuming you already have Node.js available in your local environment, installing Puppeteer or Playwright is achieved with just one instruction:

$ npm i playwright
$ npm i puppeteer

Playwright and Puppeteer come bundled with their respective browsers, so we now have all we need to run our first script. Let’s create a script to navigate to our test website:


const { chromium } = require('playwright')

;(async () => {
  const browser = await chromium.launch()
  const page = await browser.newPage()
  await page.goto('https://danube-web.shop/')
  await browser.close()
})()


Run in Checkly

const puppeteer = require('puppeteer')

;(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://danube-web.shop/')
  await browser.close()
})()


Run in Checkly

Run this example as follows:

$ node hello-world.js

Nothing much has happened, right? Remember: by default, Playwright and Puppeteer will run in headless mode! That means we won’t see anything of what is happening in the browser when our script runs.

Puppeteer/Playwright creates its own browser user profile, which it cleans up on every run. In other words: all runs will be sandboxed and not interfere with one another, as state is always fully reset at the end of a session.

When you are first writing and debugging your scripts, it is a good idea to disable headless mode, so you can have a look at what your script is doing:

const browser = await chromium.launch({ headless: false })
const browser = await puppeteer.launch({ headless: false })

After executing the updated file, you will see Chromium starting up, only to shut down after an instant. Everything is working as expected! Our script is just so short, it runs almost instantaneously.

Further reading

  1. Getting started guides for Playwright and Puppeteer

Last updated on April 12, 2024. You can contribute to this documentation by editing this page on Github