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