t.me/atinfo_chat Telegram группа по автоматизации тестирования

Можно ли запустить паралельно тесты используя appium + webdriverio + ios (simulator)

appium
ios
javascript
webdriver
Теги: #<Tag:0x00007fb3083a0300> #<Tag:0x00007fb3083a0170> #<Tag:0x00007fb3083a29c0> #<Tag:0x00007fb3083a11d8>

#1

Всем привет.

Столкнулся с проблемой запуска тестов на нескольких симуляторах ios одновременно (на одной локальной машине).
К сожалению, не могу нагуглить как это сделать. Кто-то сталкивался с подобной задачей?


(Vladislav Sobol) #2

Не скажу конкретно о симуляторах, но думаю подход должен быть таким же как и с реальным девайсом.

  1. Стартуем для каждого девайса отдельный аппиум на разных портах
  2. Задаем для каждого девайса отдельные порты ( wda port, bootstrap port и тд)
  3. Запускаем тесты в нескольких потоках

#3

Появилась новая проблема, тесты выполняются не совсем параллельно. Т.е. например есть 3 симулятора и 3 теста, по идее каждый симулятор должен взять по 1-му тесту (Так я ожидал) Но вместо этого 3 теста проходили на каждом симуляторе, в итоге было запущено не 3 теста на 3 симуляторах, а 9 тестов на 3-х симуляторах.


(Vladislav Sobol) #4

Хотелось бы посмотреть как вы задаете паралельность выполнения тестов.


#5

да вот в принципе никак) А как надо?

вот мои конфиги:

Возможно надо использовать каким-то образом конфиги WebdriverIO, поскольку я его указываю его когда мои тесты запускаются:
./node_modules/.bin/wdio ./ui-tests/src/mobile-e2e/config/wdio.ios.browser.conf.js

exports.config = {
  // ====================
  // Runner and framework
  // Configuration
  // ====================
  runner: 'local',
  framework: 'jasmine',
  jasmineNodeOpts: {
    // Updated the timeout to 30 seconds due to possible longer appium calls
    // When using XPATH
    defaultTimeoutInterval: 90000,
    requireModule: ['@babel/register'],
  },
  sync: true,
  logLevel: 'debug',
  deprecationWarnings: true,
  bail: 0,
  baseUrl: 'http://localhost:3000/',
  waitforTimeout: 10000,
  connectionRetryTimeout: 90000,
  connectionRetryCount: 1,
  reporters: [ 'spec' ],

  // ====================
  // Appium Configuration
  // ====================
  services: [ 'appium' ],
  appium: {
    args: {
      // For arguments see
      // https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-appium-service
    },
    command: 'appium',
  },

  port: 4729,

  // ====================
  // Some hooks
  // ====================
  // beforeSession: (config, capabilities, specs) => {
  //     require('@babel/register');
  // },
};


const { config } = require('./wdio.shared.conf');

// ============
// Specs
// ============
config.specs = [
  './ui-tests/src/mobile-e2e/specs/**/*.spec.js',
];

// ============
// Capabilities
// ============
config.capabilities = [
  {
    browserName: 'safari',
    platformName: 'iOS',
    maxInstances: 1,
    wdaLocalPort: 8100,
    'appium:deviceName': 'iPhone X',
    'appium:platformVersion': '12.4',
    'appium:orientation': 'PORTRAIT',
    'appium:automationName': 'XCUITest',
    'appium:newCommandTimeout': 240,
  },
  {
    browserName: 'safari',
    platformName: 'iOS',
    maxInstances: 1,
    wdaLocalPort: 8200,
    'appium:deviceName': 'iPhone 5s',
    'appium:platformVersion': '11.4',
    'appium:orientation': 'PORTRAIT',
    'appium:automationName': 'XCUITest',
    'appium:newCommandTimeout': 240,
  },
];

exports.config = config;