3 A Node + Puppeteer 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.
5 See the list of [Docker Hub tags](https://hub.docker.com/r/buildkite/puppeteer/tags/) for Puppeteer versions available.
9 Dockerfile.integration-tests:
12 FROM buildkite/puppeteer:version
14 ENV PATH="${PATH}:/node_modules/.bin"
17 docker-compose.integration-tests.yml:
25 dockerfile: Dockerfile.integration-tests
27 - "./integration-tests:/integration-tests"
29 command: mocha --recursive /integration-tests
33 image: tutum/hello-world
38 integration-tests/index.test.js:
41 const assert = require('assert')
42 const puppeteer = require('puppeteer')
48 browser = await puppeteer.launch({
50 // Required for Docker version of Puppeteer
52 '--disable-setuid-sandbox',
53 // This will write shared memory files into /tmp instead of /dev/shm,
54 // because Docker’s default for /dev/shm is 64MB
55 '--disable-dev-shm-usage'
59 const browserVersion = await browser.version()
60 console.log(`Started ${browserVersion}`)
63 beforeEach(async() => {
64 page = await browser.newPage()
67 afterEach(async() => {
75 describe('App', () => {
76 it('renders', async() => {
77 const response = await page.goto('http://app/')
79 await page.screenshot({ path: `/screenshots/app.png` })
87 docker-compose -f integration-tests run tests