]> git.immae.eu Git - github/fretlink/docker-puppeteer.git/blobdiff - README.md
Update dependency puppeteer to v1.12.2
[github/fretlink/docker-puppeteer.git] / README.md
index b58eff51c9cddc930d5b173aac21029167be8f5b..0e47d4e76fa1cbfc167d0c5f5fbf8a9768be76d9 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,18 +1,88 @@
 # Docker Puppeteer
 
-A Puppeteer Docker image based on the code here (Apache 2.0 license):
-https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker
+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.
 
-An example for how to use:
+See the list of [Docker Hub tags](https://hub.docker.com/r/buildkite/puppeteer/tags/) for Puppeteer versions available.
+
+## Usage example
+
+Dockerfile.integration-tests:
 
 ```Dockerfile
-FROM buildkite/puppeteer
+FROM buildkite/puppeteer:version
+RUN  npm i mocha
+ENV  PATH="${PATH}:/node_modules/.bin"
+```
+
+docker-compose.integration-tests.yml:
+
+```yml
+version: '3'
+services:
+  tests:
+    build:
+      context: .
+      dockerfile: Dockerfile.integration-tests
+    volumes:
+      - "./integration-tests:/integration-tests"
+      - "/screenshots"
+    command: mocha --recursive /integration-tests
+    links:
+      - app
+  app:
+    image: tutum/hello-world
+    expose:
+      - "80"
+```
+
+integration-tests/index.test.js:
+
+```js
+const assert = require('assert')
+const puppeteer = require('puppeteer')
+
+let browser
+let page
+
+before(async() => {
+  browser = await puppeteer.launch({
+    args: [
+      // Required for Docker version of Puppeteer
+      '--no-sandbox',
+      '--disable-setuid-sandbox',
+      // This will write shared memory files into /tmp instead of /dev/shm,
+      // because Docker’s default for /dev/shm is 64MB
+      '--disable-dev-shm-usage'
+    ]
+  })
+
+  const browserVersion = await browser.version()
+  console.log(`Started ${browserVersion}`)
+})
+
+beforeEach(async() => {
+  page = await browser.newPage()
+})
+
+afterEach(async() => {
+  await page.close()
+})
+
+after(async() => {
+  await browser.close()
+})
 
-RUN npm install mocha
-ENV PATH="${PATH}:/node_modules/.bin"
+describe('App', () => {
+  it('renders', async() => {
+    const response = await page.goto('http://app/')
+    assert(response.ok())
+    await page.screenshot({ path: `/screenshots/app.png` })
+  })
+})
+```
 
-# The `tests` dir is expected to be mounted into here
-WORK_DIR /home/pptr
+Running:
 
-CMD ["mocha", "--recursive", "tests"]
-```
\ No newline at end of file
+```
+docker-compose -f integration-tests run tests
+```