/**
 * @license
 * Copyright 2020 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 * as pg from './helpers/page';
import { testcases } from './basic.testcases';

testcases('$name accessibility tree', async args => {
  const page = await pg.newPage();
  await pg.a11ySnapshotTest(page, { ...args, mobile: true });
});

testcases('$name screenshot', async args => {
  const page = await pg.newPage();
  await pg.fullScreenshotTest(page, { ...args, mobile: true });
});

test('no page errors', () => {
  expect(pageErrors).toHaveLength(0);
});
