| /** |
| * @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 './global-types'; |
| import puppeteer, { Page } from 'puppeteer'; |
| |
| describe('Search', () => { |
| let page: Page; |
| |
| beforeAll(async () => { |
| page = await newPage(); |
| await page.goto(baseURL + '/search?q=http'); |
| }); |
| |
| afterAll(async () => { |
| await page.close(); |
| }); |
| |
| test('accessibility tree matches snapshot', async () => { |
| await prepare(page); |
| const a11yTree = await page.accessibility.snapshot(); |
| expect(a11yTree).toMatchSnapshot(); |
| }); |
| |
| test('desktop viewport matches image snapshot', async () => { |
| await prepare(page); |
| const image = await page.screenshot({ fullPage: true }); |
| expect(image).toMatchImageSnapshot(); |
| }); |
| |
| test('mobile viewport matches image snapshot', async () => { |
| await page.emulate(puppeteer.devices['Pixel 2']); |
| await prepare(page); |
| const image = await page.screenshot({ fullPage: true }); |
| expect(image).toMatchImageSnapshot(); |
| }); |
| |
| test('no page errors', () => { |
| expect(pageErrors).toHaveLength(0); |
| }); |
| }); |
| |
| /** |
| * prepare gets the page ready for snapshot tests by rewriting highly |
| * variable page content to constant values. |
| * @param page The page to prepare |
| */ |
| async function prepare(page: Page): Promise<void> { |
| await Promise.all([ |
| page.$$eval('[data-test-id="snippet-title"]', els => |
| els.map(el => { |
| el.innerHTML = 'net/http/pprof'; |
| (el as HTMLAnchorElement).href = 'net/http/pprof'; |
| }) |
| ), |
| page.$$eval('[data-test-id="snippet-synopsis"]', els => |
| els.map(el => { |
| el.innerHTML = |
| 'Package pprof serves via its HTTP server runtime profiling ' + |
| 'data in the format expected by the pprof visualization tool.'; |
| }) |
| ), |
| page.$$eval('[data-test-id="snippet-version"]', els => |
| els.map(el => (el.innerHTML = 'go1.16.3')) |
| ), |
| page.$$eval('[data-test-id="snippet-published"]', els => |
| els.map(el => (el.innerHTML = 'Apr 1, 2021')) |
| ), |
| page.$$eval('[data-test-id="snippet-importedby"]', els => |
| els.map(el => (el.innerHTML = '11632')) |
| ), |
| page.$$eval('[data-test-id="snippet-license"]', els => |
| els.map(el => (el.innerHTML = 'BSD-3-Clause')) |
| ), |
| ]); |
| } |