blob: 1c4127505faaf25d7062cdb8799938c163067d2d [file] [log] [blame]
// This is just a sample test to verify that Puppeteer works inside Docker. It
// shows how to use Puppeteer to query the DOM and take screenshots.
//
// TODO(lovisolo): Remove after we have a few real tests.
const expect = require('chai').expect;
const express = require('express');
const launchBrowser = require('./util').launchBrowser;
const takeScreenshot = require('./util').takeScreenshot;
describe('puppeteer', function() {
let browser, page, server;
before(async () => {
server = await startTestServer();
browser = await launchBrowser();
});
after(async () => {
await browser.close();
await server.close();
});
beforeEach(async () => { page = await browser.newPage(); });
afterEach(async () => { await page.close(); });
it('queries the DOM', async () => {
await page.goto(`http://localhost:${server.address().port}`);
expect(await page.$eval('h1', (el) => el.innerText)).to.equal('hello');
expect(await page.$eval('p', (el) => el.innerText)).to.equal('world');
});
it('takes screenshots', async () => {
await page.goto(`http://localhost:${server.address().port}`);
await takeScreenshot(page, 'Test-Puppeteer-Hello-World');
});
});
// Starts an Express server on a random, unused port. Serves a test page.
const startTestServer = () => {
const app = express();
app.get('/', (_, res) => {
res.send(`
<html>
<body>
<h1>hello</h1>
<p>world</p>
</body>
</html>
`);
});
return new Promise((resolve) => {
const server = app.listen(0, () => resolve(server));
});
};