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

GitHub Actions运行WDIO测试失败,提示browser对象未初始化

WebdriverIO测试在GitHub Actions中失败,本地正常的排查与修复

问题描述

在GitHub Actions中执行WebdriverIO测试时失败,但本地运行完全正常。执行过程先出现警告:

WARN @wdio/mocha-framework: Unable to load spec files quite likely because they rely on browser object that is not fully initialised.

最终触发报错:

ERROR @wdio/runner: Error: Unable to load spec files quite likely because they rely on browser object that is not fully initialised.

当前使用的GitHub Actions配置文件如下:

name: CI
on: [push, pull_request]
env:
  SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
  SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
        - name: Checkout
          uses: actions/checkout@v2
        - name: Install Chromium
          run: sudo apt-get install chromium-browser
        - uses: actions/setup-node@v1
          with:
            node-version: 18
        - name: Install
          run: npm install
        - name: Test
          run: npx wdio wdio.git.js
        - uses: actions/upload-artifact@v1
          if: failure()
          with:
            name: logs
            path: logs

仓库地址:https://github.com/saucechaffe/sauceonsauceoff

配置调整方案

1. 修正测试文件对browser对象的使用时机

WebdriverIO的browser对象仅在测试初始化流程完成后才可用。如果测试文件在模块顶层(比如describe块外、导入时直接执行)调用browser相关方法,就会触发初始化未完成的错误——本地环境可能因缓存或加载顺序掩盖了问题,但CI环境是全新构建,问题会直接暴露。

  • 修复方式:所有依赖browser的代码必须放在it/test测试块内,或者before/beforeEach钩子函数中,禁止在模块顶层直接使用。

2. 优化WebdriverIO配置文件(wdio.git.js)

  • 确认specs配置项仅包含需要运行的测试文件,避免加载无关文件导致提前触发browser调用。
  • 若使用ES模块或TypeScript,确保开启autoCompileOpts并配置正确,避免模块编译加载时提前执行代码。
  • 若对接Sauce Labs,检查配置中是否正确添加services: ['sauce'],同时可以在测试步骤前添加变量验证命令,确认环境变量已正确注入:
- name: Verify Sauce Labs credentials
  run: echo "SAUCE_USERNAME: $SAUCE_USERNAME"

3. 升级GitHub Actions环境准备步骤

  • 将Node.js安装动作升级到最新版本(v1版本对Node.js 18支持有限),同时启用依赖缓存加速安装:
- uses: actions/setup-node@v4
  with:
    node-version: 18
    cache: 'npm'
  • 替换手动安装Chromium的步骤为官方浏览器安装动作,确保版本兼容:
- name: Setup Chrome
  uses: browser-actions/setup-chrome@v1
  with:
    chrome-version: latest
  • 使用npm ci代替npm install安装依赖,确保CI环境依赖版本与本地完全一致(需确保项目根目录存在package-lock.json):
- name: Install dependencies
  run: npm ci

4. 增加调试日志定位问题

在测试步骤中开启调试级别的日志,输出更详细的初始化流程,帮助排查browser对象初始化失败的具体环节:

- name: Run tests with debug logs
  run: npx wdio wdio.git.js --logLevel debug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:01:02