diff options
Diffstat (limited to 'spec/features/projects')
29 files changed, 123 insertions, 311 deletions
diff --git a/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb b/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb index a497be4cbc3..b723bd5690a 100644 --- a/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb +++ b/spec/features/projects/blobs/user_follows_pipeline_suggest_nudge_spec.rb @@ -24,12 +24,6 @@ RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled expect(file_name.value).to have_content('.gitlab-ci.yml') end - it 'chooses the .gitlab-ci.yml Template Type' do - template_type = page.find(:css, '.template-type-selector .dropdown-toggle-text') - - expect(template_type.text).to have_content('.gitlab-ci.yml') - end - it 'displays suggest_gitlab_ci_yml popover' do page.find(:css, '.gitlab-ci-yml-selector').click @@ -60,12 +54,6 @@ RSpec.describe 'User follows pipeline suggest nudge spec when feature is enabled expect(file_name.value).not_to have_content('.gitlab-ci.yml') end - it 'does not choose the .gitlab-ci.yml Template Type' do - template_type = page.find(:css, '.template-type-selector .dropdown-toggle-text') - - expect(template_type.text).to have_content('Select a template type') - end - it 'does not display suggest_gitlab_ci_yml popover' do popover_selector = '.b-popover.suggest-gitlab-ci-yml' diff --git a/spec/features/projects/commit/cherry_pick_spec.rb b/spec/features/projects/commit/cherry_pick_spec.rb index dc8b84283a1..4b9b692b652 100644 --- a/spec/features/projects/commit/cherry_pick_spec.rb +++ b/spec/features/projects/commit/cherry_pick_spec.rb @@ -78,9 +78,9 @@ RSpec.describe 'Cherry-pick Commits', :js, feature_category: :source_code_manage end page.within("#{modal_selector} .dropdown-menu") do - find('[data-testid="dropdown-search-box"]').set('feature') + fill_in 'Search branches', with: 'feature' wait_for_requests - click_button 'feature' + find('.gl-dropdown-item-text-wrapper', exact_text: 'feature').click end submit_cherry_pick diff --git a/spec/features/projects/diffs/diff_show_spec.rb b/spec/features/projects/diffs/diff_show_spec.rb index 973c61de31d..eb700e10141 100644 --- a/spec/features/projects/diffs/diff_show_spec.rb +++ b/spec/features/projects/diffs/diff_show_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review do +RSpec.describe 'Diff file viewer', :js, :with_clean_rails_cache, feature_category: :code_review_workflow do let(:project) { create(:project, :public, :repository) } def visit_commit(sha, anchor: nil) diff --git a/spec/features/projects/environments/environment_spec.rb b/spec/features/projects/environments/environment_spec.rb index 75913082803..91401d19fd1 100644 --- a/spec/features/projects/environments/environment_spec.rb +++ b/spec/features/projects/environments/environment_spec.rb @@ -52,6 +52,16 @@ RSpec.describe 'Environment', feature_category: :projects do end end + context 'without deployments' do + before do + visit_environment(environment) + end + + it 'does not show deployments', :js do + expect(page).to have_content('You don\'t have any deployments right now.') + end + end + context 'with deployments' do before do visit_environment(environment) diff --git a/spec/features/projects/files/template_type_dropdown_spec.rb b/spec/features/projects/files/template_type_dropdown_spec.rb deleted file mode 100644 index 990b118d172..00000000000 --- a/spec/features/projects/files/template_type_dropdown_spec.rb +++ /dev/null @@ -1,143 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'Projects > Files > Template type dropdown selector', :js, feature_category: :projects do - let(:project) { create(:project, :repository) } - let(:user) { project.first_owner } - - before do - sign_in user - end - - context 'editing a non-matching file' do - before do - create_and_edit_file('.random-file.js') - end - - it 'not displayed' do - check_type_selector_display(false) - end - - it 'selects every template type correctly' do - fill_in 'file_path', with: '.gitignore' - try_selecting_all_types - end - - it 'updates template type toggle value when template is chosen' do - fill_in 'file_path', with: '.gitignore' - select_template('gitignore', 'Actionscript') - check_type_selector_toggle_text('.gitignore') - end - end - - context 'editing a matching file' do - before do - visit project_edit_blob_path(project, File.join(project.default_branch, 'LICENSE')) - end - - it 'displayed' do - check_type_selector_display(true) - end - - it 'selects every template type correctly' do - try_selecting_all_types - end - - context 'user previews changes' do - before do - click_link 'Preview changes' - end - - it 'type selector is hidden and shown correctly' do - check_type_selector_display(false) - click_link 'Write' - check_type_selector_display(true) - end - end - end - - context 'creating a matching file' do - before do - visit project_new_blob_path(project, 'master', file_name: '.gitignore') - end - - it 'is displayed' do - check_type_selector_display(true) - end - - it 'toggle is set to the correct value' do - select_template('gitignore', 'Actionscript') - check_type_selector_toggle_text('.gitignore') - end - - it 'sets the toggle text when selecting the template type' do - select_template_type('.gitignore') - check_type_selector_toggle_text('.gitignore') - end - - it 'selects every template type correctly' do - try_selecting_all_types - end - end - - context 'creating a file' do - before do - visit project_new_blob_path(project, project.default_branch) - end - - it 'type selector is shown' do - check_type_selector_display(true) - end - - it 'toggle is set to the proper value' do - check_type_selector_toggle_text('Select a template type') - end - - it 'selects every template type correctly' do - try_selecting_all_types - end - end -end - -def check_type_selector_display(is_visible) - count = is_visible ? 1 : 0 - expect(page).to have_css('.js-template-type-selector', count: count) -end - -def try_selecting_all_types - try_selecting_template_type('LICENSE', 'Apply a template') - try_selecting_template_type('Dockerfile', 'Apply a template') - try_selecting_template_type('.gitlab-ci.yml', 'Apply a template') - try_selecting_template_type('.gitignore', 'Apply a template') -end - -def try_selecting_template_type(template_type, selector_label) - select_template_type(template_type) - check_template_selector_display(selector_label) -end - -def select_template_type(template_type) - find('.js-template-type-selector').click - find('.dropdown-content li', text: template_type).click -end - -def select_template(type, template) - find(".js-#{type}-selector-wrap").click - find('.dropdown-content li', text: template).click -end - -def check_template_selector_display(content) - expect(page).to have_content(content) -end - -def check_type_selector_toggle_text(template_type) - dropdown_toggle_button = find('.template-type-selector .dropdown-toggle-text') - expect(dropdown_toggle_button).to have_content(template_type) -end - -def create_and_edit_file(file_name) - visit project_new_blob_path(project, 'master', file_name: file_name) - click_button "Commit changes" - visit project_edit_blob_path(project, File.join(project.default_branch, file_name)) -end diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb index afc9a5fd232..0dfed209ce9 100644 --- a/spec/features/projects/files/undo_template_spec.rb +++ b/spec/features/projects/files/undo_template_spec.rb @@ -13,19 +13,6 @@ RSpec.describe 'Projects > Files > Template Undo Button', :js, feature_category: context 'editing a matching file and applying a template' do before do visit project_edit_blob_path(project, File.join(project.default_branch, "LICENSE")) - select_file_template_type('LICENSE') - select_file_template('.js-license-selector', 'Apache License 2.0') - end - - it 'reverts template application' do - try_template_undo('http://www.apache.org/licenses/', 'Apply a template') - end - end - - context 'creating a non-matching file' do - before do - visit project_new_blob_path(project, 'master') - select_file_template_type('LICENSE') select_file_template('.js-license-selector', 'Apache License 2.0') end @@ -53,7 +40,6 @@ end def check_content_reverted(template_content) find('.b-toaster a', text: 'Undo').click expect(page).not_to have_content(template_content) - expect(page).to have_css('.template-type-selector .dropdown-toggle-text') end def select_file_template(template_selector_selector, template_name) @@ -61,8 +47,3 @@ def select_file_template(template_selector_selector, template_name) find('.dropdown-content li', text: template_name).click wait_for_requests end - -def select_file_template_type(template_type) - find('.js-template-type-selector').click - find('.dropdown-content li', text: template_type).click -end diff --git a/spec/features/projects/fork_spec.rb b/spec/features/projects/fork_spec.rb index 3867f7fd086..8b484141a95 100644 --- a/spec/features/projects/fork_spec.rb +++ b/spec/features/projects/fork_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' RSpec.describe 'Project fork', feature_category: :projects do + include ListboxHelpers include ProjectForksHelper let(:user) { create(:user) } @@ -137,10 +138,9 @@ RSpec.describe 'Project fork', feature_category: :projects do let(:user) { create(:group_member, :maintainer, user: create(:user), group: group).user } def submit_form(group_obj = group) - find('[data-testid="select_namespace_dropdown"]').click - find('[data-testid="select_namespace_dropdown_search_field"]').fill_in(with: group_obj.name) - click_button group_obj.name - + click_button(s_('ForkProject|Select a namespace')) + send_keys group_obj.name + select_listbox_item(group_obj.name) click_button 'Fork project' end @@ -151,6 +151,13 @@ RSpec.describe 'Project fork', feature_category: :projects do expect(page).to have_content 'Forked from' end + it 'redirects to the source project when cancel is clicked' do + visit new_project_fork_path(project) + click_on 'Cancel' + + expect(page).to have_current_path(project_path(project)) + end + it 'shows the new forked project on the forks page' do visit new_project_fork_path(project) submit_form diff --git a/spec/features/projects/import_export/export_file_spec.rb b/spec/features/projects/import_export/export_file_spec.rb index 8986ce91ae3..0230c9e835b 100644 --- a/spec/features/projects/import_export/export_file_spec.rb +++ b/spec/features/projects/import_export/export_file_spec.rb @@ -20,7 +20,9 @@ RSpec.describe 'Import/Export - project export integration test', :js, feature_c } end - let(:safe_hashes) { { yaml_variables: %w[key value public] } } + let(:safe_hashes) do + { yaml_variables: %w[key value public] } + end let(:project) { setup_project } diff --git a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb index 858d6751afa..55aa6db23c7 100644 --- a/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb +++ b/spec/features/projects/issues/design_management/user_uploads_designs_spec.rb @@ -18,7 +18,7 @@ RSpec.describe 'User uploads new design', :js, feature_category: :design_managem context "when the feature is available" do let(:feature_enabled) { true } - it 'uploads designs' do + it 'uploads designs', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/358845' do upload_design(logo_fixture, count: 1) expect(page).to have_selector('.js-design-list-item', count: 1) diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb index 557a20ff2d6..4734a607ef1 100644 --- a/spec/features/projects/jobs_spec.rb +++ b/spec/features/projects/jobs_spec.rb @@ -739,7 +739,12 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj it 'shows manual action empty state', :js do expect(page).to have_content(job.detailed_status(user).illustration[:title]) expect(page).to have_content('This job requires a manual action') - expect(page).to have_content('This job requires manual intervention to start. Before starting this job, you can add variables below for last-minute configuration changes.') + expect(page).to have_content( + _( + 'This job does not start automatically and must be started manually. ' \ + 'You can add CI/CD variables below for last-minute configuration changes before starting the job.' + ) + ) expect(page).to have_button('Trigger this manual action') end @@ -772,7 +777,12 @@ RSpec.describe 'Jobs', :clean_gitlab_redis_shared_state, feature_category: :proj wait_for_requests expect(page).to have_content('This job requires a manual action') - expect(page).to have_content('This job requires manual intervention to start. Before starting this job, you can add variables below for last-minute configuration changes.') + expect(page).to have_content( + _( + 'This job does not start automatically and must be started manually. ' \ + 'You can add CI/CD variables below for last-minute configuration changes before starting the job.' + ) + ) expect(page).to have_button('Trigger this manual action') end end diff --git a/spec/features/projects/labels/sort_labels_spec.rb b/spec/features/projects/labels/sort_labels_spec.rb index 378a575348e..74ce2f40df8 100644 --- a/spec/features/projects/labels/sort_labels_spec.rb +++ b/spec/features/projects/labels/sort_labels_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Sort labels', :js, feature_category: :team_planning do + include ListboxHelpers + let(:user) { create(:user) } let(:project) { create(:project) } let!(:label1) { create(:label, title: 'Foo', description: 'Lorem ipsum', project: project) } @@ -28,16 +30,16 @@ RSpec.describe 'Sort labels', :js, feature_category: :team_planning do it 'sorts by date' do click_button 'Name' - sort_options = find('ul[role="listbox"]').all('li').collect(&:text) - - expect(sort_options[0]).to eq('Name') - expect(sort_options[1]).to eq('Name, descending') - expect(sort_options[2]).to eq('Last created') - expect(sort_options[3]).to eq('Oldest created') - expect(sort_options[4]).to eq('Updated date') - expect(sort_options[5]).to eq('Oldest updated') + expect_listbox_items([ + 'Name', + 'Name, descending', + 'Last created', + 'Oldest created', + 'Updated date', + 'Oldest updated' + ]) - find('li', text: 'Name, descending').click + select_listbox_item('Name, descending') # assert default sorting within '.other-labels' do diff --git a/spec/features/projects/members/manage_members_spec.rb b/spec/features/projects/members/manage_members_spec.rb index 3ffa402dc2c..615ef1b03dd 100644 --- a/spec/features/projects/members/manage_members_spec.rb +++ b/spec/features/projects/members/manage_members_spec.rb @@ -139,17 +139,15 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on it 'can only remove non-Owner members' do page.within find_member_row(project_owner) do - expect(page).not_to have_button('Remove member') + expect(page).not_to have_selector user_action_dropdown end - # Open modal - page.within find_member_row(project_developer) do - click_button 'Remove member' - end + show_actions_for_username(project_developer) + click_button _('Remove member') within_modal do expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests' - click_button('Remove member') + click_button _('Remove member') end wait_for_requests @@ -163,18 +161,12 @@ RSpec.describe 'Projects > Members > Manage members', :js, feature_category: :on let(:current_user) { group_owner } it 'can remove any direct member' do - page.within find_member_row(project_owner) do - expect(page).to have_button('Remove member') - end - - # Open modal - page.within find_member_row(project_owner) do - click_button 'Remove member' - end + show_actions_for_username(project_owner) + click_button _('Remove member') within_modal do expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests' - click_button('Remove member') + click_button _('Remove member') end wait_for_requests diff --git a/spec/features/projects/members/sorting_spec.rb b/spec/features/projects/members/sorting_spec.rb index 5c72d9efeb3..6df1e974f42 100644 --- a/spec/features/projects/members/sorting_spec.rb +++ b/spec/features/projects/members/sorting_spec.rb @@ -48,7 +48,7 @@ RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups expect(first_row.text).to have_content(maintainer.name) expect(second_row.text).to have_content(developer.name) - expect_sort_by('Created on', :asc) + expect_sort_by('User created', :asc) end it 'sorts by user created on descending' do @@ -57,7 +57,7 @@ RSpec.describe 'Projects > Members > Sorting', :js, feature_category: :subgroups expect(first_row.text).to have_content(developer.name) expect(second_row.text).to have_content(maintainer.name) - expect_sort_by('Created on', :desc) + expect_sort_by('User created', :desc) end it 'sorts by last activity ascending' do diff --git a/spec/features/projects/milestones/milestones_sorting_spec.rb b/spec/features/projects/milestones/milestones_sorting_spec.rb index 8a8e7d07435..9bf04164a09 100644 --- a/spec/features/projects/milestones/milestones_sorting_spec.rb +++ b/spec/features/projects/milestones/milestones_sorting_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do + include ListboxHelpers + let(:user) { create(:user) } let(:project) { create(:project, name: 'test', namespace: user.namespace) } let(:milestones_for_sort_by) do @@ -40,14 +42,13 @@ RSpec.describe 'Milestones sorting', :js, feature_category: :team_planning do # assert milestones listed for given sort order selected_sort_order = 'Due soon' milestones_for_sort_by.each do |sort_by, expected_milestones| - within '[data-testid=milestone_sort_by_dropdown]' do - click_button selected_sort_order - milestones = find('ul[role="listbox"]').all('li').map(&:text) - expect(milestones).to eq(ordered_milestones) + click_button selected_sort_order - find('li', text: sort_by).click - expect(page).to have_button(sort_by) - end + expect_listbox_items(ordered_milestones) + + select_listbox_item(sort_by) + + expect(page).to have_button(sort_by) within '.milestones' do expect(page.all('ul.content-list > li strong > a').map(&:text)).to eq(expected_milestones) diff --git a/spec/features/projects/navbar_spec.rb b/spec/features/projects/navbar_spec.rb index 4d85b5cfb2e..6090d132e3a 100644 --- a/spec/features/projects/navbar_spec.rb +++ b/spec/features/projects/navbar_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Project navbar', feature_category: :projects do +RSpec.describe 'Project navbar', :with_license, feature_category: :projects do include NavbarStructureHelper include WaitForRequests @@ -15,6 +15,8 @@ RSpec.describe 'Project navbar', feature_category: :projects do before do sign_in(user) + stub_feature_flags(show_pages_in_deployments_menu: false) + stub_config(registry: { enabled: false }) stub_feature_flags(harbor_registry_integration: false) insert_package_nav(_('Deployments')) diff --git a/spec/features/projects/new_project_spec.rb b/spec/features/projects/new_project_spec.rb index 769ad5bf61a..c6a6ee68185 100644 --- a/spec/features/projects/new_project_spec.rb +++ b/spec/features/projects/new_project_spec.rb @@ -552,7 +552,7 @@ RSpec.describe 'New project', :js, feature_category: :projects do it_behaves_like 'has instructions to enable OAuth' end - context 'as an admin' do + context 'as an admin', :do_not_mock_admin_mode_setting do let(:user) { create(:admin) } let(:oauth_config_instructions) { 'To enable importing projects from Bitbucket, as administrator you need to configure OAuth integration' } @@ -571,7 +571,7 @@ RSpec.describe 'New project', :js, feature_category: :projects do it_behaves_like 'has instructions to enable OAuth' end - context 'as an admin' do + context 'as an admin', :do_not_mock_admin_mode_setting do let(:user) { create(:admin) } let(:oauth_config_instructions) { 'To enable importing projects from GitLab.com, as administrator you need to configure OAuth integration' } diff --git a/spec/features/projects/pages/user_edits_settings_spec.rb b/spec/features/projects/pages/user_edits_settings_spec.rb index 7ceefdecbae..8c713b6f73a 100644 --- a/spec/features/projects/pages/user_edits_settings_spec.rb +++ b/spec/features/projects/pages/user_edits_settings_spec.rb @@ -10,6 +10,8 @@ RSpec.describe 'Pages edits pages settings', :js, feature_category: :pages do before do allow(Gitlab.config.pages).to receive(:enabled).and_return(true) + stub_feature_flags(show_pages_in_deployments_menu: false) + project.add_maintainer(user) sign_in(user) diff --git a/spec/features/projects/pipelines/legacy_pipelines_spec.rb b/spec/features/projects/pipelines/legacy_pipelines_spec.rb new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/spec/features/projects/pipelines/legacy_pipelines_spec.rb diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb index d6067e22952..d5739386a30 100644 --- a/spec/features/projects/pipelines/pipeline_spec.rb +++ b/spec/features/projects/pipelines/pipeline_spec.rb @@ -18,6 +18,8 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do end shared_context 'pipeline builds' do + let!(:external_stage) { create(:ci_stage, name: 'external', pipeline: pipeline) } + let!(:build_passed) do create(:ci_build, :success, pipeline: pipeline, stage: 'build', stage_idx: 0, name: 'build') @@ -52,7 +54,7 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do create(:generic_commit_status, status: 'success', pipeline: pipeline, name: 'jenkins', - stage: 'external', + ci_stage: external_stage, ref: 'master', target_url: 'http://gitlab.com/status') end @@ -98,42 +100,16 @@ RSpec.describe 'Pipeline', :js, feature_category: :projects do end end - context 'with pipeline_name feature flag enabled' do - before do - stub_feature_flags(pipeline_name: true) - end - - it 'displays pipeline name instead of commit title' do - visit_pipeline - - within 'h3' do - expect(page).to have_content(pipeline.name) - end - - within '.well-segment[data-testid="commit-row"]' do - expect(page).to have_content(project.commit.title) - expect(page).to have_content(project.commit.short_id) - end - end - end + it 'displays pipeline name instead of commit title' do + visit_pipeline - context 'with pipeline_name feature flag disabled' do - before do - stub_feature_flags(pipeline_name: false) + within 'h3' do + expect(page).to have_content(pipeline.name) end - it 'displays commit title' do - visit_pipeline - - within 'h3' do - expect(page).not_to have_content(pipeline.name) - expect(page).to have_content(project.commit.title) - end - - within '.well-segment[data-testid="commit-row"]' do - expect(page).not_to have_content(project.commit.title) - expect(page).to have_content(project.commit.short_id) - end + within '.well-segment[data-testid="commit-row"]' do + expect(page).to have_content(project.commit.title) + expect(page).to have_content(project.commit.short_id) end end diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb index 3bdabd672c7..6a44f421249 100644 --- a/spec/features/projects/pipelines/pipelines_spec.rb +++ b/spec/features/projects/pipelines/pipelines_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' RSpec.describe 'Pipelines', :js, feature_category: :projects do + include ListboxHelpers include ProjectForksHelper include Spec::Support::Helpers::ModalHelpers @@ -594,7 +595,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do end it 'changes the Pipeline ID column for Pipeline IID' do - page.find('[data-testid="pipeline-key-dropdown"]').click + page.find('[data-testid="pipeline-key-collapsible-box"]').click within '.gl-dropdown-contents' do dropdown_options = page.find_all '.gl-dropdown-item' @@ -618,6 +619,8 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do user: user) end + let(:external_stage) { create(:ci_stage, name: 'external', pipeline: pipeline) } + before do create_build('build', 0, 'build', :success) create_build('test', 1, 'rspec 0:2', :pending) @@ -627,7 +630,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do create_build('test', 1, 'audit', :created) create_build('deploy', 2, 'production', :created) - create(:generic_commit_status, pipeline: pipeline, stage: 'external', name: 'jenkins', stage_idx: 3, ref: 'master') + create(:generic_commit_status, pipeline: pipeline, ci_stage: external_stage, name: 'jenkins', ref: 'master') visit project_pipeline_path(project, pipeline) wait_for_requests @@ -672,7 +675,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do click_button project.default_branch wait_for_requests - find('p', text: 'master').click + find('.gl-dropdown-item', text: 'master').click wait_for_requests end @@ -776,8 +779,7 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do describe 'new pipeline page' do it 'has field to add a new pipeline' do - expect(page).to have_selector('[data-testid="ref-select"]') - expect(find('[data-testid="ref-select"]')).to have_content project.default_branch + expect(page).to have_button project.default_branch expect(page).to have_content('Run for') end end @@ -785,14 +787,9 @@ RSpec.describe 'Pipelines', :js, feature_category: :projects do describe 'find pipelines' do it 'shows filtered pipelines', :js do click_button project.default_branch + send_keys('fix') - page.within '[data-testid="ref-select"]' do - find('[data-testid="search-refs"]').native.send_keys('fix') - - page.within '.gl-dropdown-contents' do - expect(page).to have_content('fix') - end - end + expect_listbox_item('fix') end end end diff --git a/spec/features/projects/settings/monitor_settings_spec.rb b/spec/features/projects/settings/monitor_settings_spec.rb index 2cdcf86757e..4b553b57331 100644 --- a/spec/features/projects/settings/monitor_settings_spec.rb +++ b/spec/features/projects/settings/monitor_settings_spec.rb @@ -113,7 +113,7 @@ RSpec.describe 'Projects > Settings > For a forked project', :js, feature_catego within('div#project-dropdown') do click_button('Select project') - click_button('Sentry | internal') + find('li', text: 'Sentry | internal').click end click_button('Save changes') diff --git a/spec/features/projects/settings/pipelines_settings_spec.rb b/spec/features/projects/settings/pipelines_settings_spec.rb index 37973c9b8d6..51858ddf8c5 100644 --- a/spec/features/projects/settings/pipelines_settings_spec.rb +++ b/spec/features/projects/settings/pipelines_settings_spec.rb @@ -149,29 +149,5 @@ RSpec.describe "Projects > Settings > Pipelines settings", feature_category: :pr end end end - - describe 'runners registration token' do - let!(:token) { project.runners_token } - - before do - visit project_settings_ci_cd_path(project) - end - - it 'has a registration token' do - expect(page.find('#registration_token')).to have_content(token) - end - - describe 'reload registration token' do - let(:page_token) { find('#registration_token').text } - - before do - click_link 'Reset registration token' - end - - it 'changes registration token' do - expect(page_token).not_to eq token - end - end - end end end diff --git a/spec/features/projects/settings/user_manages_project_members_spec.rb b/spec/features/projects/settings/user_manages_project_members_spec.rb index ee832da48d9..fac4d5a99a5 100644 --- a/spec/features/projects/settings/user_manages_project_members_spec.rb +++ b/spec/features/projects/settings/user_manages_project_members_spec.rb @@ -22,13 +22,12 @@ RSpec.describe 'Projects > Settings > User manages project members', feature_cat it 'cancels a team member', :js do visit(project_project_members_path(project)) - page.within find_member_row(user_dmitriy) do - click_button 'Remove member' - end + show_actions_for_username(user_dmitriy) + click_button _('Remove member') within_modal do expect(page).to have_unchecked_field 'Also unassign this user from related issues and merge requests' - click_button('Remove member') + click_button _('Remove member') end visit(project_project_members_path(project)) diff --git a/spec/features/projects/settings/user_searches_in_settings_spec.rb b/spec/features/projects/settings/user_searches_in_settings_spec.rb index 8a11507d064..923a6a10671 100644 --- a/spec/features/projects/settings/user_searches_in_settings_spec.rb +++ b/spec/features/projects/settings/user_searches_in_settings_spec.rb @@ -68,6 +68,7 @@ RSpec.describe 'User searches project settings', :js, feature_category: :project context 'in Pages page' do before do + stub_feature_flags(show_pages_in_deployments_menu: false) allow(Gitlab.config.pages).to receive(:enabled).and_return(true) visit project_pages_path(project) diff --git a/spec/features/projects/terraform_spec.rb b/spec/features/projects/terraform_spec.rb index bbc7f675c55..5e2f65165c2 100644 --- a/spec/features/projects/terraform_spec.rb +++ b/spec/features/projects/terraform_spec.rb @@ -56,9 +56,9 @@ RSpec.describe 'Terraform', :js, feature_category: :projects do end context 'when clicking on the delete button' do - let(:additional_state) { create(:terraform_state, project: project) } + let!(:additional_state) { create(:terraform_state, project: project) } - it 'removes the state', :aggregate_failures, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/333640' do + it 'removes the state', :aggregate_failures do visit project_terraform_index_path(project) expect(page).to have_content(additional_state.name) @@ -69,7 +69,12 @@ RSpec.describe 'Terraform', :js, feature_category: :projects do click_button 'Remove' expect(page).to have_content("#{additional_state.name} successfully removed") - expect { additional_state.reload }.to raise_error ActiveRecord::RecordNotFound + + find("[data-testid='remove-icon']").hover + expect(page).to have_content("Deletion in progress") + + additional_state.reload + expect(additional_state.deleted_at).not_to be_nil end end diff --git a/spec/features/projects/tree/create_directory_spec.rb b/spec/features/projects/tree/create_directory_spec.rb index 3a0160c42fb..58f572bc021 100644 --- a/spec/features/projects/tree/create_directory_spec.rb +++ b/spec/features/projects/tree/create_directory_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_ide do + include WebIdeSpecHelpers + let(:user) { create(:user) } let(:project) { create(:project, :repository) } @@ -16,9 +18,7 @@ RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_id wait_for_requests - click_link('Web IDE') - - wait_for_requests + ide_visit_from_link end after do @@ -26,6 +26,8 @@ RSpec.describe 'Multi-file editor new directory', :js, feature_category: :web_id end it 'creates directory in current directory' do + wait_for_all_requests + all('.ide-tree-actions button').last.click page.within('.modal') do diff --git a/spec/features/projects/tree/create_file_spec.rb b/spec/features/projects/tree/create_file_spec.rb index 61240150658..674aef8e6f4 100644 --- a/spec/features/projects/tree/create_file_spec.rb +++ b/spec/features/projects/tree/create_file_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do + include WebIdeSpecHelpers + let(:user) { create(:user) } let(:project) { create(:project, :repository) } @@ -16,9 +18,7 @@ RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do wait_for_requests - click_link('Web IDE') - - wait_for_requests + ide_visit_from_link end after do @@ -26,6 +26,7 @@ RSpec.describe 'Multi-file editor new file', :js, feature_category: :web_ide do end it 'creates file in current directory' do + wait_for_requests first('.ide-tree-actions button').click page.within('.modal') do diff --git a/spec/features/projects/tree/tree_show_spec.rb b/spec/features/projects/tree/tree_show_spec.rb index 21932cae58b..835a3cda65e 100644 --- a/spec/features/projects/tree/tree_show_spec.rb +++ b/spec/features/projects/tree/tree_show_spec.rb @@ -3,6 +3,7 @@ require 'spec_helper' RSpec.describe 'Projects tree', :js, feature_category: :web_ide do + include WebIdeSpecHelpers include RepoHelpers let(:user) { create(:user) } @@ -123,10 +124,9 @@ RSpec.describe 'Projects tree', :js, feature_category: :web_ide do it 'opens folder in IDE' do visit project_tree_path(project, File.join('master', 'bar')) + ide_visit_from_link - click_link 'Web IDE' - - wait_for_requests + wait_for_all_requests find('.ide-file-list') wait_for_requests expect(page).to have_selector('.is-open', text: 'bar') diff --git a/spec/features/projects/tree/upload_file_spec.rb b/spec/features/projects/tree/upload_file_spec.rb index 1e4abc789c2..42fa88a0d3e 100644 --- a/spec/features/projects/tree/upload_file_spec.rb +++ b/spec/features/projects/tree/upload_file_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide do + include WebIdeSpecHelpers + let(:user) { create(:user) } let(:project) { create(:project, :repository) } let(:txt_file) { File.join(Rails.root, 'spec', 'fixtures', 'doc_sample.txt') } @@ -18,9 +20,7 @@ RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide wait_for_requests - click_link('Web IDE') - - wait_for_requests + ide_visit_from_link end after do @@ -28,6 +28,7 @@ RSpec.describe 'Multi-file editor upload file', :js, feature_category: :web_ide end it 'uploads text file' do + wait_for_all_requests # make the field visible so capybara can use it execute_script('document.querySelector("#file-upload").classList.remove("hidden")') attach_file('file-upload', txt_file) |