How to run only RSpec feature tests or non feature tests?
Option 1: RSpec tags
You can run just feature tests this way. You need to generate a separate API token for it.
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=$API_TOKEN_FOR_FEATURE_TESTS bundle exec rake "knapsack_pro:queue:rspec[--tag type:feature]"
If you would like to run only non feature tests then use negation ~type:feature
:
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=$API_TOKEN_FOR_NON_FEATURE_TESTS bundle exec rake "knapsack_pro:queue:rspec[--tag ~type:feature]"
Note above examples are for knapsack_pro
Queue Mode and when you will run tests you may notice that all test files are run by RSpec but only tests specified by tag like tag type:feature
will be executed. Basically RSpec will just load all files but run just specified tags.
Option 2: specify directory pattern
Another approach is to explicitly specify which files should be executed.
Run all specs from multiple directories except spec/features
directory which is not listed below.
If you would like to run additional directory please add it after comma in KNAPSACK_PRO_TEST_FILE_PATTERN
.
Ensure the list of directories match your spec directory structure.
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=$API_TOKEN_FOR_NON_FEATURE_TESTS \
KNAPSACK_PRO_TEST_DIR=spec \
KNAPSACK_PRO_TEST_FILE_PATTERN="{spec/*_spec.rb,spec/controllers/**/*_spec.rb,spec/mailers/**/*_spec.rb,spec/models/**/*_spec.rb,spec/presenters/**/*_spec.rb,spec/requests/**/*_spec.rb,spec/routing/**/*_spec.rb,spec/services/**/*_spec.rb,spec/workers/**/*_spec.rb,spec/jobs/**/*_spec.rb}" \
bundle exec rake knapsack_pro:queue:rspec
When you would like to run tests only from spec/features
directory then run:
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=$API_TOKEN_FOR_FEATURE_TESTS \
KNAPSACK_PRO_TEST_DIR=spec \
KNAPSACK_PRO_TEST_FILE_PATTERN="spec/features/**{,/*/**}/*_spec.rb" \
bundle exec rake knapsack_pro:queue:rspec
You can also learn how to use exclude pattern.