Запуск тестов e2e в Sauce Labs из Protractor на Travis

Итак, у меня есть проект с открытым исходным кодом (https://github.com/ahmednuaman/radian), и у меня есть несколько тестов e2e, которые запускаются отлично локально с помощью транспортира.

Я следил за документами Sauce Labs и настроил свой .travis.yml соответственно. Тесты запускаются прямо до того момента, когда Protractor пытается подключиться к серверу selenium в Sauce Labs, это краткий снимок ошибки:

Running "exec:e2e" (exec) task
Using the selenium server at ahmednuaman-radian:06dd4e07-0f52-4fdf-be5e-389f2117bbf5@localhost:4445
>> 
>> timers.js:103
>> if (!process.listeners('uncaughtException').length) throw e;
>> ^
>> TypeError: Cannot read property 'length' of undefined
>>     at HttpClient.send (/home/travis/.nvm/v0.8.26/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:62:16)

Вот полный журнал вакансий: https://travis-ci.org/ahmednuaman/radian/jobs/16250460

Следующее, что я сделал, это попытался сымитировать это локально. Я прочитал документы Sauce Labs Connect и в конечном итоге запустил это в своем терминале:

java -jar ~/bin/Sauce-Connect.jar USERNAME PASSWORD

Все началось нормально, точно так же, как в Travis, но когда я затем выполнил свою grunt e2e задачу (после обновление protractor.conf.coffee для локального соответствия конфигурации Travis) и получил ту же ошибку, что и Трэвис, вот снимок:

Running "exec:e2e" (exec) task
Using the selenium server at ahmednuaman-radian:06dd4e07-0f52-4fdf-be5e-389f2117bbf5@localhost:4445
>> 
>> /Users/ahmed/bin/node/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1542
>>       throw error;
>>             ^
>> TypeError: Cannot read property 'length' of null
>>     at HttpClient.send (/Users/ahmed/bin/node/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:62:16)

У меня был Google, но я не мог найти никого с этой проблемой. Итак, это мой конфиг? Это проблема транспортира / веб-драйвера? Хотите пролить свет на это?


person Ahmed Nuaman    schedule 02.01.2014    source источник


Ответы (1)


Хорошо, поэтому после повторного чтения всех документов я обнаружил, что мой config.seleniumAddress был неправильным, так как в конце отсутствовал путь /wd/hub; затем я получил новую ошибку: он жаловался на мои учетные данные.

Погрузившись в исходный код Protractor, я обнаружил эту глупость, она в основном стирал все sauce* учетные данные, если я указывал seleniumAddress, поэтому я удалил их из своей конфигурации, попробовал еще раз, и это сработало! Woop woop! Вот результат Трэвиса просто для удовольствия: https://travis-ci.org/ahmednuaman/radian/jobs/16271613

Таким образом, способ запустить Protractor в Sauce Labs через Travis - это использовать следующие параметры конфигурации:

config.sauceUser = process.env.SAUCE_USERNAME
config.sauceKey = process.env.SAUCE_ACCESS_KEY
config.capabilities =
  'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER
  'build': process.env.TRAVIS_BUILD_NUMBER

И не добавлять seleniumAddress.

person Ahmed Nuaman    schedule 02.01.2014
comment
Кроме того, вы также можете ввести эти конфигурации в свой файл grunt. Спасибо, вот вышеупомянутое репо, если оно кому-то поможет в будущем; github.com/ahmednuaman/radian - person Delos Chang; 08.08.2014
comment
Спасибо! Я был полностью потрясен поведением по удалению учетных данных. Возможно, для этого должен быть отдельный вопрос / ответ SO? - person Patrick Canfield; 12.03.2015