Protractor - run multiple tests in parallel on different browsers

前端 未结 6 1029
再見小時候
再見小時候 2020-12-05 09:47

I can\'t find any information on how to set this up, but it seems like a pretty basic concept, so I\'m sure there\'s an answer out there.

I know how to run protrac

相关标签:
6条回答
  • 2020-12-05 10:13

    There's new option called multiCapabilities for that:

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

    Here's a complete example.

    0 讨论(0)
  • 2020-12-05 10:14

    using multiCapabilities will run all the tests in each of the browsers. So the configuration below will run every test twice, once in Firefox and once in Chrome:

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

    If you would rather have each test file just run once, but split up among multiple browsers, then use the splitTestsBetweenCapabilities option:

    splitTestsBetweenCapabilities: true
    

    This blog post goes into further detail about the splitTestsBetweenCapabilities

    0 讨论(0)
  • 2020-12-05 10:14

    I had the same problem and I've found that they are adding the feature for parallel execution as we speak! :D

    Take a look at this: https://github.com/angular/protractor/pull/492

    That change was merged to master, but a newer one (512) is still open. As soon as they merge it to master (should be today or tomorrow according to the discussion in the pull request) it should be in your hands :D.

    0 讨论(0)
  • 2020-12-05 10:21

    Update Feb 2014 - This answer is no longer valid. Use Paolo Moretti's answer below.


    There may be a better way to do this but currently I am just executing these as concurrent Grunt tasks.

    1) Add the grunt concurrent plugin

    npm install grunt-concurrent --save-dev
    

    2) Add a task for each browser under grunt.initConfig. We can add the browser as an arg to re-use our configuration file.

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

    3) Register these as tasks;

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

    4) Create your concurrent task under grunt.initConfig

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

    5) Add the grunt task for concurrent

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

    And executing that should give you concurrent protractor tests.

    0 讨论(0)
  • 2020-12-05 10:22

    This is how I achieve this. Simply add the section below to the conf.js file:

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

    shardTestFiles = true causes each spec file to run in a new browser instance. maxInstances is the max number of browsers that can be open at the same time.

    0 讨论(0)
  • 2020-12-05 10:36

    BrowserStack also can be used for this purposes. It has quite detailed start guide: https://www.browserstack.com/automate/node, but it is not free

    0 讨论(0)
提交回复
热议问题