You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright测试在CI中报net::ERR_CONNECTION_REFUSED但本地正常

Playwright在GitHub Actions CI中出现net::ERR_CONNECTION_REFUSED错误

本地在http://localhost:3000运行Playwright测试完全正常,但在GitHub Actions流水线中测试失败,报错:

Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:3000/

环境信息

本地环境

  • 系统:macOS
  • Node.js版本:16
  • Playwright版本:1.39.0

CI环境

  • 平台:GitHub Actions
  • Node.js版本:16
  • Playwright版本:1.39.0

配置文件

playwright.config.js

const { devices } = require('@playwright/test');

const baseURL = 'http://localhost:3000/en/';

const config = {
  testDir: './tests',

  timeout: 30 * 1000,
  expect: {
    timeout: 5000
  },

  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: 'html',
  use: {
    actionTimeout: 0,
    baseURL: baseURL,
    trace: 'on',
    locale: 'en-US'
  },

  projects: [
    {
      name: 'chromium',
      use: {
        ...devices['Desktop Chrome']
      }
    },

    {
      name: 'Chrome Half Size',
      use: {
        ...devices['Desktop Chrome'],
        viewport: { width: 800, height: 600 }, // Half size viewport
      },
    },

    {
      name: 'Mobile Chrome',
      use: { ...devices['Pixel 5'] },
    },

    {
      name: 'Mobile Safari',
      use: { ...devices['iPhone 12'] },
    },

  ],

  outputDir: 'test-results/',

  webServer: {
    command: 'yarn dev',
    timeout: 120 * 1000,
    reuseExistingServer: !process.env.CI,
    url: baseURL
    // port: 3000,
  }
};

module.exports = config;

GitHub Actions工作流文件

name: Playwright Tests
on:
  push:
    branches: [main, master, actions]
  pull_request:
    branches: [main, master, actions]
jobs:
  test:
    timeout-minutes: 60
    runs-on: ubuntu-latest

    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: cityflagv2
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    env:
      DB_MONGO_URL: ${{ secrets.DB_MONGO_URL }}
      SECRET_COOKIE_PASSWORD: ${{ secrets.SECRET_COOKIE_PASSWORD }}
      SENTRY_URL: ${{ secrets.SENTRY_URL }}
      SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
      SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
      SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
      BASE_URL: ${{ secrets.BASE_URL }}
      MYSQL_HOST: ${{ secrets.MYSQL_HOST }}
      MYSQL_DB: ${{ secrets.MYSQL_DB }}
      MYSQL_USER: ${{ secrets.MYSQL_USER }}
      MYSQL_PASS: ${{ secrets.MYSQL_PASS }}
      MYSQL_CONNECTION_LIMIT: 10
      
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - name: Verify DB exists
        run: mysql --host 127.0.0.1 --port 3306 -uroot -proot -e "SHOW DATABASES LIKE 'cityflagv2'"
      - name: Install dependencies
        run: npm config set "@fortawesome:registry" https://npm.fontawesome.com/ && npm config set "//npm.fontawesome.com/:_authToken" "${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}" && yarn install
      - name: Lint
        run: yarn lint
      - name: Install Playwright Browsers
        run: yarn playwright install --with-deps
      - name: Run Playwright tests
        run: npx playwright test tests/index.spec.js
      - uses: actions/upload-artifact@v4
        if: ${{ !cancelled() }}
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 30

  deploy:
    needs: test
    name: Deploy
    runs-on: self-hosted
    steps:
      - run: cd /home/ubuntu/irysteams && git pull
      - run: cd /home/ubuntu/irysteams && yarn install
      - run: cd /home/ubuntu/irysteams && yarn prestart
      - run: pm2 reload name

已采取的排查步骤

  • 确认服务器启动正常
  • 添加等待时间确保服务器就绪后再运行测试
  • 检查端口冲突,确保无其他进程占用3000端口
  • 对比本地与CI的环境配置

观察结果

  • 失败测试的网络追踪中地址栏为空
  • 配置中的baseURL设置正确

疑问

为何CI流水线中会出现net::ERR_CONNECTION_REFUSED错误,而本地正常?仅Chromium浏览器测试通过,其余两个在page.goto("/")时失败。


内容的提问来源于stack exchange,提问作者Choudhry18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:40:14