]> git.immae.eu Git - github/fretlink/docker-puppeteer.git/blame_incremental - README.md
Update README.md
[github/fretlink/docker-puppeteer.git] / README.md
... / ...
CommitLineData
1# Docker Puppeteer
2
3A base image for running Puppeteer scripts. Add your own tools (such as Jest, Mocha, etc), link services you want to test via Docker Compose, and run your Puppeteer scripts with a headless Chromium.
4
5## Usage example
6
7Dockerfile.integration-tests:
8
9```Dockerfile
10FROM buildkite/puppeteer:version
11RUN npm i mocha
12ENV PATH="${PATH}:/node_modules/.bin"
13```
14
15docker-compose.integration-tests.yml:
16
17```yml
18version: '3'
19services:
20 tests:
21 build:
22 context: .
23 dockerfile: Dockerfile.integration-tests
24 volumes:
25 - "./integration-tests:/integration-tests"
26 - "/screenshots"
27 command: mocha --recursive /integration-tests
28 links:
29 - app
30 app:
31 image: tutum/hello-world
32 expose:
33 - "80"
34```
35
36integration-tests/index.test.js:
37
38```js
39const assert = require('assert')
40const puppeteer = require('puppeteer')
41
42let browser
43let page
44
45before(async() => {
46 browser = await puppeteer.launch({
47 args: [
48 // Required for Docker version of Puppeteer
49 '--no-sandbox',
50 '--disable-setuid-sandbox',
51 // This will write shared memory files into /tmp instead of /dev/shm,
52 // because Docker’s default for /dev/shm is 64MB
53 '--disable-dev-shm-usage'
54 ]
55 })
56
57 const browserVersion = await browser.version()
58 console.log(`Started ${browserVersion}`)
59})
60
61beforeEach(async() => {
62 page = await browser.newPage()
63})
64
65afterEach(async() => {
66 await page.close()
67})
68
69after(async() => {
70 await browser.close()
71})
72
73describe('App', () => {
74 it('renders', async() => {
75 const response = await page.goto('http://app/')
76 assert(response.ok())
77 await page.screenshot({ path: `/screenshots/app.png` })
78 })
79})
80```
81
82Running:
83
84```
85docker-compose -f integration-tests run tests
86```