-`spec/features/` which are run by RSpec and contain
-`spec/features/` which are run by RSpec and contain
-[feature tests](#feature-tests)
-[feature tests](#feature-tests)
All tests in `spec/javascripts/` will eventually be migrated to `spec/frontend/` (see also [#53757]).
All tests in `spec/javascripts/` will eventually be migrated to `spec/frontend/` (see also [#52483](https://gitlab.com/gitlab-org/gitlab-ce/issues/52483)).
In addition there were feature tests in `features/` run by Spinach in the past.
In addition there were feature tests in `features/` run by Spinach in the past.
These have been removed from our codebase in May 2018 ([#23036](https://gitlab.com/gitlab-org/gitlab-ce/issues/23036)).
These have been removed from our codebase in May 2018 ([#23036](https://gitlab.com/gitlab-org/gitlab-ce/issues/23036)).
Unit tests are on the lowest abstraction level and typically test functionality that is not directly perceivable by a user.
Unit tests are on the lowest abstraction level and typically test functionality that is not directly perceivable by a user.
...
@@ -246,6 +244,8 @@ Their abstraction level is comparable to how a user would interact with the UI.
...
@@ -246,6 +244,8 @@ Their abstraction level is comparable to how a user would interact with the UI.
In contrast to [frontend integration tests](#frontend-integration-tests), feature tests make requests against the real backend instead of using fixtures.
In contrast to [frontend integration tests](#frontend-integration-tests), feature tests make requests against the real backend instead of using fixtures.
This also implies that database queries are executed which makes this category significantly slower.
This also implies that database queries are executed which makes this category significantly slower.
See also the [RSpec testing guidelines](../../testing_guide/best_practices.md#rspec).
### When to use feature tests
### When to use feature tests
- use cases that require a backend and cannot be tested using fixtures
- use cases that require a backend and cannot be tested using fixtures