Commit 0ce67858 authored by Jacopo's avatar Jacopo

Replaces `tag: true` into `:tag` in the specs

Replaces all the explicit include metadata syntax in the specs (tag:
true) into the implicit one (:tag).
Added a cop to prevent future errors and handle autocorrection.
parent 2ef28db9
---
title: 'Replace `tag: true` into `:tag` in the specs'
merge_request: 14653
author: Jacopo Beschi @jacopo-beschi
type: added
# frozen_string_literal: true
require 'rubocop-rspec'
module RuboCop
module Cop
module RSpec
# Checks for verbose include metadata used in the specs.
#
# @example
# # bad
# describe MyClass, js: true do
# end
#
# # good
# describe MyClass, :js do
# end
class VerboseIncludeMetadata < Cop
MSG = 'Use `%s` instead of `%s`.'
SELECTORS = %i[describe context feature example_group it specify example scenario its].freeze
def_node_matcher :include_metadata, <<-PATTERN
(send {(const nil :RSpec) nil} {#{SELECTORS.map(&:inspect).join(' ')}}
!const
...
(hash $...))
PATTERN
def_node_matcher :invalid_metadata?, <<-PATTERN
(pair
(sym $...)
(true))
PATTERN
def on_send(node)
invalid_metadata_matches(node) do |match|
add_offense(node, :expression, format(MSG, good(match), bad(match)))
end
end
def autocorrect(node)
lambda do |corrector|
invalid_metadata_matches(node) do |match|
corrector.replace(match.loc.expression, good(match))
end
end
end
private
def invalid_metadata_matches(node)
include_metadata(node) do |matches|
matches.select(&method(:invalid_metadata?)).each do |match|
yield match
end
end
end
def bad(match)
"#{metadata_key(match)}: true"
end
def good(match)
":#{metadata_key(match)}"
end
def metadata_key(match)
match.children[0].source
end
end
end
end
end
......@@ -21,3 +21,4 @@ require_relative 'cop/migration/reversible_add_column_with_default'
require_relative 'cop/migration/timestamps'
require_relative 'cop/migration/update_column_in_batches'
require_relative 'cop/rspec/single_line_hook'
require_relative 'cop/rspec/verbose_include_metadata'
......@@ -141,7 +141,7 @@ describe ProjectsController do
end
end
context 'when the storage is not available', broken_storage: true do
context 'when the storage is not available', :broken_storage do
set(:project) { create(:project, :broken_storage) }
before do
......
require 'spec_helper'
describe "Admin::AbuseReports", js: true do
describe "Admin::AbuseReports", :js do
let(:user) { create(:user) }
context 'as an admin' do
......
......@@ -40,7 +40,7 @@ feature 'Admin Broadcast Messages' do
expect(page).not_to have_content 'Migration to new server'
end
scenario 'Live preview a customized broadcast message', js: true do
scenario 'Live preview a customized broadcast message', :js do
fill_in 'broadcast_message_message', with: "Live **Markdown** previews. :tada:"
page.within('.broadcast-message-preview') do
......
require 'rails_helper'
feature 'Admin disables 2FA for a user' do
scenario 'successfully', js: true do
scenario 'successfully', :js do
sign_in(create(:admin))
user = create(:user, :two_factor)
......
......@@ -52,7 +52,7 @@ feature 'Admin Groups' do
expect_selected_visibility(internal)
end
scenario 'when entered in group path, it auto filled the group name', js: true do
scenario 'when entered in group path, it auto filled the group name', :js do
visit admin_groups_path
click_link "New group"
group_path = 'gitlab'
......@@ -81,7 +81,7 @@ feature 'Admin Groups' do
expect_selected_visibility(group.visibility_level)
end
scenario 'edit group path does not change group name', js: true do
scenario 'edit group path does not change group name', :js do
group = create(:group, :private)
visit admin_group_edit_path(group)
......@@ -93,7 +93,7 @@ feature 'Admin Groups' do
end
end
describe 'add user into a group', js: true do
describe 'add user into a group', :js do
shared_context 'adds user into a group' do
it do
visit admin_group_path(group)
......@@ -124,7 +124,7 @@ feature 'Admin Groups' do
group.add_user(:user, Gitlab::Access::OWNER)
end
it 'adds admin a to a group as developer', js: true do
it 'adds admin a to a group as developer', :js do
visit group_group_members_path(group)
page.within '.users-group-form' do
......@@ -141,7 +141,7 @@ feature 'Admin Groups' do
end
end
describe 'admin remove himself from a group', js: true do
describe 'admin remove himself from a group', :js do
it 'removes admin from the group' do
group.add_user(current_user, Gitlab::Access::DEVELOPER)
......
require 'spec_helper'
feature "Admin Health Check", feature: true, broken_storage: true do
feature "Admin Health Check", :feature, :broken_storage do
include StubENV
before do
......
......@@ -74,7 +74,7 @@ describe 'Admin::Hooks', :js do
end
end
describe 'Test', js: true do
describe 'Test', :js do
before do
WebMock.stub_request(:post, @system_hook.url)
visit admin_hooks_path
......
......@@ -30,7 +30,7 @@ RSpec.describe 'admin issues labels' do
end
end
it 'deletes all labels', js: true do
it 'deletes all labels', :js do
page.within '.labels' do
page.all('.btn-remove').each do |remove|
remove.click
......
......@@ -28,7 +28,7 @@ describe "Admin::Projects" do
expect(page).not_to have_content(archived_project.name)
end
it 'renders all projects', js: true do
it 'renders all projects', :js do
find(:css, '#sort-projects-dropdown').click
click_link 'Show archived projects'
......@@ -37,7 +37,7 @@ describe "Admin::Projects" do
expect(page).to have_xpath("//span[@class='label label-warning']", text: 'archived')
end
it 'renders only archived projects', js: true do
it 'renders only archived projects', :js do
find(:css, '#sort-projects-dropdown').click
click_link 'Show archived projects only'
......@@ -74,7 +74,7 @@ describe "Admin::Projects" do
.to receive(:move_uploads_to_new_namespace).and_return(true)
end
it 'transfers project to group web', js: true do
it 'transfers project to group web', :js do
visit admin_project_path(project)
click_button 'Search for Namespace'
......@@ -91,7 +91,7 @@ describe "Admin::Projects" do
project.team << [user, :master]
end
it 'adds admin a to a project as developer', js: true do
it 'adds admin a to a project as developer', :js do
visit project_project_members_path(project)
page.within '.users-project-form' do
......
require 'spec_helper'
describe 'Admin > Users > Impersonation Tokens', js: true do
describe 'Admin > Users > Impersonation Tokens', :js do
let(:admin) { create(:admin) }
let!(:user) { create(:user) }
......
......@@ -288,7 +288,7 @@ describe "Admin::Users" do
end
end
it 'allows group membership to be revoked', js: true do
it 'allows group membership to be revoked', :js do
page.within(first('.group_member')) do
find('.btn-remove').click
end
......@@ -309,7 +309,7 @@ describe "Admin::Users" do
end
end
describe 'remove users secondary email', js: true do
describe 'remove users secondary email', :js do
let!(:secondary_email) do
create :email, email: 'secondary@example.com', user: user
end
......
......@@ -32,7 +32,7 @@ feature 'Admin uses repository checks' do
end
end
scenario 'to clear all repository checks', js: true do
scenario 'to clear all repository checks', :js do
visit admin_application_settings_path
expect(RepositoryCheck::ClearWorker).to receive(:perform_async)
......
......@@ -31,7 +31,7 @@ describe 'Auto deploy' do
expect(page).to have_link('Set up auto deploy')
end
it 'includes OpenShift as an available template', js: true do
it 'includes OpenShift as an available template', :js do
click_link 'Set up auto deploy'
click_button 'Apply a GitLab CI Yaml template'
......@@ -40,7 +40,7 @@ describe 'Auto deploy' do
end
end
it 'creates a merge request using "auto-deploy" branch', js: true do
it 'creates a merge request using "auto-deploy" branch', :js do
click_link 'Set up auto deploy'
click_button 'Apply a GitLab CI Yaml template'
within '.gitlab-ci-yml-selector' do
......
require 'rails_helper'
describe 'Issue Boards', js: true do
describe 'Issue Boards', :js do
include DragTo
let(:group) { create(:group, :nested) }
......
require 'rails_helper'
describe 'Issue Boards shortcut', js: true do
describe 'Issue Boards shortcut', :js do
let(:project) { create(:project) }
before do
......
require 'rails_helper'
describe 'Issue Boards new issue', js: true do
describe 'Issue Boards new issue', :js do
let(:project) { create(:project, :public) }
let(:board) { create(:board, project: project) }
let!(:list) { create(:list, board: board, position: 0) }
......
require 'rails_helper'
describe 'Issue Boards', js: true do
describe 'Issue Boards', :js do
let(:user) { create(:user) }
let(:user2) { create(:user) }
let(:project) { create(:project, :public) }
......
require 'spec_helper'
describe 'CI Lint', js: true do
describe 'CI Lint', :js do
before do
sign_in(create(:user))
end
......
require 'spec_helper'
describe "Container Registry", js: true do
describe "Container Registry", :js do
let(:user) { create(:user) }
let(:project) { create(:project) }
......
require 'spec_helper'
describe 'Copy as GFM', js: true do
describe 'Copy as GFM', :js do
include MarkupHelper
include RepoHelpers
include ActionView::Helpers::JavaScriptHelper
......
require 'spec_helper'
feature 'Cycle Analytics', js: true do
feature 'Cycle Analytics', :js do
let(:user) { create(:user) }
let(:guest) { create(:user) }
let(:project) { create(:project, :repository) }
......
require 'spec_helper'
RSpec.describe 'Dashboard Active Tab', js: true do
RSpec.describe 'Dashboard Active Tab', :js do
before do
sign_in(create(:user))
end
......
require 'spec_helper'
feature 'Tooltips on .timeago dates', js: true do
feature 'Tooltips on .timeago dates', :js do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
let(:created_date) { Date.yesterday.to_time }
......
......@@ -5,7 +5,7 @@ RSpec.describe 'Dashboard Group' do
sign_in(create(:user))
end
it 'creates new group', js: true do
it 'creates new group', :js do
visit dashboard_groups_path
find('.btn-new').trigger('click')
new_path = 'Samurai'
......
......@@ -24,7 +24,7 @@ RSpec.describe 'Dashboard Issues' do
expect(page).not_to have_content(other_issue.title)
end
it 'shows checkmark when unassigned is selected for assignee', js: true do
it 'shows checkmark when unassigned is selected for assignee', :js do
find('.js-assignee-search').click
find('li', text: 'Unassigned').click
find('.js-assignee-search').click
......@@ -32,7 +32,7 @@ RSpec.describe 'Dashboard Issues' do
expect(find('li[data-user-id="0"] a.is-active')).to be_visible
end
it 'shows issues when current user is author', js: true do
it 'shows issues when current user is author', :js do
find('#assignee_id', visible: false).set('')
find('.js-author-search', match: :first).click
......@@ -70,7 +70,7 @@ RSpec.describe 'Dashboard Issues' do
end
describe 'new issue dropdown' do
it 'shows projects only with issues feature enabled', js: true do
it 'shows projects only with issues feature enabled', :js do
find('.new-project-item-select-button').trigger('click')
page.within('.select2-results') do
......@@ -79,7 +79,7 @@ RSpec.describe 'Dashboard Issues' do
end
end
it 'shows the new issue page', js: true do
it 'shows the new issue page', :js do
find('.new-project-item-select-button').trigger('click')
wait_for_requests
......
require 'spec_helper'
describe 'Dashboard > label filter', js: true do
describe 'Dashboard > label filter', :js do
let(:user) { create(:user) }
let(:project) { create(:project, name: 'test', namespace: user.namespace) }
let(:project2) { create(:project, name: 'test2', path: 'test2', namespace: user.namespace) }
......
......@@ -24,7 +24,7 @@ feature 'Dashboard Merge Requests' do
visit merge_requests_dashboard_path
end
it 'shows projects only with merge requests feature enabled', js: true do
it 'shows projects only with merge requests feature enabled', :js do
find('.new-project-item-select-button').trigger('click')
page.within('.select2-results') do
......@@ -89,7 +89,7 @@ feature 'Dashboard Merge Requests' do
expect(page).not_to have_content(other_merge_request.title)
end
it 'shows authored merge requests', js: true do
it 'shows authored merge requests', :js do
filter_item_select('Any Assignee', '.js-assignee-search')
filter_item_select(current_user.to_reference, '.js-author-search')
......@@ -101,7 +101,7 @@ feature 'Dashboard Merge Requests' do
expect(page).not_to have_content(other_merge_request.title)
end
it 'shows all merge requests', js: true do
it 'shows all merge requests', :js do
filter_item_select('Any Assignee', '.js-assignee-search')
filter_item_select('Any Author', '.js-author-search')
......
require 'spec_helper'
feature 'Project member activity', js: true do
feature 'Project member activity', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, name: 'x', namespace: user.namespace) }
......
......@@ -80,7 +80,7 @@ feature 'Dashboard Projects' do
end
end
describe 'with a pipeline', clean_gitlab_redis_shared_state: true do
describe 'with a pipeline', :clean_gitlab_redis_shared_state do
let(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.sha) }
before do
......
require 'spec_helper'
feature 'Dashboard > User filters todos', js: true do
feature 'Dashboard > User filters todos', :js do
let(:user_1) { create(:user, username: 'user_1', name: 'user_1') }
let(:user_2) { create(:user, username: 'user_2', name: 'user_2') }
......
......@@ -17,7 +17,7 @@ feature 'Dashboard Todos' do
end
end
context 'User has a todo', js: true do
context 'User has a todo', :js do
before do
create(:todo, :mentioned, user: user, project: project, target: issue, author: author)
sign_in(user)
......@@ -177,7 +177,7 @@ feature 'Dashboard Todos' do
end
end
context 'User has done todos', js: true do
context 'User has done todos', :js do
before do
create(:todo, :mentioned, :done, user: user, project: project, target: issue, author: author)
sign_in(user)
......@@ -249,7 +249,7 @@ feature 'Dashboard Todos' do
expect(page).to have_selector('.gl-pagination .page', count: 2)
end
describe 'mark all as done', js: true do
describe 'mark all as done', :js do
before do
visit dashboard_todos_path
find('.js-todos-mark-all').trigger('click')
......@@ -267,7 +267,7 @@ feature 'Dashboard Todos' do
end
end
describe 'undo mark all as done', js: true do
describe 'undo mark all as done', :js do
before do
visit dashboard_todos_path
end
......
require 'spec_helper'
feature 'Expand and collapse diffs', js: true do
feature 'Expand and collapse diffs', :js do
let(:branch) { 'expand-collapse-diffs' }
let(:project) { create(:project, :repository) }
......
......@@ -49,7 +49,7 @@ describe "GitLab Flavored Markdown" do
end
end
describe "for issues", js: true do
describe "for issues", :js do
before do
@other_issue = create(:issue,
author: user,
......
require 'spec_helper'
feature 'Group variables', js: true do
feature 'Group variables', :js do
let(:user) { create(:user) }
let(:group) { create(:group) }
......
......@@ -11,7 +11,7 @@ feature 'Labels subscription' do
gitlab_sign_in user
end
scenario 'users can subscribe/unsubscribe to group labels', js: true do
scenario 'users can subscribe/unsubscribe to group labels', :js do
visit group_labels_path(group)
expect(page).to have_content('feature')
......
......@@ -85,7 +85,7 @@ feature 'Group' do
end
end
describe 'create a nested group', :nested_groups, js: true do
describe 'create a nested group', :nested_groups, :js do
let(:group) { create(:group, path: 'foo') }
context 'as admin' do
......@@ -142,7 +142,7 @@ feature 'Group' do
expect(page).not_to have_content('secret-group')
end
describe 'group edit', js: true do
describe 'group edit', :js do
let(:group) { create(:group) }
let(:path) { edit_group_path(group) }
let(:new_name) { 'new-name' }
......@@ -207,7 +207,7 @@ feature 'Group' do
end
end
describe 'group page with nested groups', :nested_groups, js: true do
describe 'group page with nested groups', :nested_groups, :js do
let!(:group) { create(:group) }
let!(:nested_group) { create(:group, parent: group) }
let!(:path) { group_path(group) }
......
......@@ -26,7 +26,7 @@ describe 'Projects > Issuables > Default sort order' do
MergeRequest.all
end
context 'in the "merge requests" tab', js: true do
context 'in the "merge requests" tab', :js do
let(:issuable_type) { :merge_request }
it 'is "last created"' do
......@@ -37,7 +37,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "merge requests / open" tab', js: true do
context 'in the "merge requests / open" tab', :js do
let(:issuable_type) { :merge_request }
it 'is "created date"' do
......@@ -49,7 +49,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "merge requests / merged" tab', js: true do
context 'in the "merge requests / merged" tab', :js do
let(:issuable_type) { :merged_merge_request }
it 'is "last updated"' do
......@@ -61,7 +61,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "merge requests / closed" tab', js: true do
context 'in the "merge requests / closed" tab', :js do
let(:issuable_type) { :closed_merge_request }
it 'is "last updated"' do
......@@ -73,7 +73,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "merge requests / all" tab', js: true do
context 'in the "merge requests / all" tab', :js do
let(:issuable_type) { :merge_request }
it 'is "created date"' do
......@@ -102,7 +102,7 @@ describe 'Projects > Issuables > Default sort order' do
Issue.all
end
context 'in the "issues" tab', js: true do
context 'in the "issues" tab', :js do
let(:issuable_type) { :issue }
it 'is "created date"' do
......@@ -114,7 +114,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "issues / open" tab', js: true do
context 'in the "issues / open" tab', :js do
let(:issuable_type) { :issue }
it 'is "created date"' do
......@@ -126,7 +126,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "issues / closed" tab', js: true do
context 'in the "issues / closed" tab', :js do
let(:issuable_type) { :closed_issue }
it 'is "last updated"' do
......@@ -138,7 +138,7 @@ describe 'Projects > Issuables > Default sort order' do
end
end
context 'in the "issues / all" tab', js: true do
context 'in the "issues / all" tab', :js do
let(:issuable_type) { :issue }
it 'is "created date"' do
......
......@@ -12,7 +12,7 @@ describe 'Issue Sidebar on Mobile' do
sign_in(user)
end
context 'mobile sidebar on merge requests', js: true do
context 'mobile sidebar on merge requests', :js do
before do
visit project_merge_request_path(merge_request.project, merge_request)
end
......@@ -20,7 +20,7 @@ describe 'Issue Sidebar on Mobile' do
it_behaves_like "issue sidebar stays collapsed on mobile"
end
context 'mobile sidebar on issues', js: true do
context 'mobile sidebar on issues', :js do
before do
visit project_issue_path(project, issue)
end
......
......@@ -24,7 +24,7 @@ describe 'Awards Emoji' do
end
# Regression test: https://gitlab.com/gitlab-org/gitlab-ce/issues/29529
it 'does not shows a 500 page', js: true do
it 'does not shows a 500 page', :js do
expect(page).to have_text(issue.title)
end
end
......@@ -37,37 +37,37 @@ describe 'Awards Emoji' do
wait_for_requests
end
it 'increments the thumbsdown emoji', js: true do
it 'increments the thumbsdown emoji', :js do
find('[data-name="thumbsdown"]').click
wait_for_requests
expect(thumbsdown_emoji).to have_text("1")
end
context 'click the thumbsup emoji' do
it 'increments the thumbsup emoji', js: true do
it 'increments the thumbsup emoji', :js do
find('[data-name="thumbsup"]').click
wait_for_requests
expect(thumbsup_emoji).to have_text("1")
end
it 'decrements the thumbsdown emoji', js: true do
it 'decrements the thumbsdown emoji', :js do
expect(thumbsdown_emoji).to have_text("0")
end
end
context 'click the thumbsdown emoji' do
it 'increments the thumbsdown emoji', js: true do
it 'increments the thumbsdown emoji', :js do
find('[data-name="thumbsdown"]').click
wait_for_requests
expect(thumbsdown_emoji).to have_text("1")
end
it 'decrements the thumbsup emoji', js: true do
it 'decrements the thumbsup emoji', :js do
expect(thumbsup_emoji).to have_text("0")
end
end
it 'toggles the smiley emoji on a note', js: true do
it 'toggles the smiley emoji on a note', :js do
toggle_smiley_emoji(true)
within('.note-body') do
......@@ -82,7 +82,7 @@ describe 'Awards Emoji' do
end
context 'execute /award quick action' do
it 'toggles the emoji award on noteable', js: true do
it 'toggles the emoji award on noteable', :js do
execute_quick_action('/award :100:')
expect(find(noteable_award_counter)).to have_text("1")
......@@ -95,7 +95,7 @@ describe 'Awards Emoji' do
end
end
context 'unauthorized user', js: true do
context 'unauthorized user', :js do
before do
visit project_issue_path(project, issue)
end
......
require 'rails_helper'
feature 'Issue awards', js: true do
feature 'Issue awards', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let(:issue) { create(:issue, project: project) }
......
......@@ -9,7 +9,7 @@ feature 'Issues > Labels bulk assignment' do
let!(:feature) { create(:label, project: project, title: 'feature') }
let!(:wontfix) { create(:label, project: project, title: 'wontfix') }
context 'as an allowed user', js: true do
context 'as an allowed user', :js do
before do
project.team << [user, :master]
......
require 'rails_helper'
feature 'Resolving all open discussions in a merge request from an issue', js: true do
feature 'Resolving all open discussions in a merge request from an issue', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
......
......@@ -24,7 +24,7 @@ feature 'Resolve an open discussion in a merge request by creating an issue' do
end
end
context 'resolving the discussion', js: true do
context 'resolving the discussion', :js do
before do
click_button 'Resolve discussion'
end
......
require 'rails_helper'
describe 'Dropdown author', js: true do
describe 'Dropdown author', :js do
include FilteredSearchHelpers
let!(:project) { create(:project) }
......
require 'rails_helper'
describe 'Dropdown emoji', js: true do
describe 'Dropdown emoji', :js do
include FilteredSearchHelpers
let!(:project) { create(:project, :public) }
......
require 'spec_helper'
describe 'Dropdown label', js: true do
describe 'Dropdown label', :js do
include FilteredSearchHelpers
let(:project) { create(:project) }
......
require 'spec_helper'
describe 'Filter issues', js: true do
describe 'Filter issues', :js do
include FilteredSearchHelpers
let(:project) { create(:project) }
......
require 'spec_helper'
describe 'Recent searches', js: true do
describe 'Recent searches', :js do
include FilteredSearchHelpers
let(:project_1) { create(:project, :public) }
......
require 'rails_helper'
describe 'Search bar', js: true do
describe 'Search bar', :js do
include FilteredSearchHelpers
let!(:project) { create(:project) }
......
require 'rails_helper'
describe 'Visual tokens', js: true do
describe 'Visual tokens', :js do
include FilteredSearchHelpers
include WaitForRequests
......
require 'rails_helper'
feature 'GFM autocomplete', js: true do
feature 'GFM autocomplete', :js do
let(:user) { create(:user, name: '💃speciąl someone💃', username: 'someone.special') }
let(:project) { create(:project) }
let(:label) { create(:label, project: project, title: 'special+') }
......
......@@ -13,7 +13,7 @@ feature 'Issue Sidebar' do
sign_in(user)
end
context 'assignee', js: true do
context 'assignee', :js do
let(:user2) { create(:user) }
let(:issue2) { create(:issue, project: project, author: user2) }
......@@ -82,7 +82,7 @@ feature 'Issue Sidebar' do
visit_issue(project, issue)
end
context 'sidebar', js: true do
context 'sidebar', :js do
it 'changes size when the screen size is smaller' do
sidebar_selector = 'aside.right-sidebar.right-sidebar-collapsed'
# Resize the window
......@@ -101,7 +101,7 @@ feature 'Issue Sidebar' do
end
end
context 'editing issue labels', js: true do
context 'editing issue labels', :js do
before do
page.within('.block.labels') do
find('.edit-link').click
......@@ -114,7 +114,7 @@ feature 'Issue Sidebar' do
end
end
context 'creating a new label', js: true do
context 'creating a new label', :js do
before do
page.within('.block.labels') do
click_link 'Create new'
......
require 'rails_helper'
feature 'Issue markdown toolbar', js: true do
feature 'Issue markdown toolbar', :js do
let(:project) { create(:project, :public) }
let(:issue) { create(:issue, project: project) }
let(:user) { create(:user) }
......
......@@ -37,7 +37,7 @@ feature 'issue move to another project' do
visit issue_path(issue)
end
scenario 'moving issue to another project', js: true do
scenario 'moving issue to another project', :js do
find('.js-move-issue').trigger('click')
wait_for_requests
all('.js-move-issue-dropdown-item')[0].click
......@@ -49,7 +49,7 @@ feature 'issue move to another project' do
expect(page.current_path).to include project_path(new_project)
end
scenario 'searching project dropdown', js: true do
scenario 'searching project dropdown', :js do
new_project_search.team << [user, :reporter]
find('.js-move-issue').trigger('click')
......@@ -63,7 +63,7 @@ feature 'issue move to another project' do
end
end
context 'user does not have permission to move the issue to a project', js: true do
context 'user does not have permission to move the issue to a project', :js do
let!(:private_project) { create(:project, :private) }
let(:another_project) { create(:project) }
background { another_project.team << [user, :guest] }
......
require 'rails_helper'
describe 'New issue', js: true do
describe 'New issue', :js do
include StubENV
let(:project) { create(:project, :public) }
......
require 'rails_helper'
feature 'Manually create a todo item from issue', js: true do
feature 'Manually create a todo item from issue', :js do
let!(:project) { create(:project) }
let!(:issue) { create(:issue, project: project) }
let!(:user) { create(:user)}
......
require 'rails_helper'
feature 'Issues > User uses quick actions', js: true do
feature 'Issues > User uses quick actions', :js do
include QuickActionsHelpers
it_behaves_like 'issuable record that supports quick actions in its description and notes', :issue do
......
......@@ -270,7 +270,7 @@ describe 'Issues', :js do
visit namespace_project_issues_path(user.namespace, project1)
end
it 'changes incoming email address token', js: true do
it 'changes incoming email address token', :js do
find('.issue-email-modal-btn').click
previous_token = find('input#issue_email').value
find('.incoming-email-token-reset').trigger('click')
......@@ -286,7 +286,7 @@ describe 'Issues', :js do
end
end
describe 'update labels from issue#show', js: true do
describe 'update labels from issue#show', :js do
let(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
let!(:label) { create(:label, project: project) }
......@@ -309,7 +309,7 @@ describe 'Issues', :js do
let(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
context 'by authorized user' do
it 'allows user to select unassigned', js: true do
it 'allows user to select unassigned', :js do
visit project_issue_path(project, issue)
page.within('.assignee') do
......@@ -327,7 +327,7 @@ describe 'Issues', :js do
expect(issue.reload.assignees).to be_empty
end
it 'allows user to select an assignee', js: true do
it 'allows user to select an assignee', :js do
issue2 = create(:issue, project: project, author: user)
visit project_issue_path(project, issue2)
......@@ -348,7 +348,7 @@ describe 'Issues', :js do
end
end
it 'allows user to unselect themselves', js: true do
it 'allows user to unselect themselves', :js do
issue2 = create(:issue, project: project, author: user)
visit project_issue_path(project, issue2)
......@@ -377,7 +377,7 @@ describe 'Issues', :js do
project.team << [[guest], :guest]
end
it 'shows assignee text', js: true do
it 'shows assignee text', :js do
sign_out(:user)
sign_in(guest)
......@@ -392,7 +392,7 @@ describe 'Issues', :js do
let!(:milestone) { create(:milestone, project: project) }
context 'by authorized user' do
it 'allows user to select unassigned', js: true do
it 'allows user to select unassigned', :js do
visit project_issue_path(project, issue)
page.within('.milestone') do
......@@ -410,7 +410,7 @@ describe 'Issues', :js do
expect(issue.reload.milestone).to be_nil
end
it 'allows user to de-select milestone', js: true do
it 'allows user to de-select milestone', :js do
visit project_issue_path(project, issue)
page.within('.milestone') do
......@@ -440,7 +440,7 @@ describe 'Issues', :js do
issue.save
end
it 'shows milestone text', js: true do
it 'shows milestone text', :js do
sign_out(:user)
sign_in(guest)
......@@ -473,7 +473,7 @@ describe 'Issues', :js do
end
end
context 'dropzone upload file', js: true do
context 'dropzone upload file', :js do
before do
visit new_project_issue_path(project)
end
......@@ -544,7 +544,7 @@ describe 'Issues', :js do
end
describe 'due date' do
context 'update due on issue#show', js: true do
context 'update due on issue#show', :js do
let(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
before do
......@@ -588,8 +588,8 @@ describe 'Issues', :js do
end
end
describe 'title issue#show', js: true do
it 'updates the title', js: true do
describe 'title issue#show', :js do
it 'updates the title', :js do
issue = create(:issue, author: user, assignees: [user], project: project, title: 'new title')
visit project_issue_path(project, issue)
......@@ -603,7 +603,7 @@ describe 'Issues', :js do
end
end
describe 'confidential issue#show', js: true do
describe 'confidential issue#show', :js do
it 'shows confidential sibebar information as confidential and can be turned off' do
issue = create(:issue, :confidential, project: project)
......
......@@ -197,7 +197,7 @@ feature 'Login' do
expect(page).to have_content('The global settings require you to enable Two-Factor Authentication for your account. You need to do this before ')
end
it 'allows skipping two-factor configuration', js: true do
it 'allows skipping two-factor configuration', :js do
expect(current_path).to eq profile_two_factor_auth_path
click_link 'Configure it later'
......@@ -215,7 +215,7 @@ feature 'Login' do
)
end
it 'disallows skipping two-factor configuration', js: true do
it 'disallows skipping two-factor configuration', :js do
expect(current_path).to eq profile_two_factor_auth_path
expect(page).not_to have_link('Configure it later')
end
......@@ -260,7 +260,7 @@ feature 'Login' do
'before ')
end
it 'allows skipping two-factor configuration', js: true do
it 'allows skipping two-factor configuration', :js do
expect(current_path).to eq profile_two_factor_auth_path
click_link 'Configure it later'
......@@ -279,7 +279,7 @@ feature 'Login' do
)
end
it 'disallows skipping two-factor configuration', js: true do
it 'disallows skipping two-factor configuration', :js do
expect(current_path).to eq profile_two_factor_auth_path
expect(page).not_to have_link('Configure it later')
end
......
require 'rails_helper'
feature 'Merge request issue assignment', js: true do
feature 'Merge request issue assignment', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:issue1) { create(:issue, project: project) }
......
require 'rails_helper'
feature 'Merge request awards', js: true do
feature 'Merge request awards', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) }
......
require 'spec_helper'
feature 'Check if mergeable with unresolved discussions', js: true do
feature 'Check if mergeable with unresolved discussions', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let!(:merge_request) { create(:merge_request_with_diff_notes, source_project: project, author: user) }
......
require 'spec_helper'
describe 'Cherry-pick Merge Requests', js: true do
describe 'Cherry-pick Merge Requests', :js do
let(:user) { create(:user) }
let(:group) { create(:group) }
let(:project) { create(:project, :repository, namespace: group) }
......
require 'spec_helper'
feature 'Merge Request closing issues message', js: true do
feature 'Merge Request closing issues message', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:issue_1) { create(:issue, project: project)}
......
require 'spec_helper'
feature 'Merge request conflict resolution', js: true do
feature 'Merge request conflict resolution', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
......
require 'spec_helper'
feature 'Create New Merge Request', js: true do
feature 'Create New Merge Request', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
......
......@@ -34,7 +34,7 @@ feature 'Merge request created from fork' do
commit_id: merge_request.commit_shas.first)
end
scenario 'user can reply to the comment', js: true do
scenario 'user can reply to the comment', :js do
visit_merge_request(merge_request)
expect(page).to have_content(comment)
......@@ -57,7 +57,7 @@ feature 'Merge request created from fork' do
forked_project.destroy!
end
scenario 'user can access merge request', js: true do
scenario 'user can access merge request', :js do
visit_merge_request(merge_request)
expect(page).to have_content 'Test merge request'
......@@ -78,7 +78,7 @@ feature 'Merge request created from fork' do
create(:ci_build, pipeline: pipeline, name: 'spinach')
end
scenario 'user visits a pipelines page', js: true do
scenario 'user visits a pipelines page', :js do
visit_merge_request(merge_request)
page.within('.merge-request-tabs') { click_link 'Pipelines' }
......
......@@ -3,7 +3,7 @@ require 'spec_helper'
# This test serves as a regression test for a bug that caused an error
# message to be shown by JavaScript when the source branch was deleted.
# Please do not remove "js: true".
describe 'Deleted source branch', js: true do
describe 'Deleted source branch', :js do
let(:user) { create(:user) }
let(:merge_request) { create(:merge_request) }
......
require 'spec_helper'
feature 'Diff note avatars', js: true do
feature 'Diff note avatars', :js do
include NoteInteractionHelpers
let(:user) { create(:user) }
......
require 'spec_helper'
feature 'Diff notes resolve', js: true do
feature 'Diff notes resolve', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request_with_diffs, source_project: project, author: user, title: "Bug NS-04") }
......
require 'spec_helper'
feature 'Diffs URL', js: true do
feature 'Diffs URL', :js do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }
......
......@@ -29,7 +29,7 @@ feature 'Edit Merge Request' do
expect(page).to have_content 'Someone edited the merge request the same time you did'
end
it 'allows to unselect "Remove source branch"', js: true do
it 'allows to unselect "Remove source branch"', :js do
merge_request.update(merge_params: { 'force_remove_source_branch' => '1' })
expect(merge_request.merge_params['force_remove_source_branch']).to be_truthy
......@@ -42,7 +42,7 @@ feature 'Edit Merge Request' do
expect(page).to have_content 'Remove source branch'
end
it 'should preserve description textarea height', js: true do
it 'should preserve description textarea height', :js do
long_description = %q(
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac ornare ligula, ut tempus arcu. Etiam ultricies accumsan dolor vitae faucibus. Donec at elit lacus. Mauris orci ante, aliquam quis lorem eget, convallis faucibus arcu. Aenean at pulvinar lacus. Ut viverra quam massa, molestie ornare tortor dignissim a. Suspendisse tristique pellentesque tellus, id lacinia metus elementum id. Nam tristique, arcu rhoncus faucibus viverra, lacus ipsum sagittis ligula, vitae convallis odio lacus a nibh. Ut tincidunt est purus, ac vestibulum augue maximus in. Suspendisse vel erat et mi ultricies semper. Pellentesque volutpat pellentesque consequat.
......
......@@ -18,7 +18,7 @@ feature 'Merge Request filtering by Milestone' do
sign_in(user)
end
scenario 'filters by no Milestone', js: true do
scenario 'filters by no Milestone', :js do
create(:merge_request, :with_diffs, source_project: project)
create(:merge_request, :simple, source_project: project, milestone: milestone)
......@@ -32,7 +32,7 @@ feature 'Merge Request filtering by Milestone' do
expect(page).to have_css('.merge-request', count: 1)
end
context 'filters by upcoming milestone', js: true do
context 'filters by upcoming milestone', :js do
it 'does not show merge requests with no expiry' do
create(:merge_request, :with_diffs, source_project: project)
create(:merge_request, :simple, source_project: project, milestone: milestone)
......@@ -67,7 +67,7 @@ feature 'Merge Request filtering by Milestone' do
end
end
scenario 'filters by a specific Milestone', js: true do
scenario 'filters by a specific Milestone', :js do
create(:merge_request, :with_diffs, source_project: project, milestone: milestone)
create(:merge_request, :simple, source_project: project)
......@@ -83,7 +83,7 @@ feature 'Merge Request filtering by Milestone' do
milestone.update(name: "rock 'n' roll")
end
scenario 'filters by a specific Milestone', js: true do
scenario 'filters by a specific Milestone', :js do
create(:merge_request, :with_diffs, source_project: project, milestone: milestone)
create(:merge_request, :simple, source_project: project)
......
......@@ -36,7 +36,7 @@ describe 'Filter merge requests' do
expect_mr_list_count(0)
end
context 'assignee', js: true do
context 'assignee', :js do
it 'updates to current user' do
expect_assignee_visual_tokens()
end
......@@ -69,7 +69,7 @@ describe 'Filter merge requests' do
expect_mr_list_count(0)
end
context 'milestone', js: true do
context 'milestone', :js do
it 'updates to current milestone' do
expect_milestone_visual_tokens()
end
......@@ -88,7 +88,7 @@ describe 'Filter merge requests' do
end
end
describe 'for label from mr#index', js: true do
describe 'for label from mr#index', :js do
it 'filters by no label' do
input_filtered_search('label:none')
......@@ -137,7 +137,7 @@ describe 'Filter merge requests' do
expect_mr_list_count(0)
end
context 'assignee and label', js: true do
context 'assignee and label', :js do
def expect_assignee_label_visual_tokens
wait_for_requests
......@@ -183,7 +183,7 @@ describe 'Filter merge requests' do
visit project_merge_requests_path(project)
end
context 'only text', js: true do
context 'only text', :js do
it 'filters merge requests by searched text' do
input_filtered_search('bug')
......@@ -199,7 +199,7 @@ describe 'Filter merge requests' do
end
end
context 'filters and searches', js: true do
context 'filters and searches', :js do
it 'filters by text and label' do
input_filtered_search('Bug')
......@@ -289,7 +289,7 @@ describe 'Filter merge requests' do
end
end
describe 'filter by assignee id', js: true do
describe 'filter by assignee id', :js do
it 'filter by current user' do
visit project_merge_requests_path(project, assignee_id: user.id)
......@@ -312,7 +312,7 @@ describe 'Filter merge requests' do
end
end
describe 'filter by author id', js: true do
describe 'filter by author id', :js do
it 'filter by current user' do
visit project_merge_requests_path(project, author_id: user.id)
......
require 'spec_helper'
feature 'image diff notes', js: true do
feature 'image diff notes', :js do
include NoteInteractionHelpers
let(:user) { create(:user) }
......
require 'spec_helper'
feature 'Clicking toggle commit message link', js: true do
feature 'Clicking toggle commit message link', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:issue_1) { create(:issue, project: project)}
......
require 'spec_helper'
feature 'Only allow merge requests to be merged if the pipeline succeeds', js: true do
feature 'Only allow merge requests to be merged if the pipeline succeeds', :js do
let(:merge_request) { create(:merge_request_with_diffs) }
let(:project) { merge_request.target_project }
......@@ -10,7 +10,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', js: t
project.team << [merge_request.author, :master]
end
context 'project does not have CI enabled', js: true do
context 'project does not have CI enabled', :js do
it 'allows MR to be merged' do
visit_merge_request(merge_request)
......@@ -20,7 +20,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', js: t
end
end
context 'when project has CI enabled', js: true do
context 'when project has CI enabled', :js do
given!(:pipeline) do
create(:ci_empty_pipeline,
project: project,
......
require 'spec_helper'
feature 'Pipelines for Merge Requests', js: true do
feature 'Pipelines for Merge Requests', :js do
describe 'pipeline tab' do
given(:user) { create(:user) }
given(:merge_request) { create(:merge_request) }
......
require 'spec_helper'
feature 'Resolve outdated diff discussions', js: true do
feature 'Resolve outdated diff discussions', :js do
let(:project) { create(:project, :repository, :public) }
let(:merge_request) do
......
require 'spec_helper'
describe 'Target branch', js: true do
describe 'Target branch', :js do
let(:user) { create(:user) }
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.project }
......
require 'spec_helper'
feature 'Toggle Whitespace Changes', js: true do
feature 'Toggle Whitespace Changes', :js do
before do
sign_in(create(:admin))
merge_request = create(:merge_request)
......
require 'spec_helper'
feature 'toggler_behavior', js: true do
feature 'toggler_behavior', :js do
let(:user) { create(:user) }
let(:project) { create(:project, :repository) }
let(:merge_request) { create(:merge_request, source_project: project, author: user) }
......
......@@ -10,7 +10,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do
sign_in(user)
end
context 'status', js: true do
context 'status', :js do
describe 'close merge request' do
before do
visit project_merge_requests_path(project)
......@@ -37,7 +37,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do
end
end
context 'assignee', js: true do
context 'assignee', :js do
describe 'set assignee' do
before do
visit project_merge_requests_path(project)
......@@ -67,7 +67,7 @@ feature 'Multiple merge requests updating from merge_requests#index' do
end
end
context 'milestone', js: true do
context 'milestone', :js do
let(:milestone) { create(:milestone, project: project) }
describe 'set milestone' do
......
require 'rails_helper'
feature 'Merge Requests > User uses quick actions', js: true do
feature 'Merge Requests > User uses quick actions', :js do
include QuickActionsHelpers
it_behaves_like 'issuable record that supports quick actions in its description and notes', :merge_request do
......
require 'spec_helper'
feature 'Merge Request versions', js: true do
feature 'Merge Request versions', :js do
let(:merge_request) { create(:merge_request, importing: true) }
let(:project) { merge_request.source_project }
let!(:merge_request_diff1) { merge_request.merge_request_diffs.create(head_commit_sha: '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') }
......
require 'spec_helper'
feature 'Widget Deployments Header', js: true do
feature 'Widget Deployments Header', :js do
describe 'when deployed to an environment' do
given(:user) { create(:user) }
given(:project) { merge_request.target_project }
......
......@@ -256,7 +256,7 @@ describe 'Merge request', :js do
end
end
context 'user can merge into source project but cannot push to fork', js: true do
context 'user can merge into source project but cannot push to fork', :js do
let(:fork_project) { create(:project, :public, :repository) }
let(:user2) { create(:user) }
......
......@@ -12,7 +12,7 @@ feature 'Profile > SSH Keys' do
visit profile_keys_path
end
scenario 'auto-populates the title', js: true do
scenario 'auto-populates the title', :js do
fill_in('Key', with: attributes_for(:key).fetch(:key))
expect(page).to have_field("Title", with: "dummy@gitlab.com")
......
......@@ -7,7 +7,7 @@ describe 'Profile > Applications' do
sign_in(user)
end
describe 'User manages applications', js: true do
describe 'User manages applications', :js do
it 'deletes an application' do
create(:oauth_application, owner: user)
visit oauth_applications_path
......
require 'spec_helper'
describe 'Profile > Personal Access Tokens', js: true do
describe 'Profile > Personal Access Tokens', :js do
let(:user) { create(:user) }
def active_personal_access_tokens
......
require 'spec_helper'
feature 'Profile > Notifications > User changes notified_of_own_activity setting', js: true do
feature 'Profile > Notifications > User changes notified_of_own_activity setting', :js do
let(:user) { create(:user) }
before do
......
require 'spec_helper'
feature 'User visits the notifications tab', js: true do
feature 'User visits the notifications tab', :js do
let(:project) { create(:project) }
let(:user) { create(:user) }
......
......@@ -39,7 +39,7 @@ feature 'list of badges' do
end
end
scenario 'user changes current ref of build status badge', js: true do
scenario 'user changes current ref of build status badge', :js do
page.within('.pipeline-status') do
first('.js-project-refs-dropdown').click
......
require 'spec_helper'
feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', js: true do
feature 'Blob button line permalinks (BlobLinePermalinkUpdater)', :js do
include TreeHelper
let(:project) { create(:project, :public, :repository) }
......
require 'spec_helper'
feature 'Editing file blob', js: true do
feature 'Editing file blob', :js do
include TreeHelper
let(:project) { create(:project, :public, :repository) }
......
......@@ -6,7 +6,7 @@ feature 'Blob shortcuts' do
let(:path) { project.repository.ls_files(project.repository.root_ref)[0] }
let(:sha) { project.repository.commit.sha }
describe 'On a file(blob)', js: true do
describe 'On a file(blob)', :js do
def get_absolute_url(path = "")
"http://#{page.server.host}:#{page.server.port}#{path}"
end
......
......@@ -46,7 +46,7 @@ describe 'Branches' do
end
describe 'Find branches' do
it 'shows filtered branches', js: true do
it 'shows filtered branches', :js do
visit project_branches_path(project)
fill_in 'branch-search', with: 'fix'
......@@ -58,7 +58,7 @@ describe 'Branches' do
end
describe 'Delete unprotected branch' do
it 'removes branch after confirmation', js: true do
it 'removes branch after confirmation', :js do
visit project_branches_path(project)
fill_in 'branch-search', with: 'fix'
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment