angularjs selenium protractor saucelabs

angularjs - Ejecutar pruebas e2e en Sauce Labs de Protractor en Travis



selenium saucelabs (1)

Así que tengo mi proyecto de código abierto ( https://github.com/ahmednuaman/radian ) y tengo algunas pruebas e2e que funcionan bien localmente usando Protractor .

Seguí los documentos de Sauce Labs y configuré mi .travis.yml consecuencia. Las pruebas se ejecutan hasta el punto donde Protractor intenta conectarse al servidor de selenio en Sauce Labs, esta es una breve instantánea del error:

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)

Aquí está el registro completo del trabajo: https://travis-ci.org/ahmednuaman/radian/jobs/16250460

Entonces, lo siguiente que hice fue tratar de emular esto localmente. Leí los documentos de Sauce Labs Connect y finalmente ejecuté esto en mi terminal:

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

Todo comenzó bien, exactamente igual que en Travis, pero como luego ejecuté mi tarea grunt e2e (después de actualizar el protractor.conf.coffee para que coincida con la configuración de Travis localmente) y recibí el mismo error que Travis, aquí hay una instantánea:

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)

Tenía un google alrededor pero no pude encontrar a nadie más con este problema. Entonces, ¿es mi configuración? ¿Es un problema de transportador / webdriver? ¿Te importa arrojar algo de luz sobre esto?


Ok, entonces después de volver a leer todos los documentos encontré que mi config.seleniumAddress era incorrecta ya que faltaba la ruta /wd/hub al final; luego recibí un nuevo error: me quejaba de mis credenciales.

Después de sumergirme en la fuente de Protractor encontré este efecto , básicamente eliminó todas las credenciales de sauce* si especifico una dirección de seleniumAddress , entonces la eliminé de mi configuración, intenté de nuevo y funcionó. ¡Woop Woop! Aquí está la salida de Travis solo por diversión: https://travis-ci.org/ahmednuaman/radian/jobs/16271613

Entonces, la forma de hacer que Protractor se ejecute en Sauce Labs a través de Travis es usar estas opciones de configuración:

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

Y no para agregar una dirección de seleniumAddress .