summaryrefslogtreecommitdiff
path: root/spec/features/contextual_sidebar_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/contextual_sidebar_spec.rb')
-rw-r--r--spec/features/contextual_sidebar_spec.rb109
1 files changed, 92 insertions, 17 deletions
diff --git a/spec/features/contextual_sidebar_spec.rb b/spec/features/contextual_sidebar_spec.rb
index 39881a28b11..29c7e0ddd21 100644
--- a/spec/features/contextual_sidebar_spec.rb
+++ b/spec/features/contextual_sidebar_spec.rb
@@ -3,35 +3,110 @@
require 'spec_helper'
RSpec.describe 'Contextual sidebar', :js do
- let_it_be(:project) { create(:project) }
+ context 'when context is a project' do
+ let_it_be(:project) { create(:project) }
- let(:user) { project.owner }
+ let(:user) { project.owner }
- before do
- sign_in(user)
+ before do
+ sign_in(user)
+ end
- visit project_path(project)
- end
+ context 'when analyzing the menu' do
+ before do
+ visit project_path(project)
+ end
+
+ it 'shows flyout navs when collapsed or expanded apart from on the active item when expanded', :aggregate_failures do
+ expect(page).not_to have_selector('.js-sidebar-collapsed')
+
+ find('.rspec-link-pipelines').hover
+
+ expect(page).to have_selector('.is-showing-fly-out')
+
+ find('.rspec-project-link').hover
+
+ expect(page).not_to have_selector('.is-showing-fly-out')
+
+ find('.rspec-toggle-sidebar').click
+
+ find('.rspec-link-pipelines').hover
+
+ expect(page).to have_selector('.is-showing-fly-out')
- it 'shows flyout navs when collapsed or expanded apart from on the active item when expanded', :aggregate_failures do
- expect(page).not_to have_selector('.js-sidebar-collapsed')
+ find('.rspec-project-link').hover
+
+ expect(page).to have_selector('.is-showing-fly-out')
+ end
+ end
+
+ context 'with invite_members_in_side_nav experiment', :experiment do
+ it 'allows opening of modal for the candidate experience' do
+ stub_experiments(invite_members_in_side_nav: :candidate)
+ expect(experiment(:invite_members_in_side_nav)).to track(:assignment)
+ .with_context(group: project.group)
+ .on_next_instance
+
+ visit project_path(project)
+
+ page.within '[data-test-id="side-nav-invite-members"' do
+ find('[data-test-id="invite-members-button"').click
+ end
+
+ expect(page).to have_content("You're inviting members to the")
+ end
+
+ it 'does not have invite members link in side nav for the control experience' do
+ stub_experiments(invite_members_in_side_nav: :control)
+ expect(experiment(:invite_members_in_side_nav)).to track(:assignment)
+ .with_context(group: project.group)
+ .on_next_instance
+
+ visit project_path(project)
+
+ expect(page).not_to have_css('[data-test-id="side-nav-invite-members"')
+ end
+ end
+ end
- find('.rspec-link-pipelines').hover
+ context 'when context is a group' do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:group) do
+ create(:group).tap do |g|
+ g.add_owner(user)
+ end
+ end
- expect(page).to have_selector('.is-showing-fly-out')
+ before do
+ sign_in(user)
+ end
- find('.rspec-project-link').hover
+ context 'with invite_members_in_side_nav experiment', :experiment do
+ it 'allows opening of modal for the candidate experience' do
+ stub_experiments(invite_members_in_side_nav: :candidate)
+ expect(experiment(:invite_members_in_side_nav)).to track(:assignment)
+ .with_context(group: group)
+ .on_next_instance
- expect(page).not_to have_selector('.is-showing-fly-out')
+ visit group_path(group)
- find('.rspec-toggle-sidebar').click
+ page.within '[data-test-id="side-nav-invite-members"' do
+ find('[data-test-id="invite-members-button"').click
+ end
- find('.rspec-link-pipelines').hover
+ expect(page).to have_content("You're inviting members to the")
+ end
- expect(page).to have_selector('.is-showing-fly-out')
+ it 'does not have invite members link in side nav for the control experience' do
+ stub_experiments(invite_members_in_side_nav: :control)
+ expect(experiment(:invite_members_in_side_nav)).to track(:assignment)
+ .with_context(group: group)
+ .on_next_instance
- find('.rspec-project-link').hover
+ visit group_path(group)
- expect(page).to have_selector('.is-showing-fly-out')
+ expect(page).not_to have_css('[data-test-id="side-nav-invite-members"')
+ end
+ end
end
end