2017-10-06 83 views
-1

我有一個使用水豚和硒(chromedriver)編寫的功能測試的Rails 5.0.5應用程序。我也在用春天。當我運行我的功能測試時,第一次請求到我的應用大約需要45秒,然後在這之後,請求時間正常。爲什麼我的功能測試在Rails,Selenium和Spring中慢慢開始?

我想了解爲什麼這個第一個請求很慢,而且速度更快 - 這是一個重大問題。

我設置硒的日誌級別調試: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(/註銷)和瀏覽器啓動(但掛起)。軌道進程正在運行,當它結束時,這顯示在服務器日誌中:

[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軌道控制檯(繞過彈簧),急於加載我的應用程序並退出,這需要22秒。

我怎樣才能找出爲什麼我的第一次功能測試需要45秒?我認爲春季的重點是快速開始時間和首次請求時間,但似乎並非如此。

+2

沒有人欠你評論downvote,他們是匿名的設計。不要再打電話給downvoters「懦夫」,這是[完全不受歡迎](https://stackoverflow.com/help/be-nice)。 – meagar

+0

指出這個問題出了什麼問題會更有用 - 這似乎是一個合理的問題。如果我能提供更多細節,或者以更好的方式提出,我想知道。 –

+0

downvote是不合理的,這是一個真正的實用問題,值得回答和討論。 @meager - 你的評論在技術上是正確的,但完全沒用。懦夫。 – Rob

回答

1

水豚需要在單獨的線程中啓動自己的應用程序副本以進行測試。啓動時間,加上可能引發資產編譯的第一個請求(資產在測試模式下不是以開發模式編譯)就是您所看到的。

+0

感謝您的澄清。無論如何要加快速度? –

+0

除了通常會加速應用程序啓動的事情 - 刪除未使用的寶石等 - 您可以預編譯測試環境中的資產,但這意味着每當您對其進行更改時都會記住這樣做。此外,如果您尚未使用美洲獅作爲您的測試服務器,請嘗試切換到它'Capybara.server =:puma' –