同一项目中如何为安卓、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
相关产品推荐
相关产品推荐

