diff --git a/playwright.config.ts b/playwright.config.ts index 6b50337033..72ac46f2ac 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,79 +1,42 @@ -import {devices} from '@playwright/test'; -import {env} from 'node:process'; -import type {PlaywrightTestConfig} from '@playwright/test'; +import { devices } from '@playwright/test'; +import { env } from 'node:process'; +import type { PlaywrightTestConfig } from '@playwright/test'; -const BASE_URL = env.GITEA_URL?.replace?.(/\/$/g, '') || 'http://localhost:3000'; +const BASE_URL = env.DEVSTAR_URL?.replace?.(/\/$/g, '') || 'http://localhost:3000'; export default { - testDir: './tests/e2e/', - testMatch: /.*\.test\.e2e\.ts/, // Match any .test.e2e.ts files - - /* Maximum time one test can run for. */ - timeout: 500000, - + testDir: './specs', + testMatch: /specs\/.*\.ts/, + timeout: 500000, expect: { - - /** - * Maximum time expect() should wait for the condition to be met. - * For example in `await expect(locator).toHaveText();` - */ - timeout: 15000, + timeout: 15000, }, - - /* Fail the build on CI if you accidentally left test.only in the source code. */ forbidOnly: Boolean(env.CI), - - /* Retry on CI only */ retries: env.CI ? 2 : 0, + reporter: env.CI ? 'list' : [['list'], ['html', { + outputFolder: 'playwright-report/html', + open: 'never' + }]], - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: env.CI ? 'list' : [['list'], ['html', {outputFolder: 'tests/e2e/reports/', open: 'never'}]], - - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { - headless: true, // set to false to debug - + headless: true, locale: 'en-US', - - /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ - actionTimeout: 15000, - - /* Maximum time allowed for navigation, such as `page.goto()`. */ - navigationTimeout: 15000, - - /* Base URL to use in actions like `await page.goto('/')`. */ - baseURL: BASE_URL, - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + actionTimeout: 15000, + navigationTimeout: 15000, + baseURL: BASE_URL, trace: 'on-first-retry', - screenshot: 'only-on-failure', }, - - /* Configure projects for major browsers */ projects: [ { name: 'chromium', - - /* Project-specific settings. */ use: { ...devices['Desktop Chrome'], }, }, - - // disabled because of https://github.com/go-gitea/gitea/issues/21355 - // { - // name: 'firefox', - // use: { - // ...devices['Desktop Firefox'], - // }, - // }, - - ], + outputDir: 'playwright-report/test-artifacts/', + snapshotDir: 'playwright-report/test-snapshots/', + globalSetup: require.resolve('./global-setup.ts'), - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - outputDir: 'tests/e2e/test-artifacts/', - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - snapshotDir: 'tests/e2e/test-snapshots/', } satisfies PlaywrightTestConfig; diff --git a/tests/e2e/docker-compose.test.yml b/tests/e2e/docker-compose.test.yml index 22fb127282..da57ef5432 100644 --- a/tests/e2e/docker-compose.test.yml +++ b/tests/e2e/docker-compose.test.yml @@ -43,6 +43,7 @@ services: volumes: # 也挂载 Docker Socket - /var/run/docker.sock:/var/run/docker.sock + - ../../playwright.config.ts:/app/playwright.config.ts # 将测试报告写回到宿主机的 ./reports 目录 - ./reports:/app/playwright-report # 覆盖默认命令,强制运行测试并生成我们想要的报告 diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts deleted file mode 100644 index 5b4fd553dc..0000000000 --- a/tests/e2e/playwright.config.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { devices } from '@playwright/test'; -import { env } from 'node:process'; -import type { PlaywrightTestConfig } from '@playwright/test'; - -const BASE_URL = env.DEVSTAR_URL?.replace?.(/\/$/g, '') || 'http://localhost:3000'; - -export default { - testDir: './specs', - - - testMatch: /specs\/.*\.ts/, - - timeout: 500000, // - expect: { - timeout: 15000, // - }, - forbidOnly: Boolean(env.CI), - retries: env.CI ? 2 : 0, - - reporter: env.CI ? 'list' : [['list'], ['html', { - outputFolder: 'playwright-report/html', // 写入 /app/playwright-report/html - open: 'never' - }]], - - use: { - headless: true, - locale: 'en-US', - actionTimeout: 15000, - navigationTimeout: 15000, - baseURL: BASE_URL, - trace: 'on-first-retry', - screenshot: 'only-on-failure', - }, - projects: [ - { - name: 'chromium', - use: { - ...devices['Desktop Chrome'], - }, - }, - ], - - outputDir: 'playwright-report/test-artifacts/', - snapshotDir: 'playwright-report/test-snapshots/', - globalSetup: require.resolve('./global-setup.ts'), - -} satisfies PlaywrightTestConfig;