Playwright 与 github 集成:[WebServer] 错误:supabaseUrl 是必需的

问题描述 投票:0回答:1

我是 Playwright 的新手,我一直在努力与 github 集成。

在 github 操作上执行的作业上,在之前的作业通过后出现以下错误:

Run npx playwright test
[WebServer] Error: supabaseUrl is required.
    at new af (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/chunks/1389.js:1:109082)
    at aw (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/chunks/1389.js:1:112305)
    at 9206 (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/chunks/9206.js:1:11529)
    at t (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/webpack-runtime.js:1:143)
    at 16053 (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/app/api/company/members/route.js:1:1276)
    at t (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/webpack-runtime.js:1:143)
    at r (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/app/api/company/members/route.js:9:2145)
    at /home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/app/api/company/members/route.js:9:2198
    at t.X (/home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/webpack-runtime.js:1:1285)
    at /home/runner/work/company-rock-nextjs/company-rock-nextjs/.next/server/app/api/company/members/route.js:9:2158
[WebServer] 
> Build error occurred
[WebServer] Error: Failed to collect page data for /api/company/members
    at /home/runner/work/company-rock-nextjs/company-rock-nextjs/node_modules/next/dist/build/utils.js:1258:15
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  type: 'Error'
}

Error: Process from config.webServer was not able to start. Exit code: 1


Error: Process completed with exit code 1.

我知道在 playwright.config.ts 中我们必须指定启动服务器的 url:

/* Run your local dev server before starting the tests */
    webServer:[
  {
     command: 'npm run build && npm run start',
     url: 'http://localhost:3000',
     reuseExistingServer: !process.env.CI,
   },
   {
    //I guess something like this:  
    command: 'supabase start',
    url: 'http://127.0.0.1:54321'
   }
  ],

这受到以下启发:[https://playwright.dev/docs/api/class-testconfig#test-config-web-server]

谢谢

github-actions playwright playwright-test
1个回答
0
投票

在运行 playwright 之前,您需要在 GitHub 操作上运行 Supabase。 Playwright 为您使用的任何前端运行您的开发服务器 Nuxt、Vue、Next、Svelte 等,然后运行测试。但您不应该使用它来运行 Supabase。

您可以通过在 GitHub 操作步骤中运行 Supabase 来实现您的需求。我已经包含了用作示例的整个工作流程。该工作流设置 node 和 pnpm,然后设置 Supabase。然后,它从

suapabse status
获取 api url 和密钥,并将它们设置为 .env 文件中的环境变量。然后它运行测试。


name: PR Checks

on:
  pull_request:

jobs:
  install_and_test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Use PNPM
        uses: pnpm/action-setup@v4
        with:
          version: 8

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - name: Setup pnpm cache
        uses: actions/cache@v4
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install dependencies
        run: pnpm install
        
      - name: Set up Supabase
        uses: supabase/[email protected]
      - run: |
        supabase start
        sb_status=$(supabase status)
        api_url=$(echo "$sb_status" | grep -o 'API URL:.*' | awk '{print $3}')
        anon_key=$(echo "$sb_status" | grep -o 'anon key: .*' | awk '{print $3}')
        env_content="SUPABASE_URL=\"$api_url\"\nSUPABASE_ANON_KEY=\"$anon_key\"\n"
        echo -e "$env_content" > .env

      - name: Run e2e Playwright tests
        run: |
          npx playwright install --with-deps
          pnpm test:e2e

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.