繁体   English   中英

为什么我的功能测试在 Rails、Selenium 和 Spring 上开始缓慢?

[英]Why do my feature tests start slowly with Rails, Selenium and Spring?

我有一个 Rails 5.0.5 应用程序,其中包含使用 Capybara 和 Selenium (chromedriver) 编写的功能测试。 我也在用弹簧。 当我运行我的功能测试时,对我的应用程序的第一个请求大约需要 45 秒,然后,请求时间是正常的。

我想了解为什么第一个请求很慢并使其更快 - 这是一个重大问题。

我已将 selenium 上的日志级别设置为调试: Selenium::WebDriver.logger.level = :debug

然后我看到了这个:

017-10-06 10:40:53 INFO Selenium    >>> http://127.0.0.1:9516/session/d61353b6a9b514302b0146b398250ac6/url | {"url":"http://lvh.me:65483/logout"}
2017-10-06 10:40:53 DEBUG Selenium      > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=utf-8", "Content-Length"=>"36"}
DEPRECATION WARNING: You didn't set `secret_key_base`. Read the upgrade documentation to learn more about this new config option. (called from env_config at /Users/johnnaegle/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.5/lib/rails/application.rb:246)

此时,它点击了我测试中的第一个 URL (/logout) 并且浏览器启动(但挂起)。 rails 进程正在运行,当它完成时,这会显示在服务器日志中:

[e97dc298-2ac5-4f29-b07c-58b0cc4e8827] Started GET "/logout" for 127.0.0.1 at 2017-10-06 10:45:16 -0500
[e97dc298-2ac5-4f29-b07c-58b0cc4e8827] Processing by UserSessionsController#destroy as HTML
[e97dc298-2ac5-4f29-b07c-58b0cc4e8827] Redirected to http://lvh.me:53531/login
[e97dc298-2ac5-4f29-b07c-58b0cc4e8827] Completed 302 Found in 834ms (ActiveRecord: 0.0ms)
[9a296768-7b0a-41f0-9eea-a95414f8a81d] Started GET "/login" for 127.0.0.1 at 2017-10-06 10:45:17 -0500
...
[9a296768-7b0a-41f0-9eea-a95414f8a81d] Completed 200 OK in 43621ms (Views: 43571.7ms | ActiveRecord: 21.8ms)

我在 osx 上。

如果我捆绑 exec 一个 rails 控制台(绕过 spring),急切加载我的应用程序并退出,这需要 22 秒。

我怎样才能弄清楚为什么我的第一个功能测试需要 45 秒 我认为 spring 的重点是使开始时间和第一次请求时间变快,但事实并非如此。

Capybara 需要在单独的线程中启动它自己的应用程序副本以进行测试。 那个启动时间,结合可能触发资产编译的第一个请求(资产在测试模式下而不是在开发模式下编译)就是你所看到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM