Appium, Mocha, Android, JS - Можно ли передавать настройки через командную строку (например, версию Android) при запуске тестов? - PullRequest
0 голосов
/ 15 мая 2018

Я очень новичок в мобильном тестировании, и у меня есть несколько проблем и вопросов.

Проблема 1: У меня есть несколько реальных устройств, на которых я запускаю тесты. Немного раздражает возможность менять версию Android в файле conf при каждом переключении между устройствами.

Вопрос 1: Я хочу пройти версию Android при запуске теста. Когда я пишу тесты на Jasmine + Protractor, я могу настроить это в файле conf следующим образом:

switch (browser.params.env) {
    case 'case1':
      browser.params.url = 'url1';
      break;
    case 'case2':
      browser.params.url = 'url2';
      break;
    }

и запускайте тесты так:

npm run test -- --browser.params.env=case1

Можно ли сделать то же самое в Appium + Mocha? Я пытался использовать флаг - default -abilities , но это не то, что мне нужно.

Проблема 2: Я хочу установить имя пользователя и пароль в качестве переменных среды (нашел пример здесь ), но я не понимаю, как это правильно сделать в Appium? В настоящее время данные пользователей хранятся в отдельном файле:

const users = [
  {
    id: 'someId1',
    pass: 'somePass1'
  }
]

Но я не думаю, что стоит хранить проход в тестах. Так как же использовать эти переменные окружения?

Большое спасибо за помощь.

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете просто создать файл типа caps.js в папке config для хранения матрицы возможностей:

const caps = {}

caps.android6 = {
  platformName: 'Android',
  automationName: 'UiAutomator2',
  deviceName: <device name>,
  appWaitActivity: <activity name>,
  appWaitPackage: <package name>,
  androidInstallTimeout: 90000,
  app: <path to app>
}

caps.android5 = {
  platformName: 'Android',
  platformVersion: '5.0',
  automationName: 'UiAutomator2',
  ...
}

caps.default = {...}


module.exports = caps

если вы используете wd.js, вы можете создать драйвер следующим образом:

const path = require('path')
const caps = require(path.resolve('config','caps'))
const wd = require('wd')
const server = {host: 'localhost', port: 4723}

const capabilities = caps[
  process.env('caps') !== 'undefined'
    ? process.env['caps']
    : 'default'
]
const driver = wd.promiseChainRemote(server)
await driver.init(capabilities)

И когда вы запускаете тесты, вы можете сделать это как export caps=android6 && npm run tests, где tests - это скрипт, который вы указали в package.json для запуска ваших тестов mocha. В этом случае android6 используются данные из caps.js.

Тот же подход, который вы можете использовать для предоставления учетных данных:

export login=user@gmail.com password=124356 && npm run tests

и в своих тестах вы можете прочитать его через process.env

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...