xref: /aosp_15_r20/external/perfetto/ui/playwright.config.ts (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project
2*6dbdd20aSAndroid Build Coastguard Worker//
3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*6dbdd20aSAndroid Build Coastguard Worker//
7*6dbdd20aSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*6dbdd20aSAndroid Build Coastguard Worker//
9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License.
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Workerimport {defineConfig} from '@playwright/test';
16*6dbdd20aSAndroid Build Coastguard Workerimport * as os from 'os';
17*6dbdd20aSAndroid Build Coastguard Worker
18*6dbdd20aSAndroid Build Coastguard Workerconst isMac = os.platform() === 'darwin';
19*6dbdd20aSAndroid Build Coastguard Workerconst isCi = Boolean(process.env.CI);
20*6dbdd20aSAndroid Build Coastguard Workerconst outDir = process.env.OUT_DIR ?? '../out/ui';
21*6dbdd20aSAndroid Build Coastguard Worker
22*6dbdd20aSAndroid Build Coastguard Worker// Installed by test/ci/ui_tests.sh
23*6dbdd20aSAndroid Build Coastguard Workerconst ciChromePath = '/ci/ramdisk/chrome/opt/google/chrome/google-chrome';
24*6dbdd20aSAndroid Build Coastguard Worker
25*6dbdd20aSAndroid Build Coastguard Workerexport default defineConfig({
26*6dbdd20aSAndroid Build Coastguard Worker  testDir: './src',
27*6dbdd20aSAndroid Build Coastguard Worker  snapshotDir: '../test/data/ui-screenshots',
28*6dbdd20aSAndroid Build Coastguard Worker  snapshotPathTemplate: '{snapshotDir}/{testFileName}/{testName}/{arg}{ext}',
29*6dbdd20aSAndroid Build Coastguard Worker  outputDir: `${outDir}/ui-test-results`,
30*6dbdd20aSAndroid Build Coastguard Worker  fullyParallel: true,
31*6dbdd20aSAndroid Build Coastguard Worker  retries: isCi ? 2 : 0, // Retry only in CI
32*6dbdd20aSAndroid Build Coastguard Worker  workers: isCi ? 1 : undefined, // No parallelism in CI.
33*6dbdd20aSAndroid Build Coastguard Worker  reporter: [
34*6dbdd20aSAndroid Build Coastguard Worker    [
35*6dbdd20aSAndroid Build Coastguard Worker      'html',
36*6dbdd20aSAndroid Build Coastguard Worker      {
37*6dbdd20aSAndroid Build Coastguard Worker        outputFolder: `${outDir}/ui-test-artifacts`,
38*6dbdd20aSAndroid Build Coastguard Worker        open: isCi ? 'never' : 'on-failure',
39*6dbdd20aSAndroid Build Coastguard Worker      },
40*6dbdd20aSAndroid Build Coastguard Worker    ],
41*6dbdd20aSAndroid Build Coastguard Worker  ],
42*6dbdd20aSAndroid Build Coastguard Worker
43*6dbdd20aSAndroid Build Coastguard Worker  expect: {
44*6dbdd20aSAndroid Build Coastguard Worker    timeout: 5000,
45*6dbdd20aSAndroid Build Coastguard Worker    toHaveScreenshot: {
46*6dbdd20aSAndroid Build Coastguard Worker      // Rendering is not 100% identical on Mac. Be more tolerant.
47*6dbdd20aSAndroid Build Coastguard Worker      maxDiffPixelRatio: isMac ? 0.05 : undefined,
48*6dbdd20aSAndroid Build Coastguard Worker    },
49*6dbdd20aSAndroid Build Coastguard Worker  },
50*6dbdd20aSAndroid Build Coastguard Worker
51*6dbdd20aSAndroid Build Coastguard Worker  use: {
52*6dbdd20aSAndroid Build Coastguard Worker    baseURL: 'http://127.0.0.1:10000',
53*6dbdd20aSAndroid Build Coastguard Worker    trace: 'off',
54*6dbdd20aSAndroid Build Coastguard Worker  },
55*6dbdd20aSAndroid Build Coastguard Worker
56*6dbdd20aSAndroid Build Coastguard Worker  projects: [
57*6dbdd20aSAndroid Build Coastguard Worker    {
58*6dbdd20aSAndroid Build Coastguard Worker      name: 'chromium',
59*6dbdd20aSAndroid Build Coastguard Worker      use: {
60*6dbdd20aSAndroid Build Coastguard Worker        headless: true,
61*6dbdd20aSAndroid Build Coastguard Worker        viewport: {width: 1920, height: 1080},
62*6dbdd20aSAndroid Build Coastguard Worker        launchOptions: {
63*6dbdd20aSAndroid Build Coastguard Worker          executablePath: isCi ? ciChromePath : undefined,
64*6dbdd20aSAndroid Build Coastguard Worker          args: [
65*6dbdd20aSAndroid Build Coastguard Worker            '--disable-accelerated-2d-canvas',
66*6dbdd20aSAndroid Build Coastguard Worker            '--disable-font-subpixel-positioning',
67*6dbdd20aSAndroid Build Coastguard Worker            '--disable-gpu',
68*6dbdd20aSAndroid Build Coastguard Worker            '--disable-lcd-text',
69*6dbdd20aSAndroid Build Coastguard Worker            '--font-render-hinting=none',
70*6dbdd20aSAndroid Build Coastguard Worker            '--force-device-scale-factor=1',
71*6dbdd20aSAndroid Build Coastguard Worker            '--hide-scrollbars',
72*6dbdd20aSAndroid Build Coastguard Worker            '--enable-skia-renderer',
73*6dbdd20aSAndroid Build Coastguard Worker            '--js-flags=--random-seed=1',
74*6dbdd20aSAndroid Build Coastguard Worker          ],
75*6dbdd20aSAndroid Build Coastguard Worker        },
76*6dbdd20aSAndroid Build Coastguard Worker        ignoreHTTPSErrors: true,
77*6dbdd20aSAndroid Build Coastguard Worker        trace: 'off',
78*6dbdd20aSAndroid Build Coastguard Worker        screenshot: 'on',
79*6dbdd20aSAndroid Build Coastguard Worker        channel: 'chrome',
80*6dbdd20aSAndroid Build Coastguard Worker        video: 'off',
81*6dbdd20aSAndroid Build Coastguard Worker      },
82*6dbdd20aSAndroid Build Coastguard Worker    },
83*6dbdd20aSAndroid Build Coastguard Worker  ],
84*6dbdd20aSAndroid Build Coastguard Worker
85*6dbdd20aSAndroid Build Coastguard Worker  webServer: {
86*6dbdd20aSAndroid Build Coastguard Worker    command: './run-dev-server ' + (process.env.DEV_SERVER_ARGS ?? ''),
87*6dbdd20aSAndroid Build Coastguard Worker    url: 'http://127.0.0.1:10000',
88*6dbdd20aSAndroid Build Coastguard Worker    reuseExistingServer: true,
89*6dbdd20aSAndroid Build Coastguard Worker    timeout: 5 * 60 * 1000,
90*6dbdd20aSAndroid Build Coastguard Worker    stdout: 'pipe',
91*6dbdd20aSAndroid Build Coastguard Worker  },
92*6dbdd20aSAndroid Build Coastguard Worker});
93