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:
parent
2ef28db9a1
commit
0ce6785851
182 changed files with 461 additions and 328 deletions
5
changelogs/unreleased/37552-replace-js-true-with-js.yml
Normal file
5
changelogs/unreleased/37552-replace-js-true-with-js.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: 'Replace `tag: true` into `:tag` in the specs'
|
||||
merge_request: 14653
|
||||
author: Jacopo Beschi @jacopo-beschi
|
||||
type: added
|
74
rubocop/cop/rspec/verbose_include_metadata.rb
Normal file
74
rubocop/cop/rspec/verbose_include_metadata.rb
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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') }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'Dropdown author', js: true do
|
||||
describe 'Dropdown author', :js do
|
||||
include FilteredSearchHelpers
|
||||
|
||||
let!(:project) { create(:project) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'Dropdown label', js: true do
|
||||
describe 'Dropdown label', :js do
|
||||
include FilteredSearchHelpers
|
||||
|
||||
let(:project) { create(:project) }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'Filter issues', js: true do
|
||||
describe 'Filter issues', :js do
|
||||
include FilteredSearchHelpers
|
||||
|
||||
let(:project) { create(:project) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'Search bar', js: true do
|
||||
describe 'Search bar', :js do
|
||||
include FilteredSearchHelpers
|
||||
|
||||
let!(:project) { create(:project) }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe 'Visual tokens', js: true do
|
||||
describe 'Visual tokens', :js do
|
||||
include FilteredSearchHelpers
|
||||
include WaitForRequests
|
||||
|
||||
|
|
|
@ -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+') }
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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] }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)}
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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") }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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') }
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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'
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue