| /** |
| * @license |
| * Copyright 2021 The Go Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style |
| * license that can be found in the LICENSE file. |
| */ |
| |
| import { Page } from 'puppeteer'; |
| |
| import * as pg from './helpers/page'; |
| import * as unit from './helpers/unit.page'; |
| import { testcases, tab } from './unit.testcases'; |
| |
| const { CI = false } = process.env; |
| |
| let page: Page; |
| |
| beforeAll(async () => { |
| page = await pg.newPage(); |
| await page.setViewport({ height: 1000, width: 500 }); |
| }); |
| |
| afterAll(async () => { |
| await page.close(); |
| }); |
| |
| for (const tc of testcases) { |
| // Snapshot top of unit page. |
| test(`main - ${tc.name} (${tc.path})`, async () => { |
| await page.goto(`${tc.path}`); |
| await unit.prepare(page); |
| const image = await page.screenshot(); |
| expect(image).toMatchImageSnapshot({ customSnapshotIdentifier: snapshotId(tc.path) }); |
| }); |
| |
| // Snapshot additional unit page sections. |
| for (const id of tc.ids) { |
| const path = `${tc.path}${id}`; |
| test(`main - ${tc.name} (${path})`, async () => { |
| await page.goto(path); |
| await unit.prepare(page); |
| const image = await page.screenshot(); |
| expect(image).toMatchImageSnapshot({ customSnapshotIdentifier: snapshotId(path) }); |
| }); |
| } |
| |
| // Snapshot additional unit page tabs. |
| for (const t of tc.tabs) { |
| // Skip versions tab in CI. |
| if (CI && t == tab.VERSIONS) continue; |
| const path = `${tc.path}?tab=${t}`; |
| test(`${t} - ${tc.name} (${path})`, async () => { |
| await page.goto(path); |
| await unit.prepare(page); |
| const image = await page.screenshot(); |
| expect(image).toMatchImageSnapshot({ customSnapshotIdentifier: snapshotId(path) }); |
| }); |
| } |
| } |
| |
| test('no page errors', () => { |
| expect(pageErrors).toHaveLength(0); |
| }); |
| |
| function snapshotId(path: string): string { |
| return 'unit-mobile-' + path.replace(/\//g, '-'); |
| } |