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.
This commit is contained in:
Jacopo 2017-10-03 10:35:01 +02:00
parent 2ef28db9a1
commit 0ce6785851
182 changed files with 461 additions and 328 deletions

View file

@ -0,0 +1,5 @@
---
title: 'Replace `tag: true` into `:tag` in the specs'
merge_request: 14653
author: Jacopo Beschi @jacopo-beschi
type: added

View file

@ -0,0 +1,74 @@
# 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

View file

@ -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'

View file

@ -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

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe "Admin::AbuseReports", js: true do
describe "Admin::AbuseReports", :js do
let(:user) { create(:user) }
context 'as an admin' do

View file

@ -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

View file

@ -1,7 +1,7 @@
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)

View file

@ -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)

View file

@ -1,6 +1,6 @@
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Issue Boards', js: true do
describe 'Issue Boards', :js do
include DragTo
let(:group) { create(:group, :nested) }

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Issue Boards shortcut', js: true do
describe 'Issue Boards shortcut', :js do
let(:project) { create(:project) }
before do

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe 'CI Lint', js: true do
describe 'CI Lint', :js do
before do
sign_in(create(:user))
end

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe "Container Registry", js: true do
describe "Container Registry", :js do
let(:user) { create(:user) }
let(:project) { create(:project) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe 'Copy as GFM', js: true do
describe 'Copy as GFM', :js do
include MarkupHelper
include RepoHelpers
include ActionView::Helpers::JavaScriptHelper

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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

View file

@ -1,6 +1,6 @@
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 }

View file

@ -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'

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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')

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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

View file

@ -1,6 +1,6 @@
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') }

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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,

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature 'Group variables', js: true do
feature 'Group variables', :js do
let(:user) { create(:user) }
let(:group) { create(:group) }

View file

@ -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')

View file

@ -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) }

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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]

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Dropdown author', js: true do
describe 'Dropdown author', :js do
include FilteredSearchHelpers
let!(:project) { create(:project) }

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Dropdown emoji', js: true do
describe 'Dropdown emoji', :js do
include FilteredSearchHelpers
let!(:project) { create(:project, :public) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe 'Dropdown label', js: true do
describe 'Dropdown label', :js do
include FilteredSearchHelpers
let(:project) { create(:project) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe 'Filter issues', js: true do
describe 'Filter issues', :js do
include FilteredSearchHelpers
let(:project) { create(:project) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
describe 'Recent searches', js: true do
describe 'Recent searches', :js do
include FilteredSearchHelpers
let(:project_1) { create(:project, :public) }

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Search bar', js: true do
describe 'Search bar', :js do
include FilteredSearchHelpers
let!(:project) { create(:project) }

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'Visual tokens', js: true do
describe 'Visual tokens', :js do
include FilteredSearchHelpers
include WaitForRequests

View file

@ -1,6 +1,6 @@
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+') }

View file

@ -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'

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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] }

View file

@ -1,6 +1,6 @@
require 'rails_helper'
describe 'New issue', js: true do
describe 'New issue', :js do
include StubENV
let(:project) { create(:project, :public) }

View file

@ -1,6 +1,6 @@
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)}

View file

@ -1,6 +1,6 @@
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

View file

@ -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)

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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)}

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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' }

View file

@ -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) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature 'Diff note avatars', js: true do
feature 'Diff note avatars', :js do
include NoteInteractionHelpers
let(:user) { create(:user) }

View file

@ -1,6 +1,6 @@
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") }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature 'Diffs URL', js: true do
feature 'Diffs URL', :js do
include ProjectForksHelper
let(:project) { create(:project, :public, :repository) }

View file

@ -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.

View file

@ -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)

View file

@ -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)

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature 'image diff notes', js: true do
feature 'image diff notes', :js do
include NoteInteractionHelpers
let(:user) { create(:user) }

View file

@ -1,6 +1,6 @@
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)}

View file

@ -1,6 +1,6 @@
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,

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
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

View file

@ -1,6 +1,6 @@
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 }

View file

@ -1,6 +1,6 @@
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)

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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

View file

@ -1,6 +1,6 @@
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

View file

@ -1,6 +1,6 @@
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') }

View file

@ -1,6 +1,6 @@
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 }

View file

@ -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) }

View file

@ -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")

View file

@ -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

View file

@ -1,6 +1,6 @@
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

View file

@ -1,6 +1,6 @@
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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -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

View file

@ -1,6 +1,6 @@
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) }

View file

@ -1,6 +1,6 @@
require 'spec_helper'
feature 'Editing file blob', js: true do
feature 'Editing file blob', :js do
include TreeHelper
let(:project) { create(:project, :public, :repository) }

View file

@ -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

View file

@ -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'

Some files were not shown because too many files have changed in this diff Show more