-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add recipe for AVA & Puppeteer (#1913)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com> Co-authored-by: Mark Wubben <mark@novemberborn.net>
- Loading branch information
1 parent
1cc1bd5
commit 6ab6d35
Showing
2 changed files
with
54 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# Testing web apps using Puppeteer | ||
|
||
## Dependencies | ||
|
||
- [Puppeteer](https://github.com/GoogleChrome/puppeteer): `npm install --save-dev puppeteer` | ||
|
||
## Setup | ||
|
||
The first step is setting up a helper to configure the environment: | ||
|
||
`./test/helpers/withPage.js` | ||
|
||
```js | ||
import puppeteer from 'puppeteer'; | ||
|
||
export default async function withPage(t, run) { | ||
const browser = await puppeteer.launch(); | ||
const page = await browser.newPage(); | ||
try { | ||
await run(t, page); | ||
} finally { | ||
await page.close(); | ||
await browser.close(); | ||
} | ||
} | ||
``` | ||
|
||
## Usage example | ||
|
||
`./test/main.js` | ||
|
||
```js | ||
import test from 'ava'; | ||
import withPage from './helpers/withPage'; | ||
|
||
const url = 'https://google.com'; | ||
|
||
test('page title should contain "Google"', withPage, async (t, page) => { | ||
await page.goto(url); | ||
t.true((await page.title()).includes('Google')); | ||
}); | ||
|
||
test('page should contain an element with `#hplogo` selector', withPage, async (t, page) => { | ||
await page.goto(url); | ||
t.not(await page.$('#hplogo'), null); | ||
}); | ||
|
||
test('search form should match the snapshot', withPage, async (t, page) => { | ||
await page.goto(url); | ||
const innerHTML = await page.evaluate(form => form.innerHTML, await page.$('#searchform')); | ||
t.snapshot(innerHTML); | ||
}); | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters