]> git.immae.eu Git - github/fretlink/docker-puppeteer.git/blob - README.md
Update README.md
[github/fretlink/docker-puppeteer.git] / README.md
1 # Docker Puppeteer
2
3 A 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
7 Dockerfile.integration-tests:
8
9 ```Dockerfile
10 FROM buildkite/puppeteer:version
11 RUN npm i mocha
12 ENV PATH="${PATH}:/node_modules/.bin"
13 ```
14
15 docker-compose.integration-tests.yml:
16
17 ```yml
18 version: '3'
19 services:
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
36 integration-tests/index.test.js:
37
38 ```js
39 const assert = require('assert')
40 const puppeteer = require('puppeteer')
41
42 let browser
43 let page
44
45 before(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
61 beforeEach(async() => {
62 page = await browser.newPage()
63 })
64
65 afterEach(async() => {
66 await page.close()
67 })
68
69 after(async() => {
70 await browser.close()
71 })
72
73 describe('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
82 Running:
83
84 ```
85 docker-compose -f integration-tests run tests
86 ```