Commit 6f585581 authored by Achilleas Pipinellis's avatar Achilleas Pipinellis

Merge branch 'add-testing-feature-flags-docs' into 'master'

Add how to disable feature flags in testing guide

See merge request gitlab-org/gitlab-ce!27248
parents 8739c009 db7dabea
...@@ -108,11 +108,11 @@ so we make sure behavior under feature flag doesn't go untested in some non-spec ...@@ -108,11 +108,11 @@ so we make sure behavior under feature flag doesn't go untested in some non-spec
contexts. contexts.
Whenever a feature flag is present, make sure to test _both_ states of the Whenever a feature flag is present, make sure to test _both_ states of the
feature flag. You can stub a feature flag as follows: feature flag.
```ruby See the
stub_feature_flags(my_feature_flag: false) [testing guide](testing_guide/best_practices.html#feature-flags-in-tests)
``` for information and examples on how to stub feature flags in tests.
## Enabling a feature flag (in development) ## Enabling a feature flag (in development)
......
...@@ -240,6 +240,36 @@ it 'is overdue' do ...@@ -240,6 +240,36 @@ it 'is overdue' do
end end
``` ```
### Feature flags in tests
All feature flags are stubbed to be enabled by default in our Ruby-based
tests.
To disable a feature flag in a test, use the `stub_feature_flags`
helper. For example, to globally disable the `ci_live_trace` feature
flag in a test:
```ruby
stub_feature_flags(ci_live_trace: false)
Feature.enabled?(:ci_live_trace) # => false
```
If you wish to set up a test where a feature flag is disabled for some
actors and not others, you can specify this in options passed to the
helper. For example, to disable the `ci_live_trace` feature flag for a
specifc project:
```ruby
project1, project2 = build_list(:project, 2)
# Feature will only be disabled for project1
stub_feature_flags(ci_live_trace: { enabled: false, thing: project1 })
Feature.enabled?(:ci_live_trace, project1) # => false
Feature.enabled?(:ci_live_trace, project2) # => true
```
### Pristine test environments ### Pristine test environments
The code exercised by a single GitLab test may access and modify many items of The code exercised by a single GitLab test may access and modify many items of
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment