自动启动量角器转轮

时间:2014-04-21 02:37:54

标签: gruntjs

我有一个名为" test"的Grunt任务。此任务的职责是执行端到端测试。目前,如果我在一个单独的命令行窗口中启动grunt-protractor-runner,我可以运行我的测试。我通过执行以下命令开始:

node_modules\grunt-protractor-runner\node_modules\protractor\bin\webdriver-manager start

我的问题是,如果webdriver-manager尚未启动,有没有办法可以将其作为我的grunt任务的一部分启动?如果是这样,怎么样?我已经看过像grunt-contrib-connect这样的任务,但我不知道那些允许我让我的测试服务器作为任务的一部分运行。

2 个答案:

答案 0 :(得分:2)

如果你没有在量角器配置文件中定义seleniumAddress,

量角器会为你启动selenium服务器。

看起来你好像在那里。你的测试'任务应首先使用grunt-contrib-connect启动服务器以服务您要测试的应用程序。然后该任务应使用grunt-protractor-runner启动量角器,量角器将启动selenium服务器(假设seleniumAddress = null)。

如下所示:

connect: {
  test: {
    options: {
      port: 9001,
      base: [
        'app'
      ]
    }
  }
}

protractor: {
  options: {
    keepAlive: true,
    configFile: 'protractor.conf.js'
  },
  run: {}
}

grunt.registerTask('test', [
  'connect:test',
  'protractor:run'
]);

答案 1 :(得分:0)

启动webdriver会自动将以下内容放入您的grunt文件中:

grunt.initConfig: ({
    ..
    protractor: {
        test: {
            options: {
                configFile: 'protractor.conf.js'
            }
        }
    },
    ..    
}    
..
grunt.registerTask('test': ['protractor:test']);

并在您的./protractor.conf.js

中关注
    var chromeDriver =  
        './node_modules/protractor/selenium/chromeDriver';
    var platform = require('os').platform();
    var fs = require('fs');

    var platformChrome = chromeDriver + '-' + platform;
    if (fs.existsSync(platformChrome)){
        log.console('Using ' + platform + ' specific driver ');
        chromeDriver = platformChrome;
    }

    exports.config = {

        directConnect: true,
        chromeDriver: chromeDriver,
        // Capabilities to be passed to the webdriver instance
        capabilities: {
            'browserName': 'chrome',
            'chromeOptions': {
                args: ['--no-sandbox']
            }    
        },
        ..
}

启动你的grunt服务器:

grunt serve;

并在另一个终端开始测试:

grunt test