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