summaryrefslogtreecommitdiff
path: root/spec/features/projects/new_project_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/projects/new_project_spec.rb')
-rw-r--r--spec/features/projects/new_project_spec.rb113
1 files changed, 26 insertions, 87 deletions
diff --git a/spec/features/projects/new_project_spec.rb b/spec/features/projects/new_project_spec.rb
index c57432ae94e..ef28979798f 100644
--- a/spec/features/projects/new_project_spec.rb
+++ b/spec/features/projects/new_project_spec.rb
@@ -14,82 +14,13 @@ RSpec.describe 'New project', :js do
sign_in(user)
end
- context 'new repo experiment', :experiment do
- it 'when in control renders "project"' do
- stub_experiments(new_repo: :control)
-
- visit new_project_path
-
- find('li.header-new.dropdown').click
-
- page.within('li.header-new.dropdown') do
- expect(page).to have_selector('a', text: 'New project')
- expect(page).to have_no_selector('a', text: 'New project/repository')
- end
-
- expect(page).to have_selector('h3', text: 'Create blank project')
- expect(page).to have_no_selector('h3', text: 'Create blank project/repository')
- end
-
- it 'when in candidate renders "project/repository"' do
- stub_experiments(new_repo: :candidate)
-
- visit new_project_path
-
- find('li.header-new.dropdown').click
-
- page.within('li.header-new.dropdown') do
- expect(page).to have_selector('a', text: 'New project/repository')
- end
-
- expect(page).to have_selector('h3', text: 'Create blank project/repository')
- end
-
- it 'when in control it renders "project" in the new projects dropdown' do
- stub_experiments(new_repo: :control)
-
- visit new_project_path
-
- open_top_nav_projects
-
- within_top_nav do
- if Feature.enabled?(:combined_menu, default_enabled: :yaml)
- expect(page).to have_selector('a', text: 'Create new project')
- expect(page).to have_no_selector('a', text: 'Create blank project/repository')
- else
- expect(page).to have_selector('a', text: 'Create blank project')
- expect(page).to have_selector('a', text: 'Import project')
- expect(page).to have_no_selector('a', text: 'Create blank project/repository')
- expect(page).to have_no_selector('a', text: 'Import project/repository')
- end
- end
- end
-
- it 'when in candidate it renders "project/repository" in the new projects dropdown' do
- stub_experiments(new_repo: :candidate)
-
- visit new_project_path
-
- open_top_nav_projects
-
- within_top_nav do
- if Feature.enabled?(:combined_menu, default_enabled: :yaml)
- expect(page).to have_selector('a', text: 'Create new project')
- else
- expect(page).to have_selector('a', text: 'Create blank project/repository')
- expect(page).to have_selector('a', text: 'Import project/repository')
- end
- end
- end
- end
-
it 'shows a message if multiple levels are restricted' do
Gitlab::CurrentSettings.update!(
restricted_visibility_levels: [Gitlab::VisibilityLevel::PRIVATE, Gitlab::VisibilityLevel::INTERNAL]
)
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
expect(page).to have_content 'Other visibility settings have been disabled by the administrator.'
end
@@ -100,7 +31,7 @@ RSpec.describe 'New project', :js do
)
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
expect(page).to have_content 'Visibility settings have been disabled by the administrator.'
end
@@ -115,14 +46,14 @@ RSpec.describe 'New project', :js do
it 'shows "New project" page', :js do
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
expect(page).to have_content('Project name')
expect(page).to have_content('Project URL')
expect(page).to have_content('Project slug')
click_link('New project')
- find('[data-qa-selector="import_project_link"]').click
+ find('[data-qa-panel-name="import_project"]').click
expect(page).to have_link('GitHub')
expect(page).to have_link('Bitbucket')
@@ -135,7 +66,7 @@ RSpec.describe 'New project', :js do
before do
visit new_project_path
- find('[data-qa-selector="import_project_link"]').click
+ find('[data-qa-panel-name="import_project"]').click
end
it 'has Manifest file' do
@@ -149,7 +80,7 @@ RSpec.describe 'New project', :js do
stub_application_setting(default_project_visibility: level)
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
page.within('#blank-project-pane') do
expect(find_field("project_visibility_level_#{level}")).to be_checked
end
@@ -157,7 +88,7 @@ RSpec.describe 'New project', :js do
it "saves visibility level #{level} on validation error" do
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
choose(key)
click_button('Create project')
@@ -177,7 +108,7 @@ RSpec.describe 'New project', :js do
context 'when admin mode is enabled', :enable_admin_mode do
it 'has private selected' do
visit new_project_path(namespace_id: group.id)
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
page.within('#blank-project-pane') do
expect(find_field("project_visibility_level_#{Gitlab::VisibilityLevel::PRIVATE}")).to be_checked
@@ -204,7 +135,7 @@ RSpec.describe 'New project', :js do
context 'when admin mode is enabled', :enable_admin_mode do
it 'has private selected' do
visit new_project_path(namespace_id: group.id, project: { visibility_level: Gitlab::VisibilityLevel::PRIVATE })
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
page.within('#blank-project-pane') do
expect(find_field("project_visibility_level_#{Gitlab::VisibilityLevel::PRIVATE}")).to be_checked
@@ -225,7 +156,7 @@ RSpec.describe 'New project', :js do
context 'Readme selector' do
it 'shows the initialize with Readme checkbox on "Blank project" tab' do
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
expect(page).to have_css('input#project_initialize_with_readme')
expect(page).to have_content('Initialize repository with a README')
@@ -233,7 +164,7 @@ RSpec.describe 'New project', :js do
it 'does not show the initialize with Readme checkbox on "Create from template" tab' do
visit new_project_path
- find('[data-qa-selector="create_from_template_link"]').click
+ find('[data-qa-panel-name="create_from_template"]').click
first('.choose-template').click
page.within '.project-fields-form' do
@@ -244,7 +175,7 @@ RSpec.describe 'New project', :js do
it 'does not show the initialize with Readme checkbox on "Import project" tab' do
visit new_project_path
- find('[data-qa-selector="import_project_link"]').click
+ find('[data-qa-panel-name="import_project"]').click
first('.js-import-git-toggle-button').click
page.within '#import-project-pane' do
@@ -258,7 +189,7 @@ RSpec.describe 'New project', :js do
context 'with user namespace' do
before do
visit new_project_path
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
end
it 'selects the user namespace' do
@@ -274,7 +205,7 @@ RSpec.describe 'New project', :js do
before do
group.add_owner(user)
visit new_project_path(namespace_id: group.id)
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
end
it 'selects the group namespace' do
@@ -291,7 +222,7 @@ RSpec.describe 'New project', :js do
before do
group.add_maintainer(user)
visit new_project_path(namespace_id: subgroup.id)
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
end
it 'selects the group namespace' do
@@ -311,7 +242,7 @@ RSpec.describe 'New project', :js do
internal_group.add_owner(user)
private_group.add_owner(user)
visit new_project_path(namespace_id: public_group.id)
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
end
it 'enables the correct visibility options' do
@@ -341,7 +272,7 @@ RSpec.describe 'New project', :js do
context 'Import project options', :js do
before do
visit new_project_path
- find('[data-qa-selector="import_project_link"]').click
+ find('[data-qa-panel-name="import_project"]').click
end
context 'from git repository url, "Repo by URL"' do
@@ -362,6 +293,14 @@ RSpec.describe 'New project', :js do
expect(git_import_instructions).to have_content 'Git repository URL'
end
+ it 'reports error if repo URL does not end with .git' do
+ fill_in 'project_import_url', with: 'http://foo/bar'
+ # simulate blur event
+ find('body').click
+
+ expect(page).to have_text('A repository URL usually ends in a .git suffix')
+ end
+
it 'keeps "Import project" tab open after form validation error' do
collision_project = create(:project, name: 'test-name-collision', namespace: user.namespace)
@@ -405,7 +344,7 @@ RSpec.describe 'New project', :js do
before do
group.add_developer(user)
visit new_project_path(namespace_id: group.id)
- find('[data-qa-selector="blank_project_link"]').click
+ find('[data-qa-panel-name="blank_project"]').click
end
it 'selects the group namespace' do