在Travis的Protractor上对Sauce Labs进行e2e测试

时间:2014-01-02 11:12:53

标签: angularjs selenium protractor saucelabs

所以我有我的开源项目(https://github.com/ahmednuaman/radian),我有一些使用Protractor在本地运行良好的e2e测试。

我已关注Sauce Labs docs并相应地设置了.travis.yml。测试运行直到Protractor尝试连接到Sauce Labs上的selenium服务器,这是错误的简要快照:

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 docs并最终在我的终端中运行了这个:

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

一切都很顺利,exactly the same as on Travis然后当我运行grunt e2e任务时(更新protractor.conf.coffee后与本地Travis配置匹配)并收到与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)

我有一个谷歌,但我找不到其他人有这个问题。那么,这是我的配置吗?它是量角器/网络驱动器问题吗?关注这个问题?

1 个答案:

答案 0 :(得分:24)

好的,重新阅读所有文档后,我发现我的config.seleniumAddress不正确,因为它最后错过了/wd/hub路径;然后我收到了一个新错误:它抱怨我的凭据。

在深入研究Protractor的来源found this doozy之后,如果我指定sauce*,它基本上会删除所有seleniumAddress凭据,因此我将其从配置中删除,再次尝试并且有效! Woop woop!这是Travis的输出,只是为了好玩:https://travis-ci.org/ahmednuaman/radian/jobs/16271613

因此,通过Travis让Protractor在Sauce Labs上运行的方法是使用这些配置选项:

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