+++ date = "2022-08-26T22:20:38+00:00" lastmod = "2022-08-28T01:37:55+00:00" tags = [ "webdev", "gists" ] author = "tdro" +++ {{< disclose "My [puppeteer](https://pptr.dev/) scripts now use [deno](https://deno.land/)." />}} No more need for [npm](https://www.npmjs.com/) in my personal stack! `spawnSync` + `which` returns the local browser's path. ```javascript {options="hl_lines=3-4 6-8",caption="Basic Boilerplate: Captures a picture of [example.com](https://example.com) (main.ts)"} import puppeteer from "https://deno.land/x/puppeteer@16.2.0/mod.ts"; const chrome = "firefox"; /* Browser Chrome: "firefox" | "chromium" | "google-chrome" | ... */ const product = "firefox"; /* Product Base: "firefox" | "chrome" */ const { status, stdout, stderr } = Deno.spawnSync("which", { args: [ chrome, ], }); const executablePath = new TextDecoder().decode(stdout).trim(); const browser = await puppeteer.launch({ headless: false, executablePath: executablePath, product: product, }); const page = await browser.newPage(); await page.setViewport({ width: 1024, height: 768, }); const sites = [ "example.com", ]; for (const site of sites) { await page.goto("http://" + site); await page.screenshot({ path: site + ".png" }); } await browser.close(); ``` ```shell {caption="Deno Version: 1.23.0"} deno run --allow-all --unstable main.ts ```