我正在使用 Cucumber + Ruby + Watir WebDriver + Firefox 测试应用的UI组件。 Jenkins运行时测试失败,每个请求返回 401 Unauthorized 页面,但在手动运行时工作。
CI服务器包括:
当我以Jenkins作业运行Cucumber场景时,浏览器每次都会返回 401 Unauthorized 。
当我从运行Jenkins的同一用户运行与rake
完全相同的bash
命令时,测试工作正常。从Windows桌面(不是无头)运行时,测试也有效。
似乎故障发生在早期,因为当浏览器附加到其配置文件的HTTP代理(WEBrick::HTTPProxyServer
的实现)时,永远不会到达代理回调代码。
有什么想法吗?
新信息:
WebDriver启动一个带有HTTP服务器的Firefox实例来控制它。在启动期间,客户端部分在服务器上创建一个带有某些JSON的HTTP POST到/hub/session
的会话。正是这个请求导致服务器返回401 Unauthorized。
现在弄清楚为什么会在Jenkins作业中发生,而不是从命令行发生。
答案 0 :(得分:0)
听起来你的测试依赖于特定的Firefox配置文件才能正常工作 - 是这样吗?
可能是Jenkins作业启动的Firefox实例未加载正确的配置文件。
此文档表明Watir WebDriver将在每次运行时创建一个新的配置文件:
http://watirwebdriver.com/firefox/
根据相同的文档,您可以指定要加载的配置文件:
b = Watir::Browser.new :firefox, :profile => 'foo'
我打赌该功能使用Firefox" -P"封面下的命令行选项;有关详细信息,请点击此处:
http://kb.mozillazine.org/Starting_Firefox_or_Thunderbird_with_a_specified_profile
答案 1 :(得分:0)
我的问题的原因是HTTP环境设置。 Jenkins被配置为将HTTP_PROXY
注入其运行的作业环境中,并且Ruby HTTP客户端在连接到Firefox WebDriver时使用该代理。
<强>验证强>
当我在执行HTTP_PROXY
之前在shell中设置rake
时,我收到 401 Unauthorized 错误。
<强>解决方案强>
我添加了
NO_PROXY=127.0.0.1
到Jenkins作业的环境并正确执行。