Подтвердить что ты не робот

Интеграция транспортера с Йоменом через грунт

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

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

4b9b3361

Ответ 1

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

    npm install protractor grunt-protractor-runner --save-dev
    
  • Создайте файл конфигурации для транспортиратора (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
    }
    
  • Обновите свой Gruntfile.js, добавьте следующее после задачи кармы:

    protractor: {
      options: {
        keepAlive: true,
        configFile: "protractor.conf.js"
      },
      run: {}
    }
    
  • Добавьте задачу проверки транспортира

    grunt.registerTask('test', [
      'clean:server',
      'concurrent:test',
      'autoprefixer',
      'connect:test',
      'karma',
      'protractor:run'
    ]);
    
  • Загрузите и запустите сервер 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
    
  • Обновите свой package.json, добавьте следующее после "devDependencies". Это запустит команду после npm install, поэтому вам не нужно запоминать каждый раз.

    "scripts": {
      "install": "node node_modules/protractor/bin/webdriver-manager update"
    }
    
  • Запустите тест с помощью grunt

    grunt test
    

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

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

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

Ответ 2

Одна вещь добавить к существующему ответу; если вы хотите запустить сервер 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: {

        }
    },

Ответ 3

Как @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) Добавьте следующую примерную задачу веб-ретранслятора:

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'
]);