4.3.6 • Published 6 years ago
init-puppeteer v4.3.6
Init-puppeteer
It starts a Puppeteer instance and attaches multiple helpers to it. It includes also helpers to turn Puppeteer into a end-to-end testing framework.
Install
`yarn add https://github.com/selfrefactor/init-puppeteer#5.8.0
Env
MATCH_DIR
HEADLESS_TEST
SCREEN_DIRAPI
initPuppeteer(options: Options): Output
Such as options follow this Typescript rules:
  extraProps?: object
  resolution?: Resolution
  url?: string
  mobile?: boolean
  headless?: boolean
  waitCondition?: WaitConditions
  logFlag?: booleanSnaps
pass PUPPETEER_SNAP as OFF to forbid _.snap to take screenshots
Step delay
Set process.env.STEP_DELAY=1000 for 1 second delay after each $ or $$ evaluation.
Debug
If process.env.PUPPETEER_DEBUG = 'true' then headless mode is turned off even if we pass headless:true during initialization.
Example
const { initPuppeteer } = require('init-puppeteer')
const ILEARNSMARTER = 'https://ilearnsmarter.com/'
void async function debug() {
  try {
    console.log('start')
    var { browser, page } = await initPuppeteer({
      headless: false,
      logFlag: false,
      url: ILEARNSMARTER,
    })
    const _ = attach(page)
    const x = await _.$$('div', els => els.length)
    console.log({x})
    await browser.close()
  } catch (e) {
    console.log(e)
  }
}()Typescript example
import { initPuppeteer } from 'init-puppeteer'
import {
  InputPuppeteer,
  OutputPuppeteer,
} from 'init-puppeteer/typings'
async function fn(): Promise<void>{
  try{
      const settings: InputPuppeteer = {
        headless: true,
        url: 'about:blank',
      }
      var { browser, page }: OutputPuppeteer = await initPuppeteer(settings)
      // WORK
      return
     }catch (err){
    console.log(err)
  }finally{
    console.log('closing Chrome')
    if (browser !== undefined){
      await browser.close()
    }
  }
}input.waitCondition
Could be a string among LOAD, NETWORK, DOM. In this case timeout is 60 seconds.
It can be also Puppeteer's NavigationOptions in which case input.waitCondition will passed directly to page.goto.