【发布时间】:2017-12-20 08:29:55
【问题描述】:
我在 Wallaby 测试中遇到了几个 Postgres 超时问题。我得到的错误是:
[error] Postgrex.Protocol (#PID<0.349.0>) disconnected: ** (DBConnection.ConnectionError) owner #PID<0.566.0> timed out because it owned the connection for longer than 15000ms
当我尝试使用assert_has(link("Sign Out") 之类的 CSS 断言链接 click(button("Submit")) 事件时(我认为我在提交表单时遇到问题的所有事件,<a> 链接似乎都可以正常工作)时,它会在本地发生.如果我从上下文中传递会话而不是将两者连接在一起,那似乎没问题。但是,它在 CI 服务器 (Travis) 上仍然失败。
听起来有点像上面描述的问题(“在我们的测试套件中,通常会出现执行操作的错误,并且在没有等待操作完成的情况下进入另一个页面,从而产生竞争条件”),但它始终失败或成功,而不是不稳定,所以我想知道是否没有我缺少的东西。
这是失败的 PR,如果您想查看实际代码:https://github.com/solid-af/cheese_log/pull/18
我还应该提到(在本地测试时)看起来超时后失败的断言应该是成功的。如果我在RegistrationPage.register_with 中删除会话的显式返回,则失败的行是RegistrationPage.assert_registered()。我打开了screenshot_on_failure。该截图显示了已填写但未提交的表单,而上面的手动take_screenshot() 行显示了带有“成功注册”文本的主页。超级诡异!
|> RegistrationPage.register_with(@valid_attrs)
|> take_screenshot()
|> RegistrationPage.assert_registered()
编辑:虽然我在本地遇到的问题似乎与我在 CI 上遇到的问题无关。如下所述,这可能与连接以某种方式保持登录状态有关。
【问题讨论】:
-
你能从你的帖子中删除
phoenix标签吗?此标签属于 Phoenix 数据库。
标签: postgresql elixir phoenix-framework wallaby.js