如何加快本地Rails UI测试的第一次请求

时间:2015-03-24 20:54:33

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

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

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

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

结论:是否有人想出如何让第一个测试服务器请求更快?

2 个答案:

答案 0 :(得分:0)

您可以对Spinach使用并行测试

https://github.com/grosser/parallel_tests

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

答案 1 :(得分:0)

首先,我会设置rspec-retry。其次,请在RSpec.configure do |config| config.before(:all) { visit '/' if defined?(visit) } end 中尝试:

<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

use App\Models\Main as MainModel;
use View;

abstract class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function __construct() {
        $oMainM = new MainModel;
        $notifications = $oMainM->get_notifications();
        View::share('notifications', $notifications);
    }
}