通过Grunt将量角器与Yeoman集成

时间:2013-09-28 12:04:13

标签: angularjs gruntjs protractor e2e-testing

我想将Protractor与Yeoman生产的脚手架相结合。我按照教程进行操作,其中较旧的scenario-runner用于设置e2e测试(通过grunt)。

我想升级我的脚手架并改用Protractor 有什么想法吗?

3 个答案:

答案 0 :(得分:85)

  1. protractor安装grunt-protractor-runnernpm

    npm install protractor grunt-protractor-runner --save-dev
    
  2. 为量角器(protractor.conf.js)创建配置文件,将specsbaseUrl更改为您的测试文件和测试服务器:

    exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test/e2e/*_test.js'],
      baseUrl: 'http://localhost:9001' //default test port with Yeoman
    }
    
  3. 更新您的Gruntfile.js,在业力任务后添加以下内容:

    protractor: {
      options: {
        keepAlive: true,
        configFile: "protractor.conf.js"
      },
      run: {}
    }
    
  4. 添加测试中的量角器任务

    grunt.registerTask('test', [
      'clean:server',
      'concurrent:test',
      'autoprefixer',
      'connect:test',
      'karma',
      'protractor:run'
    ]);
    
  5. 下载并启动selenium服务器:

    node_modules/protractor/bin/webdriver-manager update
    node_modules/protractor/bin/webdriver-manager start
    

    (在Windows中:)

    node node_modules/protractor/bin/webdriver-manager update
    node node_modules/protractor/bin/webdriver-manager start
    
  6. 更新package.json,在"devDependencies"之后添加以下内容。这将在npm install之后运行命令,因此您不需要每次都记住。

    "scripts": {
      "install": "node node_modules/protractor/bin/webdriver-manager update"
    }
    
  7. 使用grunt

    运行测试
    grunt test
    
  8. 如果您希望量角器为您启动服务器,请删除

    seleniumAddress: 'http://localhost:4444/wd/hub',
    

    来自protractor.conf.js,然后运行grunt test将在测试期间启动一个独立的selenium实例,并在运行测试套件后退出。

答案 1 :(得分:10)

添加到现有答案的一件事;如果你想自动启动Selenium服务器,你还必须指定你的seleniumServerJar和chromeDriver(如果使用Chrome)的位置,否则测试将无法工作,直到你手动启动Selenium服务器(确保运行“webdriver-管理器首先从命令行更新:

protractor: {
        options: {
            keepAlive: false,
            configFile: "test/config/protractor.conf.js",
            noColor: true, // If true, protractor will not use colors in its output.

            args: {
                seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
                chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe'
            }
        },
        run: {

        }
    },

答案 2 :(得分:5)

正如@user2172816在他们的回答中提到的 - 从量角器配置中省略seleniumAddress: 'http://localhost:4444/wd/hub'通常会导致Protractor为您启动Selenium实例。

作为替代方案,您可以使用grunt-protractor-webdriver启动Selenium:

1)安装并保存 grunt-protractor-webdriver

npm install grunt-protractor-webdriver --save-dev

2)将以下内容添加到您的Grunt定义函数中:

grunt.loadNpmTasks('grunt-protractor-webdriver');

3)添加以下示例量角器webdriver任务:

protractor_webdriver: {
        start: {
            options: {
                path: 'node_modules/protractor/bin/',
                command: 'webdriver-manager start'
            }
        }
    }

4)在运行量角器之前,将protractor_webdriver添加到test任务中。

grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'autoprefixer',
    'connect:test',
    'karma',
    'protractor_webdriver',
    'protractor:run'
]);