项目作者: ianwalter

项目描述 :
An AVA helper that makes a Puppeteer page available to a test
高级语言: JavaScript
项目地址: git://github.com/ianwalter/puppeteer-helper.git
创建时间: 2019-01-17T02:59:05Z
项目社区:https://github.com/ianwalter/puppeteer-helper

开源协议:Other

下载


@ianwalter/puppeteer-helper

An AVA helper that makes a Puppeteer page available
to a test

npm page

Archived

Please use bff instead.

About

This helper is based on a recipe that can be found in AVA’s docs.

Installation

  1. yarn add @ianwalter/puppeteer-helper --dev

Warning

This is meant for testing. You wouldn’t want to run untrusted code as root with
this since sandboxing is disabled.

Usage

JavaScript to evaluate in the browser (something.js):

  1. import subpub from '@ianwalter/subpub'
  2. // Run your evaluation inside of `window.run` which passes the resolve/reject
  3. // functions from the returned promise and an arg if a second argument is passed
  4. // to `t.evaluate`.
  5. window.run((resolve, reject, args) => {
  6. // Subscribe to the 'alerts' topic and resolve the evaluation when a message
  7. // is received.
  8. subpub.sub('alerts', data => resolve(data.msg))
  9. // Send a test message to the 'alerts' topic.
  10. subpub.pub('alerts', { msg: 'Winter Snow Advisory!' })
  11. })

Using the evaluation script in an AVA test:

  1. import test from 'ava'
  2. import puppeteerHelper from '@ianwalter/puppeteer-helper'
  3. const withPage = puppeteerHelper() // You can pass Puppeteer options here.
  4. test('message received', withPage, async (t, page) => {
  5. t.is(await t.evaluate('./something.js'), 'Winter Snow Advisory!')
  6. })

API

t.evaluate(evaluationScriptPath, [frame]) - Runs the evaluation script (path
is relative to process.cwd()) on the given frame (defaults to page). Arguments
to the evaluate call can be supplied by adding them to t.context.args. A
custom Webpack config can also be added to t.context.webpack.

Debugging

To aid in debugging tests, pass { devtools: true } to the puppeteerHelper
call and then add debugger to the problem area in your evaluation script. This
will stop the browser from automatically running in headless mode and pause
execution where debugger is placed. This is helpful if you, for example, want
to see/modify a snapshot of variables in the execution context within Chrome
DevTools.

  • ianwalter/puppeteer - A GitHub Action / Docker image for
    Puppeteer, the Headless Chrome Node API

License

Apache 2.0 with Commons Clause - See LICENSE

Created by Ian Walter