24

In Rails 5.1, you can do bin/rails test to run normal tests, and bin/rails test:system. What is the Rails sanctioned way of running both at the same time?

chrismanderson
  • 4,603
  • 5
  • 31
  • 47

7 Answers7

32

bin/rails test:system test

Specifying test:system before test will run both system and ordinary tests. The opposite order will only run the ordinary tests however.

Eric Mathison
  • 1,210
  • 10
  • 16
  • Thank you for this answer. I've been using `simplecov` to verify my test coverage and this command really helps. `rails test` gets me 54.96%. 'rails test:system' gets me 42.82%, but `rails test:system test` runs both and gets me 78.64% coverage, so I can see the overlap. – Okomikeruko Aug 03 '20 at 17:14
16

rails test:all (Rails 6.1+)

Rails 6.1 introduces a new command - rails test:all.

It runs all test files in the test directory, including system tests.

Here is a link to PR. And also a link to the docs (please, scroll down to yellow box).

Marian13
  • 7,740
  • 2
  • 47
  • 51
4

In case anyone else is looking for the answer:

bin/rails test test/*

Jackson Miller
  • 1,500
  • 1
  • 13
  • 23
2

If it is your intention to run it using just $ rake or $rake test you can add into your Rakefile:

task test: 'test:system'

This will makes 'test:system' a "prerequisites" for "test" task

1

At least from the official rails guide, it seems there is no way of doing it:

By default, running bin/rails test won't run your system tests. Make sure to run bin/rails test:system to actually run them.

Ref: rails guide

Delong Gao
  • 89
  • 3
  • 5
0

You can also add this snippet in your lib/tasks folder, that will give you the option to do rake test:all

namespace :test do desc "Run both regular tests and system tests" task :all => 'test' do Minitest.after_run {system('rake test:system')} end end

Jan M
  • 2,205
  • 21
  • 14
0

Summary of all the answers for easy reference:

System tests Only

bin/rails test:system

Ordinary tests Only

bin/rails test .

ALL tests

bin/rails test:all

BenKoshy
  • 33,477
  • 14
  • 111
  • 80