Move project active tab spinach tests to RSpec
https://gitlab.com/gitlab-org/gitlab-ce/issues/23036
This commit is contained in:
parent
2e87923dcb
commit
fa7b9f50ff
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
Loading…
Reference in New Issue