0

所以我试图同时测试桌面和移动设备是否可以使用 codeceptjs 或者我需要一个接一个地运行?

这是我的 codecept 配置文件:-

tests: './*_test.js',
output: './output',
multiple: {
 parallel:{
   // Splits tests into 2 chunks
   chunks:2,
   //Run all tests in chrome and firefox can add internet explorer 11 very slow though
   browsers: ['chrome', 'firefox']   //'internet explorer']
 }
},
helpers: {
 WebDriver: {
   url: 'http://localhost',
   browser: 'chrome',
   Appium: {
     app: '/path/to/app/foo.app',
     platform: 'iOS',
     desiredCapabilities: {
       deviceName: "iPhone 6",
       bundelId: "com.app.foo",
       automationName: "XCUITest",
       autoWebview: false,
       newCommandTimeout: 3600,
       platformVersion: "11.2",
       fullReset: false,
       noReset: true,
       locationServicesEnabled: true
       locationServicesAuthorized: true,
       calendarAccessAuthorized: true
 }
},
include: {
 I: './steps_file.js'
},
bootstrap: null,
mocha: {},
name: 'CodeCeptJs'
}```
4

2 回答 2

1

是的,但我是通过使用 npm 来学习的。

您必须为文件中的每个平台创建脚本package.json以覆盖codecept.conf.js.注释掉文件中的帮助程序中的帮助codecept.conf.js程序。

将以下代码添加到您的package.json文件中。

"scripts": {
"web": "codeceptjs run -c codecept.conf.js --override '{\"helpers\": {\"WebDriver\": {\"url\": \"<your_url>\", \"browser\": \"chrome\", \"host \": \"127.0.0.1\", \"port\": 4444, \"restart\": \"false\", \"windowSize\": \"1920x1680\", \"desiredCapabilities\": {\"chromeOptions\": {\"args\": [\"-disable-gpu\", \"-window-size=1200,1000\", \"-no-sandbox\"]}}}}}'--steps",
"ios": "codeceptjs run -c codecept.conf.js --override '{\"helpers\": {\"Appium\": {\"app\": \"/path/to/app/foo.app\", \"platform\": \"iOS\", \"desiredCapabilities\": {\"deviceName\": \"iPhone 6\", \"bundelId\": \"com.app.foo\", \"automationName\": \"XCUITest\", \"autoWebview\": false, \"newCommandTimeout\": 3600, \"platformVersion\": \"11.2\", \"fullReset\": false, \"noReset\": true, \"locationServicesEnabled\": true, \"locationServicesAuthorized\": true, \"calendarAccessAuthorized\": true}}}}'--steps",
"android": "codeceptjs run -c codecept.conf.js --override '{\"helpers\": {\"Appium\": {\"app\": \"<path_apk>/<name_apk>.apk\", \"platform\": \" Android\", \"device\": \"<code_your_device>\", \"desiredCapabilities\": {\"platformVersion\": \"<version_your_android>\", \"platformName\": \"Android\", \"deviceName\": \"Anyname\", \"appPackage\": \"your_appPackage>\", \"appActivity\": \"<your_appActivity>\"}}}}'--steps"
}

请务必注释掉codecept.conf.js文件中的助手。

要跨平台运行,请使用&运算符运行命令:npm run web & npm run ios

仅运行网络:npm run web

只运行安卓:npm run android

运行网页 iOS:npm run ios

我希望这能解决你的问题。祝你好运o/

于 2019-08-25T13:41:30.393 回答
0

不,您不能一次使用(部分)相同的 API 运行两个助手。一个帮手一个跑。

您可以在 2 个不同的并行作业中并行运行它,例如在 CI 作业中。

还有一个。你不应该设置- 他们是 2 个不同的帮手AppiumWebDriver助手被定义在一个级别

helpers: {
 WebDriver: {
   ...
 },
 REST: {
   ...
 }
},..

但这不适用于一个配置(WebDriver/Appium/Puppeteer/others)中的类似助手(具有类似 API)。您应该使用 2 个配置:一个用于 Appium,一个用于 WebDriver。

于 2019-08-05T17:16:30.937 回答