2013-09-28 56 views
39

我想将量角器与由Yeoman生产的脚手架集成。我跟着一个教程,其中,旧版本scenario-runner用于设置e2e测试(通过grunt)。通过Grunt集成量角器与Yeoman

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

+0

添加像量角器的入门指南配置文件与说明文件的位置说,然后安装量角器是要走的路。或者你可以检查linemanjs这就像yeoman和量角器内置:) –

+2

对于AngularJs yeoman是好的,我认为是因为它是与建立也是BT他是使用业力e2e测试,我想要使用量角器如何可以集成量角器在yeoman的gruntjs文件中 – user2733090

回答

85
  1. npm安装protractorgrunt-protractor-runner

    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. 下载并启动硒服务器:

    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 test 
    

如果你想量角器为您启动服务器,删除

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

protractor.conf.js,然后运行grunt test将启动测试过程中的独立硒实例,在runni之后退出测试套件。

+3

签出Matt Briggs的[grunt-start-webdriver] [(https://github.com/mbriggs/grunt-start-webdriver/blob/master/README.md)任务。这个咕task任务执行'webdriver-manager start',阻止咕噜声,直到webdriver准备好接受连接。 –

+1

@SteveJansen很好,事实上,如果你不在量角器配置文件中指定seleniumAddress选项,量角器将自动启动服务器,前提是你之前运行过webdriver-manager更新。 – user2172816

+3

我还必须在'grunt.registerTask'上面添加grunt.loadNpmTasks(“grunt-protractor-runner”)' – 2014-06-03 14:43:21

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: { 

     } 
    }, 
+1

我不需要在我的机器上执行此操作。也许是Windows的东西? –

+1

是的,我正在使用Windows,没有上述,服务器不会自动启动。一旦添加,一切正常。 –

+0

@AlwaysLearning你知道mac的两个'args'的文件路径吗? – Danger14

5

由于@user2172816提到了自己的答案 - 从你的量角器配置离开了seleniumAddress: 'http://localhost:4444/wd/hub'通常会导致量角器启动硒实例为您服务。

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

1)安装并保存咕噜,量角器,webdriver的

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

2)添加以下到您的咕噜定义功能:

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

3)添加以下内容比如量角器webdriver的任务:

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

4)运行量角器例如之前添加protractor_webdrivertest任务

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