Подтвердить что ты не робот

Транспортир - одновременное выполнение нескольких тестов в разных браузерах

Я не могу найти какую-либо информацию о том, как это установить, но это выглядит довольно простой концепцией, поэтому я уверен, что там есть ответ.

Я знаю, как запустить транспортир в разных браузерах, установив свойство browserName объекта capabilities в config. И это отлично работает. Я могу установить его на 'chrome' или 'firefox' или что мне нужно, и он работает так, как ожидалось. Но единственный способ запустить один тестовый пакет для нескольких браузеров (насколько мне известно) - создать отдельные файлы конфигурации, каждый с другим browserName, а затем запустить каждый браузер со своей собственной конфигурацией. Это работает, но его очень медленно, потому что тесты затем выполняются последовательно, а не одновременно.

Есть ли способ запустить его на нескольких браузерах параллельно?

Можно ли это сделать на SauceLabs? или даже с использованием локальной селеновой сетки?

Мы просто пытаемся оптимизировать наш процесс тестирования, и это будет огромной помощью. Любые предложения или информация были бы весьма признательны. Спасибо заранее.

4b9b3361

Ответ 1

Update Feb 2014 - Этот ответ больше не действителен. Используйте Паоло Моретти ниже.


Там может быть лучший способ сделать это, но в настоящее время я просто выполняю их как параллельные задачи Grunt.

1) Добавьте параллельный плагин grunt

npm install grunt-concurrent --save-dev

2) Добавьте задачу для каждого браузера под grunt.initConfig. Мы можем добавить браузер в качестве аргумента для повторного использования нашего файла конфигурации.

protractor: {
        options: {
            keepAlive: true,
            singleRun: false,
            configFile: "test/protractor.conf.js"
        },
        run_chrome: {
            options: {
                args: {
                    browser: "chrome"
                }
            }
        },
        run_firefox: {
            options: {
                args: {
                    browser: "firefox"
                }
            }
        }
    },

3) Зарегистрируйте их как задачи;

grunt.registerTask('protractor-chrome', ['protractor:run_chrome']);
grunt.registerTask('protractor-firefox', ['protractor:run_firefox']);

4) Создайте свою параллельную задачу в grunt.initConfig

concurrent: {
        protractor_test: ['protractor-chrome', 'protractor-firefox']
    },

5) Добавьте задачу grunt для параллельного

grunt.registerTask('protractor-e2e', ['concurrent:protractor_test']);

И выполнение, которое должно дать вам параллельные тесты транспортира.

Ответ 2

Появилась новая опция multiCapabilities для этого:

multiCapabilities: [{
  'browserName': 'chrome'
}, {
  'browserName': 'firefox'
}],

Здесь полный пример.

Ответ 3

с помощью multiCapabilities будут запускать все тесты в каждом из браузеров. Таким образом, приведенная ниже конфигурация будет запускать каждый тест дважды, один раз в Firefox и один раз в Chrome:

multiCapabilities: [{
  'browserName': 'chrome'
}, {
  'browserName': 'firefox'
}],

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

splitTestsBetweenCapabilities: true

В этом сообщении в блоге подробно рассматривается splitTestsBetweenCapabilities

Ответ 4

У меня была такая же проблема, и я обнаружил, что они добавляют функцию для параллельного выполнения, когда мы говорим!: D

Взгляните на это: https://github.com/angular/protractor/pull/492

Это изменение было объединено с мастером, но новый (512) все еще открыт. Как только они сливаются, чтобы овладеть (должно быть сегодня или завтра в соответствии с обсуждением в запросе на растяжение), это должно быть в ваших руках: D.

Ответ 5

BrowserStack также может использоваться для этих целей. Он имеет довольно подробное руководство по началу работы: https://www.browserstack.com/automate/node, но он не является бесплатным

Ответ 6

Вот как я это достигаю. Просто добавьте раздел ниже в файл conf.js:

capabilities: {
  browserName: 'chrome',
  shardTestFiles: true,
  maxInstances: 1
}

shardTestFiles = true заставляет каждый файл спецификации запускаться в новом экземпляре браузера. maxInstances - максимальное количество браузеров, которые могут быть открыты одновременно.