My puppeteer scripts now use deno.
Nothing to disclose.
No more need for npm in my personal stack! The native
browser’s path comes from which.
import puppeteer from "https://deno.land/x/puppeteer@16.2.0/mod.ts";
const chrome = "chromium";  // Browser Chrome: "firefox" | "chromium" | "google-chrome" | ...
const product = "chrome";   // Product Base:   "firefox" | "chrome"
const command = new Deno.Command("which", { args: [chrome] });
const { status, stdout, stderr } = command.outputSync();
const executablePath = new TextDecoder().decode(stdout).trim();
const browser = await puppeteer.launch({
  headless: false,
  executablePath: executablePath,
  product: product,
});
const site = "example.com";
const page = await browser.newPage();
await page.setViewport({ width: 1024, height: 768 });
await page.goto("https://" + site);
await page.screenshot({ path: site + ".png" });
await page.waitForSelector('a');
const url = await page.evaluate(() => {
  return document.querySelector('a').href;
});
console.log(url);
await browser.close();deno run --allow-all main.ts