【问题标题】:How to speed up first request for local Rails UI tests如何加快本地 Rails UI 测试的首次请求
【发布时间】:2015-05-28 08:35:17
【问题描述】:

我正在使用菠菜、Capybara 和 Poltergeist 一起编写自动化 UI 测试。我一直在尝试加快本地运行测试的速度。我正在使用 Spring,它对环境加载有一点帮助。但是,Poltergeist 启动的对应用服务器的第一个请求 (visit) 很慢,因为 Rails 必须在第一次编译资源。我尝试在测试环境中启动本地服务器,然后在我的菠菜env.rb 文件中执行此操作:

::Capybara.run_server = false
::Capybara.app_host = "http://localhost:#{ENV['TEST_SERVER_PORT']}"

这使得调试变得困难,因为 Web 服务器运行在与菠菜进程不同的进程中。此外,预编译资产不是一个好的解决方案,因为我不想每次在调整 JS 文件中的内容然后运行测试以验证我的更改时都运行它。

底线:有没有人想出如何让第一个测试服务器请求更快?

【问题讨论】:

    标签: ruby-on-rails-4 capybara poltergeist spinach rails-spring


    【解决方案1】:

    您可以对菠菜使用并行测试

    https://github.com/grosser/parallel_tests
    

    它可能无法解决第一个请求的问题,但它可以加快运行所有测试 - 这仍然可能对您有益

    【讨论】:

    • 我们已经将parallel_tests 用于我们的 CI 管道,但这更适用于我们的开发工作流程。在开发功能或修复功能时,我多次重新运行相同的测试。每次等待资产都是一种痛苦。使用单元测试可以“解决”这个问题,但如果我们的 UI 测试已经提供了必要的覆盖率,我们会避免添加大量单元测试。
    【解决方案2】:

    首先,我会设置rspec-retry。其次,在spec/rails_helper.rb试试这个:

    RSpec.configure do |config|
      config.before(:all) { visit '/' if defined?(visit) }
    end
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多