diff options
Diffstat (limited to 'example')
-rw-r--r-- | example/Dockerfile.integration-tests | 3 | ||||
-rw-r--r-- | example/README.md | 17 | ||||
-rw-r--r-- | example/docker-compose.integration-tests.yml | 16 | ||||
-rw-r--r-- | example/integration-tests/index.test.js | 41 |
4 files changed, 77 insertions, 0 deletions
diff --git a/example/Dockerfile.integration-tests b/example/Dockerfile.integration-tests new file mode 100644 index 0000000..41de685 --- /dev/null +++ b/example/Dockerfile.integration-tests | |||
@@ -0,0 +1,3 @@ | |||
1 | FROM buildkite/puppeteer:latest | ||
2 | RUN npm i mocha | ||
3 | ENV PATH="${PATH}:/node_modules/.bin" \ No newline at end of file | ||
diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..3f1c735 --- /dev/null +++ b/example/README.md | |||
@@ -0,0 +1,17 @@ | |||
1 | # Docker Puppeteer Example | ||
2 | |||
3 | This as an example of using the Docker Puppeteer docker image to run Mocha tests against a linked Docker Compose web service, and capturing a screenshot into a local `./screenshots` directory. | ||
4 | |||
5 | ## Running | ||
6 | |||
7 | ```shell | ||
8 | # Clone this example | ||
9 | git clone https://github.com/buildkite/docker-puppeteer.git | ||
10 | cd docker-puppeteer/example | ||
11 | |||
12 | # Build and run the example tests | ||
13 | docker-compose -f docker-compose.integration-tests.yml run tests | ||
14 | |||
15 | # See the screen that was generated | ||
16 | ls screenshots/ | ||
17 | ``` | ||
diff --git a/example/docker-compose.integration-tests.yml b/example/docker-compose.integration-tests.yml new file mode 100644 index 0000000..074f4d1 --- /dev/null +++ b/example/docker-compose.integration-tests.yml | |||
@@ -0,0 +1,16 @@ | |||
1 | version: '3' | ||
2 | services: | ||
3 | tests: | ||
4 | build: | ||
5 | context: . | ||
6 | dockerfile: Dockerfile.integration-tests | ||
7 | volumes: | ||
8 | - "./integration-tests:/integration-tests" | ||
9 | - "./screenshots:/screenshots" | ||
10 | command: "wait-for-it.sh app:80 -- mocha --recursive /integration-tests" | ||
11 | links: | ||
12 | - app | ||
13 | app: | ||
14 | image: tutum/hello-world | ||
15 | expose: | ||
16 | - "80" | ||
diff --git a/example/integration-tests/index.test.js b/example/integration-tests/index.test.js new file mode 100644 index 0000000..dd39d8a --- /dev/null +++ b/example/integration-tests/index.test.js | |||
@@ -0,0 +1,41 @@ | |||
1 | const assert = require('assert') | ||
2 | const puppeteer = require('puppeteer') | ||
3 | |||
4 | let browser | ||
5 | let page | ||
6 | |||
7 | before(async() => { | ||
8 | browser = await puppeteer.launch({ | ||
9 | args: [ | ||
10 | // Required for Docker version of Puppeteer | ||
11 | '--no-sandbox', | ||
12 | '--disable-setuid-sandbox', | ||
13 | // This will write shared memory files into /tmp instead of /dev/shm, | ||
14 | // because Docker’s default for /dev/shm is 64MB | ||
15 | '--disable-dev-shm-usage' | ||
16 | ] | ||
17 | }) | ||
18 | |||
19 | const browserVersion = await browser.version() | ||
20 | console.log(`Started ${browserVersion}`) | ||
21 | }) | ||
22 | |||
23 | beforeEach(async() => { | ||
24 | page = await browser.newPage() | ||
25 | }) | ||
26 | |||
27 | afterEach(async() => { | ||
28 | await page.close() | ||
29 | }) | ||
30 | |||
31 | after(async() => { | ||
32 | await browser.close() | ||
33 | }) | ||
34 | |||
35 | describe('App', () => { | ||
36 | it('renders', async() => { | ||
37 | const response = await page.goto('http://app/') | ||
38 | assert(response.ok()) | ||
39 | await page.screenshot({ path: `/screenshots/app.png` }) | ||
40 | }) | ||
41 | }) \ No newline at end of file | ||