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

WDIO同时运行基础配置与子配置,如何仅执行子配置?

WDIO 8子配置执行重复测试问题解决办法

问题场景

用Node 16搭配WDIO 8搭建测试框架,为统一配置做了wdio.conf.base基础配置文件,让子配置继承它的设置。但运行子配置时会跑两套完全一样的测试——一套基于基础配置执行,另一套基于合并后的子配置执行。删掉配置里的重复条目后问题依旧,推测是导入基础配置时它被直接评估执行,合并后又再次触发执行导致。

子配置代码:

import wdioConf = require('./wdio.conf')

// 以主配置为基础,覆盖环境特定信息
export const config = deepmerge(wdioConf.config, {
    user: process.env.LT_USERNAME || "YOUR LAMBDATEST USERNAME",
    key: process.env.LT_ACCESS_KEY || "YOUR LAMBDATEST ACCESS KEY",
    capabilities: [{
        browserName: "chrome",
        browserVersion: "114.0",
        "path": "/wd/hub",
        "hostname": "hub.lambdatest.com",
        "port": 80,
        "LT:Options": {
            "platformName": "Windows 10",
            "project": "LambdaPOC",
            "build": "Implementation 1",
            "w3c": true,
            "plugin": "node_js-webdriverio",
            "tunnel": true
        }
    }],
}, { clone: false })

package.json运行脚本:

"wdio-lambda-chrome": "wdio run test/webdriver/wdio.lambda.chrome.conf.ts"

解决步骤

1. 避免基础配置被WDIO自动加载

WDIO会自动识别wdio.conf.ts这类命名的文件作为配置文件执行,这是核心问题:

  • 把基础配置文件重命名为非默认识别的名称,比如wdio.conf.base.ts,防止WDIO单独加载它。
  • 确保基础配置仅作为模块被子配置导入,不成为独立的可执行配置。

2. 调整合并逻辑并确保配置唯一性

修改子配置的导入和合并方式,避免原配置对象被意外复用:

import wdioBaseConf from './wdio.conf.base.ts'
import deepmerge from 'deepmerge'

export const config = deepmerge(wdioBaseConf.config, {
    user: process.env.LT_USERNAME || "YOUR LAMBDATEST USERNAME",
    key: process.env.LT_ACCESS_KEY || "YOUR LAMBDATEST ACCESS KEY",
    capabilities: [{
        browserName: "chrome",
        browserVersion: "114.0",
        "path": "/wd/hub",
        "hostname": "hub.lambdatest.com",
        "port": 80,
        "LT:Options": {
            "platformName": "Windows 10",
            "project": "LambdaPOC",
            "build": "Implementation 1",
            "w3c": true,
            "plugin": "node_js-webdriverio",
            "tunnel": true
        }
    }],
    // 明确指定测试文件路径,避免重复引入
    specs: ['./test/**/*.spec.ts']
}, { clone: true }) // 开启clone,防止修改原基础配置对象引发意外

3. 确认执行入口唯一

运行测试时,确保只传入子配置文件作为入口:

"wdio-lambda-chrome": "wdio run test/webdriver/wdio.lambda.chrome.conf.ts"

不要让WDIO同时检测到基础配置和子配置,比如不要把基础配置放在WDIO默认扫描的目录下,或者通过--config参数明确指定子配置路径。

4. 检查基础配置中的执行代码

排查wdio.conf.base里是否有立即执行的代码(比如IIFE、直接调用的函数),如果有就删掉,保证基础配置只导出配置对象,不执行任何测试相关逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:47:46