Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ianwalter/puppeteer-helper
An AVA helper that makes a Puppeteer page available to a test
https://github.com/ianwalter/puppeteer-helper
ava ava-helper helper puppeteer webpack
Last synced: about 2 months ago
JSON representation
An AVA helper that makes a Puppeteer page available to a test
- Host: GitHub
- URL: https://github.com/ianwalter/puppeteer-helper
- Owner: ianwalter
- License: other
- Archived: true
- Created: 2019-01-17T02:59:05.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-05-28T16:20:51.000Z (over 5 years ago)
- Last Synced: 2024-09-18T20:34:30.681Z (about 2 months ago)
- Topics: ava, ava-helper, helper, puppeteer, webpack
- Language: JavaScript
- Size: 2.02 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @ianwalter/puppeteer-helper
> An [AVA][avaUrl] helper that makes a [Puppeteer][puppeteerUrl] page available
> to a test[![npm page][npmImage]][npmUrl]
## Archived
Please use [bff][bffUrl] instead.
## About
This helper is based on a [recipe][recipeUrl] that can be found in AVA's docs.
## Installation
```console
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`):
```js
import subpub from '@ianwalter/subpub'// Run your evaluation inside of `window.run` which passes the resolve/reject
// functions from the returned promise and an arg if a second argument is passed
// to `t.evaluate`.
window.run((resolve, reject, args) => {
// Subscribe to the 'alerts' topic and resolve the evaluation when a message
// is received.
subpub.sub('alerts', data => resolve(data.msg))// Send a test message to the 'alerts' topic.
subpub.pub('alerts', { msg: 'Winter Snow Advisory!' })
})
```Using the evaluation script in an AVA test:
```js
import test from 'ava'
import puppeteerHelper from '@ianwalter/puppeteer-helper'const withPage = puppeteerHelper() // You can pass Puppeteer options here.
test('message received', withPage, async (t, page) => {
t.is(await t.evaluate('./something.js'), 'Winter Snow Advisory!')
})
```## 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.## Related
* [`ianwalter/puppeteer`][iwPuppeteerUrl] - A GitHub Action / Docker image for
Puppeteer, the Headless Chrome Node API## License
Apache 2.0 with Commons Clause - See [LICENSE][licenseUrl]
Created by [Ian Walter](https://iankwalter.com)
[avaUrl]: https://github.com/avajs/ava
[puppeteerUrl]: https://pptr.dev/
[npmImage]: https://img.shields.io/npm/v/@ianwalter/puppeteer-helper.svg
[npmUrl]: https://www.npmjs.com/package/@ianwalter/puppeteer-helper
[bffUrl]: https://github.com/ianwalter/bff
[recipeUrl]: https://github.com/avajs/ava/blob/master/docs/recipes/puppeteer.md
[iwPuppeteerUrl]: https://github.com/ianwalter/puppeteer
[licenseUrl]: https://github.com/ianwalter/puppeteer-helper/blob/master/LICENSE