Commit f2b7da8a authored by Sean McGivern's avatar Sean McGivern

Merge branch '42006-allow-toggling-of-performance-bar-in-development' into 'master'

Resolve "Allow toggling of performance bar in development"

Closes #42006

See merge request gitlab-org/gitlab-ce!16495
parents d7eb3692 28d39447
......@@ -62,7 +62,7 @@ export default class Shortcuts {
e.preventDefault();
const performanceBarCookieName = 'perf_bar_enabled';
if (Cookies.get(performanceBarCookieName) === 'true') {
Cookies.remove(performanceBarCookieName, { path: '/' });
Cookies.set(performanceBarCookieName, 'false', { path: '/' });
} else {
Cookies.set(performanceBarCookieName, 'true', { path: '/' });
}
......
......@@ -6,13 +6,22 @@ module WithPerformanceBar
end
def peek_enabled?
return true if Rails.env.development?
return false unless Gitlab::PerformanceBar.enabled?(current_user)
if RequestStore.active?
RequestStore.fetch(:peek_enabled) { cookies[:perf_bar_enabled].present? }
RequestStore.fetch(:peek_enabled) { cookie_or_default_value }
else
cookies[:perf_bar_enabled].present?
cookie_or_default_value
end
end
private
def cookie_or_default_value
if cookies[:perf_bar_enabled].present?
cookies[:perf_bar_enabled] == 'true'
else
cookies[:perf_bar_enabled] = 'true' if Rails.env.development?
end
end
end
......@@ -6,6 +6,7 @@ module Gitlab
EXPIRY_TIME = 5.minutes
def self.enabled?(user = nil)
return true if Rails.env.development?
return false unless user && allowed_group_id
allowed_user_ids.include?(user.id)
......
require 'rails_helper'
describe 'User can display performance bar', :js do
shared_examples 'performance bar is disabled' do
shared_examples 'performance bar cannot be displayed' do
it 'does not show the performance bar by default' do
expect(page).not_to have_css('#peek')
end
......@@ -17,7 +17,7 @@ describe 'User can display performance bar', :js do
end
end
shared_examples 'performance bar is enabled' do
shared_examples 'performance bar can be displayed' do
it 'does not show the performance bar by default' do
expect(page).not_to have_css('#peek')
end
......@@ -33,6 +33,18 @@ describe 'User can display performance bar', :js do
end
end
shared_examples 'performance bar is enabled by default in development' do
before do
allow(Rails.env).to receive(:development?).and_return(true)
end
it 'shows the performance bar by default' do
refresh # Because we're stubbing Rails.env after the 1st visit to root_path
expect(page).to have_css('#peek')
end
end
let(:group) { create(:group) }
context 'when user is logged-out' do
......@@ -45,7 +57,7 @@ describe 'User can display performance bar', :js do
stub_application_setting(performance_bar_allowed_group_id: nil)
end
it_behaves_like 'performance bar is disabled'
it_behaves_like 'performance bar cannot be displayed'
end
context 'when the performance_bar feature is enabled' do
......@@ -53,7 +65,7 @@ describe 'User can display performance bar', :js do
stub_application_setting(performance_bar_allowed_group_id: group.id)
end
it_behaves_like 'performance bar is disabled'
it_behaves_like 'performance bar cannot be displayed'
end
end
......@@ -72,7 +84,8 @@ describe 'User can display performance bar', :js do
stub_application_setting(performance_bar_allowed_group_id: nil)
end
it_behaves_like 'performance bar is disabled'
it_behaves_like 'performance bar cannot be displayed'
it_behaves_like 'performance bar is enabled by default in development'
end
context 'when the performance_bar feature is enabled' do
......@@ -80,7 +93,8 @@ describe 'User can display performance bar', :js do
stub_application_setting(performance_bar_allowed_group_id: group.id)
end
it_behaves_like 'performance bar is enabled'
it_behaves_like 'performance bar is enabled by default in development'
it_behaves_like 'performance bar can be displayed'
end
end
end
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