@poi/plugin-puppet status beta

Easy automatic (headless) browser testing, powered by Puppeteer.



yarn add @poi/plugin-puppet --dev

Require Poi 12.0.2 and above.

How to use

Add this plugin in poi.config.js:

module.exports = {
  plugins: [
      resolve: '@poi/plugin-puppet'

Now you can bundle your code and run it in browser:

// cowsay.js
import * as cowsay from 'cowsay'

// You can use window.*, since this will be run in Chromium
const text = window.atob('SSBydW4gaW4gYSBicm93c2Vy')

// Everything logged here will be piped to your host terminal
console.log(cowsay.say({ text }))

// Explicitly terminate the script when you are done

This command will injectpuppet command to the Poi CLI, you need to use this command in --test mode:

❯ poi puppet --test cowsay.js
< I run in a browser >
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
✔ All tests have passed!

Testing Frameworks

This plugin also works with some popular testing frameworks like Mocha and Tape, check out the CLI usages.

CLI Usages

poi puppet --test [...files]


  • Type: string[]
  • Default: **/*.test.{js,ts}

One or more glob patterns for matching test files. node_modules is always excluded.


Don't run Chromium in headless mode.

--framework <framework>

  • Type: string
  • Values: mocha tape

Use a testing framework.

For Mocha: you don't need addtional dependencies, window.mocha is available in your code. Here's the code example.
For Tape: you need to install tape in your project since you need to import it in your code. Here's the code example.

--ui <ui>

  • Type: string
  • Values: bdd tdd qunit
  • Default: bdd

Set user-interface for mocha.


This is just for unit testing (maybe for now).


This plugin is inspired by puppet-run which is built upon Parcel bundler.