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

同一项目中如何为安卓、iOS原生应用配置codecept.conf.js

CodeceptJS 同项目适配iOS/Android双端原生测试实现方案

核心实现思路

  • 利用CodeceptJS的多环境配置能力,分别定义安卓、iOS两套Appium运行参数,测试用例层完全复用
  • 执行时通过命令行指定运行环境,自动加载对应端的Appium配置与安装包路径
  • 用例编写时采用官方提供的{android: 选择器, ios: 选择器}语法做双端元素适配,不需要修改用例逻辑

具体配置步骤

1. 动态化codecept.conf.js配置

将Appium helper的配置修改为根据环境变量动态加载对应平台参数,无需拆分多个配置文件:

exports.config = {
  tests: './tests/**/*_test.js',
  output: './output',
  helpers: {
    Appium: {
      waitForTimeout: 10000,
      desiredCapabilities: process.env.PLATFORM === 'Android' 
        // 安卓端专属配置
        ? {
          platformName: 'Android',
          deviceName: 'Android Emulator',
          app: './apps/android-demo.apk', // 替换为你的安卓安装包路径
          automationName: 'UiAutomator2',
          noReset: false
        }
        // iOS端专属配置
        : {
          platformName: 'iOS',
          deviceName: 'iPhone 14',
          platformVersion: '16.0',
          app: './apps/ios-demo.ipa', // 替换为你的iOS安装包路径
          automationName: 'XCUITest',
          noReset: false
        }
    }
  },
  include: {
    I: './steps_file.js'
  },
  name: 'mobile-test-project'
}

2. 配置执行命令

在项目package.json中添加对应平台的执行脚本,简化运行操作:

{
  "scripts": {
    "test:android": "cross-env PLATFORM=Android npx codeceptjs run",
    "test:ios": "cross-env PLATFORM=iOS npx codeceptjs run"
  }
}

注:cross-env为跨平台环境变量设置工具,Windows环境可直接使用,无需额外适配系统命令差异。

用例编写规则

直接沿用官方提供的双端选择器语法,同一用例可同时适配两端:

Feature('双端通用测试用例');

Scenario('测试按钮点击', ({ I }) => {
  // 自动匹配当前运行平台的元素选择器
  I.click({
    android: '//android.widget.Button[@text="确认"]', 
    ios: '//XCUIElementTypeButton[@name="确认"]'
  });
  I.see('操作成功', {
    android: '//android.widget.TextView',
    ios: '//XCUIElementTypeStaticText'
  });
});

补充说明

如果需要同时执行两端测试,可使用CodeceptJS原生的并行执行能力,为安卓、iOS分别分配独立执行worker即可,测试用例无需做任何额外修改。

内容的提问来源于stack exchange,提问作者Thomas W Tupper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 10:45:04