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?
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.
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. –
Nickles 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).
In case anyone else is looking for the answer:
bin/rails test test/*
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
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
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
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
© 2022 - 2024 — McMap. All rights reserved.
bin/rails test test:system
? It should load Rails' env and your app only once. – Rickettsia