2013-09-28 53 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' 
]);