Каковы правильные настройки конфигурации для автоматизации тестирования параллельно с использованием Protractor? - PullRequest
0 голосов
/ 18 июня 2019

Вот мои настройки.Существует ли правильная настройка для параллельного углового / неуглового теста?Иногда либо мой Firefox, либо Chrome зависает, пока работает другой.Является ли ignoreSynchronization предполагаемым для true и waitForAngular для false ?Я чувствую, что из-за проблемы синхронизации времени происходит зависание одного из браузеров?

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    getPageTimeout: 600000,
    allScriptsTimeout: 500000,
    defaultTimeoutInterval: 30000,
    framework: 'custom',
    // path relative to the current config file
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    multiCapabilities:
    [{
      'browserName': 'firefox',
      specs: 'features/firefox/*.feature',
    },
    {
      'browserName': 'chrome',
      specs: 'features/chrome/*.feature',
    }],
    maxSessions: 2,
    baseUrl: 'https://localhost:8080',
    cucumberOpts: {
      strict: true,
      require: [
        'hooks/hooks.js',
        'specs/*Spec.js'
      ],
      tags: [
        "@runThis", 
        "~@ignoreThis"
      ],
      profile: false,
      format: 'json:./e2e/reports/cucumber-report.json',
      resultJsonOutputFile: './e2e/reports/cucumber-report.json'
    },
    beforeLaunch: function() {
      const fs = require('fs');
      const path = require('path');

      const directory = './e2e/reports';

      //cleans up the json results from the previous build when using node flake
      fs.readdir(directory, (err, files) => {
        if (err) throw err;

        for (const file of files) {
          fs.unlink(path.join(directory, file), err => {
            if (err) throw err;
          });
        }
      });
    },
    onPrepare: function() {
      var chai = require('chai');
      chai.use(require('chai-as-promised'));
      global.expect = chai.expect;
      browser.ignoreSynchronization = true;
      browser.manage().window().maximize();
      browser.waitForAngular(false);           
      browser.manage().timeouts().implicitlyWait(30000); 

    },
    ghostMode:false
}

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Выше приведенных ответов с добавлением shardTestFiles: true, и число maxInstances должно работать.Однако я все же хотел бы подчеркнуть, что если вы используете webdriver-manager для запуска сервера селен (который, я думаю, вы используете на основе адреса селен, указанного в конфигурационном файле), то не ожидайте, что он будет работать так же гладко, как решение с сеткой селена.запускать тесты параллельно в разных браузерах.Webdriver-manager разработан как самое быстрое решение для запуска сервера селен и не является заменой сети селен.

0 голосов
/ 18 июня 2019

browser.ignoreSynchronization устарела, поэтому вам не нужно устанавливать это.Однако вам нужно установить browser.waitForAngularEnabled(false) вместо browser.waitForAngular(false), как у вас в настройках.waitForAngular - это то, что вызывается перед каждым действием, когда waitForAngularEnabled имеет значение true.

Настройте свой onPrepare как

onPrepare: function() {
  var chai = require('chai');
  chai.use(require('chai-as-promised'));
  global.expect = chai.expect;
  browser.manage().window().maximize();
  browser.waitForAngularEnabled(false);           
  browser.manage().timeouts().implicitlyWait(30000); 
},

Ваша конкретная ситуация будет зависеть от того, чего вы пытаетесь достичь с помощью параллельного выполнения.

Эта настройка разделит ваши тесты на два типа браузеров, chrome и firefox, и выполнит ваши тесты параллельно.Он будет поддерживать 3 браузера Chrome и 2 браузера Firefox, работающих одновременно.Тесты делятся в зависимости от того, что закончится первым

multiCapabilities: [
    { browserName: "chrome", shardTestFiles: true, maxInstances: 3 },
    { browserName: "firefox", shardTestFiles: true, maxInstances: 2 },
],
maxSessions: 10, //controls the total number of instances, won't be relevant in this case 

Эта установка выполнит все ваши тесты на ОБА браузере Chrome и Firefox.Если у вас 5 спецификаций, у вас будет 10 результатов.

multiCapabilities: [
    { browserName: "firefox" },
    { browserName: "chrome" },
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...