Commit 2179f54f authored by Douwe Maan's avatar Douwe Maan

Merge branch 'project-active-tab-rspec' into 'master'

Move project active tab spinach tests to RSpec

See merge request gitlab-org/gitlab-ce!17628
parents 762f16f0 fa7b9f50
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
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
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
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