【问题标题】:Running e2e tests on Sauce Labs from Protractor on Travis在 Travis 上的 Protractor 在 Sauce Labs 上运行 e2e 测试
【发布时间】:2014-01-19 19:47:54
【问题描述】:

所以我有我的开源项目 (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)

我有一个谷歌,但我找不到其他人有这个问题。那么,这是我的配置吗?这是量角器/网络驱动程序问题吗?想弄清楚这一点吗?

【问题讨论】:

    标签: angularjs selenium protractor saucelabs


    【解决方案1】:

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

    在深入了解 Protractor 的源代码 I found this doozy 后,如果我指定 seleniumAddress,它基本上会清除所有 sauce* 凭据,因此我将其从配置中删除,再次尝试并成功!呜呜呜!这是 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

    【讨论】:

    • 另外,您也可以在您的 gruntfile 中输入这些配置。谢谢,如果将来对某人有所帮助,这是上述回购; github.com/ahmednuaman/radian
    • 谢谢!我也完全被凭证擦除行为所震撼。也许应该有一个单独的 SO 问题/答案?
    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2014-11-09
    • 2015-12-12
    • 2021-09-23
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    相关资源
    最近更新 更多