From fa7b9f50ffaad924260f6cd120ca3c4ed13ca5bd Mon Sep 17 00:00:00 2001 From: Semyon Pupkov Date: Thu, 8 Mar 2018 00:10:58 +0100 Subject: Move project active tab spinach tests to RSpec https://gitlab.com/gitlab-org/gitlab-ce/issues/23036 --- features/project/active_tab.feature | 138 ------------------------------ features/steps/project/active_tab.rb | 127 --------------------------- spec/features/projects/actve_tabs_spec.rb | 137 +++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 265 deletions(-) delete mode 100644 features/project/active_tab.feature delete mode 100644 features/steps/project/active_tab.rb create mode 100644 spec/features/projects/actve_tabs_spec.rb diff --git a/features/project/active_tab.feature b/features/project/active_tab.feature deleted file mode 100644 index 3ea0aab5a67..00000000000 --- a/features/project/active_tab.feature +++ /dev/null @@ -1,138 +0,0 @@ -Feature: Project Active Tab - Background: - Given I sign in as a user - And I own a project - - # Main Tabs - - Scenario: On Project Home - Given I visit my project's home page - Then the active sub tab should be Home - And no other sub tabs should be active - And the active main tab should be Project - - Scenario: On Project Repository - Given I visit my project's files page - Then the active main tab should be Repository - And no other main tabs should be active - - Scenario: On Project Issues - Given I visit my project's issues page - Then the active main tab should be Issues - And no other main tabs should be active - - Scenario: On Project Merge Requests - Given I visit my project's merge requests page - Then the active main tab should be Merge Requests - And no other main tabs should be active - - Scenario: On Project Wiki - Given I visit my project's wiki page - Then the active main tab should be Wiki - And no other main tabs should be active - - Scenario: On Project Members - Given I visit my project's members page - Then the active main tab should be Members - And no other main tabs should be active - - # Sub Tabs: Home - - Scenario: On Project Home/Show - Given I visit my project's home page - Then the active sub tab should be Home - And no other sub tabs should be active - And the active main tab should be Project - And no other main tabs should be active - - Scenario: On Project Home/Activity - Given I visit my project's home page - And I click the "Activity" tab - Then the active sub tab should be Activity - And no other sub tabs should be active - And the active main tab should be Project - - # Sub Tabs: Settings - - Scenario: On Project Settings/Integrations - Given I visit my project's settings page - And I click the "Integrations" tab - Then the active sub tab should be Integrations - And no other sub tabs should be active - And the active main tab should be Settings - - Scenario: On Project Settings/Repository - Given I visit my project's settings page - And I click the "Repository" tab - Then the active sub tab should be Repository - And no other sub tabs should be active - And the active main tab should be Settings - - # Sub Tabs: Repository - - Scenario: On Project Repository/Files - Given I visit my project's files page - Then the active sub tab should be Files - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Commits - Given I visit my project's commits page - Then the active sub tab should be Commits - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Graph - Given I visit my project's graph page - Then the active sub tab should be Graph - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Compare - Given I visit my project's commits page - And I click the "Compare" tab - Then the active sub tab should be Compare - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Charts - Given I visit my project's commits page - And I click the "Charts" tab - Then the active sub tab should be Charts - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Branches - Given I visit my project's commits page - And I click the "Branches" tab - Then the active sub tab should be Branches - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Repository/Tags - Given I visit my project's commits page - And I click the "Tags" tab - Then the active sub tab should be Tags - And no other sub tabs should be active - And the active main tab should be Repository - - Scenario: On Project Issues/Browse - Given I visit my project's issues page - Then the active main tab should be Issues - And no other main tabs should be active - - Scenario: On Project Issues/Milestones - Given I visit my project's issues page - And I click the "Milestones" sub tab - Then the active main tab should be Issues - Then the active sub tab should be Milestones - And no other main tabs should be active - And no other sub tabs should be active - - Scenario: On Project Issues/Labels - Given I visit my project's issues page - And I click the "Labels" sub tab - Then the active main tab should be Issues - Then the active sub tab should be Labels - And no other main tabs should be active - And no other sub tabs should be active diff --git a/features/steps/project/active_tab.rb b/features/steps/project/active_tab.rb deleted file mode 100644 index 1a18f1d7065..00000000000 --- a/features/steps/project/active_tab.rb +++ /dev/null @@ -1,127 +0,0 @@ -class Spinach::Features::ProjectActiveTab < Spinach::FeatureSteps - include SharedAuthentication - include SharedPaths - include SharedProject - include SharedActiveTab - include SharedProjectTab - - # Sub Tabs: Home - - step 'I click the "Team" tab' do - click_link('Members') - end - - step 'I click the "Attachments" tab' do - click_link('Attachments') - end - - step 'I click the "Snippets" tab' do - page.within('.layout-nav') do - click_link('Snippets') - end - end - - step 'I click the "Edit Project"' do - page.within '.nav-sidebar' do - click_link('Edit Project') - end - end - - step 'I click the "Integrations" tab' do - page.within '.nav-sidebar' do - click_link('Integrations') - end - end - - step 'I click the "Repository" tab' do - page.within '.sidebar-top-level-items > .active' do - click_link('Repository') - end - end - - step 'I click the "Activity" tab' do - page.within '.sidebar-top-level-items > .active' do - click_link('Activity') - end - end - - step 'the active sub tab should be Members' do - ensure_active_sub_tab('Members') - end - - step 'the active sub tab should be Integrations' do - ensure_active_sub_tab('Integrations') - end - - step 'the active sub tab should be Repository' do - ensure_active_sub_tab('Repository') - end - - step 'the active sub tab should be Pages' do - ensure_active_sub_tab('Pages') - end - - step 'the active sub tab should be Activity' do - ensure_active_sub_tab('Activity') - end - - # Sub Tabs: Commits - - step 'I click the "Compare" tab' do - click_link('Compare') - end - - step 'I click the "Branches" tab' do - page.within '.nav-sidebar' do - click_link('Branches') - end - end - - step 'I click the "Tags" tab' do - click_link('Tags') - end - - step 'I click the "Charts" tab' do - page.within('.sidebar-top-level-items > .active') do - click_link('Charts') - end - end - - step 'the active sub tab should be Compare' do - ensure_active_sub_tab('Compare') - end - - step 'the active sub tab should be Branches' do - ensure_active_sub_tab('Branches') - end - - step 'the active sub tab should be Tags' do - ensure_active_sub_tab('Tags') - end - - # Sub Tabs: Issues - - step 'I click the "Milestones" sub tab' do - page.within('.nav-sidebar') do - click_link('Milestones') - end - end - - step 'I click the "Labels" sub tab' do - page.within('.nav-sidebar') do - click_link('Labels') - end - end - - step 'the active sub tab should be Issues' do - ensure_active_sub_tab('Issues') - end - - step 'the active sub tab should be Milestones' do - ensure_active_sub_tab('Milestones') - end - - step 'the active sub tab should be Labels' do - ensure_active_sub_tab('Labels') - end -end diff --git a/spec/features/projects/actve_tabs_spec.rb b/spec/features/projects/actve_tabs_spec.rb new file mode 100644 index 00000000000..0bda68b83e7 --- /dev/null +++ b/spec/features/projects/actve_tabs_spec.rb @@ -0,0 +1,137 @@ +require 'spec_helper' + +describe 'Project active tab' do + let(:user) { create :user } + let(:project) { create(:project, :repository) } + + before do + project.add_master(user) + sign_in(user) + end + + def click_tab(title) + page.within '.sidebar-top-level-items > .active' do + click_link(title) + end + end + + shared_examples 'page has active tab' do |title| + it "activates #{title} tab" do + expect(page).to have_selector('.sidebar-top-level-items > li.active', count: 1) + expect(find('.sidebar-top-level-items > li.active')).to have_content(title) + end + end + + shared_examples 'page has active sub tab' do |title| + it "activates #{title} sub tab" do + expect(page).to have_selector('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)', count: 1) + expect(find('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)')) + .to have_content(title) + end + end + + context 'on project Home' do + before do + visit project_path(project) + end + + it_behaves_like 'page has active tab', 'Overview' + it_behaves_like 'page has active sub tab', 'Details' + + context 'on project Home/Activity' do + before do + click_tab('Activity') + end + + it_behaves_like 'page has active tab', 'Overview' + it_behaves_like 'page has active sub tab', 'Activity' + end + end + + context 'on project Repository' do + before do + root_ref = project.repository.root_ref + visit project_tree_path(project, root_ref) + end + + it_behaves_like 'page has active tab', 'Repository' + + %w(Files Commits Graph Compare Charts Branches Tags).each do |sub_menu| + context "on project Repository/#{sub_menu}" do + before do + click_tab(sub_menu) + end + + it_behaves_like 'page has active tab', 'Repository' + it_behaves_like 'page has active sub tab', sub_menu + end + end + end + + context 'on project Issues' do + before do + visit project_issues_path(project) + end + + it_behaves_like 'page has active tab', 'Issues' + + %w(Milestones Labels).each do |sub_menu| + context "on project Issues/#{sub_menu}" do + before do + click_tab(sub_menu) + end + + it_behaves_like 'page has active tab', 'Issues' + it_behaves_like 'page has active sub tab', sub_menu + end + end + end + + context 'on project Merge Requests' do + before do + visit project_merge_requests_path(project) + end + + it_behaves_like 'page has active tab', 'Merge Requests' + end + + context 'on project Wiki' do + before do + visit project_wiki_path(project, :home) + end + + it_behaves_like 'page has active tab', 'Wiki' + end + + context 'on project Members' do + before do + visit project_project_members_path(project) + end + + it_behaves_like 'page has active tab', 'Members' + end + + context 'on project Settings' do + before do + visit edit_project_path(project) + end + + context 'on project Settings/Integrations' do + before do + click_tab('Integrations') + end + + it_behaves_like 'page has active tab', 'Settings' + it_behaves_like 'page has active sub tab', 'Integrations' + end + + context 'on project Settings/Repository' do + before do + click_tab('Repository') + end + + it_behaves_like 'page has active tab', 'Settings' + it_behaves_like 'page has active sub tab', 'Repository' + end + end +end -- cgit v1.2.1