2013-09-28 3 views
39

Я хочу интегрировать Транспортир с эшафотом, созданным Йоменом. Я следил за учебником, и в нем старшие scenario-runner использовались для настройки тестирования e2e (через grunt).Интеграция транспортира с йоменом через грунт

Я хотел бы обновить мой эшафот и вместо этого использовать Транспортер.
Любые мысли?

+0

Добавление файла конфигурации, такого как руководство по запуску транспортира, говорит о расположении ваших файлов спецификаций, а затем установка транспортира - это путь. Или вы можете проверить linemanjs, который похож на yoman и имеет встроенный транспортер :) –

+2

Для AngularJs yoman это хорошо, я думаю, потому что он приходит с сборкой, а также использует карму для тестов e2e, и я хочу использовать транспортир, как можно интегрировать транспортир в файле gruntjs в yeoman – user2733090

ответ

85
  1. Установите protractor и grunt-protractor-runner из npm:

    npm install protractor grunt-protractor-runner --save-dev 
    
  2. Создайте конфигурационный файл для транспортир (protractor.conf.js), изменить specs и baseUrl для тестовых файлов и тестовый сервер:

    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

    grunt test 
    

Если вы хотите транспортир, чтобы запустить сервер для вас, удалить

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

из protractor.conf.js, затем запустить grunt test начнет автономный экземпляр селена во время теста и выйти из него после runni набор тестов.

+3

Оформить заказ Matt Griggs [grunt-start-webdriver] [(https://github.com/mbriggs/grunt-start-webdriver/blob/master/README.md). Эта задача grunt запускает запуск webdriver-manager, блокируя сборку grunt до тех пор, пока webdriver не будет готов принимать соединения. –

+1

@SteveJansen Приятно, на самом деле, если вы не указали параметр seleniumAddress в файле конфигурации protractor, транспортир автоматически запустит сервер, если раньше вы запускали обновление webdriver-manager. – user2172816

+3

Мне также пришлось добавить 'grunt.loadNpmTasks (" grunt-protractor-runner ")' над 'grunt.registerTask' –

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 Знаете ли вы путь к файлу для двух 'args' для mac? – Danger14

5

Как @user2172816 упоминает в своем ответе - выходя из seleniumAddress: 'http://localhost:4444/wd/hub' из транспортиром конфигурации обычно вызывает транспортир для запуска экземпляра Selenium для вас.

В качестве альтернативы можно использовать grunt-protractor-webdriver начать Селен:

1) Установить и сохранить хрюкать-транспортир-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' 
]); 
Смежные вопросы