diff options
Diffstat (limited to 'spec/features')
38 files changed, 351 insertions, 262 deletions
diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb index c9591a7d854..dbb0ae9c86e 100644 --- a/spec/features/admin/admin_settings_spec.rb +++ b/spec/features/admin/admin_settings_spec.rb @@ -35,6 +35,7 @@ feature 'Admin updates settings' do fill_in 'Help page text', with: 'Example text' check 'Hide marketing-related entries from help' fill_in 'Support page URL', with: 'http://example.com/help' + uncheck 'Project export enabled' click_button 'Save' expect(current_application_settings.gravatar_enabled).to be_falsey @@ -42,6 +43,7 @@ feature 'Admin updates settings' do expect(current_application_settings.help_page_text).to eq "Example text" expect(current_application_settings.help_page_hide_commercial_content).to be_truthy expect(current_application_settings.help_page_support_url).to eq "http://example.com/help" + expect(current_application_settings.project_export_enabled).to be_falsey expect(page).to have_content "Application settings saved successfully" end @@ -72,7 +74,7 @@ feature 'Admin updates settings' do context 'sign-in restrictions', :js do it 'de-activates oauth sign-in source' do find('.btn', text: 'GitLab.com').click - + expect(find('.btn', text: 'GitLab.com')).not_to have_css('.active') end end diff --git a/spec/features/boards/sidebar_spec.rb b/spec/features/boards/sidebar_spec.rb index 8d3d4ff8773..c3bf50ef9d1 100644 --- a/spec/features/boards/sidebar_spec.rb +++ b/spec/features/boards/sidebar_spec.rb @@ -15,10 +15,12 @@ describe 'Issue Boards', js: true do let!(:list) { create(:list, board: board, label: development, position: 0) } let(:card) { find('.board:nth-child(2)').first('.card') } - before do - Timecop.freeze + around do |example| + Timecop.freeze { example.run } + end - project.team << [user, :master] + before do + project.add_master(user) sign_in(user) @@ -26,10 +28,6 @@ describe 'Issue Boards', js: true do wait_for_requests end - after do - Timecop.return - end - it 'shows sidebar when clicking issue' do click_card(card) diff --git a/spec/features/calendar_spec.rb b/spec/features/calendar_spec.rb index 64fbc80cb81..9a597a2d690 100644 --- a/spec/features/calendar_spec.rb +++ b/spec/features/calendar_spec.rb @@ -42,14 +42,14 @@ feature 'Contributions Calendar', :js do end def push_code_contribution - push_params = { - project: contributed_project, - action: Event::PUSHED, - author_id: user.id, - data: { commit_count: 3 } - } - - Event.create(push_params) + event = create(:push_event, project: contributed_project, author: user) + + create(:push_event_payload, + event: event, + commit_from: '11f9ac0a48b62cef25eedede4c1819964f08d5ce', + commit_to: '1cf19a015df3523caf0a1f9d40c98a267d6a2fc2', + commit_count: 3, + ref: 'master') end def note_comment_contribution diff --git a/spec/features/cycle_analytics_spec.rb b/spec/features/cycle_analytics_spec.rb index 5c60cca10b9..bfe9dac3bd4 100644 --- a/spec/features/cycle_analytics_spec.rb +++ b/spec/features/cycle_analytics_spec.rb @@ -24,6 +24,12 @@ feature 'Cycle Analytics', js: true do expect(page).to have_content('Introducing Cycle Analytics') end + it 'shows pipeline summary' do + expect(new_issues_counter).to have_content('-') + expect(commits_counter).to have_content('-') + expect(deploys_counter).to have_content('-') + end + it 'shows active stage with empty message' do expect(page).to have_selector('.stage-nav-item.active', text: 'Issue') expect(page).to have_content("We don't have enough data to show this stage.") @@ -42,6 +48,12 @@ feature 'Cycle Analytics', js: true do visit project_cycle_analytics_path(project) end + it 'shows pipeline summary' do + expect(new_issues_counter).to have_content('1') + expect(commits_counter).to have_content('2') + expect(deploys_counter).to have_content('1') + end + it 'shows data on each stage' do expect_issue_to_be_present @@ -63,6 +75,20 @@ feature 'Cycle Analytics', js: true do click_stage('Production') expect_issue_to_be_present end + + context "when I change the time period observed" do + before do + _two_weeks_old_issue = create(:issue, project: project, created_at: 2.weeks.ago) + + click_button('Last 30 days') + click_link('Last 7 days') + wait_for_requests + end + + it 'shows only relevant data' do + expect(new_issues_counter).to have_content('1') + end + end end context "when my preferred language is Spanish" do @@ -109,6 +135,18 @@ feature 'Cycle Analytics', js: true do end end + def new_issues_counter + find(:xpath, "//p[contains(text(),'New Issue')]/preceding-sibling::h3") + end + + def commits_counter + find(:xpath, "//p[contains(text(),'Commits')]/preceding-sibling::h3") + end + + def deploys_counter + find(:xpath, "//p[contains(text(),'Deploy')]/preceding-sibling::h3") + end + def expect_issue_to_be_present expect(find('.stage-events')).to have_content(issue.title) expect(find('.stage-events')).to have_content(issue.author.name) diff --git a/spec/features/dashboard/activity_spec.rb b/spec/features/dashboard/activity_spec.rb index 4917dfcf1d1..582868bac1e 100644 --- a/spec/features/dashboard/activity_spec.rb +++ b/spec/features/dashboard/activity_spec.rb @@ -23,27 +23,19 @@ feature 'Dashboard > Activity' do create(:merge_request, author: user, source_project: project, target_project: project) end - let(:push_event_data) do - { - before: Gitlab::Git::BLANK_SHA, - after: '0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e', - ref: 'refs/heads/new_design', - user_id: user.id, - user_name: user.name, - repository: { - name: project.name, - url: 'localhost/rubinius', - description: '', - homepage: 'localhost/rubinius', - private: true - } - } - end - let(:note) { create(:note, project: project, noteable: merge_request) } let!(:push_event) do - create(:event, :pushed, data: push_event_data, project: project, author: user) + event = create(:push_event, project: project, author: user) + + create(:push_event_payload, + event: event, + action: :created, + commit_to: '0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e', + ref: 'new_design', + commit_count: 1) + + event end let!(:merged_event) do diff --git a/spec/features/groups/milestone_spec.rb b/spec/features/groups/milestone_spec.rb index 574bbe0e0e1..56144d17d4f 100644 --- a/spec/features/groups/milestone_spec.rb +++ b/spec/features/groups/milestone_spec.rb @@ -5,14 +5,12 @@ feature 'Group milestones', :js do let!(:project) { create(:project_empty_repo, group: group) } let(:user) { create(:group_member, :master, user: create(:user), group: group ).user } - before do - Timecop.freeze - - sign_in(user) + around do |example| + Timecop.freeze { example.run } end - after do - Timecop.return + before do + sign_in(user) end context 'create a milestone' do @@ -37,12 +35,12 @@ feature 'Group milestones', :js do context 'milestones list' do let!(:other_project) { create(:project_empty_repo, group: group) } - let!(:active_group_milestone) { create(:milestone, group: group, state: 'active') } let!(:active_project_milestone1) { create(:milestone, project: project, state: 'active', title: 'v1.0') } let!(:active_project_milestone2) { create(:milestone, project: other_project, state: 'active', title: 'v1.0') } - let!(:closed_group_milestone) { create(:milestone, group: group, state: 'closed') } let!(:closed_project_milestone1) { create(:milestone, project: project, state: 'closed', title: 'v2.0') } let!(:closed_project_milestone2) { create(:milestone, project: other_project, state: 'closed', title: 'v2.0') } + let!(:active_group_milestone) { create(:milestone, group: group, state: 'active') } + let!(:closed_group_milestone) { create(:milestone, group: group, state: 'closed') } before do visit group_milestones_path(group) @@ -60,5 +58,30 @@ feature 'Group milestones', :js do expect(page).to have_selector("#milestone_#{active_group_milestone.id}", count: 1) expect(page).to have_selector("#milestone_#{legacy_milestone.milestones.first.id}", count: 1) end + + it 'updates milestone' do + page.within(".milestones #milestone_#{active_group_milestone.id}") do + click_link('Edit') + end + + page.within('.milestone-form') do + fill_in 'milestone_title', with: 'new title' + click_button('Update milestone') + end + + expect(find('#content-body h2')).to have_content('new title') + end + + it 'shows milestone detail and supports its edit' do + page.within(".milestones #milestone_#{active_group_milestone.id}") do + click_link(active_group_milestone.title) + end + + page.within('.detail-page-header') do + click_link('Edit') + end + + expect(page).to have_selector('.milestone-form') + end end end diff --git a/spec/features/help_pages_spec.rb b/spec/features/help_pages_spec.rb index bd4f233cba9..93be3b066ee 100644 --- a/spec/features/help_pages_spec.rb +++ b/spec/features/help_pages_spec.rb @@ -50,7 +50,7 @@ describe 'Help Pages' do it 'hides the version check image if the image request fails' do # We use '--load-images=yes' with poltergeist so the image fails to load - expect(find('.js-version-status-badge', visible: false)).not_to be_visible + expect(page).to have_selector('.js-version-status-badge', visible: false) end end diff --git a/spec/features/issues/bulk_assignment_labels_spec.rb b/spec/features/issues/bulk_assignment_labels_spec.rb index 847e3856ba5..b2229b44f99 100644 --- a/spec/features/issues/bulk_assignment_labels_spec.rb +++ b/spec/features/issues/bulk_assignment_labels_spec.rb @@ -353,7 +353,7 @@ feature 'Issues > Labels bulk assignment' do context 'cannot bulk assign labels' do it do - expect(page).not_to have_button 'Edit Issues' + expect(page).not_to have_button 'Edit issues' expect(page).not_to have_css '.check-all-issues' expect(page).not_to have_css '.issue-check' end @@ -411,7 +411,7 @@ feature 'Issues > Labels bulk assignment' do def enable_bulk_update visit project_issues_path(project) - click_button 'Edit Issues' + click_button 'Edit issues' end def disable_bulk_update diff --git a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb index a69bd8a09b7..2cc027aac9e 100644 --- a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb +++ b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb @@ -134,8 +134,10 @@ describe 'Dropdown assignee', :js do it 'fills in the assignee username when the assignee has not been filtered' do click_assignee(user_jacob.name) + wait_for_requests + expect(page).to have_css(js_dropdown_assignee, visible: false) - expect_tokens([{ name: 'assignee', value: "@#{user_jacob.username}" }]) + expect_tokens([assignee_token(user_jacob.name)]) expect_filtered_search_input_empty end @@ -143,8 +145,10 @@ describe 'Dropdown assignee', :js do filtered_search.send_keys('roo') click_assignee(user.name) + wait_for_requests + expect(page).to have_css(js_dropdown_assignee, visible: false) - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input_empty end @@ -152,7 +156,7 @@ describe 'Dropdown assignee', :js do find('#js-dropdown-assignee .filter-dropdown-item', text: 'No Assignee').click expect(page).to have_css(js_dropdown_assignee, visible: false) - expect_tokens([{ name: 'assignee', value: 'none' }]) + expect_tokens([assignee_token('none')]) expect_filtered_search_input_empty end end @@ -171,7 +175,7 @@ describe 'Dropdown assignee', :js do find('#js-dropdown-assignee .filter-dropdown-item', text: user.username).click expect(page).to have_css(js_dropdown_assignee, visible: false) - expect_tokens([{ name: 'assignee', value: user.username }]) + expect_tokens([assignee_token(user.username)]) expect_filtered_search_input_empty end end diff --git a/spec/features/issues/filtered_search/dropdown_author_spec.rb b/spec/features/issues/filtered_search/dropdown_author_spec.rb index 4bbf18e1dbe..975dc035f2d 100644 --- a/spec/features/issues/filtered_search/dropdown_author_spec.rb +++ b/spec/features/issues/filtered_search/dropdown_author_spec.rb @@ -121,16 +121,20 @@ describe 'Dropdown author', js: true do it 'fills in the author username when the author has not been filtered' do click_author(user_jacob.name) + wait_for_requests + expect(page).to have_css(js_dropdown_author, visible: false) - expect_tokens([{ name: 'author', value: "@#{user_jacob.username}" }]) + expect_tokens([author_token(user_jacob.name)]) expect_filtered_search_input_empty end it 'fills in the author username when the author has been filtered' do click_author(user.name) + wait_for_requests + expect(page).to have_css(js_dropdown_author, visible: false) - expect_tokens([{ name: 'author', value: "@#{user.username}" }]) + expect_tokens([author_token(user.name)]) expect_filtered_search_input_empty end end @@ -149,7 +153,7 @@ describe 'Dropdown author', js: true do find('#js-dropdown-author .filter-dropdown-item', text: user.username).click expect(page).to have_css(js_dropdown_author, visible: false) - expect_tokens([{ name: 'author', value: user.username }]) + expect_tokens([author_token(user.username)]) expect_filtered_search_input_empty end end diff --git a/spec/features/issues/filtered_search/dropdown_label_spec.rb b/spec/features/issues/filtered_search/dropdown_label_spec.rb index 67eb0ef0119..e84b07ec2ef 100644 --- a/spec/features/issues/filtered_search/dropdown_label_spec.rb +++ b/spec/features/issues/filtered_search/dropdown_label_spec.rb @@ -47,7 +47,7 @@ describe 'Dropdown label', js: true do filtered_search.native.send_keys(:down, :down, :enter) - expect_tokens([{ name: 'label', value: "~#{bug_label.title}" }]) + expect_tokens([label_token(bug_label.title)]) expect_filtered_search_input_empty end end @@ -178,7 +178,7 @@ describe 'Dropdown label', js: true do click_label(bug_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "~#{bug_label.title}" }]) + expect_tokens([label_token(bug_label.title)]) expect_filtered_search_input_empty end @@ -187,7 +187,7 @@ describe 'Dropdown label', js: true do click_label(bug_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "~#{bug_label.title}" }]) + expect_tokens([label_token(bug_label.title)]) expect_filtered_search_input_empty end @@ -195,7 +195,7 @@ describe 'Dropdown label', js: true do click_label(two_words_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "\"#{two_words_label.title}\"" }]) + expect_tokens([label_token("\"#{two_words_label.title}\"")]) expect_filtered_search_input_empty end @@ -203,7 +203,7 @@ describe 'Dropdown label', js: true do click_label(long_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "\"#{long_label.title}\"" }]) + expect_tokens([label_token("\"#{long_label.title}\"")]) expect_filtered_search_input_empty end @@ -211,7 +211,7 @@ describe 'Dropdown label', js: true do click_label(wont_fix_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "~'#{wont_fix_label.title}'" }]) + expect_tokens([label_token("'#{wont_fix_label.title}'")]) expect_filtered_search_input_empty end @@ -219,7 +219,7 @@ describe 'Dropdown label', js: true do click_label(uppercase_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "~#{uppercase_label.title}" }]) + expect_tokens([label_token(uppercase_label.title)]) expect_filtered_search_input_empty end @@ -227,7 +227,7 @@ describe 'Dropdown label', js: true do click_label(special_label.title) expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: "~#{special_label.title}" }]) + expect_tokens([label_token(special_label.title)]) expect_filtered_search_input_empty end @@ -235,7 +235,7 @@ describe 'Dropdown label', js: true do find("#{js_dropdown_label} .filter-dropdown-item", text: 'No Label').click expect(page).not_to have_css(js_dropdown_label) - expect_tokens([{ name: 'label', value: 'none' }]) + expect_tokens([label_token('none', false)]) expect_filtered_search_input_empty end end diff --git a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb index 456eb05f241..5f99921ae2e 100644 --- a/spec/features/issues/filtered_search/dropdown_milestone_spec.rb +++ b/spec/features/issues/filtered_search/dropdown_milestone_spec.rb @@ -134,7 +134,7 @@ describe 'Dropdown milestone', :js do click_milestone(milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%#{milestone.title}" }]) + expect_tokens([milestone_token(milestone.title)]) expect_filtered_search_input_empty end @@ -143,7 +143,7 @@ describe 'Dropdown milestone', :js do click_milestone(milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%#{milestone.title}" }]) + expect_tokens([milestone_token(milestone.title)]) expect_filtered_search_input_empty end @@ -151,7 +151,7 @@ describe 'Dropdown milestone', :js do click_milestone(two_words_milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%\"#{two_words_milestone.title}\"" }]) + expect_tokens([milestone_token("\"#{two_words_milestone.title}\"")]) expect_filtered_search_input_empty end @@ -159,7 +159,7 @@ describe 'Dropdown milestone', :js do click_milestone(long_milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%\"#{long_milestone.title}\"" }]) + expect_tokens([milestone_token("\"#{long_milestone.title}\"")]) expect_filtered_search_input_empty end @@ -167,7 +167,7 @@ describe 'Dropdown milestone', :js do click_milestone(wont_fix_milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%'#{wont_fix_milestone.title}'" }]) + expect_tokens([milestone_token("'#{wont_fix_milestone.title}'")]) expect_filtered_search_input_empty end @@ -175,7 +175,7 @@ describe 'Dropdown milestone', :js do click_milestone(uppercase_milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%#{uppercase_milestone.title}" }]) + expect_tokens([milestone_token(uppercase_milestone.title)]) expect_filtered_search_input_empty end @@ -183,7 +183,7 @@ describe 'Dropdown milestone', :js do click_milestone(special_milestone.title) expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: "%#{special_milestone.title}" }]) + expect_tokens([milestone_token(special_milestone.title)]) expect_filtered_search_input_empty end @@ -191,7 +191,7 @@ describe 'Dropdown milestone', :js do click_static_milestone('No Milestone') expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: 'none' }]) + expect_tokens([milestone_token('none', false)]) expect_filtered_search_input_empty end @@ -199,7 +199,7 @@ describe 'Dropdown milestone', :js do click_static_milestone('Upcoming') expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: 'upcoming' }]) + expect_tokens([milestone_token('upcoming', false)]) expect_filtered_search_input_empty end @@ -207,7 +207,7 @@ describe 'Dropdown milestone', :js do click_static_milestone('Started') expect(page).to have_css(js_dropdown_milestone, visible: false) - expect_tokens([{ name: 'milestone', value: 'started' }]) + expect_tokens([milestone_token('started', false)]) expect_filtered_search_input_empty end end diff --git a/spec/features/issues/filtered_search/filter_issues_spec.rb b/spec/features/issues/filtered_search/filter_issues_spec.rb index cd2cbf4bfe7..2070043d842 100644 --- a/spec/features/issues/filtered_search/filter_issues_spec.rb +++ b/spec/features/issues/filtered_search/filter_issues_spec.rb @@ -97,7 +97,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched author' do input_filtered_search("author:@#{user.username}") - expect_tokens([{ name: 'author', value: user.username }]) + wait_for_requests + + expect_tokens([author_token(user.name)]) expect_issues_list_count(5) expect_filtered_search_input_empty end @@ -117,7 +119,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched author and text' do input_filtered_search("author:@#{user.username} #{search_term}") - expect_tokens([{ name: 'author', value: user.username }]) + wait_for_requests + + expect_tokens([author_token(user.name)]) expect_issues_list_count(3) expect_filtered_search_input(search_term) end @@ -125,10 +129,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched author, assignee and text' do input_filtered_search("author:@#{user.username} assignee:@#{user.username} #{search_term}") - expect_tokens([ - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username } - ]) + wait_for_requests + + expect_tokens([author_token(user.name), assignee_token(user.name)]) expect_issues_list_count(3) expect_filtered_search_input(search_term) end @@ -136,10 +139,12 @@ describe 'Filter issues', js: true do it 'filters issues by searched author, assignee, label, and text' do input_filtered_search("author:@#{user.username} assignee:@#{user.username} label:~#{caps_sensitive_label.title} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username }, - { name: 'label', value: caps_sensitive_label.title } + author_token(user.name), + assignee_token(user.name), + label_token(caps_sensitive_label.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -148,11 +153,13 @@ describe 'Filter issues', js: true do it 'filters issues by searched author, assignee, label, milestone and text' do input_filtered_search("author:@#{user.username} assignee:@#{user.username} label:~#{caps_sensitive_label.title} milestone:%#{milestone.title} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username }, - { name: 'label', value: caps_sensitive_label.title }, - { name: 'milestone', value: milestone.title } + author_token(user.name), + assignee_token(user.name), + label_token(caps_sensitive_label.title), + milestone_token(milestone.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -169,7 +176,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched assignee' do input_filtered_search("assignee:@#{user.username}") - expect_tokens([{ name: 'assignee', value: user.username }]) + wait_for_requests + + expect_tokens([assignee_token(user.name)]) expect_issues_list_count(5) expect_filtered_search_input_empty end @@ -177,7 +186,7 @@ describe 'Filter issues', js: true do it 'filters issues by no assignee' do input_filtered_search('assignee:none') - expect_tokens([{ name: 'assignee', value: 'none' }]) + expect_tokens([assignee_token('none')]) expect_issues_list_count(8, 1) expect_filtered_search_input_empty end @@ -197,7 +206,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched assignee and text' do input_filtered_search("assignee:@#{user.username} #{search_term}") - expect_tokens([{ name: 'assignee', value: user.username }]) + wait_for_requests + + expect_tokens([assignee_token(user.name)]) expect_issues_list_count(2) expect_filtered_search_input(search_term) end @@ -205,10 +216,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched assignee, author and text' do input_filtered_search("assignee:@#{user.username} author:@#{user.username} #{search_term}") - expect_tokens([ - { name: 'assignee', value: user.username }, - { name: 'author', value: user.username } - ]) + wait_for_requests + + expect_tokens([assignee_token(user.name), author_token(user.name)]) expect_issues_list_count(2) expect_filtered_search_input(search_term) end @@ -216,10 +226,12 @@ describe 'Filter issues', js: true do it 'filters issues by searched assignee, author, label, text' do input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'assignee', value: user.username }, - { name: 'author', value: user.username }, - { name: 'label', value: caps_sensitive_label.title } + assignee_token(user.name), + author_token(user.name), + label_token(caps_sensitive_label.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -229,10 +241,10 @@ describe 'Filter issues', js: true do input_filtered_search("assignee:@#{user.username} author:@#{user.username} label:~#{caps_sensitive_label.title} milestone:%#{milestone.title} #{search_term}") expect_tokens([ - { name: 'assignee', value: user.username }, - { name: 'author', value: user.username }, - { name: 'label', value: caps_sensitive_label.title }, - { name: 'milestone', value: milestone.title } + assignee_token(user.name), + author_token(user.name), + label_token(caps_sensitive_label.title), + milestone_token(milestone.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -253,7 +265,7 @@ describe 'Filter issues', js: true do it 'filters issues by searched label' do input_filtered_search("label:~#{bug_label.title}") - expect_tokens([{ name: 'label', value: bug_label.title }]) + expect_tokens([label_token(bug_label.title)]) expect_issues_list_count(2) expect_filtered_search_input_empty end @@ -261,7 +273,7 @@ describe 'Filter issues', js: true do it 'filters issues by no label' do input_filtered_search('label:none') - expect_tokens([{ name: 'label', value: 'none' }]) + expect_tokens([label_token('none', false)]) expect_issues_list_count(9, 1) expect_filtered_search_input_empty end @@ -274,8 +286,8 @@ describe 'Filter issues', js: true do input_filtered_search("label:~#{bug_label.title} label:~#{caps_sensitive_label.title}") expect_tokens([ - { name: 'label', value: bug_label.title }, - { name: 'label', value: caps_sensitive_label.title } + label_token(bug_label.title), + label_token(caps_sensitive_label.title) ]) expect_issues_list_count(1) expect_filtered_search_input_empty @@ -287,7 +299,8 @@ describe 'Filter issues', js: true do special_issue.labels << special_label input_filtered_search("label:~#{special_label.title}") - expect_tokens([{ name: 'label', value: special_label.title }]) + + expect_tokens([label_token(special_label.title)]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -297,7 +310,7 @@ describe 'Filter issues', js: true do input_filtered_search("label:~#{new_label.title}") - expect_tokens([{ name: 'label', value: new_label.title }]) + expect_tokens([label_token(new_label.title)]) expect_no_issues_list() expect_filtered_search_input_empty end @@ -311,25 +324,27 @@ describe 'Filter issues', js: true do input_filtered_search("label:~'#{special_multiple_label.title}'") - # filtered search defaults quotations to double quotes - expect_tokens([{ name: 'label', value: "\"#{special_multiple_label.title}\"" }]) + # Check for search results (which makes sure that the page has changed) expect_issues_list_count(1) + # filtered search defaults quotations to double quotes + expect_tokens([label_token("\"#{special_multiple_label.title}\"")]) + expect_filtered_search_input_empty end it 'single quotes' do input_filtered_search("label:~'#{multiple_words_label.title}'") - expect_tokens([{ name: 'label', value: "\"#{multiple_words_label.title}\"" }]) expect_issues_list_count(1) + expect_tokens([label_token("\"#{multiple_words_label.title}\"")]) expect_filtered_search_input_empty end it 'double quotes' do input_filtered_search("label:~\"#{multiple_words_label.title}\"") - expect_tokens([{ name: 'label', value: "\"#{multiple_words_label.title}\"" }]) + expect_tokens([label_token("\"#{multiple_words_label.title}\"")]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -341,7 +356,7 @@ describe 'Filter issues', js: true do input_filtered_search("label:~'#{double_quotes_label.title}'") - expect_tokens([{ name: 'label', value: "'#{double_quotes_label.title}'" }]) + expect_tokens([label_token("'#{double_quotes_label.title}'")]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -353,7 +368,7 @@ describe 'Filter issues', js: true do input_filtered_search("label:~\"#{single_quotes_label.title}\"") - expect_tokens([{ name: 'label', value: "\"#{single_quotes_label.title}\"" }]) + expect_tokens([label_token("\"#{single_quotes_label.title}\"")]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -363,7 +378,7 @@ describe 'Filter issues', js: true do it 'filters issues by searched label and text' do input_filtered_search("label:~#{caps_sensitive_label.title} #{search_term}") - expect_tokens([{ name: 'label', value: caps_sensitive_label.title }]) + expect_tokens([label_token(caps_sensitive_label.title)]) expect_issues_list_count(1) expect_filtered_search_input(search_term) end @@ -371,10 +386,9 @@ describe 'Filter issues', js: true do it 'filters issues by searched label, author and text' do input_filtered_search("label:~#{caps_sensitive_label.title} author:@#{user.username} #{search_term}") - expect_tokens([ - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username } - ]) + wait_for_requests + + expect_tokens([label_token(caps_sensitive_label.title), author_token(user.name)]) expect_issues_list_count(1) expect_filtered_search_input(search_term) end @@ -382,10 +396,12 @@ describe 'Filter issues', js: true do it 'filters issues by searched label, author, assignee and text' do input_filtered_search("label:~#{caps_sensitive_label.title} author:@#{user.username} assignee:@#{user.username} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username } + label_token(caps_sensitive_label.title), + author_token(user.name), + assignee_token(user.name) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -395,10 +411,10 @@ describe 'Filter issues', js: true do input_filtered_search("label:~#{caps_sensitive_label.title} author:@#{user.username} assignee:@#{user.username} milestone:%#{milestone.title} #{search_term}") expect_tokens([ - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username }, - { name: 'milestone', value: milestone.title } + label_token(caps_sensitive_label.title), + author_token(user.name), + assignee_token(user.name), + milestone_token(milestone.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -410,8 +426,8 @@ describe 'Filter issues', js: true do input_filtered_search("label:~#{bug_label.title} label:~#{caps_sensitive_label.title} #{search_term}") expect_tokens([ - { name: 'label', value: bug_label.title }, - { name: 'label', value: caps_sensitive_label.title } + label_token(bug_label.title), + label_token(caps_sensitive_label.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -420,10 +436,12 @@ describe 'Filter issues', js: true do it 'filters issues by searched label, label2, author and text' do input_filtered_search("label:~#{bug_label.title} label:~#{caps_sensitive_label.title} author:@#{user.username} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'label', value: bug_label.title }, - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username } + label_token(bug_label.title), + label_token(caps_sensitive_label.title), + author_token(user.name) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -432,11 +450,13 @@ describe 'Filter issues', js: true do it 'filters issues by searched label, label2, author, assignee and text' do input_filtered_search("label:~#{bug_label.title} label:~#{caps_sensitive_label.title} author:@#{user.username} assignee:@#{user.username} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'label', value: bug_label.title }, - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username } + label_token(bug_label.title), + label_token(caps_sensitive_label.title), + author_token(user.name), + assignee_token(user.name) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -445,12 +465,14 @@ describe 'Filter issues', js: true do it 'filters issues by searched label, label2, author, assignee, milestone and text' do input_filtered_search("label:~#{bug_label.title} label:~#{caps_sensitive_label.title} author:@#{user.username} assignee:@#{user.username} milestone:%#{milestone.title} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'label', value: bug_label.title }, - { name: 'label', value: caps_sensitive_label.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username }, - { name: 'milestone', value: milestone.title } + label_token(bug_label.title), + label_token(caps_sensitive_label.title), + author_token(user.name), + assignee_token(user.name), + milestone_token(milestone.title) ]) expect_issues_list_count(1) expect_filtered_search_input(search_term) @@ -467,7 +489,7 @@ describe 'Filter issues', js: true do end it 'displays in search bar' do - expect_tokens([{ name: 'label', value: "\"#{multiple_words_label.title}\"" }]) + expect_tokens([label_token("\"#{multiple_words_label.title}\"")]) expect_filtered_search_input_empty end end @@ -484,7 +506,7 @@ describe 'Filter issues', js: true do it 'filters issues by searched milestone' do input_filtered_search("milestone:%#{milestone.title}") - expect_tokens([{ name: 'milestone', value: milestone.title }]) + expect_tokens([milestone_token(milestone.title)]) expect_issues_list_count(5) expect_filtered_search_input_empty end @@ -492,7 +514,7 @@ describe 'Filter issues', js: true do it 'filters issues by no milestone' do input_filtered_search("milestone:none") - expect_tokens([{ name: 'milestone', value: 'none' }]) + expect_tokens([milestone_token('none', false)]) expect_issues_list_count(7, 1) expect_filtered_search_input_empty end @@ -500,7 +522,7 @@ describe 'Filter issues', js: true do it 'filters issues by upcoming milestones' do input_filtered_search("milestone:upcoming") - expect_tokens([{ name: 'milestone', value: 'upcoming' }]) + expect_tokens([milestone_token('upcoming', false)]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -508,7 +530,7 @@ describe 'Filter issues', js: true do it 'filters issues by started milestones' do input_filtered_search("milestone:started") - expect_tokens([{ name: 'milestone', value: 'started' }]) + expect_tokens([milestone_token('started', false)]) expect_issues_list_count(5) expect_filtered_search_input_empty end @@ -527,7 +549,7 @@ describe 'Filter issues', js: true do input_filtered_search("milestone:%#{special_milestone.title}") - expect_tokens([{ name: 'milestone', value: special_milestone.title }]) + expect_tokens([milestone_token(special_milestone.title)]) expect_issues_list_count(1) expect_filtered_search_input_empty end @@ -537,7 +559,7 @@ describe 'Filter issues', js: true do input_filtered_search("milestone:%#{new_milestone.title}") - expect_tokens([{ name: 'milestone', value: new_milestone.title }]) + expect_tokens([milestone_token(new_milestone.title)]) expect_no_issues_list() expect_filtered_search_input_empty end @@ -549,7 +571,7 @@ describe 'Filter issues', js: true do it 'filters issues by searched milestone and text' do input_filtered_search("milestone:%#{milestone.title} #{search_term}") - expect_tokens([{ name: 'milestone', value: milestone.title }]) + expect_tokens([milestone_token(milestone.title)]) expect_issues_list_count(2) expect_filtered_search_input(search_term) end @@ -557,9 +579,11 @@ describe 'Filter issues', js: true do it 'filters issues by searched milestone, author and text' do input_filtered_search("milestone:%#{milestone.title} author:@#{user.username} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'milestone', value: milestone.title }, - { name: 'author', value: user.username } + milestone_token(milestone.title), + author_token(user.name) ]) expect_issues_list_count(2) expect_filtered_search_input(search_term) @@ -568,10 +592,12 @@ describe 'Filter issues', js: true do it 'filters issues by searched milestone, author, assignee and text' do input_filtered_search("milestone:%#{milestone.title} author:@#{user.username} assignee:@#{user.username} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'milestone', value: milestone.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username } + milestone_token(milestone.title), + author_token(user.name), + assignee_token(user.name) ]) expect_issues_list_count(2) expect_filtered_search_input(search_term) @@ -580,11 +606,13 @@ describe 'Filter issues', js: true do it 'filters issues by searched milestone, author, assignee, label and text' do input_filtered_search("milestone:%#{milestone.title} author:@#{user.username} assignee:@#{user.username} label:~#{bug_label.title} #{search_term}") + wait_for_requests + expect_tokens([ - { name: 'milestone', value: milestone.title }, - { name: 'author', value: user.username }, - { name: 'assignee', value: user.username }, - { name: 'label', value: bug_label.title } + milestone_token(milestone.title), + author_token(user.name), + assignee_token(user.name), + label_token(bug_label.title) ]) expect_issues_list_count(2) expect_filtered_search_input(search_term) diff --git a/spec/features/issues/filtered_search/search_bar_spec.rb b/spec/features/issues/filtered_search/search_bar_spec.rb index aa9d0d842de..a432d031337 100644 --- a/spec/features/issues/filtered_search/search_bar_spec.rb +++ b/spec/features/issues/filtered_search/search_bar_spec.rb @@ -32,7 +32,7 @@ describe 'Search bar', js: true do it 'selects item' do filtered_search.native.send_keys(:down, :down, :enter) - expect_tokens([{ name: 'author' }]) + expect_tokens([author_token]) expect_filtered_search_input_empty end end diff --git a/spec/features/issues/filtered_search/visual_tokens_spec.rb b/spec/features/issues/filtered_search/visual_tokens_spec.rb index 52efe944b69..14a555fde10 100644 --- a/spec/features/issues/filtered_search/visual_tokens_spec.rb +++ b/spec/features/issues/filtered_search/visual_tokens_spec.rb @@ -346,8 +346,8 @@ describe 'Visual tokens', js: true do it 'tokenizes the search term to complete visual token' do expect_tokens([ - { name: 'author', value: '@root' }, - { name: 'assignee', value: 'none' } + author_token(user.name), + assignee_token('none') ]) end end diff --git a/spec/features/issues/note_polling_spec.rb b/spec/features/issues/note_polling_spec.rb index 9f08ecc214b..62dbc3efb01 100644 --- a/spec/features/issues/note_polling_spec.rb +++ b/spec/features/issues/note_polling_spec.rb @@ -133,8 +133,6 @@ feature 'Issue notes polling', :js do def click_edit_action(note) note_element = find("#note_#{note.id}") - open_more_actions_dropdown(note) - note_element.find('.js-note-edit').click end end diff --git a/spec/features/issues/update_issues_spec.rb b/spec/features/issues/update_issues_spec.rb index 5a7c4f54cb6..bcc6e9bab0f 100644 --- a/spec/features/issues/update_issues_spec.rb +++ b/spec/features/issues/update_issues_spec.rb @@ -14,7 +14,7 @@ feature 'Multiple issue updating from issues#index', :js do it 'sets to closed' do visit project_issues_path(project) - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click find('.js-issue-status').click @@ -27,7 +27,7 @@ feature 'Multiple issue updating from issues#index', :js do create_closed visit project_issues_path(project, state: 'closed') - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click find('.js-issue-status').click @@ -41,7 +41,7 @@ feature 'Multiple issue updating from issues#index', :js do it 'updates to current user' do visit project_issues_path(project) - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click click_update_assignee_button @@ -57,7 +57,7 @@ feature 'Multiple issue updating from issues#index', :js do create_assigned visit project_issues_path(project) - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click click_update_assignee_button @@ -73,7 +73,7 @@ feature 'Multiple issue updating from issues#index', :js do it 'updates milestone' do visit project_issues_path(project) - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click find('.issues-bulk-update .js-milestone-select').click @@ -89,7 +89,7 @@ feature 'Multiple issue updating from issues#index', :js do expect(first('.issue')).to have_content milestone.title - click_button 'Edit Issues' + click_button 'Edit issues' find('#check-all-issues').click find('.issues-bulk-update .js-milestone-select').click diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb index a5bb642221c..3ffc80622f5 100644 --- a/spec/features/issues_spec.rb +++ b/spec/features/issues_spec.rb @@ -708,7 +708,7 @@ describe 'Issues' do end describe 'confidential issue#show', js: true do - it 'shows confidential sibebar information as confidential and can be turned off' do + it 'shows confidential sibebar information as confidential and can be turned off' do issue = create(:issue, :confidential, project: project) visit project_issue_path(project, issue) @@ -729,7 +729,6 @@ describe 'Issues' do visit project_issue_path(project, issue) expect(page).not_to have_css('.is-confidential') - expect(page).to have_css('.is-not-confidential') end end end diff --git a/spec/features/merge_requests/conflicts_spec.rb b/spec/features/merge_requests/conflicts_spec.rb index 2c560632a1b..2d2c674f8fb 100644 --- a/spec/features/merge_requests/conflicts_spec.rb +++ b/spec/features/merge_requests/conflicts_spec.rb @@ -28,11 +28,12 @@ feature 'Merge request conflict resolution', js: true do end click_button 'Commit conflict resolution' - wait_for_requests expect(page).to have_content('All merge conflicts were resolved') merge_request.reload_diff + wait_for_requests + click_on 'Changes' wait_for_requests @@ -69,10 +70,12 @@ feature 'Merge request conflict resolution', js: true do end click_button 'Commit conflict resolution' - wait_for_requests + expect(page).to have_content('All merge conflicts were resolved') merge_request.reload_diff + wait_for_requests + click_on 'Changes' wait_for_requests @@ -140,12 +143,13 @@ feature 'Merge request conflict resolution', js: true do end click_button 'Commit conflict resolution' - wait_for_requests expect(page).to have_content('All merge conflicts were resolved') merge_request.reload_diff + wait_for_requests + click_on 'Changes' wait_for_requests click_link 'Expand all' diff --git a/spec/features/merge_requests/diff_notes_avatars_spec.rb b/spec/features/merge_requests/diff_notes_avatars_spec.rb index 2d9419d6124..c4f02311f13 100644 --- a/spec/features/merge_requests/diff_notes_avatars_spec.rb +++ b/spec/features/merge_requests/diff_notes_avatars_spec.rb @@ -157,7 +157,7 @@ feature 'Diff note avatars', js: true do end page.within find("[id='#{position.line_code(project.repository)}']") do - find('.diff-notes-collapse').click + find('.diff-notes-collapse').trigger('click') expect(page).to have_selector('img.js-diff-comment-avatar', count: 3) expect(find('.diff-comments-more-count')).to have_content '+1' diff --git a/spec/features/merge_requests/filter_by_labels_spec.rb b/spec/features/merge_requests/filter_by_labels_spec.rb index 1d52a4659ad..9912e8165e6 100644 --- a/spec/features/merge_requests/filter_by_labels_spec.rb +++ b/spec/features/merge_requests/filter_by_labels_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -feature 'Merge Request filtering by Labels', js: true do +feature 'Merge Request filtering by Labels', :js do include FilteredSearchHelpers include MergeRequestHelpers @@ -12,9 +12,9 @@ feature 'Merge Request filtering by Labels', js: true do let!(:feature) { create(:label, project: project, title: 'feature') } let!(:enhancement) { create(:label, project: project, title: 'enhancement') } - let!(:mr1) { create(:merge_request, title: "Bugfix1", source_project: project, target_project: project, source_branch: "bugfix1") } - let!(:mr2) { create(:merge_request, title: "Bugfix2", source_project: project, target_project: project, source_branch: "bugfix2") } - let!(:mr3) { create(:merge_request, title: "Feature1", source_project: project, target_project: project, source_branch: "feature1") } + let!(:mr1) { create(:merge_request, title: "Bugfix1", source_project: project, target_project: project, source_branch: "fix") } + let!(:mr2) { create(:merge_request, title: "Bugfix2", source_project: project, target_project: project, source_branch: "wip") } + let!(:mr3) { create(:merge_request, title: "Feature1", source_project: project, target_project: project, source_branch: "improve/awesome") } before do mr1.labels << bug @@ -25,7 +25,7 @@ feature 'Merge Request filtering by Labels', js: true do mr3.title = "Feature1" mr3.labels << feature - project.team << [user, :master] + project.add_master(user) sign_in(user) visit project_merge_requests_path(project) diff --git a/spec/features/merge_requests/filter_by_milestone_spec.rb b/spec/features/merge_requests/filter_by_milestone_spec.rb index 521fcabc881..166c02a7a7f 100644 --- a/spec/features/merge_requests/filter_by_milestone_spec.rb +++ b/spec/features/merge_requests/filter_by_milestone_spec.rb @@ -25,7 +25,7 @@ feature 'Merge Request filtering by Milestone' do visit_merge_requests(project) input_filtered_search('milestone:none') - expect_tokens([{ name: 'milestone', value: 'none' }]) + expect_tokens([milestone_token('none', false)]) expect_filtered_search_input_empty expect(page).to have_issuable_counts(open: 1, closed: 0, all: 1) diff --git a/spec/features/merge_requests/filter_merge_requests_spec.rb b/spec/features/merge_requests/filter_merge_requests_spec.rb index f0019be86ad..b51ae0890e4 100644 --- a/spec/features/merge_requests/filter_merge_requests_spec.rb +++ b/spec/features/merge_requests/filter_merge_requests_spec.rb @@ -12,7 +12,7 @@ describe 'Filter merge requests' do let!(:wontfix) { create(:label, project: project, title: "Won't fix") } before do - project.team << [user, :master] + project.add_master(user) group.add_developer(user) sign_in(user) create(:merge_request, source_project: project, target_project: project) @@ -24,7 +24,9 @@ describe 'Filter merge requests' do let(:search_query) { "assignee:@#{user.username}" } def expect_assignee_visual_tokens - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + wait_for_requests + + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input_empty end @@ -57,7 +59,7 @@ describe 'Filter merge requests' do let(:search_query) { "milestone:%\"#{milestone.title}\"" } def expect_milestone_visual_tokens - expect_tokens([{ name: 'milestone', value: "%\"#{milestone.title}\"" }]) + expect_tokens([milestone_token("\"#{milestone.title}\"")]) expect_filtered_search_input_empty end @@ -91,7 +93,7 @@ describe 'Filter merge requests' do input_filtered_search('label:none') expect_mr_list_count(1) - expect_tokens([{ name: 'label', value: 'none' }]) + expect_tokens([label_token('none', false)]) expect_filtered_search_input_empty end @@ -99,7 +101,7 @@ describe 'Filter merge requests' do input_filtered_search("label:~#{label.title}") expect_mr_list_count(0) - expect_tokens([{ name: 'label', value: "~#{label.title}" }]) + expect_tokens([label_token(label.title)]) expect_filtered_search_input_empty end @@ -107,10 +109,7 @@ describe 'Filter merge requests' do input_filtered_search("label:~\"#{wontfix.title}\" label:~#{label.title}") expect_mr_list_count(0) - expect_tokens([ - { name: 'label', value: "~\"#{wontfix.title}\"" }, - { name: 'label', value: "~#{label.title}" } - ]) + expect_tokens([label_token("\"#{wontfix.title}\""), label_token(label.title)]) expect_filtered_search_input_empty end @@ -118,16 +117,13 @@ describe 'Filter merge requests' do input_filtered_search("label:~\"#{wontfix.title}\"") expect_mr_list_count(0) - expect_tokens([{ name: 'label', value: "~\"#{wontfix.title}\"" }]) + expect_tokens([label_token("\"#{wontfix.title}\"")]) expect_filtered_search_input_empty input_filtered_search_keys("label:~#{label.title}") expect_mr_list_count(0) - expect_tokens([ - { name: 'label', value: "~\"#{wontfix.title}\"" }, - { name: 'label', value: "~#{label.title}" } - ]) + expect_tokens([label_token("\"#{wontfix.title}\""), label_token(label.title)]) expect_filtered_search_input_empty end end @@ -143,10 +139,9 @@ describe 'Filter merge requests' do context 'assignee and label', js: true do def expect_assignee_label_visual_tokens - expect_tokens([ - { name: 'assignee', value: "@#{user.username}" }, - { name: 'label', value: "~#{label.title}" } - ]) + wait_for_requests + + expect_tokens([assignee_token(user.name), label_token(label.title)]) expect_filtered_search_input_empty end @@ -170,7 +165,7 @@ describe 'Filter merge requests' do describe 'filter merge requests by text' do before do - create(:merge_request, title: "Bug", source_project: project, target_project: project, source_branch: "bug") + create(:merge_request, title: "Bug", source_project: project, target_project: project, source_branch: "wip") bug_label = create(:label, project: project, title: 'bug') milestone = create(:milestone, title: "8", project: project) @@ -179,7 +174,7 @@ describe 'Filter merge requests' do title: "Bug 2", source_project: project, target_project: project, - source_branch: "bug2", + source_branch: "fix", milestone: milestone, author: user, assignee: user) @@ -214,7 +209,7 @@ describe 'Filter merge requests' do input_filtered_search_keys(' label:~bug') expect_mr_list_count(1) - expect_tokens([{ name: 'label', value: '~bug' }]) + expect_tokens([label_token('bug')]) expect_filtered_search_input('Bug') end @@ -227,7 +222,7 @@ describe 'Filter merge requests' do input_filtered_search_keys(' milestone:%8') expect_mr_list_count(1) - expect_tokens([{ name: 'milestone', value: '%8' }]) + expect_tokens([milestone_token('8')]) expect_filtered_search_input('Bug') end @@ -240,7 +235,10 @@ describe 'Filter merge requests' do input_filtered_search_keys(" assignee:@#{user.username}") expect_mr_list_count(1) - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + + wait_for_requests + + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input('Bug') end @@ -252,19 +250,21 @@ describe 'Filter merge requests' do input_filtered_search_keys(" author:@#{user.username}") + wait_for_requests + expect_mr_list_count(1) - expect_tokens([{ name: 'author', value: "@#{user.username}" }]) + expect_tokens([author_token(user.name)]) expect_filtered_search_input('Bug') end end end - describe 'filter merge requests and sort', js: true do + describe 'filter merge requests and sort', :js do before do bug_label = create(:label, project: project, title: 'bug') - mr1 = create(:merge_request, title: "Frontend", source_project: project, target_project: project, source_branch: "Frontend") - mr2 = create(:merge_request, title: "Bug 2", source_project: project, target_project: project, source_branch: "bug2") + mr1 = create(:merge_request, title: "Frontend", source_project: project, target_project: project, source_branch: "wip") + mr2 = create(:merge_request, title: "Bug 2", source_project: project, target_project: project, source_branch: "fix") mr1.labels << bug_label mr2.labels << bug_label @@ -293,7 +293,9 @@ describe 'Filter merge requests' do it 'filter by current user' do visit project_merge_requests_path(project, assignee_id: user.id) - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + wait_for_requests + + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input_empty end @@ -303,7 +305,9 @@ describe 'Filter merge requests' do visit project_merge_requests_path(project, assignee_id: new_user.id) - expect_tokens([{ name: 'assignee', value: "@#{new_user.username}" }]) + wait_for_requests + + expect_tokens([assignee_token(new_user.name)]) expect_filtered_search_input_empty end end @@ -312,7 +316,9 @@ describe 'Filter merge requests' do it 'filter by current user' do visit project_merge_requests_path(project, author_id: user.id) - expect_tokens([{ name: 'author', value: "@#{user.username}" }]) + wait_for_requests + + expect_tokens([author_token(user.name)]) expect_filtered_search_input_empty end @@ -322,7 +328,9 @@ describe 'Filter merge requests' do visit project_merge_requests_path(project, author_id: new_user.id) - expect_tokens([{ name: 'author', value: "@#{new_user.username}" }]) + wait_for_requests + + expect_tokens([author_token(new_user.name)]) expect_filtered_search_input_empty end end diff --git a/spec/features/merge_requests/reset_filters_spec.rb b/spec/features/merge_requests/reset_filters_spec.rb index c1b90e5f875..eed95816bdf 100644 --- a/spec/features/merge_requests/reset_filters_spec.rb +++ b/spec/features/merge_requests/reset_filters_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -feature 'Merge requests filter clear button', js: true do +feature 'Merge requests filter clear button', :js do include FilteredSearchHelpers include MergeRequestHelpers include IssueHelpers @@ -9,8 +9,8 @@ feature 'Merge requests filter clear button', js: true do let!(:user) { create(:user) } let!(:milestone) { create(:milestone, project: project) } let!(:bug) { create(:label, project: project, name: 'bug')} - let!(:mr1) { create(:merge_request, title: "Feature", source_project: project, target_project: project, source_branch: "Feature", milestone: milestone, author: user, assignee: user) } - let!(:mr2) { create(:merge_request, title: "Bugfix1", source_project: project, target_project: project, source_branch: "Bugfix1") } + let!(:mr1) { create(:merge_request, title: "Feature", source_project: project, target_project: project, source_branch: "improve/awesome", milestone: milestone, author: user, assignee: user) } + let!(:mr2) { create(:merge_request, title: "Bugfix1", source_project: project, target_project: project, source_branch: "fix") } let(:merge_request_css) { '.merge-request' } let(:clear_search_css) { '.filtered-search-box .clear-search' } diff --git a/spec/features/merge_requests/update_merge_requests_spec.rb b/spec/features/merge_requests/update_merge_requests_spec.rb index cf30a687df8..e6dc284cba7 100644 --- a/spec/features/merge_requests/update_merge_requests_spec.rb +++ b/spec/features/merge_requests/update_merge_requests_spec.rb @@ -98,7 +98,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do end def change_status(text) - click_button 'Edit Merge Requests' + click_button 'Edit merge requests' find('#check-all-issues').click find('.js-issue-status').click find('.dropdown-menu-status a', text: text).click @@ -106,7 +106,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do end def change_assignee(text) - click_button 'Edit Merge Requests' + click_button 'Edit merge requests' find('#check-all-issues').click find('.js-update-assignee').click wait_for_requests @@ -119,7 +119,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do end def change_milestone(text) - click_button 'Edit Merge Requests' + click_button 'Edit merge requests' find('#check-all-issues').click find('.issues-bulk-update .js-milestone-select').click find('.dropdown-menu-milestone a', text: text).click diff --git a/spec/features/merge_requests/user_lists_merge_requests_spec.rb b/spec/features/merge_requests/user_lists_merge_requests_spec.rb index d62b035b40b..20008b4e7f9 100644 --- a/spec/features/merge_requests/user_lists_merge_requests_spec.rb +++ b/spec/features/merge_requests/user_lists_merge_requests_spec.rb @@ -24,12 +24,10 @@ describe 'Projects > Merge requests > User lists merge requests' do milestone: create(:milestone, due_date: '2013-12-12'), created_at: 2.minutes.ago, updated_at: 2.minutes.ago) - # lfs in itself is not a great choice for the title if one wants to match the whole body content later on - # just think about the scenario when faker generates 'Chester Runolfsson' as the user's name create(:merge_request, - title: 'merge_lfs', + title: 'merge-test', source_project: project, - source_branch: 'merge_lfs', + source_branch: 'merge-test', created_at: 3.minutes.ago, updated_at: 10.seconds.ago) end @@ -38,7 +36,7 @@ describe 'Projects > Merge requests > User lists merge requests' do visit_merge_requests(project, assignee_id: IssuableFinder::NONE) expect(current_path).to eq(project_merge_requests_path(project)) - expect(page).to have_content 'merge_lfs' + expect(page).to have_content 'merge-test' expect(page).not_to have_content 'fix' expect(page).not_to have_content 'markdown' expect(count_merge_requests).to eq(1) @@ -47,7 +45,7 @@ describe 'Projects > Merge requests > User lists merge requests' do it 'filters on a specific assignee' do visit_merge_requests(project, assignee_id: user.id) - expect(page).not_to have_content 'merge_lfs' + expect(page).not_to have_content 'merge-test' expect(page).to have_content 'fix' expect(page).to have_content 'markdown' expect(count_merge_requests).to eq(2) @@ -57,14 +55,14 @@ describe 'Projects > Merge requests > User lists merge requests' do visit_merge_requests(project, sort: sort_value_recently_created) expect(first_merge_request).to include('fix') - expect(last_merge_request).to include('merge_lfs') + expect(last_merge_request).to include('merge-test') expect(count_merge_requests).to eq(3) end it 'sorts by oldest' do visit_merge_requests(project, sort: sort_value_oldest_created) - expect(first_merge_request).to include('merge_lfs') + expect(first_merge_request).to include('merge-test') expect(last_merge_request).to include('fix') expect(count_merge_requests).to eq(3) end @@ -72,7 +70,7 @@ describe 'Projects > Merge requests > User lists merge requests' do it 'sorts by last updated' do visit_merge_requests(project, sort: sort_value_recently_updated) - expect(first_merge_request).to include('merge_lfs') + expect(first_merge_request).to include('merge-test') expect(count_merge_requests).to eq(3) end diff --git a/spec/features/merge_requests/user_posts_notes_spec.rb b/spec/features/merge_requests/user_posts_notes_spec.rb index 74d21822a59..d7cda73ab40 100644 --- a/spec/features/merge_requests/user_posts_notes_spec.rb +++ b/spec/features/merge_requests/user_posts_notes_spec.rb @@ -75,7 +75,6 @@ describe 'Merge requests > User posts notes', :js do describe 'editing the note' do before do find('.note').hover - open_more_actions_dropdown(note) find('.js-note-edit').click end @@ -104,7 +103,6 @@ describe 'Merge requests > User posts notes', :js do wait_for_requests find('.note').hover - open_more_actions_dropdown(note) find('.js-note-edit').click @@ -132,7 +130,6 @@ describe 'Merge requests > User posts notes', :js do describe 'deleting an attachment' do before do find('.note').hover - open_more_actions_dropdown(note) find('.js-note-edit').click end diff --git a/spec/features/milestones/show_spec.rb b/spec/features/milestones/show_spec.rb index 20303359c46..624f13922ed 100644 --- a/spec/features/milestones/show_spec.rb +++ b/spec/features/milestones/show_spec.rb @@ -8,7 +8,7 @@ describe 'Milestone show' do let(:issue_params) { { project: project, assignees: [user], author: user, milestone: milestone, labels: labels } } before do - project.add_user(user, :developer) + project.add_user(user, :developer) sign_in(user) end diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb index 672022304da..f183dd8cb75 100644 --- a/spec/features/profile_spec.rb +++ b/spec/features/profile_spec.rb @@ -7,9 +7,8 @@ describe 'Profile account page' do sign_in(user) end - describe 'when signup is enabled' do + describe 'when I delete my account' do before do - stub_application_setting(signup_enabled: true) visit profile_account_path end @@ -21,18 +20,6 @@ describe 'Profile account page' do end end - describe 'when signup is disabled' do - before do - stub_application_setting(signup_enabled: false) - visit profile_account_path - end - - it 'does not have option to remove account' do - expect(page).not_to have_content('Remove account') - expect(current_path).to eq(profile_account_path) - end - end - describe 'when I reset private token' do before do visit profile_account_path diff --git a/spec/features/projects/files/undo_template_spec.rb b/spec/features/projects/files/undo_template_spec.rb index 4238d25e9ee..9bcd5beabb8 100644 --- a/spec/features/projects/files/undo_template_spec.rb +++ b/spec/features/projects/files/undo_template_spec.rb @@ -20,7 +20,7 @@ feature 'Template Undo Button', js: true do end end - context 'creating a non-matching file' do + context 'creating a non-matching file' do before do visit project_new_blob_path(project, 'master') select_file_template_type('LICENSE') diff --git a/spec/features/projects/user_edits_files_spec.rb b/spec/features/projects/user_edits_files_spec.rb index 8c9fc8821e6..3129aad8473 100644 --- a/spec/features/projects/user_edits_files_spec.rb +++ b/spec/features/projects/user_edits_files_spec.rb @@ -20,6 +20,9 @@ describe 'User edits files' do it 'inserts a content of a file', js: true do click_link('.gitignore') find('.js-edit-blob').click + + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") expect(evaluate_script('ace.edit("editor").getValue()')).to eq('*.rbca') @@ -35,6 +38,9 @@ describe 'User edits files' do it 'commits an edited file', js: true do click_link('.gitignore') find('.js-edit-blob').click + + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") fill_in(:commit_message, with: 'New commit message', visible: true) click_button('Commit changes') @@ -49,6 +55,9 @@ describe 'User edits files' do it 'commits an edited file to a new branch', js: true do click_link('.gitignore') find('.js-edit-blob').click + + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") fill_in(:commit_message, with: 'New commit message', visible: true) fill_in(:branch_name, with: 'new_branch_name', visible: true) @@ -65,6 +74,9 @@ describe 'User edits files' do it 'shows the diff of an edited file', js: true do click_link('.gitignore') find('.js-edit-blob').click + + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") click_link('Preview changes') @@ -92,6 +104,8 @@ describe 'User edits files' do "A fork of this project has been created that you can make changes in, so you can submit a merge request." ) + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") expect(evaluate_script('ace.edit("editor").getValue()')).to eq('*.rbca') @@ -105,6 +119,9 @@ describe 'User edits files' do expect(page).to have_button('Cancel') click_link('Fork') + + wait_for_requests + execute_script("ace.edit('editor').setValue('*.rbca')") fill_in(:commit_message, with: 'New commit message', visible: true) click_button('Commit changes') diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb index d3d7915bebf..baf3d29e6c5 100644 --- a/spec/features/projects_spec.rb +++ b/spec/features/projects_spec.rb @@ -18,7 +18,7 @@ feature 'Project' do click_button "Create project" end - expect(page).to have_content 'This project Loading..' + expect(page).to have_content template.name end end diff --git a/spec/features/protected_tags_spec.rb b/spec/features/protected_tags_spec.rb index c9ba1a8c088..8abd4403065 100644 --- a/spec/features/protected_tags_spec.rb +++ b/spec/features/protected_tags_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -feature 'Projected Tags', js: true do +feature 'Protected Tags', js: true do let(:user) { create(:user, :admin) } let(:project) { create(:project, :repository) } diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb index 9b49fc2225d..6742d77937f 100644 --- a/spec/features/search_spec.rb +++ b/spec/features/search_spec.rb @@ -195,37 +195,33 @@ describe "Search" do it 'takes user to her issues page when issues assigned is clicked' do find('.dropdown-menu').click_link 'Issues assigned to me' - sleep 2 expect(page).to have_selector('.filtered-search') - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input_empty end it 'takes user to her issues page when issues authored is clicked' do find('.dropdown-menu').click_link "Issues I've created" - sleep 2 expect(page).to have_selector('.filtered-search') - expect_tokens([{ name: 'author', value: "@#{user.username}" }]) + expect_tokens([author_token(user.name)]) expect_filtered_search_input_empty end it 'takes user to her MR page when MR assigned is clicked' do find('.dropdown-menu').click_link 'Merge requests assigned to me' - sleep 2 expect(page).to have_selector('.merge-requests-holder') - expect_tokens([{ name: 'assignee', value: "@#{user.username}" }]) + expect_tokens([assignee_token(user.name)]) expect_filtered_search_input_empty end it 'takes user to her MR page when MR authored is clicked' do find('.dropdown-menu').click_link "Merge requests I've created" - sleep 2 expect(page).to have_selector('.merge-requests-holder') - expect_tokens([{ name: 'author', value: "@#{user.username}" }]) + expect_tokens([author_token(user.name)]) expect_filtered_search_input_empty end end diff --git a/spec/features/snippets/notes_on_personal_snippets_spec.rb b/spec/features/snippets/notes_on_personal_snippets_spec.rb index f1d0905738b..c0c293dee78 100644 --- a/spec/features/snippets/notes_on_personal_snippets_spec.rb +++ b/spec/features/snippets/notes_on_personal_snippets_spec.rb @@ -91,11 +91,7 @@ describe 'Comments on personal snippets', :js do context 'when editing a note' do it 'changes the text' do - open_more_actions_dropdown(snippet_notes[0]) - - page.within("#notes-list li#note_#{snippet_notes[0].id}") do - click_on 'Edit comment' - end + find('.js-note-edit').click page.within('.current-note-edit-form') do fill_in 'note[note]', with: 'new content' diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb index a919f5fa20b..d732383a1e1 100644 --- a/spec/features/snippets/user_creates_snippet_spec.rb +++ b/spec/features/snippets/user_creates_snippet_spec.rb @@ -41,7 +41,7 @@ feature 'User creates snippet', :js do expect(page).to have_content('My Snippet') link = find('a.no-attachment-icon img[alt="banana_sample"]')['src'] - expect(link).to match(%r{/uploads/system/temp/\h{32}/banana_sample\.gif\z}) + expect(link).to match(%r{/uploads/-/system/temp/\h{32}/banana_sample\.gif\z}) visit(link) expect(page.status_code).to eq(200) @@ -59,7 +59,7 @@ feature 'User creates snippet', :js do wait_for_requests link = find('a.no-attachment-icon img[alt="banana_sample"]')['src'] - expect(link).to match(%r{/uploads/system/personal_snippet/#{Snippet.last.id}/\h{32}/banana_sample\.gif\z}) + expect(link).to match(%r{/uploads/-/system/personal_snippet/#{Snippet.last.id}/\h{32}/banana_sample\.gif\z}) visit(link) expect(page.status_code).to eq(200) @@ -84,7 +84,7 @@ feature 'User creates snippet', :js do end expect(page).to have_content('Hello World!') link = find('a.no-attachment-icon img[alt="banana_sample"]')['src'] - expect(link).to match(%r{/uploads/system/personal_snippet/#{Snippet.last.id}/\h{32}/banana_sample\.gif\z}) + expect(link).to match(%r{/uploads/-/system/personal_snippet/#{Snippet.last.id}/\h{32}/banana_sample\.gif\z}) visit(link) expect(page.status_code).to eq(200) diff --git a/spec/features/snippets/user_edits_snippet_spec.rb b/spec/features/snippets/user_edits_snippet_spec.rb index 26070e508e2..71de6b6bd1c 100644 --- a/spec/features/snippets/user_edits_snippet_spec.rb +++ b/spec/features/snippets/user_edits_snippet_spec.rb @@ -33,7 +33,7 @@ feature 'User edits snippet', :js do wait_for_requests link = find('a.no-attachment-icon img[alt="banana_sample"]')['src'] - expect(link).to match(%r{/uploads/system/personal_snippet/#{snippet.id}/\h{32}/banana_sample\.gif\z}) + expect(link).to match(%r{/uploads/-/system/personal_snippet/#{snippet.id}/\h{32}/banana_sample\.gif\z}) end it 'updates the snippet to make it internal' do diff --git a/spec/features/task_lists_spec.rb b/spec/features/task_lists_spec.rb index c14826df55a..580258f77eb 100644 --- a/spec/features/task_lists_spec.rb +++ b/spec/features/task_lists_spec.rb @@ -52,8 +52,8 @@ feature 'Task Lists' do before do Warden.test_mode! - project.team << [user, :master] - project.team << [user2, :guest] + project.add_master(user) + project.add_guest(user2) login_as(user) end |