mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-17 01:33:43 +08:00
77 lines
1.7 KiB
TypeScript
77 lines
1.7 KiB
TypeScript
import fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import { defineConfig, devices } from '@playwright/test';
|
|
|
|
const port = 3301;
|
|
const baseUrl = `http://localhost:${port}`;
|
|
|
|
function findLocalChromiumExecutable() {
|
|
if (process.env.CI) {
|
|
return undefined;
|
|
}
|
|
|
|
const cacheRoot = path.join(os.homedir(), 'Library', 'Caches', 'ms-playwright');
|
|
if (!fs.existsSync(cacheRoot)) {
|
|
return undefined;
|
|
}
|
|
|
|
const installedChromiumDirs = fs.readdirSync(cacheRoot)
|
|
.filter((entry) => entry.startsWith('chromium-'))
|
|
.sort()
|
|
.reverse();
|
|
|
|
for (const chromiumDir of installedChromiumDirs) {
|
|
const executablePath = path.join(
|
|
cacheRoot,
|
|
chromiumDir,
|
|
'chrome-mac',
|
|
'Chromium.app',
|
|
'Contents',
|
|
'MacOS',
|
|
'Chromium',
|
|
);
|
|
|
|
if (fs.existsSync(executablePath)) {
|
|
return executablePath;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
const localChromiumExecutable = findLocalChromiumExecutable();
|
|
|
|
export default defineConfig({
|
|
testDir: './playwright',
|
|
timeout: 30_000,
|
|
expect: {
|
|
timeout: 10_000,
|
|
},
|
|
fullyParallel: false,
|
|
retries: process.env.CI ? 2 : 0,
|
|
use: {
|
|
baseURL: baseUrl,
|
|
trace: 'retain-on-failure',
|
|
launchOptions: localChromiumExecutable
|
|
? {
|
|
executablePath: localChromiumExecutable,
|
|
}
|
|
: undefined,
|
|
},
|
|
webServer: {
|
|
command: `PORT=${port} ACCESS_PASSWORD=playwright-pass AUTH_SECRET=playwright-secret KVIDEO_PUBLIC_RELAY_ENABLED=true npm run dev`,
|
|
url: baseUrl,
|
|
reuseExistingServer: !process.env.CI,
|
|
timeout: 180_000,
|
|
},
|
|
projects: [
|
|
{
|
|
name: 'chromium',
|
|
use: {
|
|
...devices['Desktop Chrome'],
|
|
},
|
|
},
|
|
],
|
|
});
|