Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
1c42b35b
Commit
1c42b35b
authored
May 22, 2017
by
Oswaldo Ferreira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use wait_for_requests to wait all JS request
parent
cc572c43
Changes
141
Show whitespace changes
Inline
Side-by-side
Showing
141 changed files
with
801 additions
and
594 deletions
+801
-594
app/assets/javascripts/vue_shared/vue_resource_interceptor.js
...assets/javascripts/vue_shared/vue_resource_interceptor.js
+1
-1
changelogs/unreleased/wait-for-ajax-handling-all-js-requests.yml
...ogs/unreleased/wait-for-ajax-handling-all-js-requests.yml
+4
-0
features/steps/dashboard/event_filters.rb
features/steps/dashboard/event_filters.rb
+7
-7
features/steps/dashboard/todos.rb
features/steps/dashboard/todos.rb
+2
-2
features/steps/group/members.rb
features/steps/group/members.rb
+2
-2
features/steps/group/milestones.rb
features/steps/group/milestones.rb
+2
-2
features/steps/project/builds/artifacts.rb
features/steps/project/builds/artifacts.rb
+2
-2
features/steps/project/ff_merge_requests.rb
features/steps/project/ff_merge_requests.rb
+2
-4
features/steps/project/forked_merge_requests.rb
features/steps/project/forked_merge_requests.rb
+3
-4
features/steps/project/merge_requests.rb
features/steps/project/merge_requests.rb
+27
-28
features/steps/project/merge_requests/acceptance.rb
features/steps/project/merge_requests/acceptance.rb
+3
-3
features/steps/project/merge_requests/revert.rb
features/steps/project/merge_requests/revert.rb
+2
-2
features/steps/project/project.rb
features/steps/project/project.rb
+2
-2
features/steps/project/project_milestone.rb
features/steps/project/project_milestone.rb
+2
-2
features/steps/project/snippets.rb
features/steps/project/snippets.rb
+3
-3
features/steps/project/source/browse_files.rb
features/steps/project/source/browse_files.rb
+3
-3
features/steps/project/source/markdown_render.rb
features/steps/project/source/markdown_render.rb
+11
-11
features/steps/shared/active_tab.rb
features/steps/shared/active_tab.rb
+2
-2
features/steps/shared/diff_note.rb
features/steps/shared/diff_note.rb
+2
-2
features/steps/shared/issuable.rb
features/steps/shared/issuable.rb
+3
-3
features/steps/shared/note.rb
features/steps/shared/note.rb
+5
-5
features/steps/shared/paths.rb
features/steps/shared/paths.rb
+6
-6
features/steps/snippets/snippets.rb
features/steps/snippets/snippets.rb
+2
-2
features/support/env.rb
features/support/env.rb
+2
-2
spec/features/admin/admin_emails_spec.rb
spec/features/admin/admin_emails_spec.rb
+1
-3
spec/features/admin/admin_labels_spec.rb
spec/features/admin/admin_labels_spec.rb
+2
-2
spec/features/admin/admin_users_spec.rb
spec/features/admin/admin_users_spec.rb
+1
-1
spec/features/auto_deploy_spec.rb
spec/features/auto_deploy_spec.rb
+1
-1
spec/features/boards/add_issues_modal_spec.rb
spec/features/boards/add_issues_modal_spec.rb
+6
-8
spec/features/boards/board_with_milestone_spec.rb
spec/features/boards/board_with_milestone_spec.rb
+6
-9
spec/features/boards/boards_spec.rb
spec/features/boards/boards_spec.rb
+38
-39
spec/features/boards/issue_ordering_spec.rb
spec/features/boards/issue_ordering_spec.rb
+13
-14
spec/features/boards/keyboard_shortcut_spec.rb
spec/features/boards/keyboard_shortcut_spec.rb
+1
-3
spec/features/boards/modal_filter_spec.rb
spec/features/boards/modal_filter_spec.rb
+13
-15
spec/features/boards/multiple_boards_spec.rb
spec/features/boards/multiple_boards_spec.rb
+10
-13
spec/features/boards/new_issue_spec.rb
spec/features/boards/new_issue_spec.rb
+4
-6
spec/features/boards/sidebar_spec.rb
spec/features/boards/sidebar_spec.rb
+22
-24
spec/features/boards/sub_group_project_spec.rb
spec/features/boards/sub_group_project_spec.rb
+2
-4
spec/features/calendar_spec.rb
spec/features/calendar_spec.rb
+5
-5
spec/features/copy_as_gfm_spec.rb
spec/features/copy_as_gfm_spec.rb
+2
-2
spec/features/cycle_analytics_spec.rb
spec/features/cycle_analytics_spec.rb
+4
-4
spec/features/dashboard/datetime_on_tooltips_spec.rb
spec/features/dashboard/datetime_on_tooltips_spec.rb
+2
-2
spec/features/dashboard/groups_list_spec.rb
spec/features/dashboard/groups_list_spec.rb
+3
-3
spec/features/dashboard/milestone_filter_spec.rb
spec/features/dashboard/milestone_filter_spec.rb
+4
-6
spec/features/dashboard/project_member_activity_index_spec.rb
.../features/dashboard/project_member_activity_index_spec.rb
+1
-1
spec/features/es_group_search_spec.rb
spec/features/es_group_search_spec.rb
+1
-1
spec/features/expand_collapse_diffs_spec.rb
spec/features/expand_collapse_diffs_spec.rb
+8
-8
spec/features/explore/groups_list_spec.rb
spec/features/explore/groups_list_spec.rb
+3
-3
spec/features/gitlab_flavored_markdown_spec.rb
spec/features/gitlab_flavored_markdown_spec.rb
+1
-1
spec/features/groups/issues_spec.rb
spec/features/groups/issues_spec.rb
+1
-1
spec/features/groups/members/override_ldap_memberships_spec.rb
...features/groups/members/override_ldap_memberships_spec.rb
+2
-2
spec/features/issues/award_emoji_spec.rb
spec/features/issues/award_emoji_spec.rb
+8
-8
spec/features/issues/award_spec.rb
spec/features/issues/award_spec.rb
+2
-6
spec/features/issues/bulk_assignment_labels_spec.rb
spec/features/issues/bulk_assignment_labels_spec.rb
+4
-4
spec/features/issues/create_branch_merge_request_spec.rb
spec/features/issues/create_branch_merge_request_spec.rb
+2
-2
spec/features/issues/filtered_search/dropdown_author_spec.rb
spec/features/issues/filtered_search/dropdown_author_spec.rb
+1
-1
spec/features/issues/filtered_search/dropdown_weight_spec.rb
spec/features/issues/filtered_search/dropdown_weight_spec.rb
+1
-2
spec/features/issues/filtered_search/filter_issues_spec.rb
spec/features/issues/filtered_search/filter_issues_spec.rb
+5
-5
spec/features/issues/filtered_search/filter_issues_weight_spec.rb
...tures/issues/filtered_search/filter_issues_weight_spec.rb
+0
-1
spec/features/issues/form_spec.rb
spec/features/issues/form_spec.rb
+3
-4
spec/features/issues/gfm_autocomplete_spec.rb
spec/features/issues/gfm_autocomplete_spec.rb
+5
-5
spec/features/issues/issue_sidebar_spec.rb
spec/features/issues/issue_sidebar_spec.rb
+3
-3
spec/features/issues/notes_on_issues_spec.rb
spec/features/issues/notes_on_issues_spec.rb
+1
-1
spec/features/issues/update_issues_spec.rb
spec/features/issues/update_issues_spec.rb
+2
-2
spec/features/issues/user_uses_slash_commands_spec.rb
spec/features/issues/user_uses_slash_commands_spec.rb
+1
-1
spec/features/issues_spec.rb
spec/features/issues_spec.rb
+6
-6
spec/features/merge_requests/approvals_spec.rb
spec/features/merge_requests/approvals_spec.rb
+9
-11
spec/features/merge_requests/closes_issues_spec.rb
spec/features/merge_requests/closes_issues_spec.rb
+2
-4
spec/features/merge_requests/conflicts_spec.rb
spec/features/merge_requests/conflicts_spec.rb
+11
-11
spec/features/merge_requests/create_new_mr_spec.rb
spec/features/merge_requests/create_new_mr_spec.rb
+1
-3
spec/features/merge_requests/deleted_source_branch_spec.rb
spec/features/merge_requests/deleted_source_branch_spec.rb
+1
-1
spec/features/merge_requests/diff_notes_avatars_spec.rb
spec/features/merge_requests/diff_notes_avatars_spec.rb
+6
-6
spec/features/merge_requests/filter_merge_requests_spec.rb
spec/features/merge_requests/filter_merge_requests_spec.rb
+1
-1
spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb
...es/merge_requests/merge_immediately_with_pipeline_spec.rb
+2
-2
spec/features/merge_requests/mini_pipeline_graph_spec.rb
spec/features/merge_requests/mini_pipeline_graph_spec.rb
+1
-1
spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb
...merge_requests/only_allow_merge_if_build_succeeds_spec.rb
+9
-11
spec/features/merge_requests/pipelines_spec.rb
spec/features/merge_requests/pipelines_spec.rb
+1
-1
spec/features/merge_requests/squash_spec.rb
spec/features/merge_requests/squash_spec.rb
+2
-4
spec/features/merge_requests/update_merge_requests_spec.rb
spec/features/merge_requests/update_merge_requests_spec.rb
+2
-2
spec/features/merge_requests/user_posts_diff_notes_spec.rb
spec/features/merge_requests/user_posts_diff_notes_spec.rb
+3
-3
spec/features/merge_requests/user_posts_notes_spec.rb
spec/features/merge_requests/user_posts_notes_spec.rb
+2
-2
spec/features/merge_requests/user_uses_slash_commands_spec.rb
.../features/merge_requests/user_uses_slash_commands_spec.rb
+2
-2
spec/features/merge_requests/versions_spec.rb
spec/features/merge_requests/versions_spec.rb
+3
-3
spec/features/merge_requests/widget_deployments_spec.rb
spec/features/merge_requests/widget_deployments_spec.rb
+2
-2
spec/features/merge_requests/widget_spec.rb
spec/features/merge_requests/widget_spec.rb
+9
-9
spec/features/milestones/milestones_spec.rb
spec/features/milestones/milestones_spec.rb
+3
-3
spec/features/projects/artifacts/file_spec.rb
spec/features/projects/artifacts/file_spec.rb
+2
-2
spec/features/projects/blobs/blob_show_spec.rb
spec/features/projects/blobs/blob_show_spec.rb
+24
-4
spec/features/projects/blobs/edit_spec.rb
spec/features/projects/blobs/edit_spec.rb
+1
-1
spec/features/projects/blobs/user_create_spec.rb
spec/features/projects/blobs/user_create_spec.rb
+1
-1
spec/features/projects/commit/cherry_pick_spec.rb
spec/features/projects/commit/cherry_pick_spec.rb
+2
-2
spec/features/projects/commit/mini_pipeline_graph_spec.rb
spec/features/projects/commit/mini_pipeline_graph_spec.rb
+1
-1
spec/features/projects/compare_spec.rb
spec/features/projects/compare_spec.rb
+1
-1
spec/features/projects/edit_spec.rb
spec/features/projects/edit_spec.rb
+1
-1
spec/features/projects/features_visibility_spec.rb
spec/features/projects/features_visibility_spec.rb
+6
-6
spec/features/projects/files/browse_files_spec.rb
spec/features/projects/files/browse_files_spec.rb
+1
-1
spec/features/projects/files/dockerfile_dropdown_spec.rb
spec/features/projects/files/dockerfile_dropdown_spec.rb
+2
-2
spec/features/projects/files/find_file_keyboard_spec.rb
spec/features/projects/files/find_file_keyboard_spec.rb
+1
-1
spec/features/projects/files/gitignore_dropdown_spec.rb
spec/features/projects/files/gitignore_dropdown_spec.rb
+2
-2
spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
+2
-2
spec/features/projects/files/project_owner_creates_license_file_spec.rb
...projects/files/project_owner_creates_license_file_spec.rb
+1
-1
spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
...sees_link_to_create_license_file_in_empty_project_spec.rb
+1
-1
spec/features/projects/files/undo_template_spec.rb
spec/features/projects/files/undo_template_spec.rb
+1
-1
spec/features/projects/issuable_templates_spec.rb
spec/features/projects/issuable_templates_spec.rb
+7
-7
spec/features/projects/labels/update_prioritization_spec.rb
spec/features/projects/labels/update_prioritization_spec.rb
+5
-5
spec/features/projects/members/group_links_spec.rb
spec/features/projects/members/group_links_spec.rb
+3
-3
spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
...s/members/master_adds_member_with_expiration_date_spec.rb
+1
-1
spec/features/projects/pipeline_schedules_spec.rb
spec/features/projects/pipeline_schedules_spec.rb
+1
-1
spec/features/projects/pipelines/pipelines_spec.rb
spec/features/projects/pipelines/pipelines_spec.rb
+7
-9
spec/features/projects/ref_switcher_spec.rb
spec/features/projects/ref_switcher_spec.rb
+3
-3
spec/features/projects/settings/ee/merge_requests_settings_spec.rb
...ures/projects/settings/ee/merge_requests_settings_spec.rb
+2
-3
spec/features/projects/settings/ee/service_desk_setting_spec.rb
...eatures/projects/settings/ee/service_desk_setting_spec.rb
+1
-3
spec/features/projects/snippets/show_spec.rb
spec/features/projects/snippets/show_spec.rb
+5
-5
spec/features/projects/view_on_env_spec.rb
spec/features/projects/view_on_env_spec.rb
+6
-6
spec/features/search_spec.rb
spec/features/search_spec.rb
+4
-4
spec/features/snippets/create_snippet_spec.rb
spec/features/snippets/create_snippet_spec.rb
+2
-2
spec/features/snippets/notes_on_personal_snippets_spec.rb
spec/features/snippets/notes_on_personal_snippets_spec.rb
+1
-1
spec/features/snippets/public_snippets_spec.rb
spec/features/snippets/public_snippets_spec.rb
+1
-1
spec/features/snippets/show_spec.rb
spec/features/snippets/show_spec.rb
+5
-5
spec/features/task_lists_spec.rb
spec/features/task_lists_spec.rb
+9
-9
spec/features/todos/todos_filtering_spec.rb
spec/features/todos/todos_filtering_spec.rb
+4
-4
spec/features/todos/todos_spec.rb
spec/features/todos/todos_spec.rb
+3
-3
spec/features/u2f_spec.rb
spec/features/u2f_spec.rb
+1
-1
spec/features/uploads/user_uploads_file_to_note_spec.rb
spec/features/uploads/user_uploads_file_to_note_spec.rb
+2
-2
spec/features/users/projects_spec.rb
spec/features/users/projects_spec.rb
+1
-1
spec/features/users/snippets_spec.rb
spec/features/users/snippets_spec.rb
+3
-3
spec/features/users_spec.rb
spec/features/users_spec.rb
+4
-4
spec/spec_helper.rb
spec/spec_helper.rb
+0
-1
spec/support/features/issuable_slash_commands_shared_examples.rb
...pport/features/issuable_slash_commands_shared_examples.rb
+2
-2
spec/support/protected_branch_helpers.rb
spec/support/protected_branch_helpers.rb
+1
-1
spec/support/protected_branches/access_control_ce_shared_examples.rb
...t/protected_branches/access_control_ce_shared_examples.rb
+91
-0
spec/support/protected_branches/access_control_ee_shared_examples.rb
...t/protected_branches/access_control_ee_shared_examples.rb
+156
-0
spec/support/protected_tags/access_control_ce_shared_examples.rb
...pport/protected_tags/access_control_ce_shared_examples.rb
+1
-1
spec/support/shared_examples/features/protected_branches_access_control_ce_spec.rb
...les/features/protected_branches_access_control_ce_spec.rb
+2
-2
spec/support/shared_examples/features/protected_branches_access_control_ee_spec.rb
...les/features/protected_branches_access_control_ee_spec.rb
+7
-7
spec/support/snippets_shared_examples.rb
spec/support/snippets_shared_examples.rb
+1
-1
spec/support/target_branch_helpers.rb
spec/support/target_branch_helpers.rb
+1
-1
spec/support/time_tracking_shared_examples.rb
spec/support/time_tracking_shared_examples.rb
+4
-4
spec/support/wait_for_ajax.rb
spec/support/wait_for_ajax.rb
+0
-18
spec/support/wait_for_requests.rb
spec/support/wait_for_requests.rb
+31
-7
spec/support/wait_for_vue_resource.rb
spec/support/wait_for_vue_resource.rb
+0
-19
No files found.
app/assets/javascripts/vue_shared/vue_resource_interceptor.js
View file @
1c42b35b
...
...
@@ -4,7 +4,7 @@ import VueResource from 'vue-resource';
Vue
.
use
(
VueResource
);
// Maintain a global counter for active requests
// see: spec/support/wait_for_
vue_resource
.rb
// see: spec/support/wait_for_
requests
.rb
Vue
.
http
.
interceptors
.
push
((
request
,
next
)
=>
{
window
.
activeVueResources
=
window
.
activeVueResources
||
0
;
window
.
activeVueResources
+=
1
;
...
...
changelogs/unreleased/wait-for-ajax-handling-all-js-requests.yml
0 → 100644
View file @
1c42b35b
---
title
:
Use wait_for_requests for both ajax and Vue requests
merge_request
:
author
:
features/steps/dashboard/event_filters.rb
View file @
1c42b35b
class
Spinach::Features::EventFilters
<
Spinach
::
FeatureSteps
include
WaitFor
Ajax
include
WaitFor
Requests
include
SharedAuthentication
include
SharedPaths
include
SharedProject
...
...
@@ -73,20 +73,20 @@ class Spinach::Features::EventFilters < Spinach::FeatureSteps
end
When
'I click "push" event filter'
do
wait_for_
ajax
wait_for_
requests
click_link
(
"Push events"
)
wait_for_
ajax
wait_for_
requests
end
When
'I click "team" event filter'
do
wait_for_
ajax
wait_for_
requests
click_link
(
"Team"
)
wait_for_
ajax
wait_for_
requests
end
When
'I click "merge" event filter'
do
wait_for_
ajax
wait_for_
requests
click_link
(
"Merge events"
)
wait_for_
ajax
wait_for_
requests
end
end
features/steps/dashboard/todos.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,7 @@ class Spinach::Features::DashboardTodos < Spinach::FeatureSteps
include
SharedPaths
include
SharedProject
include
SharedUser
include
WaitFor
Ajax
include
WaitFor
Requests
step
'"John Doe" is a developer of project "Shop"'
do
project
.
team
<<
[
john_doe
,
:developer
]
...
...
@@ -140,7 +140,7 @@ class Spinach::Features::DashboardTodos < Spinach::FeatureSteps
step
'I should be directed to the corresponding page'
do
page
.
should
have_css
(
'.identifier'
,
text:
'Merge Request !1'
)
# Merge request page loads and issues a number of Ajax requests
wait_for_
ajax
wait_for_
requests
end
def
should_see_todo
(
position
,
title
,
body
,
state: :pending
)
...
...
features/steps/group/members.rb
View file @
1c42b35b
class
Spinach::Features::GroupMembers
<
Spinach
::
FeatureSteps
include
WaitFor
Ajax
include
WaitFor
Requests
include
SharedAuthentication
include
SharedPaths
include
SharedGroup
...
...
@@ -58,7 +58,7 @@ class Spinach::Features::GroupMembers < Spinach::FeatureSteps
click_link
'Developer'
end
wait_for_
ajax
wait_for_
requests
end
end
...
...
features/steps/group/milestones.rb
View file @
1c42b35b
class
Spinach::Features::GroupMilestones
<
Spinach
::
FeatureSteps
include
WaitFor
Ajax
include
WaitFor
Requests
include
SharedAuthentication
include
SharedPaths
include
SharedGroup
...
...
@@ -91,7 +91,7 @@ class Spinach::Features::GroupMilestones < Spinach::FeatureSteps
end
step
'I should see the list of labels'
do
wait_for_
ajax
wait_for_
requests
page
.
within
(
'#tab-labels'
)
do
expect
(
page
).
to
have_content
'bug'
...
...
features/steps/project/builds/artifacts.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,7 @@ class Spinach::Features::ProjectBuildsArtifacts < Spinach::FeatureSteps
include
SharedProject
include
SharedBuilds
include
RepoHelpers
include
WaitFor
Ajax
include
WaitFor
Requests
step
'I click artifacts download button'
do
click_link
'Download'
...
...
@@ -79,7 +79,7 @@ class Spinach::Features::ProjectBuildsArtifacts < Spinach::FeatureSteps
step
'I click a link to file within build artifacts'
do
page
.
within
(
'.tree-table'
)
{
find_link
(
'ci_artifacts.txt'
).
click
}
wait_for_
ajax
wait_for_
requests
end
step
'I see a download link'
do
...
...
features/steps/project/ff_merge_requests.rb
View file @
1c42b35b
...
...
@@ -7,8 +7,7 @@ class Spinach::Features::ProjectFfMergeRequests < Spinach::FeatureSteps
include
SharedMarkdown
include
SharedDiffNote
include
SharedUser
include
WaitForAjax
include
WaitForVueResource
include
WaitForRequests
step
'project "Shop" have "Bug NS-05" open merge request with diffs inside'
do
create
(
:merge_request_with_diffs
,
...
...
@@ -40,7 +39,7 @@ class Spinach::Features::ProjectFfMergeRequests < Spinach::FeatureSteps
step
'I should see merged request'
do
page
.
within
'.status-box'
do
expect
(
page
).
to
have_content
"Merged"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -76,7 +75,6 @@ class Spinach::Features::ProjectFfMergeRequests < Spinach::FeatureSteps
step
'I press rebase button'
do
click_button
"Rebase"
wait_for_ajax
end
step
"I should see rebase in progress message"
do
...
...
features/steps/project/forked_merge_requests.rb
View file @
1c42b35b
...
...
@@ -4,8 +4,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
include
SharedNote
include
SharedPaths
include
Select2Helper
include
WaitForVueResource
include
WaitForAjax
include
WaitForRequests
step
'I am a member of project "Shop"'
do
@project
=
::
Project
.
find_by
(
name:
"Shop"
)
...
...
@@ -34,7 +33,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
expect
(
page
).
to
have_content
@merge_request
.
source_branch
expect
(
page
).
to
have_content
@merge_request
.
target_branch
wait_for_
vue_resource
wait_for_
requests
end
step
'I fill out a "Merge Request On Forked Project" merge request'
do
...
...
@@ -48,7 +47,7 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
first
(
'.dropdown-target-project a'
,
text:
@project
.
path_with_namespace
)
first
(
'.js-source-branch'
).
click
wait_for_
ajax
wait_for_
requests
first
(
'.dropdown-source-branch .dropdown-content a'
,
text:
'fix'
).
click
click_button
"Compare branches and continue"
...
...
features/steps/project/merge_requests.rb
View file @
1c42b35b
...
...
@@ -7,11 +7,10 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
include
SharedMarkdown
include
SharedDiffNote
include
SharedUser
include
WaitForAjax
include
WaitForVueResource
include
WaitForRequests
after
do
wait_for_
ajax
if
javascript_test?
wait_for_
requests
if
javascript_test?
end
step
'I click link "New Merge Request"'
do
...
...
@@ -46,23 +45,23 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
page
.
within
'.merge-request'
do
expect
(
page
).
to
have_content
"Wiki Feature"
end
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see closed merge request "Bug NS-04"'
do
expect
(
page
).
to
have_content
"Bug NS-04"
expect
(
page
).
to
have_content
"Closed by"
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see merge request "Bug NS-04"'
do
expect
(
page
).
to
have_content
"Bug NS-04"
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see merge request "Feature NS-05"'
do
expect
(
page
).
to
have_content
"Feature NS-05"
wait_for_
vue_resource
wait_for_
requests
end
step
'I should not see "master" branch'
do
...
...
@@ -99,7 +98,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I click button "Unsubscribe"'
do
click_on
"Unsubscribe"
wait_for_
ajax
wait_for_
requests
end
step
'I click link "Close"'
do
...
...
@@ -353,7 +352,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see a discussion by user "John Doe" has started on diff'
do
# Trigger a refresh of notes
execute_script
(
"$(document).trigger('visibilitychange');"
)
wait_for_
ajax
wait_for_
requests
page
.
within
(
".notes .discussion"
)
do
page
.
should
have_content
"
#{
user_exists
(
"John Doe"
).
name
}
#{
user_exists
(
"John Doe"
).
to_reference
}
started a discussion"
page
.
should
have_content
sample_commit
.
line_code_path
...
...
@@ -363,12 +362,12 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see a badge of "1" next to the discussion link'
do
expect_discussion_badge_to_have_counter
(
"1"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see a badge of "0" next to the discussion link'
do
expect_discussion_badge_to_have_counter
(
"0"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see a discussion has started on commit diff'
do
...
...
@@ -376,7 +375,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
page
.
should
have_content
"
#{
current_user
.
name
}
#{
current_user
.
to_reference
}
started a discussion on commit"
page
.
should
have_content
sample_commit
.
line_code_path
page
.
should
have_content
"Line is wrong"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -384,7 +383,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
page
.
within
(
".notes .discussion"
)
do
page
.
should
have_content
"
#{
current_user
.
name
}
#{
current_user
.
to_reference
}
started a discussion on commit"
page
.
should
have_content
"One comment to rule them all"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -410,7 +409,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see merged request'
do
page
.
within
'.status-box'
do
expect
(
page
).
to
have_content
"Merged"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -422,7 +421,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
page
.
within
'.status-box'
do
expect
(
page
).
to
have_content
"Open"
end
wait_for_
vue_resource
wait_for_
requests
end
step
'I click link "Hide inline discussion" of the third file'
do
...
...
@@ -446,7 +445,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see a comment like "Line is wrong" in the third file'
do
page
.
within
'.files>div:nth-child(3) .note-body > .note-text'
do
expect
(
page
).
to
have_visible_content
"Line is wrong"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -470,7 +469,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
page
.
within
".files>div:nth-child(2) .note-body > .note-text"
do
expect
(
page
).
to
have_content
"Line is correct"
...
...
@@ -485,7 +484,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
end
step
'I should still see a comment like "Line is correct" in the second file'
do
...
...
@@ -534,7 +533,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see comments on the side-by-side diff page'
do
page
.
within
'.files>div:nth-child(2) .parallel .note-body > .note-text'
do
expect
(
page
).
to
have_visible_content
"Line is correct"
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -558,7 +557,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see new target branch changes'
do
expect
(
page
).
to
have_content
'Request to merge fix into feature'
expect
(
page
).
to
have_content
'changed target branch from merge-test to feature'
wait_for_
ajax
wait_for_
requests
end
step
'project settings contain list of approvers'
do
...
...
@@ -626,7 +625,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I click link "Approve"'
do
page
.
within
'.mr-state-widget'
do
wait_for_
ajax
wait_for_
requests
click_button
'Approve'
end
end
...
...
@@ -648,7 +647,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
expect
(
page
).
not_to
have_button
(
"Approve"
)
end
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see approved merge request "Bug NS-04"'
do
...
...
@@ -656,7 +655,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
expect
(
page
).
to
have_button
(
'Merge'
,
disabled:
false
)
end
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see message that merge request can be merged'
do
...
...
@@ -674,7 +673,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
step
'I should see message that MR require an approval'
do
page
.
within
'.mr-state-widget'
do
expect
(
page
).
to
have_content
(
"Requires 1 more approval"
)
wait_for_
vue_resource
wait_for_
requests
end
end
...
...
@@ -718,16 +717,16 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
expect
(
page
).
to
have_content
/([0-9]+ commits behind)/
end
wait_for_
vue_resource
wait_for_
requests
end
step
'I should not see the diverged commits count'
do
page
.
within
".mr-source-target"
do
expect
(
page
).
not_to
have_content
/([0-9]+ commit[s]? behind)/
wait_for_
vue_resource
wait_for_
requests
end
wait_for_
vue_resource
wait_for_
requests
end
def
merge_request
...
...
@@ -744,7 +743,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
page
.
within
(
".notes_holder"
,
visible:
true
)
do
expect
(
page
).
to
have_content
message
...
...
features/steps/project/merge_requests/acceptance.rb
View file @
1c42b35b
class
Spinach::Features::ProjectMergeRequestsAcceptance
<
Spinach
::
FeatureSteps
include
LoginHelpers
include
GitlabRoutingHelper
include
WaitFor
VueResource
include
WaitFor
Requests
step
'I am on the Merge Request detail page'
do
visit
merge_request_path
(
@merge_request
)
...
...
@@ -24,7 +24,7 @@ class Spinach::Features::ProjectMergeRequestsAcceptance < Spinach::FeatureSteps
# Wait for View Resource requests to complete so they don't blow up if they are
# only handled after `DatabaseCleaner` has already run
wait_for_
vue_resource
wait_for_
requests
end
step
'I should not see the Remove Source Branch button'
do
...
...
@@ -32,7 +32,7 @@ class Spinach::Features::ProjectMergeRequestsAcceptance < Spinach::FeatureSteps
# Wait for View Resource requests to complete so they don't blow up if they are
# only handled after `DatabaseCleaner` has already run
wait_for_
vue_resource
wait_for_
requests
end
step
'There is an open Merge Request'
do
...
...
features/steps/project/merge_requests/revert.rb
View file @
1c42b35b
class
Spinach::Features::RevertMergeRequests
<
Spinach
::
FeatureSteps
include
LoginHelpers
include
GitlabRoutingHelper
include
WaitFor
VueResource
include
WaitFor
Requests
step
'I click on the revert button'
do
find
(
"a[href='#modal-revert-commit']"
).
click
...
...
@@ -16,7 +16,7 @@ class Spinach::Features::RevertMergeRequests < Spinach::FeatureSteps
step
'I should see the revert merge request notice'
do
page
.
should
have_content
(
'The merge request has been successfully reverted.'
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I should not see the revert button'
do
...
...
features/steps/project/project.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
include
SharedProject
include
SharedPaths
include
Select2Helper
include
WaitFor
Ajax
include
WaitFor
Requests
step
'change project settings'
do
fill_in
'project_name_edit'
,
with:
'NewName'
...
...
@@ -110,7 +110,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
end
step
'I should see project "Shop" README'
do
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.readme-holder'
)
do
expect
(
page
).
to
have_content
'testme'
end
...
...
features/steps/project/project_milestone.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,7 @@ class Spinach::Features::ProjectMilestone < Spinach::FeatureSteps
include
SharedAuthentication
include
SharedProject
include
SharedPaths
include
WaitFor
Ajax
include
WaitFor
Requests
step
'milestone has issue "Bugfix1" with labels: "bug", "feature"'
do
project
=
Project
.
find_by
(
name:
"Shop"
)
...
...
@@ -35,7 +35,7 @@ class Spinach::Features::ProjectMilestone < Spinach::FeatureSteps
end
step
'I should see the labels "bug", "enhancement" and "feature"'
do
wait_for_
ajax
wait_for_
requests
page
.
within
(
'#tab-issues'
)
do
expect
(
page
).
to
have_content
'bug'
...
...
features/steps/project/snippets.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,7 @@ class Spinach::Features::ProjectSnippets < Spinach::FeatureSteps
include
SharedProject
include
SharedNote
include
SharedPaths
include
WaitFor
Ajax
include
WaitFor
Requests
step
'project "Shop" have "Snippet one" snippet'
do
create
(
:project_snippet
,
...
...
@@ -59,7 +59,7 @@ class Spinach::Features::ProjectSnippets < Spinach::FeatureSteps
find
(
'.ace_editor'
).
native
.
send_keys
'Content of snippet three'
end
click_button
"Create snippet"
wait_for_
ajax
wait_for_
requests
end
step
'I should see snippet "Snippet three"'
do
...
...
@@ -81,7 +81,7 @@ class Spinach::Features::ProjectSnippets < Spinach::FeatureSteps
fill_in
"note_note"
,
with:
"Good snippet!"
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
end
step
'I should see comment "Good snippet!"'
do
...
...
features/steps/project/source/browse_files.rb
View file @
1c42b35b
...
...
@@ -4,7 +4,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
include
SharedProject
include
SharedPaths
include
RepoHelpers
include
WaitFor
Ajax
include
WaitFor
Requests
step
"I don't have write access"
do
@project
=
create
(
:project
,
:repository
,
name:
"Other Project"
,
path:
"other-project"
)
...
...
@@ -37,12 +37,12 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
end
step
'I should see its content'
do
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
old_gitignore_content
end
step
'I should see its new content'
do
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
new_gitignore_content
end
...
...
features/steps/project/source/markdown_render.rb
View file @
1c42b35b
...
...
@@ -5,7 +5,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
include
SharedAuthentication
include
SharedPaths
include
SharedMarkdown
include
WaitFor
Ajax
include
WaitFor
Requests
step
'I own project "Delta"'
do
@project
=
::
Project
.
find_by
(
name:
"Delta"
)
...
...
@@ -35,7 +35,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I should see correct document rendered'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/api/README.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"All API requests require authentication"
end
...
...
@@ -65,7 +65,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I should see correct maintenance file rendered'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/raketasks/maintenance.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"bundle exec rake gitlab:env:info RAILS_ENV=production"
end
...
...
@@ -97,7 +97,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I see correct file rendered'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/api/README.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"Contents"
expect
(
page
).
to
have_link
"Users"
expect
(
page
).
to
have_link
"Rake tasks"
...
...
@@ -120,7 +120,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
When
'I visit markdown branch'
do
visit
namespace_project_tree_path
(
@project
.
namespace
,
@project
,
"markdown"
)
wait_for_
ajax
wait_for_
requests
end
When
'I visit markdown branch "README.md" blob'
do
...
...
@@ -143,7 +143,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I see correct file rendered in markdown branch'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/api/README.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"Contents"
expect
(
page
).
to
have_link
"Users"
expect
(
page
).
to
have_link
"Rake tasks"
...
...
@@ -151,7 +151,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I should see correct document rendered for markdown branch'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/api/README.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"All API requests require authentication"
end
...
...
@@ -169,7 +169,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
# Expected link contents
step
'The link with text "empty" should have url "tree/markdown"'
do
wait_for_
ajax
wait_for_
requests
find
(
'a'
,
text:
/^empty$/
)[
'href'
]
==
current_host
+
namespace_project_tree_path
(
@project
.
namespace
,
@project
,
"markdown"
)
end
...
...
@@ -205,7 +205,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
end
step
'The link with text "ID" should have url "blob/markdown/README.mdID"'
do
wait_for_
ajax
wait_for_
requests
find
(
'a'
,
text:
/^#id$/
)[
'href'
]
==
current_host
+
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/README.md"
)
+
'#id'
end
...
...
@@ -300,12 +300,12 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
step
'I should see the correct markdown'
do
expect
(
current_path
).
to
eq
namespace_project_blob_path
(
@project
.
namespace
,
@project
,
"markdown/doc/api/users.md"
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
"List users"
end
step
'Header "Application details" should have correct id and link'
do
wait_for_
ajax
wait_for_
requests
header_should_have_correct_id_and_link
(
2
,
'Application details'
,
'application-details'
)
end
...
...
features/steps/shared/active_tab.rb
View file @
1c42b35b
module
SharedActiveTab
include
Spinach
::
DSL
include
WaitFor
Ajax
include
WaitFor
Requests
after
do
wait_for_
ajax
if
javascript_test?
wait_for_
requests
if
javascript_test?
end
def
ensure_active_main_tab
(
content
)
...
...
features/steps/shared/diff_note.rb
View file @
1c42b35b
module
SharedDiffNote
include
Spinach
::
DSL
include
RepoHelpers
include
WaitFor
Ajax
include
WaitFor
Requests
after
do
wait_for_
ajax
if
javascript_test?
wait_for_
requests
if
javascript_test?
end
step
'I cancel the diff comment'
do
...
...
features/steps/shared/issuable.rb
View file @
1c42b35b
module
SharedIssuable
include
Spinach
::
DSL
include
WaitFor
VueResource
include
WaitFor
Requests
def
edit_issuable
find
(
'.issuable-edit'
,
visible:
true
).
click
...
...
@@ -58,7 +58,7 @@ module SharedIssuable
step
'I visit merge request page "Enterprise fix"'
do
mr
=
MergeRequest
.
find_by
(
title:
'Enterprise fix'
)
visit
namespace_project_merge_request_path
(
mr
.
target_project
.
namespace
,
mr
.
target_project
,
mr
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit issue page "Community issue"'
do
...
...
@@ -93,7 +93,7 @@ module SharedIssuable
from_project_name:
'Community'
,
user_name:
'Mary Jane'
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I should see a note linking to "Enterprise issue" issue'
do
...
...
features/steps/shared/note.rb
View file @
1c42b35b
module
SharedNote
include
Spinach
::
DSL
include
WaitFor
Ajax
include
WaitFor
Requests
after
do
wait_for_
ajax
if
javascript_test?
wait_for_
requests
if
javascript_test?
end
step
'I delete a comment'
do
...
...
@@ -25,7 +25,7 @@ module SharedNote
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
end
step
'I preview a comment text like "Bug fixed :smile:"'
do
...
...
@@ -40,7 +40,7 @@ module SharedNote
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
end
step
'I write a comment like ":+1: Nice"'
do
...
...
@@ -127,7 +127,7 @@ module SharedNote
click_button
"Comment"
end
wait_for_
ajax
wait_for_
requests
end
step
'The comment with the header should not have an ID'
do
...
...
features/steps/shared/paths.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,7 @@ module SharedPaths
include
Spinach
::
DSL
include
RepoHelpers
include
DashboardHelper
include
WaitFor
VueResource
include
WaitFor
Requests
step
'I visit new project page'
do
visit
new_project_path
...
...
@@ -402,28 +402,28 @@ module SharedPaths
step
'I visit merge request page "Bug NS-04"'
do
visit
merge_request_path
(
"Bug NS-04"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit merge request page "Bug NS-05"'
do
visit
merge_request_path
(
"Bug NS-05"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit merge request page "Bug NS-07"'
do
visit
merge_request_path
(
"Bug NS-07"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit merge request page "Bug NS-08"'
do
visit
merge_request_path
(
"Bug NS-08"
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit merge request page "Bug CO-01"'
do
mr
=
MergeRequest
.
find_by
(
title:
"Bug CO-01"
)
visit
namespace_project_merge_request_path
(
mr
.
target_project
.
namespace
,
mr
.
target_project
,
mr
)
wait_for_
vue_resource
wait_for_
requests
end
step
'I visit project "Shop" merge requests page'
do
...
...
features/steps/snippets/snippets.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,7 @@ class Spinach::Features::Snippets < Spinach::FeatureSteps
include
SharedPaths
include
SharedProject
include
SharedSnippet
include
WaitFor
Ajax
include
WaitFor
Requests
step
'I click link "Personal snippet one"'
do
click_link
"Personal snippet one"
...
...
@@ -30,7 +30,7 @@ class Spinach::Features::Snippets < Spinach::FeatureSteps
find
(
'.ace_editor'
).
native
.
send_keys
'Content of snippet three'
end
click_button
"Create snippet"
wait_for_
ajax
wait_for_
requests
end
step
'I submit new internal snippet'
do
...
...
features/support/env.rb
View file @
1c42b35b
...
...
@@ -10,7 +10,7 @@ if ENV['CI']
Knapsack
::
Adapters
::
SpinachAdapter
.
bind
end
%w(select2_helper test_env repo_helpers wait_for_
ajax wait_for_requests sidekiq wait_for_vue_resource
)
.
each
do
|
f
|
%w(select2_helper test_env repo_helpers wait_for_
requests sidekiq
)
.
each
do
|
f
|
require
Rails
.
root
.
join
(
'spec'
,
'support'
,
f
)
end
...
...
@@ -41,7 +41,7 @@ end
Spinach
.
hooks
.
after_scenario
do
|
scenario_data
,
step_definitions
|
if
scenario_data
.
tags
.
include?
(
'javascript'
)
include
WaitForRequests
wait_for_requests_complete
block_and_
wait_for_requests_complete
end
end
...
...
spec/features/admin/admin_emails_spec.rb
View file @
1c42b35b
require
'spec_helper'
describe
"Admin::Emails"
,
feature:
true
,
js:
true
do
include
WaitForAjax
let!
(
:current_user
)
{
login_as
:admin
}
let!
(
:group
)
{
create
(
:group
)
}
let!
(
:project
)
{
create
(
:project
,
namespace:
group
)
}
...
...
@@ -15,7 +13,7 @@ describe "Admin::Emails", feature: true, js: true do
describe
'Recipient group select'
do
it
"includes groups and projects"
do
find
(
'.ajax-admin-email-select'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.ajax-admin-email-dropdown li'
,
count:
3
)
group_names
=
page
.
all
(
'.ajax-admin-email-dropdown li .group-name'
)
...
...
spec/features/admin/admin_labels_spec.rb
View file @
1c42b35b
...
...
@@ -34,11 +34,11 @@ RSpec.describe 'admin issues labels' do
page
.
within
'.labels'
do
page
.
all
(
'.btn-remove'
).
each
do
|
remove
|
remove
.
click
wait_for_
ajax
wait_for_
requests
end
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"There are no labels yet"
)
expect
(
page
).
not_to
have_content
(
'bug'
)
...
...
spec/features/admin/admin_users_spec.rb
View file @
1c42b35b
...
...
@@ -339,7 +339,7 @@ describe "Admin::Users", feature: true do
page
.
within
(
first
(
'.group_member'
))
do
find
(
'.btn-remove'
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
'.group_member'
)
end
...
...
spec/features/auto_deploy_spec.rb
View file @
1c42b35b
...
...
@@ -46,7 +46,7 @@ describe 'Auto deploy' do
within
'.gitlab-ci-yml-selector'
do
click_on
'OpenShift'
end
wait_for_
ajax
wait_for_
requests
click_button
'Commit changes'
expect
(
page
).
to
have_content
(
'New Merge Request From auto-deploy into master'
)
...
...
spec/features/boards/add_issues_modal_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards add issue modal'
,
:feature
,
:js
do
include
WaitForVueResource
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
let
(
:board
)
{
create
(
:board
,
project:
project
)
}
let
(
:user
)
{
create
(
:user
)
}
...
...
@@ -19,13 +17,13 @@ describe 'Issue Boards add issue modal', :feature, :js do
login_as
(
user
)
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
end
it
'resets filtered search state'
do
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
,
search:
'testing'
)
wait_for_
vue_resource
wait_for_
requests
click_button
(
'Add issues'
)
...
...
@@ -74,7 +72,7 @@ describe 'Issue Boards add issue modal', :feature, :js do
before
do
click_button
(
'Add issues'
)
wait_for_
vue_resource
wait_for_
requests
end
it
'loads issues'
do
...
...
@@ -107,7 +105,7 @@ describe 'Issue Boards add issue modal', :feature, :js do
click_button
(
'Add issues'
)
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.add-issues-modal'
)
do
expect
(
find
(
'.add-issues-footer'
)).
not_to
have_button
(
planning
.
title
)
...
...
@@ -122,7 +120,7 @@ describe 'Issue Boards add issue modal', :feature, :js do
find
(
'.form-control'
).
native
.
send_keys
(
issue
.
title
)
find
(
'.form-control'
).
native
.
send_keys
(
:enter
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
end
...
...
@@ -133,7 +131,7 @@ describe 'Issue Boards add issue modal', :feature, :js do
find
(
'.form-control'
).
native
.
send_keys
(
'testing search'
)
find
(
'.form-control'
).
native
.
send_keys
(
:enter
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
'.card'
)
expect
(
page
).
not_to
have_content
(
"You haven't added any issues to your project yet"
)
...
...
spec/features/boards/board_with_milestone_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Board with milestone'
,
:feature
,
:js
do
include
WaitForAjax
include
WaitForVueResource
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
let!
(
:milestone
)
{
create
(
:milestone
,
project:
project
)
}
...
...
@@ -25,7 +22,7 @@ describe 'Board with milestone', :feature, :js do
create_board_with_milestone
expect
(
find
(
'.tokens-container'
)).
to
have_content
(
milestone
.
title
)
wait_for_
vue_resource
wait_for_
requests
find
(
'.card'
,
match: :first
)
...
...
@@ -45,7 +42,7 @@ describe 'Board with milestone', :feature, :js do
page
.
within
'#js-multiple-boards-switcher'
do
find
(
'.dropdown-menu-toggle'
).
click
wait_for_
vue_resource
wait_for_
requests
click_link
board
.
name
end
...
...
@@ -107,7 +104,7 @@ describe 'Board with milestone', :feature, :js do
end
it
'removes issues milestone when removing from the board'
do
wait_for_
vue_resource
wait_for_
requests
first
(
'.card .card-number'
).
click
...
...
@@ -134,7 +131,7 @@ describe 'Board with milestone', :feature, :js do
end
it
'creates new issue with boards milestone'
do
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
first
(
'.board'
))
do
find
(
'.btn-default'
).
click
...
...
@@ -143,7 +140,7 @@ describe 'Board with milestone', :feature, :js do
click_button
(
'Submit issue'
)
wait_for_
vue_resource
wait_for_
requests
click_link
(
'testing new issue with milestone'
)
end
...
...
@@ -152,7 +149,7 @@ describe 'Board with milestone', :feature, :js do
end
it
'updates issue with milestone from add issues modal'
do
wait_for_
vue_resource
wait_for_
requests
click_button
'Add issues'
...
...
spec/features/boards/boards_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
include
DragTo
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
...
...
@@ -19,7 +18,7 @@ describe 'Issue Boards', feature: true, js: true do
context
'no lists'
do
before
do
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
...
...
@@ -46,7 +45,7 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
find
(
'.board-blank-state'
))
do
click_button
(
'Add default lists'
)
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
3
)
...
...
@@ -84,7 +83,7 @@ describe 'Issue Boards', feature: true, js: true do
before
do
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
3
)
expect
(
find
(
'.board:nth-child(1)'
)).
to
have_selector
(
'.card'
)
...
...
@@ -117,7 +116,7 @@ describe 'Issue Boards', feature: true, js: true do
find
(
'.filtered-search'
).
set
(
issue8
.
title
)
find
(
'.filtered-search'
).
native
.
send_keys
(
:enter
)
wait_for_
vue_resource
wait_for_
requests
expect
(
find
(
'.board:nth-child(1)'
)).
to
have_selector
(
'.card'
,
count:
0
)
expect
(
find
(
'.board:nth-child(2)'
)).
to
have_selector
(
'.card'
,
count:
0
)
...
...
@@ -128,7 +127,7 @@ describe 'Issue Boards', feature: true, js: true do
find
(
'.filtered-search'
).
set
(
issue5
.
title
)
find
(
'.filtered-search'
).
native
.
send_keys
(
:enter
)
wait_for_
vue_resource
wait_for_
requests
expect
(
find
(
'.board:nth-child(1)'
)).
to
have_selector
(
'.card'
,
count:
1
)
expect
(
find
(
'.board:nth-child(2)'
)).
to
have_selector
(
'.card'
,
count:
0
)
...
...
@@ -140,20 +139,20 @@ describe 'Issue Boards', feature: true, js: true do
find
(
'.board-delete'
).
click
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
it
'removes checkmark in new list dropdown after deleting'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
find
(
'.board:nth-child(1)'
))
do
find
(
'.board-delete'
).
click
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
...
...
@@ -164,7 +163,7 @@ describe 'Issue Boards', feature: true, js: true do
end
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
find
(
'.board'
,
match: :first
))
do
expect
(
page
.
find
(
'.board-header'
)).
to
have_content
(
'58'
)
...
...
@@ -172,13 +171,13 @@ describe 'Issue Boards', feature: true, js: true do
expect
(
page
).
to
have_content
(
'Showing 20 of 58 issues'
)
evaluate_script
(
"document.querySelectorAll('.board .board-list')[0].scrollTop = document.querySelectorAll('.board .board-list')[0].scrollHeight"
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
40
)
expect
(
page
).
to
have_content
(
'Showing 40 of 58 issues'
)
evaluate_script
(
"document.querySelectorAll('.board .board-list')[0].scrollTop = document.querySelectorAll('.board .board-list')[0].scrollHeight"
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
58
)
expect
(
page
).
to
have_content
(
'Showing all issues'
)
...
...
@@ -188,7 +187,7 @@ describe 'Issue Boards', feature: true, js: true do
context
'closed'
do
it
'shows list of closed issues'
do
wait_for_board_cards
(
3
,
1
)
wait_for_
ajax
wait_for_
requests
end
it
'moves issue to closed'
do
...
...
@@ -272,7 +271,7 @@ describe 'Issue Boards', feature: true, js: true do
context
'new list'
do
it
'shows all labels in new list dropdown'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-issues-board-new'
)
do
expect
(
page
).
to
have_content
(
planning
.
title
)
...
...
@@ -283,52 +282,52 @@ describe 'Issue Boards', feature: true, js: true do
it
'creates new list for label'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-issues-board-new'
)
do
click_link
testing
.
title
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
4
)
end
it
'creates new list for Backlog label'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-issues-board-new'
)
do
click_link
backlog
.
title
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
4
)
end
it
'creates new list for Closed label'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-issues-board-new'
)
do
click_link
closed
.
title
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
4
)
end
it
'keeps dropdown open after adding new list'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-issues-board-new'
)
do
click_link
closed
.
title
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_css
(
'#js-add-list.open'
)
end
...
...
@@ -336,7 +335,7 @@ describe 'Issue Boards', feature: true, js: true do
it
'creates new list from a new label'
do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
click_link
'Create new label'
...
...
@@ -346,8 +345,8 @@ describe 'Issue Boards', feature: true, js: true do
click_button
'Create'
wait_for_
ajax
wait_for_
vue_resource
wait_for_
requests
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
4
)
end
...
...
@@ -360,7 +359,7 @@ describe 'Issue Boards', feature: true, js: true do
click_filter_link
(
user2
.
username
)
submit_filter
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
end
...
...
@@ -370,7 +369,7 @@ describe 'Issue Boards', feature: true, js: true do
click_filter_link
(
user
.
username
)
submit_filter
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
...
...
@@ -381,7 +380,7 @@ describe 'Issue Boards', feature: true, js: true do
click_filter_link
(
milestone
.
title
)
submit_filter
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_board_cards
(
2
,
0
)
wait_for_board_cards
(
3
,
0
)
...
...
@@ -392,7 +391,7 @@ describe 'Issue Boards', feature: true, js: true do
click_filter_link
(
testing
.
title
)
submit_filter
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
end
...
...
@@ -407,7 +406,7 @@ describe 'Issue Boards', feature: true, js: true do
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
find
(
'.board'
,
match: :first
))
do
expect
(
page
.
find
(
'.board-header'
)).
to
have_content
(
'1'
)
...
...
@@ -442,7 +441,7 @@ describe 'Issue Boards', feature: true, js: true do
click_filter_link
(
testing
.
title
)
submit_filter
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
find
(
'.board'
,
match: :first
))
do
expect
(
page
.
find
(
'.board-header'
)).
to
have_content
(
'51'
)
...
...
@@ -470,7 +469,7 @@ describe 'Issue Boards', feature: true, js: true do
submit_filter
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
...
...
@@ -481,14 +480,14 @@ describe 'Issue Boards', feature: true, js: true do
expect
(
page
).
to
have_selector
(
'.card'
,
count:
8
)
expect
(
find
(
'.card'
,
match: :first
)).
to
have_content
(
bug
.
title
)
click_button
(
bug
.
title
)
wait_for_
vue_resource
wait_for_
requests
end
page
.
within
(
'.tokens-container'
)
do
expect
(
page
).
to
have_content
(
bug
.
title
)
end
wait_for_
vue_resource
wait_for_
requests
wait_for_board_cards
(
1
,
1
)
wait_for_empty_boards
((
2
..
3
))
...
...
@@ -500,12 +499,12 @@ describe 'Issue Boards', feature: true, js: true do
click_button
(
bug
.
title
)
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
end
wait_for_
vue_resource
wait_for_
requests
end
end
end
...
...
@@ -513,7 +512,7 @@ describe 'Issue Boards', feature: true, js: true do
context
'keyboard shortcuts'
do
before
do
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'allows user to use keyboard shortcuts'
do
...
...
@@ -526,7 +525,7 @@ describe 'Issue Boards', feature: true, js: true do
before
do
logout
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'displays lists'
do
...
...
@@ -550,7 +549,7 @@ describe 'Issue Boards', feature: true, js: true do
logout
login_as
(
user_guest
)
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'does not show create new list'
do
...
...
spec/features/boards/issue_ordering_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards'
,
:feature
,
:js
do
include
WaitForVueResource
include
DragTo
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
...
...
@@ -24,7 +23,7 @@ describe 'Issue Boards', :feature, :js do
before
do
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
...
...
@@ -38,7 +37,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves un-ordered issue to top of list'
do
drag
(
from_index:
3
,
to_index:
0
)
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
first
(
'.board'
))
do
expect
(
first
(
'.card'
)).
to
have_content
(
issue4
.
title
)
...
...
@@ -49,7 +48,7 @@ describe 'Issue Boards', :feature, :js do
context
'ordering in list'
do
before
do
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
...
...
@@ -57,7 +56,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from middle to top'
do
drag
(
from_index:
1
,
to_index:
0
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.card'
)).
to
have_content
(
issue2
.
title
)
end
...
...
@@ -65,7 +64,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from middle to bottom'
do
drag
(
from_index:
1
,
to_index:
2
)
wait_for_
vue_resource
wait_for_
requests
expect
(
all
(
'.card'
).
last
).
to
have_content
(
issue2
.
title
)
end
...
...
@@ -73,7 +72,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from top to bottom'
do
drag
(
from_index:
0
,
to_index:
2
)
wait_for_
vue_resource
wait_for_
requests
expect
(
all
(
'.card'
).
last
).
to
have_content
(
issue3
.
title
)
end
...
...
@@ -81,7 +80,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from bottom to top'
do
drag
(
from_index:
2
,
to_index:
0
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.card'
)).
to
have_content
(
issue1
.
title
)
end
...
...
@@ -89,7 +88,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from top to middle'
do
drag
(
from_index:
0
,
to_index:
1
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.card'
)).
to
have_content
(
issue2
.
title
)
end
...
...
@@ -97,7 +96,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves from bottom to middle'
do
drag
(
from_index:
2
,
to_index:
1
)
wait_for_
vue_resource
wait_for_
requests
expect
(
all
(
'.card'
).
last
).
to
have_content
(
issue2
.
title
)
end
...
...
@@ -112,7 +111,7 @@ describe 'Issue Boards', :feature, :js do
before
do
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
3
)
end
...
...
@@ -120,7 +119,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves to top of another list'
do
drag
(
list_from_index:
0
,
list_to_index:
1
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.board'
)).
to
have_selector
(
'.card'
,
count:
2
)
expect
(
all
(
'.board'
)[
1
]).
to
have_selector
(
'.card'
,
count:
4
)
...
...
@@ -133,7 +132,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves to bottom of another list'
do
drag
(
list_from_index:
0
,
list_to_index:
1
,
to_index:
2
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.board'
)).
to
have_selector
(
'.card'
,
count:
2
)
expect
(
all
(
'.board'
)[
1
]).
to
have_selector
(
'.card'
,
count:
4
)
...
...
@@ -146,7 +145,7 @@ describe 'Issue Boards', :feature, :js do
it
'moves to index of another list'
do
drag
(
list_from_index:
0
,
list_to_index:
1
,
to_index:
1
)
wait_for_
vue_resource
wait_for_
requests
expect
(
first
(
'.board'
)).
to
have_selector
(
'.card'
,
count:
2
)
expect
(
all
(
'.board'
)[
1
]).
to
have_selector
(
'.card'
,
count:
4
)
...
...
spec/features/boards/keyboard_shortcut_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards shortcut'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
let
(
:project
)
{
create
(
:empty_project
)
}
before
do
...
...
@@ -17,6 +15,6 @@ describe 'Issue Boards shortcut', feature: true, js: true do
find
(
'body'
).
native
.
send_keys
(
'gb'
)
expect
(
page
).
to
have_selector
(
'.boards-list'
)
wait_for_
vue_resource
wait_for_
requests
end
end
spec/features/boards/modal_filter_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards add issue modal filtering'
,
:feature
,
:js
do
include
WaitForVueResource
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
let
(
:board
)
{
create
(
:board
,
project:
project
)
}
let
(
:planning
)
{
create
(
:label
,
project:
project
,
name:
'Planning'
)
}
...
...
@@ -24,7 +22,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
find
(
'.form-control'
).
native
.
send_keys
(
'testing empty state'
)
find
(
'.form-control'
).
native
.
send_keys
(
:enter
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
(
'There are no issues to show.'
)
end
...
...
@@ -38,7 +36,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
0
)
...
...
@@ -48,7 +46,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
click_button
(
'Add issues'
)
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
end
...
...
@@ -62,13 +60,13 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
0
)
find
(
'.clear-search'
).
click
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
end
...
...
@@ -89,7 +87,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
user2
.
username
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -112,7 +110,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
'none'
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -125,7 +123,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
user2
.
username
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -147,7 +145,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
'upcoming'
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
0
)
...
...
@@ -160,7 +158,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
milestone
.
name
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -182,7 +180,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
'none'
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -195,7 +193,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
submit_filter
page
.
within
(
'.add-issues-modal'
)
do
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.js-visual-token'
,
text:
label
.
title
)
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -205,7 +203,7 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do
def
visit_board
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
click_button
(
'Add issues'
)
end
...
...
spec/features/boards/multiple_boards_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Multiple Issue Boards'
,
feature:
true
,
js:
true
do
include
WaitForAjax
include
WaitForVueResource
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
let!
(
:planning
)
{
create
(
:label
,
project:
project
,
name:
'Planning'
)
}
...
...
@@ -17,7 +14,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
login_as
(
user
)
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'shows current board name'
do
...
...
@@ -42,7 +39,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_link
board2
.
name
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.boards-switcher'
)
do
expect
(
page
).
to
have_content
(
board2
.
name
)
...
...
@@ -60,7 +57,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_button
'Save'
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.dropdown-menu'
)
do
expect
(
page
).
to
have_content
(
'Testing'
)
...
...
@@ -78,7 +75,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_button
'Save'
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.dropdown-menu'
)
do
expect
(
page
).
to
have_content
(
'Testing'
)
...
...
@@ -88,7 +85,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
it
'deletes board'
do
click_button
board
.
name
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.dropdown-menu'
)
do
click_link
'Delete board'
...
...
@@ -115,7 +112,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_link
board2
.
name
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.boards-switcher'
)
do
expect
(
page
).
to
have_content
(
board2
.
name
)
...
...
@@ -123,13 +120,13 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_button
'Add list'
wait_for_
ajax
wait_for_
requests
page
.
within
'.dropdown-menu-issues-board-new'
do
click_link
planning
.
title
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
...
...
@@ -139,7 +136,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
click_link
board
.
name
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
1
)
end
...
...
@@ -148,7 +145,7 @@ describe 'Multiple Issue Boards', feature: true, js: true do
context
'unauthorized user'
do
before
do
visit
namespace_project_boards_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'does not show action links'
do
...
...
spec/features/boards/new_issue_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards new issue'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
let
(
:board
)
{
create
(
:board
,
project:
project
)
}
let!
(
:list
)
{
create
(
:list
,
board:
board
,
position:
0
)
}
...
...
@@ -15,7 +13,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
login_as
(
user
)
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.board'
,
count:
2
)
end
...
...
@@ -60,7 +58,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
click_button
'Submit issue'
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
first
(
'.board .board-issue-count'
))
do
expect
(
page
).
to
have_content
(
'1'
)
...
...
@@ -77,7 +75,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
click_button
'Submit issue'
end
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.issue-boards-sidebar'
)
end
...
...
@@ -86,7 +84,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
context
'unauthorized user'
do
before
do
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
end
it
'does not display new issue button'
do
...
...
spec/features/boards/sidebar_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Issue Boards'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
let
(
:user
)
{
create
(
:user
)
}
let
(
:user2
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:empty_project
,
:public
)
}
...
...
@@ -26,7 +24,7 @@ describe 'Issue Boards', feature: true, js: true do
login_as
(
user
)
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
end
after
do
...
...
@@ -75,7 +73,7 @@ describe 'Issue Boards', feature: true, js: true do
click_button
'Remove from board'
end
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
first
(
'.board'
))
do
expect
(
page
).
to
have_selector
(
'.card'
,
count:
1
)
...
...
@@ -89,12 +87,12 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.assignee'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-user'
)
do
click_link
user
.
name
wait_for_
vue_resource
wait_for_
requests
end
expect
(
page
).
to
have_content
(
user
.
name
)
...
...
@@ -109,7 +107,7 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.assignee'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-user'
)
do
click_link
user
.
name
...
...
@@ -130,14 +128,14 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.assignee'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-user'
)
do
click_link
'Unassigned'
end
find
(
'.dropdown-menu-toggle'
).
click
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
(
'No assignee'
)
end
...
...
@@ -153,7 +151,7 @@ describe 'Issue Boards', feature: true, js: true do
click_button
'assign yourself'
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
(
user
.
name
)
end
...
...
@@ -167,12 +165,12 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.assignee'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-menu-user'
)
do
click_link
user
.
name
wait_for_
vue_resource
wait_for_
requests
end
expect
(
page
).
to
have_content
(
user
.
name
)
...
...
@@ -197,11 +195,11 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.milestone'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
click_link
milestone
.
title
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.value'
)
do
expect
(
page
).
to
have_content
(
milestone
.
title
)
...
...
@@ -215,11 +213,11 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.milestone'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
click_link
"No Milestone"
wait_for_
vue_resource
wait_for_
requests
page
.
within
(
'.value'
)
do
expect
(
page
).
not_to
have_content
(
milestone
.
title
)
...
...
@@ -237,7 +235,7 @@ describe 'Issue Boards', feature: true, js: true do
click_button
Date
.
today
.
day
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
(
Date
.
today
.
to_s
(
:medium
))
end
...
...
@@ -251,11 +249,11 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.labels'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
click_link
bug
.
title
wait_for_
vue_resource
wait_for_
requests
find
(
'.dropdown-menu-close-icon'
).
click
...
...
@@ -275,12 +273,12 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.labels'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
click_link
bug
.
title
click_link
regression
.
title
wait_for_
vue_resource
wait_for_
requests
find
(
'.dropdown-menu-close-icon'
).
click
...
...
@@ -302,11 +300,11 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.labels'
)
do
click_link
'Edit'
wait_for_
ajax
wait_for_
requests
click_link
stretch
.
title
wait_for_
vue_resource
wait_for_
requests
find
(
'.dropdown-menu-close-icon'
).
click
...
...
@@ -327,7 +325,7 @@ describe 'Issue Boards', feature: true, js: true do
page
.
within
(
'.subscription'
)
do
click_button
'Subscribe'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"Unsubscribe"
)
end
end
...
...
spec/features/boards/sub_group_project_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Sub-group project issue boards'
,
:feature
,
:js
do
include
WaitForVueResource
let
(
:group
)
{
create
(
:group
)
}
let
(
:nested_group_1
)
{
create
(
:group
,
parent:
group
)
}
let
(
:project
)
{
create
(
:empty_project
,
group:
nested_group_1
)
}
...
...
@@ -18,7 +16,7 @@ describe 'Sub-group project issue boards', :feature, :js do
login_as
(
user
)
visit
namespace_project_board_path
(
project
.
namespace
,
project
,
board
)
wait_for_
vue_resource
wait_for_
requests
end
it
'creates new label from sidebar'
do
...
...
@@ -35,7 +33,7 @@ describe 'Sub-group project issue boards', :feature, :js do
click_button
'Create'
wait_for_
ajax
wait_for_
requests
end
page
.
within
'.labels'
do
...
...
spec/features/calendar_spec.rb
View file @
1c42b35b
...
...
@@ -74,7 +74,7 @@ feature 'Contributions Calendar', :feature, :js do
describe
'calendar day selection'
do
before
do
visit
user
.
username
wait_for_
ajax
wait_for_
requests
end
it
'displays calendar'
do
...
...
@@ -86,7 +86,7 @@ feature 'Contributions Calendar', :feature, :js do
before
do
cells
[
0
].
click
wait_for_
ajax
wait_for_
requests
@first_day_activities
=
selected_day_activities
end
...
...
@@ -97,7 +97,7 @@ feature 'Contributions Calendar', :feature, :js do
describe
'select another calendar day'
do
before
do
cells
[
1
].
click
wait_for_
ajax
wait_for_
requests
end
it
'displays different calendar day activities'
do
...
...
@@ -108,7 +108,7 @@ feature 'Contributions Calendar', :feature, :js do
describe
'deselect calendar day'
do
before
do
cells
[
0
].
click
wait_for_
ajax
wait_for_
requests
end
it
'hides calendar day activities'
do
...
...
@@ -122,7 +122,7 @@ feature 'Contributions Calendar', :feature, :js do
shared_context
'visit user page'
do
before
do
visit
user
.
username
wait_for_
ajax
wait_for_
requests
end
end
...
...
spec/features/copy_as_gfm_spec.rb
View file @
1c42b35b
...
...
@@ -479,7 +479,7 @@ describe 'Copy as GFM', feature: true, js: true do
context
'from a blob'
do
before
do
visit
namespace_project_blob_path
(
project
.
namespace
,
project
,
File
.
join
(
'master'
,
'files/ruby/popen.rb'
))
wait_for_
ajax
wait_for_
requests
end
context
'selecting one word of text'
do
...
...
@@ -521,7 +521,7 @@ describe 'Copy as GFM', feature: true, js: true do
context
'from a GFM code block'
do
before
do
visit
namespace_project_blob_path
(
project
.
namespace
,
project
,
File
.
join
(
'markdown'
,
'doc/api/users.md'
))
wait_for_
ajax
wait_for_
requests
end
context
'selecting one word of text'
do
...
...
spec/features/cycle_analytics_spec.rb
View file @
1c42b35b
...
...
@@ -17,7 +17,7 @@ feature 'Cycle Analytics', feature: true, js: true do
login_as
(
user
)
visit
namespace_project_cycle_analytics_path
(
project
.
namespace
,
project
)
wait_for_
ajax
wait_for_
requests
end
it
'shows introductory message'
do
...
...
@@ -73,7 +73,7 @@ feature 'Cycle Analytics', feature: true, js: true do
project
.
team
<<
[
user
,
:master
]
login_as
(
user
)
visit
namespace_project_cycle_analytics_path
(
project
.
namespace
,
project
)
wait_for_
ajax
wait_for_
requests
end
it
'shows the content in Spanish'
do
...
...
@@ -96,7 +96,7 @@ feature 'Cycle Analytics', feature: true, js: true do
login_as
(
guest
)
visit
namespace_project_cycle_analytics_path
(
project
.
namespace
,
project
)
wait_for_
ajax
wait_for_
requests
end
it
'needs permissions to see restricted stages'
do
...
...
@@ -140,6 +140,6 @@ feature 'Cycle Analytics', feature: true, js: true do
def
click_stage
(
stage_name
)
find
(
'.stage-nav li'
,
text:
stage_name
).
click
wait_for_
ajax
wait_for_
requests
end
end
spec/features/dashboard/datetime_on_tooltips_spec.rb
View file @
1c42b35b
...
...
@@ -15,7 +15,7 @@ feature 'Tooltips on .timeago dates', feature: true, js: true do
login_as
user
visit
user_path
(
user
)
wait_for_
ajax
()
wait_for_
requests
()
page
.
find
(
'.js-timeago'
).
hover
end
...
...
@@ -32,7 +32,7 @@ feature 'Tooltips on .timeago dates', feature: true, js: true do
login_as
user
visit
user_snippets_path
(
user
)
wait_for_
ajax
()
wait_for_
requests
()
page
.
find
(
'.js-timeago.snippet-created-ago'
).
hover
end
...
...
spec/features/dashboard/groups_list_spec.rb
View file @
1c42b35b
...
...
@@ -23,7 +23,7 @@ describe 'Dashboard Groups page', js: true, feature: true do
it
'filters groups'
do
fill_in
'filter_groups'
,
with:
group
.
name
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
group
.
full_name
)
expect
(
page
).
not_to
have_content
(
nested_group
.
full_name
)
...
...
@@ -32,10 +32,10 @@ describe 'Dashboard Groups page', js: true, feature: true do
it
'resets search when user cleans the input'
do
fill_in
'filter_groups'
,
with:
group
.
name
wait_for_
ajax
wait_for_
requests
fill_in
'filter_groups'
,
with:
""
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
group
.
full_name
)
expect
(
page
).
to
have_content
(
nested_group
.
full_name
)
...
...
spec/features/dashboard/milestone_filter_spec.rb
View file @
1c42b35b
require
'spec_helper'
describe
'Dashboard > milestone filter'
,
:feature
,
:js
do
include
WaitForAjax
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
name:
'test'
,
namespace:
user
.
namespace
)
}
let
(
:milestone
)
{
create
(
:milestone
,
title:
"v1.0"
,
project:
project
)
}
...
...
@@ -28,14 +26,14 @@ describe 'Dashboard > milestone filter', :feature, :js do
before
do
find
(
milestone_select
).
click
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.dropdown-content'
)
do
click_link
'v1.0'
end
find
(
milestone_select
).
click
wait_for_
ajax
wait_for_
requests
end
it
'shows issues with Milestone v1.0'
do
...
...
spec/features/dashboard/project_member_activity_index_spec.rb
View file @
1c42b35b
...
...
@@ -11,7 +11,7 @@ feature 'Project member activity', feature: true, js: true do
def
visit_activities_and_wait_with_event
(
event_type
)
Event
.
create
(
project:
project
,
author_id:
user
.
id
,
action:
event_type
)
visit
activity_namespace_project_path
(
project
.
namespace
,
project
)
wait_for_
ajax
wait_for_
requests
end
subject
{
page
.
find
(
".event-title"
).
text
}
...
...
spec/features/es_group_search_spec.rb
View file @
1c42b35b
...
...
@@ -7,7 +7,7 @@ feature 'Group elastic search', js: true, feature: true do
def
choose_group
(
group
)
find
(
'.js-search-group-dropdown'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.search-holder'
do
click_link
group
.
name
...
...
spec/features/expand_collapse_diffs_spec.rb
View file @
1c42b35b
...
...
@@ -36,7 +36,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
visit
namespace_project_commit_path
(
project
.
namespace
,
project
,
project
.
commit
(
branch
),
anchor:
"
#{
large_diff
[
:id
]
}
_0_1"
)
execute_script
(
'window.location.reload()'
)
wait_for_
ajax
wait_for_
requests
expect
(
large_diff
).
to
have_selector
(
'.code'
)
expect
(
large_diff
).
not_to
have_selector
(
'.nothing-here-block'
)
...
...
@@ -50,7 +50,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
visit
namespace_project_commit_path
(
project
.
namespace
,
project
,
project
.
commit
(
branch
),
anchor:
large_diff
[
:id
])
execute_script
(
'window.location.reload()'
)
wait_for_
ajax
wait_for_
requests
expect
(
large_diff
).
to
have_selector
(
'.code'
)
expect
(
large_diff
).
not_to
have_selector
(
'.nothing-here-block'
)
...
...
@@ -94,7 +94,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
context
'expanding a diff for a renamed file'
do
before
do
large_diff_renamed
.
find
(
'.click-to-expand'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'shows the old content'
do
...
...
@@ -116,7 +116,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
find
(
'.js-file-title'
,
match: :first
)
# Click `large_diff.md` title
all
(
'.diff-toggle-caret'
)[
1
].
click
wait_for_
ajax
wait_for_
requests
end
it
'makes a request to get the content'
do
...
...
@@ -139,7 +139,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
large_diff
.
find
(
'.add-diff-note'
).
click
large_diff
.
find
(
'.note-textarea'
).
send_keys
comment_text
large_diff
.
find_button
(
'Comment'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'adds the comment'
do
...
...
@@ -160,7 +160,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
find
(
'.js-file-title'
,
match: :first
)
# Click `large_diff.md` title
all
(
'.diff-toggle-caret'
)[
1
].
click
wait_for_
ajax
wait_for_
requests
end
it
'shows the diff content'
do
...
...
@@ -216,7 +216,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
expect
(
page
).
to
have_no_content
(
'No longer a symlink'
)
find
(
'.click-to-expand'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'No longer a symlink'
)
end
...
...
@@ -273,7 +273,7 @@ feature 'Expand and collapse diffs', js: true, feature: true do
expect
(
page
).
to
have_content
(
'too_large_image.jpg'
)
find
(
'.note-textarea'
)
wait_for_
ajax
wait_for_
requests
execute_script
(
'window.ajaxUris = []; $(document).ajaxSend(function(event, xhr, settings) { ajaxUris.push(settings.url) });'
)
end
...
...
spec/features/explore/groups_list_spec.rb
View file @
1c42b35b
...
...
@@ -23,7 +23,7 @@ describe 'Explore Groups page', :js, :feature do
it
'filters groups'
do
fill_in
'filter_groups'
,
with:
group
.
name
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
group
.
full_name
)
expect
(
page
).
not_to
have_content
(
public_group
.
full_name
)
...
...
@@ -32,10 +32,10 @@ describe 'Explore Groups page', :js, :feature do
it
'resets search when user cleans the input'
do
fill_in
'filter_groups'
,
with:
group
.
name
wait_for_
ajax
wait_for_
requests
fill_in
'filter_groups'
,
with:
""
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
group
.
full_name
)
expect
(
page
).
to
have_content
(
public_group
.
full_name
)
...
...
spec/features/gitlab_flavored_markdown_spec.rb
View file @
1c42b35b
...
...
@@ -49,7 +49,7 @@ describe "GitLab Flavored Markdown", feature: true do
end
describe
"for issues"
,
feature:
true
,
js:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
before
do
@other_issue
=
create
(
:issue
,
...
...
spec/features/groups/issues_spec.rb
View file @
1c42b35b
...
...
@@ -33,7 +33,7 @@ feature 'Group issues page', feature: true do
it
'filters by only group users'
do
click_button
(
'Assignee'
)
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.dropdown-menu-assignee'
)).
to
have_link
(
user
.
name
)
expect
(
find
(
'.dropdown-menu-assignee'
)).
not_to
have_link
(
user2
.
name
)
...
...
spec/features/groups/members/override_ldap_memberships_spec.rb
View file @
1c42b35b
require
'spec_helper'
feature
'Groups > Members > Master/Owner can override LDAP access levels'
,
feature:
true
do
include
WaitFor
Ajax
include
WaitFor
Requests
let
(
:johndoe
)
{
create
(
:user
,
name:
'John Doe'
)
}
let
(
:maryjane
)
{
create
(
:user
,
name:
'Mary Jane'
)
}
...
...
@@ -56,7 +56,7 @@ feature 'Groups > Members > Master/Owner can override LDAP access levels', featu
click_link
'Revert to LDAP group sync settings'
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_button
'Guest'
,
disabled:
true
expect
(
page
).
to
have_button
'Edit permissions'
...
...
spec/features/issues/award_emoji_spec.rb
View file @
1c42b35b
require
'rails_helper'
describe
'Awards Emoji'
,
feature:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
let!
(
:project
)
{
create
(
:project
,
:public
)
}
let!
(
:user
)
{
create
(
:user
)
}
...
...
@@ -22,7 +22,7 @@ describe 'Awards Emoji', feature: true do
# The `heart_tip` emoji is not valid anymore so we need to skip validation
issue
.
award_emoji
.
build
(
user:
user
,
name:
'heart_tip'
).
save!
(
validate:
false
)
visit
namespace_project_issue_path
(
project
.
namespace
,
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
end
# Regression test: https://gitlab.com/gitlab-org/gitlab-ce/issues/29529
...
...
@@ -36,19 +36,19 @@ describe 'Awards Emoji', feature: true do
before
do
visit
namespace_project_issue_path
(
project
.
namespace
,
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
end
it
'increments the thumbsdown emoji'
,
js:
true
do
find
(
'[data-name="thumbsdown"]'
).
click
wait_for_
ajax
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
find
(
'[data-name="thumbsup"]'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
thumbsup_emoji
).
to
have_text
(
"1"
)
end
...
...
@@ -60,7 +60,7 @@ describe 'Awards Emoji', feature: true do
context
'click the thumbsdown emoji'
do
it
'increments the thumbsdown emoji'
,
js:
true
do
find
(
'[data-name="thumbsdown"]'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
thumbsdown_emoji
).
to
have_text
(
"1"
)
end
...
...
@@ -113,7 +113,7 @@ describe 'Awards Emoji', feature: true do
click_button
'Comment'
end
wait_for_
ajax
wait_for_
requests
end
def
thumbsup_emoji
...
...
@@ -143,6 +143,6 @@ describe 'Awards Emoji', feature: true do
find
(
'[data-name="smiley"]'
).
click
end
wait_for_
ajax
wait_for_
requests
end
end
spec/features/issues/award_spec.rb
View file @
1c42b35b
...
...
@@ -6,12 +6,10 @@ feature 'Issue awards', js: true, feature: true do
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
describe
'logged in'
do
include
WaitForVueResource
before
do
login_as
(
user
)
visit
namespace_project_issue_path
(
project
.
namespace
,
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
end
it
'adds award to issue'
do
...
...
@@ -41,11 +39,9 @@ feature 'Issue awards', js: true, feature: true do
end
describe
'logged out'
do
include
WaitForVueResource
before
do
visit
namespace_project_issue_path
(
project
.
namespace
,
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
end
it
'does not see award menu button'
do
...
...
spec/features/issues/bulk_assignment_labels_spec.rb
View file @
1c42b35b
...
...
@@ -306,7 +306,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
page
.
within
(
'.issues_bulk_update'
)
do
click_button
'Labels'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.dropdown-menu-labels li'
,
text:
'bug'
)).
to
have_css
(
'.is-active'
)
expect
(
find
(
'.dropdown-menu-labels li'
,
text:
'feature'
)).
to
have_css
(
'.is-indeterminate'
)
...
...
@@ -349,7 +349,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
def
open_milestone_dropdown
(
items
=
[])
page
.
within
(
'.issues_bulk_update'
)
do
click_button
'Milestone'
wait_for_
ajax
wait_for_
requests
items
.
map
do
|
item
|
click_link
item
end
...
...
@@ -359,7 +359,7 @@ feature 'Issues > Labels bulk assignment', feature: true do
def
open_labels_dropdown
(
items
=
[],
unmark
=
false
)
page
.
within
(
'.issues_bulk_update'
)
do
click_button
'Labels'
wait_for_
ajax
wait_for_
requests
items
.
map
do
|
item
|
click_link
item
end
...
...
@@ -392,6 +392,6 @@ feature 'Issues > Labels bulk assignment', feature: true do
def
update_issues
click_button
'Update issues'
wait_for_
ajax
wait_for_
requests
end
end
spec/features/issues/create_branch_merge_request_spec.rb
View file @
1c42b35b
...
...
@@ -16,7 +16,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
select_dropdown_option
(
'create-mr'
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"created branch 1-cherry-coloured-funk"
)
expect
(
page
).
to
have_content
(
"mentioned in merge request !1"
)
...
...
@@ -32,7 +32,7 @@ feature 'Create Branch/Merge Request Dropdown on issue page', feature: true, js:
select_dropdown_option
(
'create-branch'
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.dropdown-toggle-text '
,
text:
'1-cherry-coloured-funk'
)
expect
(
current_path
).
to
eq
namespace_project_tree_path
(
project
.
namespace
,
project
,
'1-cherry-coloured-funk'
)
...
...
spec/features/issues/filtered_search/dropdown_author_spec.rb
View file @
1c42b35b
...
...
@@ -16,7 +16,7 @@ describe 'Dropdown author', js: true, feature: true do
end
sleep
0.5
wait_for_
ajax
wait_for_
requests
end
def
dropdown_author_size
...
...
spec/features/issues/filtered_search/dropdown_weight_spec.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,6 @@ require 'rails_helper'
describe
'Dropdown weight'
,
js:
true
,
feature:
true
do
include
FilteredSearchHelpers
include
WaitForAjax
let!
(
:project
)
{
create
(
:empty_project
)
}
let!
(
:user
)
{
create
(
:user
)
}
...
...
@@ -13,7 +12,7 @@ describe 'Dropdown weight', js: true, feature: true do
input
.
split
(
""
).
each
do
|
i
|
filtered_search
.
send_keys
(
i
)
sleep
3
wait_for_
ajax
wait_for_
requests
end
end
...
...
spec/features/issues/filtered_search/filter_issues_spec.rb
View file @
1c42b35b
...
...
@@ -761,7 +761,7 @@ describe 'Filter issues', js: true, feature: true do
sort_toggle
.
click
find
(
'.filtered-search-wrapper .dropdown-menu li a'
,
text:
'Oldest updated'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.issues-list .issue:first-of-type .issue-title-text a'
)).
to
have_content
(
old_issue
.
title
)
end
...
...
@@ -778,17 +778,17 @@ describe 'Filter issues', js: true, feature: true do
it
'open state'
do
find
(
'.issues-state-filters a'
,
text:
'Closed'
).
click
wait_for_
ajax
wait_for_
requests
find
(
'.issues-state-filters a'
,
text:
'Open'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.issues-list .issue'
,
count:
4
)
end
it
'closed state'
do
find
(
'.issues-state-filters a'
,
text:
'Closed'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.issues-list .issue'
,
count:
1
)
expect
(
find
(
'.issues-list .issue:first-of-type .issue-title-text a'
)).
to
have_content
(
closed_issue
.
title
)
...
...
@@ -796,7 +796,7 @@ describe 'Filter issues', js: true, feature: true do
it
'all state'
do
find
(
'.issues-state-filters a'
,
text:
'All'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.issues-list .issue'
,
count:
5
)
end
...
...
spec/features/issues/filtered_search/filter_issues_weight_spec.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,6 @@ require 'rails_helper'
describe
'Filter issues weight'
,
js:
true
,
feature:
true
do
include
FilteredSearchHelpers
include
WaitForAjax
let!
(
:project
)
{
create
(
:empty_project
)
}
let!
(
:user
)
{
create
(
:user
,
name:
'administrator'
,
username:
'root'
)
}
...
...
spec/features/issues/form_spec.rb
View file @
1c42b35b
...
...
@@ -3,7 +3,6 @@ require 'rails_helper'
describe
'New/edit issue'
,
:feature
,
:js
do
include
GitlabRoutingHelper
include
ActionView
::
Helpers
::
JavaScriptHelper
include
WaitForAjax
let!
(
:project
)
{
create
(
:project
)
}
let!
(
:user
)
{
create
(
:user
)}
...
...
@@ -28,7 +27,7 @@ describe 'New/edit issue', :feature, :js do
before
do
click_button
'Unassigned'
wait_for_
ajax
wait_for_
requests
end
it
'unselects other assignees when unassigned is selected'
do
...
...
@@ -69,7 +68,7 @@ describe 'New/edit issue', :feature, :js do
expect
(
find
(
'a'
,
text:
'Assign to me'
)).
to
be_visible
click_button
'Unassigned'
wait_for_
ajax
wait_for_
requests
page
.
within
'.dropdown-menu-user'
do
click_link
user2
.
name
...
...
@@ -168,7 +167,7 @@ describe 'New/edit issue', :feature, :js do
it
'correctly updates the selected user when changing assignee'
do
click_button
'Unassigned'
wait_for_
ajax
wait_for_
requests
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
...
...
spec/features/issues/gfm_autocomplete_spec.rb
View file @
1c42b35b
...
...
@@ -11,7 +11,7 @@ feature 'GFM autocomplete', feature: true, js: true do
login_as
(
user
)
visit
namespace_project_issue_path
(
project
.
namespace
,
project
,
issue
)
wait_for_
ajax
wait_for_
requests
end
it
'opens autocomplete menu when field starts with text'
do
...
...
@@ -40,7 +40,7 @@ feature 'GFM autocomplete', feature: true, js: true do
expect
(
page
).
to
have_selector
(
'.atwho-container'
)
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#at-view-58'
)).
not_to
have_selector
(
'.cur:first-of-type'
)
end
...
...
@@ -80,7 +80,7 @@ feature 'GFM autocomplete', feature: true, js: true do
expect
(
page
).
to
have_selector
(
'.atwho-container'
)
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#at-view-64'
)).
to
have_selector
(
'.cur:first-of-type'
)
end
...
...
@@ -93,7 +93,7 @@ feature 'GFM autocomplete', feature: true, js: true do
expect
(
page
).
to
have_selector
(
'.atwho-container'
)
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#at-view-64'
)).
to
have_content
(
user
.
name
)
end
...
...
@@ -106,7 +106,7 @@ feature 'GFM autocomplete', feature: true, js: true do
expect
(
page
).
to
have_selector
(
'.atwho-container'
)
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#at-view-58'
)).
to
have_selector
(
'.cur:first-of-type'
)
end
...
...
spec/features/issues/issue_sidebar_spec.rb
View file @
1c42b35b
...
...
@@ -23,7 +23,7 @@ feature 'Issue Sidebar', feature: true do
find
(
'.block.assignee .edit-link'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'shows author in assignee dropdown'
do
...
...
@@ -37,7 +37,7 @@ feature 'Issue Sidebar', feature: true do
find
(
'.dropdown-input-field'
).
native
.
send_keys
user2
.
name
sleep
1
# Required to wait for end of input delay
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
user2
.
name
)
end
...
...
@@ -48,7 +48,7 @@ feature 'Issue Sidebar', feature: true do
click_button
'assign yourself'
wait_for_
ajax
wait_for_
requests
find
(
'.block.assignee .edit-link'
).
click
...
...
spec/features/issues/notes_on_issues_spec.rb
View file @
1c42b35b
...
...
@@ -15,7 +15,7 @@ describe 'Create notes on issues', :js, :feature do
fill_in
'note[note]'
,
with:
note_text
click_button
'Comment'
wait_for_
ajax
wait_for_
requests
end
it
'creates a note with reference and cross references the issue'
do
...
...
spec/features/issues/update_issues_spec.rb
View file @
1c42b35b
...
...
@@ -108,11 +108,11 @@ feature 'Multiple issue updating from issues#index', feature: true do
def
click_update_assignee_button
find
(
'.js-update-assignee'
).
click
wait_for_
ajax
wait_for_
requests
end
def
click_update_issues_button
find
(
'.update_selected_issues'
).
click
wait_for_
ajax
wait_for_
requests
end
end
spec/features/issues/user_uses_slash_commands_spec.rb
View file @
1c42b35b
...
...
@@ -18,7 +18,7 @@ feature 'Issues > User uses slash commands', feature: true, js: true do
end
after
do
wait_for_
ajax
wait_for_
requests
end
describe
'adding a due date from note'
do
...
...
spec/features/issues_spec.rb
View file @
1c42b35b
...
...
@@ -388,7 +388,7 @@ describe 'Issues', feature: true do
previous_token
=
find
(
'input#issue_email'
).
value
find
(
'.incoming-email-token-reset'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_no_field
(
'issue_email'
,
with:
previous_token
)
new_token
=
project1
.
new_issue_address
(
@user
.
reload
)
...
...
@@ -434,7 +434,7 @@ describe 'Issues', feature: true do
expect
(
page
).
to
have_content
'No assignee'
end
# wait_for_
ajax
does not work with vue-resource at the moment
# wait_for_
requests
does not work with vue-resource at the moment
sleep
1
expect
(
issue
.
reload
.
assignees
).
to
be_empty
...
...
@@ -697,7 +697,7 @@ describe 'Issues', feature: true do
click_button
date
.
day
end
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.value'
).
text
).
to
have_content
date
.
strftime
(
'%b %-d, %Y'
)
end
...
...
@@ -713,7 +713,7 @@ describe 'Issues', feature: true do
click_button
date
.
day
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_no_content
'No due date'
...
...
@@ -725,7 +725,7 @@ describe 'Issues', feature: true do
end
describe
'title issue#show'
,
js:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
it
'updates the title'
,
js:
true
do
issue
=
create
(
:issue
,
author:
@user
,
assignees:
[
@user
],
project:
project
,
title:
'new title'
)
...
...
@@ -736,7 +736,7 @@ describe 'Issues', feature: true do
issue
.
update
(
title:
"updated title"
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_text
(
"updated title"
)
end
end
...
...
spec/features/merge_requests/approvals_spec.rb
View file @
1c42b35b
require
'rails_helper'
feature
'Merge request approvals'
,
js:
true
,
feature:
true
do
include
WaitForVueResource
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
approvals_before_merge:
1
)
}
...
...
@@ -74,7 +72,7 @@ feature 'Merge request approvals', js: true, feature: true do
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
target_branch:
'master'
,
source_branch:
'feature'
})
find
(
'#s2id_merge_request_approver_group_ids .select2-input'
).
click
wait_for_
vue_resource
wait_for_
requests
expect
(
find
(
'.select2-results'
)).
to
have_content
(
group
.
name
)
...
...
@@ -103,7 +101,7 @@ feature 'Merge request approvals', js: true, feature: true do
click_on
(
"Submit merge request"
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
".approvals-required-text a[title='
#{
other_user
.
name
}
']"
)
expect
(
page
).
to
have_selector
(
".approvals-required-text a[title='
#{
approver
.
name
}
']"
)
...
...
@@ -129,14 +127,14 @@ feature 'Merge request approvals', js: true, feature: true do
visit
edit_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
find
(
'#s2id_merge_request_approver_group_ids .select2-input'
).
click
wait_for_
vue_resource
wait_for_
requests
expect
(
find
(
'.select2-results'
)).
to
have_content
(
group
.
name
)
find
(
'.select2-results'
).
click
click_on
(
"Save changes"
)
wait_for_
vue_resource
wait_for_
requests
find
(
'.approvals-components'
)
expect
(
page
).
to
have_content
(
"Requires 1 more approval"
)
end
...
...
@@ -236,7 +234,7 @@ feature 'Merge request approvals', js: true, feature: true do
it
'I am able to approve'
do
approve_merge_request
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
(
'Approved by'
)
expect
(
page
).
to
have_css
(
'.approver-avatar'
)
end
...
...
@@ -260,7 +258,7 @@ feature 'Merge request approvals', js: true, feature: true do
# before approval status is loaded
expect
(
page
).
to
have_button
(
'Merge when pipeline succeeds'
,
disabled:
true
)
wait_for_
vue_resource
wait_for_
requests
# after approval status is loaded
expect
(
page
).
to
have_button
(
'Merge when pipeline succeeds'
,
disabled:
true
)
...
...
@@ -286,7 +284,7 @@ feature 'Merge request approvals', js: true, feature: true do
# before approval status is loaded
expect
(
page
).
to
have_button
(
"Rebase"
,
disabled:
true
)
wait_for_
vue_resource
wait_for_
requests
# after approval status is loaded
expect
(
page
).
to
have_button
(
"Rebase"
,
disabled:
true
)
...
...
@@ -321,12 +319,12 @@ def approve_merge_request
page
.
within
'.mr-state-widget'
do
find
(
'.approve-btn'
).
click
end
wait_for_
vue_resource
wait_for_
requests
end
def
unapprove_merge_request
page
.
within
'.mr-state-widget'
do
find
(
'.unapprove-btn-wrap'
).
click
end
wait_for_
vue_resource
wait_for_
requests
end
spec/features/merge_requests/closes_issues_spec.rb
View file @
1c42b35b
require
'spec_helper'
feature
'Merge Request closing issues message'
,
feature:
true
,
js:
true
do
include
WaitForAjax
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
:public
)
}
let
(
:issue_1
)
{
create
(
:issue
,
project:
project
)}
...
...
@@ -25,7 +23,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
login_as
user
visit
namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
wait_for_
ajax
wait_for_
requests
end
context
'not closing or mentioning any issue'
do
...
...
@@ -93,7 +91,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_description
)
{
"Description
\n\n
closing
#{
issue_1
.
to_reference
}
,
#{
issue_2
.
to_reference
}
"
}
it
'displays closing issue message exactly one time'
do
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"Closes issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
,
count:
1
)
end
end
...
...
spec/features/merge_requests/conflicts_spec.rb
View file @
1c42b35b
...
...
@@ -23,13 +23,13 @@ feature 'Merge request conflict resolution', js: true, feature: true do
end
click_button
'Commit conflict resolution'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'All merge conflicts were resolved'
)
merge_request
.
reload_diff
click_on
'Changes'
wait_for_
ajax
wait_for_
requests
within
find
(
'.diff-file'
,
text:
'files/ruby/popen.rb'
)
do
expect
(
page
).
to
have_selector
(
'.line_content.new'
,
text:
"vars = { 'PWD' => path }"
)
...
...
@@ -53,23 +53,23 @@ feature 'Merge request conflict resolution', js: true, feature: true do
within
find
(
'.files-wrapper .diff-file'
,
text:
'files/ruby/popen.rb'
)
do
click_button
'Edit inline'
wait_for_
ajax
wait_for_
requests
execute_script
(
'ace.edit($(".files-wrapper .diff-file pre")[0]).setValue("One morning");'
)
end
within
find
(
'.files-wrapper .diff-file'
,
text:
'files/ruby/regex.rb'
)
do
click_button
'Edit inline'
wait_for_
ajax
wait_for_
requests
execute_script
(
'ace.edit($(".files-wrapper .diff-file pre")[1]).setValue("Gregor Samsa woke from troubled dreams");'
)
end
click_button
'Commit conflict resolution'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'All merge conflicts were resolved'
)
merge_request
.
reload_diff
click_on
'Changes'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'One morning'
)
expect
(
page
).
to
have_content
(
'Gregor Samsa woke from troubled dreams'
)
...
...
@@ -126,21 +126,21 @@ feature 'Merge request conflict resolution', js: true, feature: true do
it
'conflicts are resolved in Edit inline mode'
do
within
find
(
'.files-wrapper .diff-file'
,
text:
'files/markdown/ruby-style-guide.md'
)
do
wait_for_
ajax
wait_for_
requests
execute_script
(
'ace.edit($(".files-wrapper .diff-file pre")[0]).setValue("Gregor Samsa woke from troubled dreams");'
)
end
click_button
'Commit conflict resolution'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'All merge conflicts were resolved'
)
merge_request
.
reload_diff
click_on
'Changes'
wait_for_
ajax
wait_for_
requests
click_link
'Expand all'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'Gregor Samsa woke from troubled dreams'
)
end
...
...
@@ -171,7 +171,7 @@ feature 'Merge request conflict resolution', js: true, feature: true do
it
'shows an error if the conflicts page is visited directly'
do
visit
current_url
+
'/conflicts'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#conflicts'
)).
to
have_content
(
'Please try to resolve them locally.'
)
end
...
...
spec/features/merge_requests/create_new_mr_spec.rb
View file @
1c42b35b
require
'spec_helper'
feature
'Create New Merge Request'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
:public
)
}
...
...
@@ -175,7 +173,7 @@ feature 'Create New Merge Request', feature: true, js: true do
page
.
within
(
'.merge-request'
)
do
click_link
'Pipelines'
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_content
"#
#{
pipeline
.
id
}
"
end
...
...
spec/features/merge_requests/deleted_source_branch_spec.rb
View file @
1c42b35b
...
...
@@ -32,7 +32,7 @@ describe 'Deleted source branch', feature: true, js: true do
end
click_on
'Changes'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.diffs.tab-pane .nothing-here-block'
)
expect
(
page
).
to
have_content
(
'Source branch does not exist.'
)
...
...
spec/features/merge_requests/diff_notes_avatars_spec.rb
View file @
1c42b35b
...
...
@@ -60,7 +60,7 @@ feature 'Diff note avatars', feature: true, js: true do
click_button
'Comment'
wait_for_
ajax
wait_for_
requests
end
visit
namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
...
...
@@ -76,7 +76,7 @@ feature 'Diff note avatars', feature: true, js: true do
before
do
visit
diffs_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
,
view:
view
)
wait_for_
ajax
wait_for_
requests
end
it
'shows note avatar'
do
...
...
@@ -114,7 +114,7 @@ feature 'Diff note avatars', feature: true, js: true do
find
(
'.js-note-delete'
).
click
end
wait_for_
ajax
wait_for_
requests
page
.
within
find
(
"[id='
#{
position
.
line_code
(
project
.
repository
)
}
']"
)
do
expect
(
page
).
not_to
have_selector
(
'img.js-diff-comment-avatar'
)
...
...
@@ -129,7 +129,7 @@ feature 'Diff note avatars', feature: true, js: true do
click_button
'Comment'
wait_for_
ajax
wait_for_
requests
end
page
.
within
find
(
"[id='
#{
position
.
line_code
(
project
.
repository
)
}
']"
)
do
...
...
@@ -148,7 +148,7 @@ feature 'Diff note avatars', feature: true, js: true do
find
(
'.js-comment-button'
).
trigger
'click'
wait_for_
ajax
wait_for_
requests
end
end
...
...
@@ -166,7 +166,7 @@ feature 'Diff note avatars', feature: true, js: true do
visit
diffs_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
,
view:
view
)
wait_for_
ajax
wait_for_
requests
end
it
'shows extra comment count'
do
...
...
spec/features/merge_requests/filter_merge_requests_spec.rb
View file @
1c42b35b
...
...
@@ -289,7 +289,7 @@ describe 'Filter merge requests', feature: true do
page
.
within
'.dropdown-menu-sort'
do
click_link
'Oldest created'
end
wait_for_
ajax
wait_for_
requests
page
.
within
'.mr-list'
do
expect
(
page
).
to
have_content
(
'Frontend'
)
...
...
spec/features/merge_requests/merge_immediately_with_pipeline_spec.rb
View file @
1c42b35b
...
...
@@ -37,9 +37,9 @@ feature 'Merge immediately', :feature, :js do
Sidekiq
::
Testing
.
fake!
do
click_link
'Merge immediately'
expect
(
find
(
'.accept-merge-request.btn-info'
)).
to
have_content
(
'Merge in progress'
)
wait_for_requests
wait_for_vue_resource
expect
(
find
(
'.accept-merge-request.btn-info'
)).
to
have_content
(
'Merge in progress'
)
end
end
end
...
...
spec/features/merge_requests/mini_pipeline_graph_spec.rb
View file @
1c42b35b
...
...
@@ -56,7 +56,7 @@ feature 'Mini Pipeline Graph', :js, :feature do
before
do
toggle
.
click
wait_for_
ajax
wait_for_
requests
end
it
'should open when toggle is clicked'
do
...
...
spec/features/merge_requests/only_allow_merge_if_build_succeeds_spec.rb
View file @
1c42b35b
require
'spec_helper'
feature
'Only allow merge requests to be merged if the pipeline succeeds'
,
feature:
true
,
js:
true
do
include
WaitForVueResource
let
(
:merge_request
)
{
create
(
:merge_request_with_diffs
)
}
let
(
:project
)
{
merge_request
.
target_project
}
...
...
@@ -16,7 +14,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge'
end
...
...
@@ -44,7 +42,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'does not allow to merge immediately'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge when pipeline succeeds'
expect
(
page
).
not_to
have_button
'Select merge moment'
...
...
@@ -57,7 +55,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'does not allow MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_css
(
'button[disabled="disabled"]'
,
text:
'Merge'
)
expect
(
page
).
to
have_content
(
'Please retry the job or push a new commit to fix the failure.'
)
...
...
@@ -70,7 +68,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'does not allow MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
not_to
have_button
'Merge'
expect
(
page
).
to
have_content
(
'Please retry the job or push a new commit to fix the failure.'
)
...
...
@@ -83,7 +81,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge'
end
...
...
@@ -95,7 +93,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge'
end
...
...
@@ -113,7 +111,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged immediately'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge when pipeline succeeds'
...
...
@@ -128,7 +126,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge'
end
...
...
@@ -140,7 +138,7 @@ feature 'Only allow merge requests to be merged if the pipeline succeeds', featu
it
'allows MR to be merged'
do
visit_merge_request
(
merge_request
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_button
'Merge'
end
...
...
spec/features/merge_requests/pipelines_spec.rb
View file @
1c42b35b
...
...
@@ -26,7 +26,7 @@ feature 'Pipelines for Merge Requests', feature: true, js: true do
page
.
within
(
'.merge-request-tabs'
)
do
click_link
(
'Pipelines'
)
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.pipeline-actions'
)
end
...
...
spec/features/merge_requests/squash_spec.rb
View file @
1c42b35b
require
'spec_helper'
feature
'Squashing merge requests'
,
js:
true
,
feature:
true
do
include
WaitForAjax
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
)
}
let
(
:source_branch
)
{
'csv'
}
...
...
@@ -67,7 +65,7 @@ feature 'Squashing merge requests', js: true, feature: true do
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
target_branch:
'master'
,
source_branch:
source_branch
})
check
'merge_request[squash]'
click_on
'Submit merge request'
wait_for_
ajax
wait_for_
requests
end
it
'shows the squash checkbox as checked'
do
...
...
@@ -96,7 +94,7 @@ feature 'Squashing merge requests', js: true, feature: true do
before
do
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
target_branch:
'master'
,
source_branch:
source_branch
})
click_on
'Submit merge request'
wait_for_
ajax
wait_for_
requests
end
it
'shows the squash checkbox as unchecked'
do
...
...
spec/features/merge_requests/update_merge_requests_spec.rb
View file @
1c42b35b
...
...
@@ -107,7 +107,7 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
def
change_assignee
(
text
)
find
(
'#check_all_issues'
).
click
find
(
'.js-update-assignee'
).
click
wait_for_
ajax
wait_for_
requests
page
.
within
'.dropdown-menu-user'
do
click_link
text
...
...
@@ -125,6 +125,6 @@ feature 'Multiple merge requests updating from merge_requests#index', feature: t
def
click_update_merge_requests_button
find
(
'.update_selected_issues'
).
click
wait_for_
ajax
wait_for_
requests
end
end
spec/features/merge_requests/user_posts_diff_notes_spec.rb
View file @
1c42b35b
...
...
@@ -73,7 +73,7 @@ feature 'Merge requests > User posts diff notes', :js do
context
'with an unfolded line'
do
before
(
:each
)
do
find
(
'.js-unfold'
,
match: :first
).
click
wait_for_
ajax
wait_for_
requests
end
# The first `.js-unfold` unfolds upwards, therefore the first
...
...
@@ -122,7 +122,7 @@ feature 'Merge requests > User posts diff notes', :js do
context
'with an unfolded line'
do
before
(
:each
)
do
find
(
'.js-unfold'
,
match: :first
).
click
wait_for_
ajax
wait_for_
requests
end
# The first `.js-unfold` unfolds upwards, therefore the first
...
...
@@ -213,7 +213,7 @@ feature 'Merge requests > User posts diff notes', :js do
write_comment_on_line
(
line_holder
,
diff_side
)
click_button
'Comment'
wait_for_
ajax
wait_for_
requests
assert_comment_persistence
(
line_holder
,
asset_form_reset:
asset_form_reset
)
end
...
...
spec/features/merge_requests/user_posts_notes_spec.rb
View file @
1c42b35b
...
...
@@ -98,7 +98,7 @@ describe 'Merge requests > User posts notes', :js do
find
(
'.btn-save'
).
click
end
wait_for_
ajax
wait_for_
requests
find
(
'.note'
).
hover
find
(
'.js-note-edit'
).
click
...
...
@@ -139,7 +139,7 @@ describe 'Merge requests > User posts notes', :js do
find
(
'.js-note-attachment-delete'
).
click
is_expected
.
not_to
have_css
(
'.note-attachment'
)
is_expected
.
not_to
have_css
(
'.current-note-edit-form'
)
wait_for_
ajax
wait_for_
requests
end
end
end
...
...
spec/features/merge_requests/user_uses_slash_commands_spec.rb
View file @
1c42b35b
...
...
@@ -21,7 +21,7 @@ feature 'Merge Requests > User uses slash commands', feature: true, js: true do
end
after
do
wait_for_
ajax
wait_for_
requests
end
describe
'toggling the WIP prefix in the title from note'
do
...
...
@@ -160,7 +160,7 @@ feature 'Merge Requests > User uses slash commands', feature: true, js: true do
it
'changes target branch from a note'
do
write_note
(
"message start
\n
/target_branch merge-test
\n
message end."
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
(
'/target_branch'
)
expect
(
page
).
to
have_content
(
'message start'
)
expect
(
page
).
to
have_content
(
'message end.'
)
...
...
spec/features/merge_requests/versions_spec.rb
View file @
1c42b35b
...
...
@@ -75,7 +75,7 @@ feature 'Merge Request versions', js: true, feature: true do
find
(
".js-comment-button"
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"Typo, please fix"
)
end
...
...
@@ -126,7 +126,7 @@ feature 'Merge Request versions', js: true, feature: true do
outdated_diff_note
=
create
(
:diff_note_on_merge_request
,
project:
project
,
noteable:
merge_request
,
position:
position
)
visit
current_url
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_css
(
".diffs .notes[data-discussion-id='
#{
outdated_diff_note
.
discussion_id
}
']"
)
end
...
...
@@ -144,7 +144,7 @@ feature 'Merge Request versions', js: true, feature: true do
find
(
".js-comment-button"
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"Typo, please fix"
)
end
...
...
spec/features/merge_requests/widget_deployments_spec.rb
View file @
1c42b35b
...
...
@@ -18,7 +18,7 @@ feature 'Widget Deployments Header', feature: true, js: true do
end
scenario
'displays that the environment is deployed'
do
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
"Deployed to
#{
environment
.
name
}
"
)
expect
(
find
(
'.js-deploy-time'
)[
'data-title'
]).
to
eq
(
deployment
.
created_at
.
to_time
.
in_time_zone
.
to_s
(
:medium
))
...
...
@@ -34,7 +34,7 @@ feature 'Widget Deployments Header', feature: true, js: true do
end
background
do
wait_for_
ajax
wait_for_
requests
end
scenario
'does show stop button'
do
...
...
spec/features/merge_requests/widget_spec.rb
View file @
1c42b35b
...
...
@@ -27,7 +27,7 @@ describe 'Merge request', :feature, :js do
it
'shows widget status after creating new merge request'
do
click_button
'Submit merge request'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.accept-merge-request'
)
expect
(
find
(
'.accept-merge-request'
)[
'disabled'
]).
not_to
be
(
true
)
...
...
@@ -48,7 +48,7 @@ describe 'Merge request', :feature, :js do
end
it
'shows environments link'
do
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.mr-widget-heading'
)
do
expect
(
page
).
to
have_content
(
"Deployed to
#{
environment
.
name
}
"
)
...
...
@@ -58,7 +58,7 @@ describe 'Merge request', :feature, :js do
it
'shows green accept merge request button'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.accept-merge-request'
)
expect
(
find
(
'.accept-merge-request'
)[
'disabled'
]).
not_to
be
(
true
)
end
...
...
@@ -76,7 +76,7 @@ describe 'Merge request', :feature, :js do
it
'has danger button while waiting for external CI status'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.accept-merge-request.btn-danger'
)
end
end
...
...
@@ -98,7 +98,7 @@ describe 'Merge request', :feature, :js do
it
'has danger button when not succeeded'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.accept-merge-request.btn-danger'
)
end
end
...
...
@@ -145,7 +145,7 @@ describe 'Merge request', :feature, :js do
it
'has info button when MWBS button'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.accept-merge-request.btn-info'
)
end
end
...
...
@@ -163,7 +163,7 @@ describe 'Merge request', :feature, :js do
it
'shows information about the merge error'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.mr-widget-body'
)
do
expect
(
page
).
to
have_content
(
'Something went wrong'
)
...
...
@@ -184,7 +184,7 @@ describe 'Merge request', :feature, :js do
it
'shows information about the merge error'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.mr-widget-body'
)
do
expect
(
page
).
to
have_content
(
'Something went wrong'
)
...
...
@@ -207,7 +207,7 @@ describe 'Merge request', :feature, :js do
it
'shows information about the merge error'
do
# Wait for the `ci_status` and `merge_check` requests
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.mr-widget-body'
)
do
expect
(
page
).
to
have_content
(
'Fast-forward merge is not possible'
)
...
...
spec/features/milestones/milestones_spec.rb
View file @
1c42b35b
...
...
@@ -78,7 +78,7 @@ describe 'Milestone draggable', feature: true, js: true do
scroll_into_view
(
'.milestone-content'
)
drag_to
(
selector:
'.issues-sortable-list'
,
list_to_index:
1
)
wait_for_
ajax
wait_for_
requests
end
def
create_and_drag_merge_request
(
params
=
{})
...
...
@@ -87,12 +87,12 @@ describe 'Milestone draggable', feature: true, js: true do
visit
namespace_project_milestone_path
(
project
.
namespace
,
project
,
milestone
)
page
.
find
(
"a[href='#tab-merge-requests']"
).
click
wait_for_
ajax
wait_for_
requests
scroll_into_view
(
'.milestone-content'
)
drag_to
(
selector:
'.merge_requests-sortable-list'
,
list_to_index:
1
)
wait_for_
ajax
wait_for_
requests
end
def
scroll_into_view
(
selector
)
...
...
spec/features/projects/artifacts/file_spec.rb
View file @
1c42b35b
...
...
@@ -13,7 +13,7 @@ feature 'Artifact file', :js, feature: true do
before
do
visit_file
(
'other_artifacts_0.1.2/doc_sample.txt'
)
wait_for_
ajax
wait_for_
requests
end
it
'displays an error'
do
...
...
@@ -37,7 +37,7 @@ feature 'Artifact file', :js, feature: true do
before
do
visit_file
(
'rails_sample.jpg'
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob'
do
...
...
spec/features/projects/blobs/blob_show_spec.rb
View file @
1c42b35b
...
...
@@ -6,12 +6,14 @@ feature 'File blob', :js, feature: true do
def
visit_blob
(
path
,
fragment
=
nil
)
visit
namespace_project_blob_path
(
project
.
namespace
,
project
,
File
.
join
(
'master'
,
path
),
anchor:
fragment
)
wait_for_
ajax
wait_for_
requests
end
context
'Ruby file'
do
before
do
visit_blob
(
'files/ruby/popen.rb'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -35,6 +37,8 @@ feature 'File blob', :js, feature: true do
context
'visiting directly'
do
before
do
visit_blob
(
'files/markdown/ruby-style-guide.md'
)
wait_for_requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -61,7 +65,7 @@ feature 'File blob', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=simple]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the simple viewer'
do
...
...
@@ -82,7 +86,7 @@ feature 'File blob', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=rich]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -102,6 +106,8 @@ feature 'File blob', :js, feature: true do
context
'visiting with a line number anchor'
do
before
do
visit_blob
(
'files/markdown/ruby-style-guide.md'
,
'L1'
)
wait_for_requests
end
it
'displays the blob using the simple viewer'
do
...
...
@@ -144,6 +150,8 @@ feature 'File blob', :js, feature: true do
project
.
update_attribute
(
:lfs_enabled
,
true
)
visit_blob
(
'files/lfs/file.md'
)
wait_for_requests
end
it
'displays an error'
do
...
...
@@ -170,7 +178,7 @@ feature 'File blob', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switcher .js-blob-viewer-switch-btn[data-viewer=simple]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays an error'
do
...
...
@@ -192,6 +200,8 @@ feature 'File blob', :js, feature: true do
context
'when LFS is disabled on the project'
do
before
do
visit_blob
(
'files/lfs/file.md'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -227,6 +237,8 @@ feature 'File blob', :js, feature: true do
).
execute
visit_blob
(
'files/test.pdf'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -253,6 +265,8 @@ feature 'File blob', :js, feature: true do
project
.
update_attribute
(
:lfs_enabled
,
true
)
visit_blob
(
'files/lfs/lfs_object.iso'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -275,6 +289,8 @@ feature 'File blob', :js, feature: true do
context
'when LFS is disabled on the project'
do
before
do
visit_blob
(
'files/lfs/lfs_object.iso'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -298,6 +314,8 @@ feature 'File blob', :js, feature: true do
context
'ZIP file'
do
before
do
visit_blob
(
'Gemfile.zip'
)
wait_for_requests
end
it
'displays the blob'
do
...
...
@@ -332,6 +350,8 @@ feature 'File blob', :js, feature: true do
).
execute
visit_blob
(
'files/empty.md'
)
wait_for_requests
end
it
'displays an error'
do
...
...
spec/features/projects/blobs/edit_spec.rb
View file @
1c42b35b
...
...
@@ -18,7 +18,7 @@ feature 'Editing file blob', feature: true, js: true do
end
def
edit_and_commit
wait_for_
ajax
wait_for_
requests
find
(
'.js-edit-blob'
).
click
execute_script
(
'ace.edit("editor").setValue("class NextFeature\nend\n")'
)
click_button
'Commit changes'
...
...
spec/features/projects/blobs/user_create_spec.rb
View file @
1c42b35b
...
...
@@ -15,7 +15,7 @@ feature 'New blob creation', feature: true, js: true do
end
def
edit_file
wait_for_
ajax
wait_for_
requests
fill_in
'file_name'
,
with:
'feature.rb'
execute_script
(
"ace.edit('editor').setValue('
#{
content
}
')"
)
end
...
...
spec/features/projects/commit/cherry_pick_spec.rb
View file @
1c42b35b
...
...
@@ -72,11 +72,11 @@ describe 'Cherry-pick Commits' do
click_button
'master'
end
wait_for_
ajax
wait_for_
requests
page
.
within
(
'#modal-cherry-pick-commit .dropdown-menu'
)
do
find
(
'.dropdown-input input'
).
set
(
'feature'
)
wait_for_
ajax
wait_for_
requests
click_link
"feature"
end
...
...
spec/features/projects/commit/mini_pipeline_graph_spec.rb
View file @
1c42b35b
...
...
@@ -32,7 +32,7 @@ feature 'Mini Pipeline Graph in Commit View', :js, :feature do
it
'should show the builds list when stage is clicked'
do
first
(
'.mini-pipeline-graph-dropdown-toggle'
).
click
wait_for_
ajax
wait_for_
requests
page
.
within
'.js-builds-dropdown-list'
do
expect
(
page
).
to
have_selector
(
'.ci-status-icon-running'
)
...
...
spec/features/projects/compare_spec.rb
View file @
1c42b35b
...
...
@@ -53,7 +53,7 @@ describe "Compare", js: true do
dropdown
=
find
(
".js-compare-
#{
dropdown_type
}
-dropdown"
)
dropdown
.
find
(
".compare-dropdown-toggle"
).
click
dropdown
.
fill_in
(
"Filter by Git revision"
,
with:
selection
)
wait_for_
ajax
wait_for_
requests
dropdown
.
find_all
(
"a[data-ref=
\"
#{
selection
}
\"
]"
,
visible:
true
).
last
.
click
end
end
spec/features/projects/edit_spec.rb
View file @
1c42b35b
...
...
@@ -21,7 +21,7 @@ feature 'Project edit', feature: true, js: true do
find
(
'#project_request_access_enabled'
).
set
(
true
)
click_button
'Save changes'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'#project_request_access_enabled'
)).
to
be_checked
end
...
...
spec/features/projects/features_visibility_spec.rb
View file @
1c42b35b
...
...
@@ -21,17 +21,17 @@ describe 'Edit Project Settings', feature: true do
select
'Disabled'
,
from:
"project_project_feature_attributes_
#{
tool_name
}
_access_level"
click_button
'Save changes'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
".shortcuts-
#{
shortcut_name
}
"
)
select
'Everyone with access'
,
from:
"project_project_feature_attributes_
#{
tool_name
}
_access_level"
click_button
'Save changes'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
".shortcuts-
#{
shortcut_name
}
"
)
select
'Only team members'
,
from:
"project_project_feature_attributes_
#{
tool_name
}
_access_level"
click_button
'Save changes'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
".shortcuts-
#{
shortcut_name
}
"
)
sleep
0.1
...
...
@@ -169,7 +169,7 @@ describe 'Edit Project Settings', feature: true do
select
"Disabled"
,
from:
"project_project_feature_attributes_wiki_access_level"
click_button
"Save changes"
wait_for_
ajax
wait_for_
requests
visit
namespace_project_path
(
project
.
namespace
,
project
)
...
...
@@ -182,7 +182,7 @@ describe 'Edit Project Settings', feature: true do
select
"Disabled"
,
from:
"project_project_feature_attributes_wiki_access_level"
click_button
"Save changes"
wait_for_
ajax
wait_for_
requests
visit
activity_namespace_project_path
(
project
.
namespace
,
project
)
...
...
@@ -223,7 +223,7 @@ describe 'Edit Project Settings', feature: true do
def
save_changes_and_check_activity_tab
click_button
"Save changes"
wait_for_
ajax
wait_for_
requests
visit
activity_namespace_project_path
(
project
.
namespace
,
project
)
...
...
spec/features/projects/files/browse_files_spec.rb
View file @
1c42b35b
...
...
@@ -24,7 +24,7 @@ feature 'user browses project', feature: true, js: true do
click_link
'files'
click_link
'lfs'
click_link
'lfs_object.iso'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
'Download (1.5 MB)'
expect
(
page
).
to
have_content
'version https://git-lfs.github.com/spec/v1'
...
...
spec/features/projects/files/dockerfile_dropdown_spec.rb
View file @
1c42b35b
...
...
@@ -19,14 +19,14 @@ feature 'User wants to add a Dockerfile file', feature: true do
scenario 'user can pick a Dockerfile file from the dropdown', js: true do
find('.js-dockerfile-selector').click
wait_for_
ajax
wait_for_
requests
within '.dockerfile-selector' do
find('.dropdown-input-field').set('HTTPd')
find('.dropdown-content li', text: 'HTTPd').click
end
wait_for_
ajax
wait_for_
requests
expect(page).to have_css('.dockerfile-selector .dropdown-toggle-text', text: 'HTTPd')
expect(page).to have_content('COPY ./ /usr/local/apache2/htdocs/')
...
...
spec/features/projects/files/find_file_keyboard_spec.rb
View file @
1c42b35b
...
...
@@ -10,7 +10,7 @@ feature 'Find file keyboard shortcuts', feature: true, js: true do
visit
namespace_project_find_file_path
(
project
.
namespace
,
project
,
project
.
repository
.
root_ref
)
wait_for_
ajax
wait_for_
requests
end
it
'opens file when pressing enter key'
do
...
...
spec/features/projects/files/gitignore_dropdown_spec.rb
View file @
1c42b35b
...
...
@@ -15,12 +15,12 @@ feature 'User wants to add a .gitignore file', feature: true do
scenario
'user can pick a .gitignore file from the dropdown'
,
js:
true
do
find
(
'.js-gitignore-selector'
).
click
wait_for_
ajax
wait_for_
requests
within
'.gitignore-selector'
do
find
(
'.dropdown-input-field'
).
set
(
'rails'
)
find
(
'.dropdown-content li'
,
text:
'Rails'
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_css
(
'.gitignore-selector .dropdown-toggle-text'
,
text:
'Rails'
)
expect
(
page
).
to
have_content
(
'/.bundle'
)
...
...
spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb
View file @
1c42b35b
...
...
@@ -15,12 +15,12 @@ feature 'User wants to add a .gitlab-ci.yml file', feature: true do
scenario
'user can pick a template from the dropdown'
,
js:
true
do
find
(
'.js-gitlab-ci-yml-selector'
).
click
wait_for_
ajax
wait_for_
requests
within
'.gitlab-ci-yml-selector'
do
find
(
'.dropdown-input-field'
).
set
(
'Jekyll'
)
find
(
'.dropdown-content li'
,
text:
'Jekyll'
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_css
(
'.gitlab-ci-yml-selector .dropdown-toggle-text'
,
text:
'Jekyll'
)
expect
(
page
).
to
have_content
(
'This file is a template, and might need editing before it works on your project'
)
...
...
spec/features/projects/files/project_owner_creates_license_file_spec.rb
View file @
1c42b35b
...
...
@@ -63,7 +63,7 @@ feature 'project owner creates a license file', feature: true, js: true do
page
.
within
(
'.js-license-selector-wrap'
)
do
click_button
'Apply a license template'
click_link
template
wait_for_
ajax
wait_for_
requests
end
end
end
spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
View file @
1c42b35b
...
...
@@ -40,7 +40,7 @@ feature 'project owner sees a link to create a license file in empty project', f
page
.
within
(
'.js-license-selector-wrap'
)
do
click_button
'Apply a license template'
click_link
template
wait_for_
ajax
wait_for_
requests
end
end
end
spec/features/projects/files/undo_template_spec.rb
View file @
1c42b35b
...
...
@@ -57,7 +57,7 @@ end
def
select_file_template
(
template_selector_selector
,
template_name
)
find
(
template_selector_selector
).
click
find
(
'.dropdown-content li'
,
text:
template_name
).
click
wait_for_
ajax
wait_for_
requests
end
def
select_file_template_type
(
template_type
)
...
...
spec/features/projects/issuable_templates_spec.rb
View file @
1c42b35b
...
...
@@ -34,14 +34,14 @@ feature 'issuable templates', feature: true, js: true do
scenario
'user selects "bug" template'
do
select_template
'bug'
wait_for_
ajax
wait_for_
requests
assert_template
save_changes
end
scenario
'user selects "bug" template and then "no template"'
do
select_template
'bug'
wait_for_
ajax
wait_for_
requests
select_option
'No template'
assert_template
(
''
)
save_changes
(
''
)
...
...
@@ -49,7 +49,7 @@ feature 'issuable templates', feature: true, js: true do
scenario
'user selects "bug" template, edits description and then selects "reset template"'
do
select_template
'bug'
wait_for_
ajax
wait_for_
requests
find_field
(
'issue_description'
).
send_keys
(
description_addition
)
assert_template
(
template_content
+
description_addition
)
select_option
'Reset template'
...
...
@@ -61,7 +61,7 @@ feature 'issuable templates', feature: true, js: true do
start_height
=
page
.
evaluate_script
(
'$(".markdown-area").outerHeight()'
)
select_template
'test'
wait_for_
ajax
wait_for_
requests
end_height
=
page
.
evaluate_script
(
'$(".markdown-area").outerHeight()'
)
...
...
@@ -88,7 +88,7 @@ feature 'issuable templates', feature: true, js: true do
scenario
'user selects "bug" template'
do
select_template
'bug'
wait_for_
ajax
wait_for_
requests
assert_template
(
"
#{
template_content
}
"
)
save_changes
end
...
...
@@ -111,7 +111,7 @@ feature 'issuable templates', feature: true, js: true do
scenario
'user selects "feature-proposal" template'
do
select_template
'feature-proposal'
wait_for_
ajax
wait_for_
requests
assert_template
save_changes
end
...
...
@@ -143,7 +143,7 @@ feature 'issuable templates', feature: true, js: true do
context
'template exists in target project'
do
scenario
'user selects template'
do
select_template
'feature-proposal'
wait_for_
ajax
wait_for_
requests
assert_template
save_changes
end
...
...
spec/features/projects/labels/update_prioritization_spec.rb
View file @
1c42b35b
...
...
@@ -24,7 +24,7 @@ feature 'Prioritize labels', feature: true do
page
.
within
(
'.other-labels'
)
do
all
(
'.js-toggle-priority'
)[
1
].
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
(
'feature'
)
end
...
...
@@ -43,7 +43,7 @@ feature 'Prioritize labels', feature: true do
expect
(
page
).
to
have_content
(
'feature'
)
first
(
'.js-toggle-priority'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
(
'bug'
)
end
...
...
@@ -59,7 +59,7 @@ feature 'Prioritize labels', feature: true do
page
.
within
(
'.other-labels'
)
do
first
(
'.js-toggle-priority'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
(
'bug'
)
end
...
...
@@ -78,7 +78,7 @@ feature 'Prioritize labels', feature: true do
expect
(
page
).
to
have_content
(
'bug'
)
first
(
'.js-toggle-priority'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_content
(
'bug'
)
end
...
...
@@ -107,7 +107,7 @@ feature 'Prioritize labels', feature: true do
end
refresh
wait_for_
ajax
wait_for_
requests
page
.
within
(
'.prioritized-labels'
)
do
expect
(
first
(
'li'
)).
to
have_content
(
'feature'
)
...
...
spec/features/projects/members/group_links_spec.rb
View file @
1c42b35b
...
...
@@ -20,7 +20,7 @@ feature 'Projects > Members > Anonymous user sees members', feature: true, js: t
click_link
'Guest'
end
wait_for_
ajax
wait_for_
requests
visit
namespace_project_settings_members_path
(
project
.
namespace
,
project
)
...
...
@@ -31,7 +31,7 @@ feature 'Projects > Members > Anonymous user sees members', feature: true, js: t
tomorrow
=
Date
.
today
+
3
fill_in
"member_expires_at_
#{
group
.
id
}
"
,
with:
tomorrow
.
strftime
(
"%F"
)
wait_for_
ajax
wait_for_
requests
page
.
within
(
find
(
'li.group_member'
))
do
expect
(
page
).
to
have_content
(
'Expires in'
)
...
...
@@ -42,7 +42,7 @@ feature 'Projects > Members > Anonymous user sees members', feature: true, js: t
page
.
within
(
first
(
'.group_member'
))
do
find
(
'.btn-remove'
).
click
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
'.group_member'
)
end
...
...
spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb
View file @
1c42b35b
...
...
@@ -38,7 +38,7 @@ feature 'Projects > Members > Master adds member with expiration date', feature:
page
.
within
"#project_member_
#{
new_member
.
project_members
.
first
.
id
}
"
do
find
(
'.js-access-expiration-date'
).
set
date
.
to_s
(
:medium
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'Expires in 3 days'
)
end
end
...
...
spec/features/projects/pipeline_schedules_spec.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,7 @@ require 'spec_helper'
feature
'Pipeline Schedules'
,
:feature
do
include
PipelineSchedulesHelper
include
WaitFor
Ajax
include
WaitFor
Requests
let!
(
:project
)
{
create
(
:project
)
}
let!
(
:pipeline_schedule
)
{
create
(
:ci_pipeline_schedule
,
project:
project
)
}
...
...
spec/features/projects/pipelines/pipelines_spec.rb
View file @
1c42b35b
require
'spec_helper'
describe
'Pipelines'
,
:feature
,
:js
do
include
WaitForVueResource
let
(
:project
)
{
create
(
:empty_project
)
}
context
'when user is logged in'
do
...
...
@@ -54,7 +52,7 @@ describe 'Pipelines', :feature, :js do
context
'header tabs'
do
before
do
visit
namespace_project_pipelines_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
end
it
'shows a tab for All pipelines and count'
do
...
...
@@ -106,7 +104,7 @@ describe 'Pipelines', :feature, :js do
context
'when canceling'
do
before
do
find
(
'.js-pipelines-cancel-button'
).
click
wait_for_
vue_resource
wait_for_
requests
end
it
'indicated that pipelines was canceled'
do
...
...
@@ -136,7 +134,7 @@ describe 'Pipelines', :feature, :js do
context
'when retrying'
do
before
do
find
(
'.js-pipelines-retry-button'
).
click
wait_for_
vue_resource
wait_for_
requests
end
it
'shows running pipeline that is not retryable'
do
...
...
@@ -356,14 +354,14 @@ describe 'Pipelines', :feature, :js do
it
'should render pagination'
do
visit
namespace_project_pipelines_path
(
project
.
namespace
,
project
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.gl-pagination'
)
end
it
'should render second page of pipelines'
do
visit
namespace_project_pipelines_path
(
project
.
namespace
,
project
,
page:
'2'
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.gl-pagination .page'
,
count:
2
)
end
...
...
@@ -392,7 +390,7 @@ describe 'Pipelines', :feature, :js do
create
(
:generic_commit_status
,
pipeline:
pipeline
,
stage:
'external'
,
name:
'jenkins'
,
stage_idx:
3
)
visit
namespace_project_pipeline_path
(
project
.
namespace
,
project
,
pipeline
)
wait_for_
vue_resource
wait_for_
requests
end
it
'shows a graph with grouped stages'
do
...
...
@@ -507,6 +505,6 @@ describe 'Pipelines', :feature, :js do
def
visit_project_pipelines
(
**
query
)
visit
namespace_project_pipelines_path
(
project
.
namespace
,
project
,
query
)
wait_for_
vue_resource
wait_for_
requests
end
end
spec/features/projects/ref_switcher_spec.rb
View file @
1c42b35b
...
...
@@ -12,12 +12,12 @@ feature 'Ref switcher', feature: true, js: true do
it
'allow user to change ref by enter key'
do
click_button
'master'
wait_for_
ajax
wait_for_
requests
page
.
within
'.project-refs-form'
do
input
=
find
(
'input[type="search"]'
)
input
.
set
'binary'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.dropdown-content ul'
)).
to
have_selector
(
'li'
,
count:
6
)
...
...
@@ -31,7 +31,7 @@ feature 'Ref switcher', feature: true, js: true do
it
"user selects ref with special characters"
do
click_button
'master'
wait_for_
ajax
wait_for_
requests
page
.
within
'.project-refs-form'
do
page
.
fill_in
'Search branches and tags'
,
with:
"'test'"
...
...
spec/features/projects/settings/ee/merge_requests_settings_spec.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,6 @@ require 'spec_helper'
describe
'Project settings > [EE] Merge Requests'
,
feature:
true
,
js:
true
do
include
GitlabRoutingHelper
include
WaitForAjax
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:empty_project
,
approvals_before_merge:
1
)
}
...
...
@@ -22,7 +21,7 @@ describe 'Project settings > [EE] Merge Requests', feature: true, js: true do
find
(
'#s2id_approver_user_and_group_ids .select2-input'
).
click
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.select2-results'
)).
to
have_content
(
user
.
name
)
find
(
'.user-result'
,
text:
user
.
name
).
click
...
...
@@ -48,7 +47,7 @@ describe 'Project settings > [EE] Merge Requests', feature: true, js: true do
find
(
'#s2id_approver_user_and_group_ids .select2-input'
).
click
wait_for_
ajax
wait_for_
requests
within
(
'.js-current-approvers'
)
do
expect
(
find
(
'.panel-heading .badge'
)).
to
have_content
(
'0'
)
...
...
spec/features/projects/settings/ee/service_desk_setting_spec.rb
View file @
1c42b35b
require
'spec_helper'
describe
'Service Desk Setting'
,
js:
true
,
feature:
true
do
include
WaitForAjax
let
(
:project
)
{
create
(
:project_empty_repo
,
:private
)
}
let
(
:user
)
{
create
(
:user
)
}
...
...
@@ -23,7 +21,7 @@ describe 'Service Desk Setting', js: true, feature: true do
it
'shows incoming email after activating'
do
find
(
"#service-desk-enabled-checkbox"
).
click
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.js-service-desk-setting-wrapper .panel-body'
)).
to
have_content
(
project
.
service_desk_address
)
end
end
spec/features/projects/snippets/show_spec.rb
View file @
1c42b35b
...
...
@@ -17,7 +17,7 @@ feature 'Project snippet', :js, feature: true do
before
do
visit
namespace_project_snippet_path
(
project
.
namespace
,
project
,
snippet
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob'
do
...
...
@@ -48,7 +48,7 @@ feature 'Project snippet', :js, feature: true do
before
do
visit
namespace_project_snippet_path
(
project
.
namespace
,
project
,
snippet
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -78,7 +78,7 @@ feature 'Project snippet', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=simple]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the simple viewer'
do
...
...
@@ -99,7 +99,7 @@ feature 'Project snippet', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=rich]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -120,7 +120,7 @@ feature 'Project snippet', :js, feature: true do
before
do
visit
namespace_project_snippet_path
(
project
.
namespace
,
project
,
snippet
,
anchor:
'L1'
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the simple viewer'
do
...
...
spec/features/projects/view_on_env_spec.rb
View file @
1c42b35b
...
...
@@ -54,7 +54,7 @@ describe 'View on environment', js: true do
visit
diffs_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
@@ -70,7 +70,7 @@ describe 'View on environment', js: true do
visit
namespace_project_compare_path
(
project
.
namespace
,
project
,
from:
'master'
,
to:
branch_name
)
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
@@ -84,7 +84,7 @@ describe 'View on environment', js: true do
visit
namespace_project_compare_path
(
project
.
namespace
,
project
,
from:
'master'
,
to:
sha
)
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
@@ -98,7 +98,7 @@ describe 'View on environment', js: true do
visit
namespace_project_blob_path
(
project
.
namespace
,
project
,
File
.
join
(
branch_name
,
file_path
))
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
@@ -112,7 +112,7 @@ describe 'View on environment', js: true do
visit
namespace_project_blob_path
(
project
.
namespace
,
project
,
File
.
join
(
sha
,
file_path
))
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
@@ -126,7 +126,7 @@ describe 'View on environment', js: true do
visit
namespace_project_commit_path
(
project
.
namespace
,
project
,
sha
)
wait_for_
ajax
wait_for_
requests
end
it
'has a "View on env" button'
do
...
...
spec/features/search_spec.rb
View file @
1c42b35b
...
...
@@ -28,7 +28,7 @@ describe "Search", feature: true do
it
'shows group name after filtering'
do
find
(
'.js-search-group-dropdown'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.search-holder'
do
click_link
group
.
name
...
...
@@ -39,7 +39,7 @@ describe "Search", feature: true do
it
'filters by group projects after filtering by group'
do
find
(
'.js-search-group-dropdown'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.search-holder'
do
click_link
group
.
name
...
...
@@ -49,7 +49,7 @@ describe "Search", feature: true do
page
.
within
(
'.project-filter'
)
do
find
(
'.js-search-project-dropdown'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_link
(
group_project
.
name_with_namespace
)
end
...
...
@@ -58,7 +58,7 @@ describe "Search", feature: true do
it
'shows project name after filtering'
do
page
.
within
(
'.project-filter'
)
do
find
(
'.js-search-project-dropdown'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
click_link
project
.
name_with_namespace
end
...
...
spec/features/snippets/create_snippet_spec.rb
View file @
1c42b35b
...
...
@@ -13,7 +13,7 @@ feature 'Create Snippet', :js, feature: true do
end
click_button
'Create snippet'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'My Snippet Title'
)
expect
(
page
).
to
have_content
(
'Hello World!'
)
...
...
@@ -27,7 +27,7 @@ feature 'Create Snippet', :js, feature: true do
end
click_button
'Create snippet'
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
'My Snippet Title'
)
expect
(
page
).
to
have_content
(
'snippet+file+name'
)
...
...
spec/features/snippets/notes_on_personal_snippets_spec.rb
View file @
1c42b35b
...
...
@@ -93,7 +93,7 @@ describe 'Comments on personal snippets', :js, feature: true do
click_on
'Remove comment'
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
not_to
have_selector
(
"#notes-list li#note_
#{
snippet_notes
[
0
].
id
}
"
)
end
...
...
spec/features/snippets/public_snippets_spec.rb
View file @
1c42b35b
...
...
@@ -5,7 +5,7 @@ feature 'Public Snippets', :js, feature: true do
public_snippet
=
create
(
:personal_snippet
,
:public
)
visit
snippet_path
(
public_snippet
)
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
(
public_snippet
.
content
)
end
...
...
spec/features/snippets/show_spec.rb
View file @
1c42b35b
...
...
@@ -11,7 +11,7 @@ feature 'Snippet', :js, feature: true do
before
do
visit
snippet_path
(
snippet
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob'
do
...
...
@@ -42,7 +42,7 @@ feature 'Snippet', :js, feature: true do
before
do
visit
snippet_path
(
snippet
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -72,7 +72,7 @@ feature 'Snippet', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=simple]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the simple viewer'
do
...
...
@@ -93,7 +93,7 @@ feature 'Snippet', :js, feature: true do
before
do
find
(
'.js-blob-viewer-switch-btn[data-viewer=rich]'
).
click
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the rich viewer'
do
...
...
@@ -114,7 +114,7 @@ feature 'Snippet', :js, feature: true do
before
do
visit
snippet_path
(
snippet
,
anchor:
'L1'
)
wait_for_
ajax
wait_for_
requests
end
it
'displays the blob using the simple viewer'
do
...
...
spec/features/task_lists_spec.rb
View file @
1c42b35b
...
...
@@ -64,13 +64,13 @@ feature 'Task Lists', feature: true do
describe
'for Issues'
,
feature:
true
do
describe
'multiple tasks'
,
js:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
let!
(
:issue
)
{
create
(
:issue
,
description:
markdown
,
author:
user
,
project:
project
)
}
it
'renders'
do
visit_issue
(
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'ul.task-list'
,
count:
1
)
expect
(
page
).
to
have_selector
(
'li.task-list-item'
,
count:
6
)
...
...
@@ -79,7 +79,7 @@ feature 'Task Lists', feature: true do
it
'contains the required selectors'
do
visit_issue
(
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
".wiki .task-list .task-list-item .task-list-item-checkbox"
)
expect
(
page
).
to
have_selector
(
'a.btn-close'
)
...
...
@@ -87,14 +87,14 @@ feature 'Task Lists', feature: true do
it
'is only editable by author'
do
visit_issue
(
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
".wiki .task-list .task-list-item .task-list-item-checkbox"
)
logout
(
:user
)
login_as
(
user2
)
visit
current_path
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
".wiki .task-list .task-list-item .task-list-item-checkbox"
)
end
...
...
@@ -106,13 +106,13 @@ feature 'Task Lists', feature: true do
end
describe
'single incomplete task'
,
js:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
let!
(
:issue
)
{
create
(
:issue
,
description:
singleIncompleteMarkdown
,
author:
user
,
project:
project
)
}
it
'renders'
do
visit_issue
(
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'ul.task-list'
,
count:
1
)
expect
(
page
).
to
have_selector
(
'li.task-list-item'
,
count:
1
)
...
...
@@ -127,12 +127,12 @@ feature 'Task Lists', feature: true do
end
describe
'single complete task'
,
js:
true
do
include
WaitFor
VueResource
include
WaitFor
Requests
let!
(
:issue
)
{
create
(
:issue
,
description:
singleCompleteMarkdown
,
author:
user
,
project:
project
)
}
it
'renders'
do
visit_issue
(
project
,
issue
)
wait_for_
vue_resource
wait_for_
requests
expect
(
page
).
to
have_selector
(
'ul.task-list'
,
count:
1
)
expect
(
page
).
to
have_selector
(
'li.task-list-item'
,
count:
1
)
...
...
spec/features/todos/todos_filtering_spec.rb
View file @
1c42b35b
...
...
@@ -28,7 +28,7 @@ describe 'Dashboard > User filters todos', feature: true, js: true do
click_link
project_1
.
name_with_namespace
end
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_content
project_1
.
name_with_namespace
expect
(
page
).
not_to
have_content
project_2
.
name_with_namespace
...
...
@@ -43,7 +43,7 @@ describe 'Dashboard > User filters todos', feature: true, js: true do
click_link
user_1
.
name
end
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.todos-list'
)).
to
have_content
'merge request'
expect
(
find
(
'.todos-list'
)).
not_to
have_content
'issue'
...
...
@@ -90,7 +90,7 @@ describe 'Dashboard > User filters todos', feature: true, js: true do
click_link
'Issue'
end
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.todos-list'
)).
to
have_content
issue
.
to_reference
expect
(
find
(
'.todos-list'
)).
not_to
have_content
merge_request
.
to_reference
...
...
@@ -132,7 +132,7 @@ describe 'Dashboard > User filters todos', feature: true, js: true do
click_link
name
end
wait_for_
ajax
wait_for_
requests
end
def
expect_to_see_action
(
action_name
)
...
...
spec/features/todos/todos_spec.rb
View file @
1c42b35b
...
...
@@ -64,7 +64,7 @@ describe 'Dashboard Todos', feature: true do
before
do
within
first
(
'.todo'
)
do
click_link
'Done'
wait_for_
ajax
wait_for_
requests
click_link
'Undo'
end
end
...
...
@@ -309,9 +309,9 @@ describe 'Dashboard Todos', feature: true do
def
mark_all_and_undo
find
(
'.js-todos-mark-all'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
find
(
'.js-todos-undo-all'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
end
end
end
...
...
spec/features/u2f_spec.rb
View file @
1c42b35b
...
...
@@ -6,7 +6,7 @@ feature 'Using U2F (Universal 2nd Factor) Devices for Authentication', :js do
def
manage_two_factor_authentication
click_on
'Manage two-factor authentication'
expect
(
page
).
to
have_content
(
"Setup new U2F device"
)
wait_for_
ajax
wait_for_
requests
end
def
register_u2f_device
(
u2f_device
=
nil
,
name:
'My device'
)
...
...
spec/features/uploads/user_uploads_file_to_note_spec.rb
View file @
1c42b35b
...
...
@@ -64,7 +64,7 @@ feature 'User uploads file to note', feature: true do
context
'uploading is complete'
do
it
'shows "Attach a file" button on uploading complete'
,
js:
true
do
dropzone_file
([
Rails
.
root
.
join
(
'spec'
,
'fixtures'
,
'dk.png'
)])
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_button
(
'Attach a file'
)
expect
(
page
).
not_to
have_selector
(
'.uploading-progress-container'
,
visible:
true
)
...
...
@@ -73,7 +73,7 @@ feature 'User uploads file to note', feature: true do
scenario
'they see the attached file'
,
js:
true
do
dropzone_file
([
Rails
.
root
.
join
(
'spec'
,
'fixtures'
,
'dk.png'
)])
click_button
'Comment'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'a.no-attachment-icon img[alt="dk"]'
)[
'src'
])
.
to
match
(
%r{/
#{
project
.
full_path
}
/uploads/
\h
{32}/dk
\.
png$}
)
...
...
spec/features/users/projects_spec.rb
View file @
1c42b35b
...
...
@@ -16,7 +16,7 @@ describe 'Projects tab on a user profile', :feature, :js do
click_link
(
'Personal projects'
)
end
wait_for_
ajax
wait_for_
requests
end
it
'paginates results'
do
...
...
spec/features/users/snippets_spec.rb
View file @
1c42b35b
...
...
@@ -11,7 +11,7 @@ describe 'Snippets tab on a user profile', feature: true, js: true do
allow
(
Snippet
).
to
receive
(
:default_per_page
).
and_return
(
1
)
visit
user_path
(
user
)
page
.
within
(
'.user-profile-nav'
)
{
click_link
'Snippets'
}
wait_for_
ajax
wait_for_
requests
end
it_behaves_like
'paginated snippets'
,
remote:
true
...
...
@@ -27,7 +27,7 @@ describe 'Snippets tab on a user profile', feature: true, js: true do
login_as
(
:user
)
visit
user_path
(
user
)
page
.
within
(
'.user-profile-nav'
)
{
click_link
'Snippets'
}
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.snippet-row'
,
count:
2
)
...
...
@@ -38,7 +38,7 @@ describe 'Snippets tab on a user profile', feature: true, js: true do
it
'contains only public snippets of a user when a user is not logged in'
do
visit
user_path
(
user
)
page
.
within
(
'.user-profile-nav'
)
{
click_link
'Snippets'
}
wait_for_
ajax
wait_for_
requests
expect
(
page
).
to
have_selector
(
'.snippet-row'
,
count:
1
)
expect
(
page
).
to
have_content
(
public_snippet
.
title
)
...
...
spec/features/users_spec.rb
View file @
1c42b35b
...
...
@@ -78,25 +78,25 @@ feature 'Users', feature: true, js: true do
scenario
'doesn\'t show an error border if the username is available'
do
fill_in
username_input
,
with:
'new-user'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.username'
)).
not_to
have_css
'.gl-field-error-outline'
end
scenario
'does not show an error border if the username contains dots (.)'
do
fill_in
username_input
,
with:
'new.user.username'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.username'
)).
not_to
have_css
'.gl-field-error-outline'
end
scenario
'shows an error border if the username already exists'
do
fill_in
username_input
,
with:
user
.
username
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.username'
)).
to
have_css
'.gl-field-error-outline'
end
scenario
'shows an error border if the username contains special characters'
do
fill_in
username_input
,
with:
'new$user!username'
wait_for_
ajax
wait_for_
requests
expect
(
find
(
'.username'
)).
to
have_css
'.gl-field-error-outline'
end
end
...
...
spec/spec_helper.rb
View file @
1c42b35b
...
...
@@ -44,7 +44,6 @@ RSpec.configure do |config|
config
.
include
LoginHelpers
,
type: :feature
config
.
include
SearchHelpers
,
type: :feature
config
.
include
WaitForRequests
,
:js
config
.
include
WaitForAjax
,
:js
config
.
include
StubConfiguration
config
.
include
EmailHelpers
,
type: :mailer
config
.
include
TestEnv
...
...
spec/support/features/issuable_slash_commands_shared_examples.rb
View file @
1c42b35b
...
...
@@ -22,7 +22,7 @@ shared_examples 'issuable record that supports slash commands in its description
after
do
# Ensure all outstanding Ajax requests are complete to avoid database deadlocks
wait_for_
ajax
wait_for_
requests
end
describe
"new
#{
issuable_type
}
"
,
js:
true
do
...
...
@@ -58,7 +58,7 @@ shared_examples 'issuable record that supports slash commands in its description
expect
(
page
).
not_to
have_content
'/label ~bug'
expect
(
page
).
not_to
have_content
'/milestone %"ASAP"'
wait_for_
ajax
wait_for_
requests
issuable
.
reload
note
=
issuable
.
notes
.
user
.
first
...
...
spec/support/protected_branch_helpers.rb
View file @
1c42b35b
...
...
@@ -2,7 +2,7 @@ module ProtectedBranchHelpers
def
set_allowed_to
(
operation
,
option
=
'Masters'
,
form:
'#new_protected_branch'
)
within
form
do
find
(
".js-allowed-to-
#{
operation
}
"
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
Array
(
option
).
each
{
|
opt
|
click_on
(
opt
)
}
...
...
spec/support/protected_branches/access_control_ce_shared_examples.rb
0 → 100644
View file @
1c42b35b
RSpec
.
shared_examples
"protected branches > access control > CE"
do
ProtectedBranch
::
PushAccessLevel
.
human_access_levels
.
each
do
|
(
access_type_id
,
access_type_name
)
|
it
"allows creating protected branches that
#{
access_type_name
}
can push to"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
within
(
'.new_protected_branch'
)
do
allowed_to_push_button
=
find
(
".js-allowed-to-push"
)
unless
allowed_to_push_button
.
text
==
access_type_name
allowed_to_push_button
.
trigger
(
'click'
)
within
(
".dropdown.open .dropdown-menu"
)
{
click_on
access_type_name
}
end
end
click_on
"Protect"
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
eq
([
access_type_id
])
end
it
"allows updating protected branches so that
#{
access_type_name
}
can push to them"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
click_on
"Protect"
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
within
(
".protected-branches-list"
)
do
find
(
".js-allowed-to-push"
).
click
within
(
'.js-allowed-to-push-container'
)
do
expect
(
first
(
"li"
)).
to
have_content
(
"Roles"
)
click_on
access_type_name
end
end
wait_for_requests
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
end
ProtectedBranch
::
MergeAccessLevel
.
human_access_levels
.
each
do
|
(
access_type_id
,
access_type_name
)
|
it
"allows creating protected branches that
#{
access_type_name
}
can merge to"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
within
(
'.new_protected_branch'
)
do
allowed_to_merge_button
=
find
(
".js-allowed-to-merge"
)
unless
allowed_to_merge_button
.
text
==
access_type_name
allowed_to_merge_button
.
click
within
(
".dropdown.open .dropdown-menu"
)
{
click_on
access_type_name
}
end
end
click_on
"Protect"
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
expect
(
ProtectedBranch
.
last
.
merge_access_levels
.
map
(
&
:access_level
)).
to
eq
([
access_type_id
])
end
it
"allows updating protected branches so that
#{
access_type_name
}
can merge to them"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
click_on
"Protect"
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
within
(
".protected-branches-list"
)
do
find
(
".js-allowed-to-merge"
).
click
within
(
'.js-allowed-to-merge-container'
)
do
expect
(
first
(
"li"
)).
to
have_content
(
"Roles"
)
click_on
access_type_name
end
end
wait_for_requests
expect
(
ProtectedBranch
.
last
.
merge_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
end
end
spec/support/protected_branches/access_control_ee_shared_examples.rb
0 → 100644
View file @
1c42b35b
RSpec
.
shared_examples
"protected branches > access control > EE"
do
[[
'merge'
,
ProtectedBranch
::
MergeAccessLevel
],
[
'push'
,
ProtectedBranch
::
PushAccessLevel
]].
each
do
|
git_operation
,
access_level_class
|
# Need to set a default for the `git_operation` access level that _isn't_ being tested
other_git_operation
=
git_operation
==
'merge'
?
'push'
:
'merge'
roles
=
git_operation
==
'merge'
?
access_level_class
.
human_access_levels
:
access_level_class
.
human_access_levels
.
except
(
0
)
let
(
:users
)
{
create_list
(
:user
,
5
)
}
let
(
:groups
)
{
create_list
(
:group
,
5
)
}
before
do
users
.
each
{
|
user
|
project
.
team
<<
[
user
,
:developer
]
}
groups
.
each
{
|
group
|
project
.
project_group_links
.
create
(
group:
group
,
group_access:
Gitlab
::
Access
::
DEVELOPER
)
}
end
it
"allows creating protected branches that roles, users, and groups can
#{
git_operation
}
to"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
set_allowed_to
(
git_operation
,
users
.
map
(
&
:name
))
set_allowed_to
(
git_operation
,
groups
.
map
(
&
:name
))
set_allowed_to
(
git_operation
,
roles
.
values
)
set_allowed_to
(
other_git_operation
)
click_on
"Protect"
within
(
".protected-branches-list"
)
{
expect
(
page
).
to
have_content
(
'master'
)
}
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
roles
.
each
{
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:access_level
)).
to
include
(
access_type_id
)
}
users
.
each
{
|
user
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:user_id
)).
to
include
(
user
.
id
)
}
groups
.
each
{
|
group
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:group_id
)).
to
include
(
group
.
id
)
}
end
it
"allows updating protected branches so that roles and users can
#{
git_operation
}
to it"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
set_allowed_to
(
'merge'
)
set_allowed_to
(
'push'
)
click_on
"Protect"
set_allowed_to
(
git_operation
,
users
.
map
(
&
:name
),
form:
".js-protected-branch-edit-form"
)
set_allowed_to
(
git_operation
,
groups
.
map
(
&
:name
),
form:
".js-protected-branch-edit-form"
)
set_allowed_to
(
git_operation
,
roles
.
values
,
form:
".js-protected-branch-edit-form"
)
wait_for_requests
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
roles
.
each
{
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:access_level
)).
to
include
(
access_type_id
)
}
users
.
each
{
|
user
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:user_id
)).
to
include
(
user
.
id
)
}
groups
.
each
{
|
group
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:group_id
)).
to
include
(
group
.
id
)
}
end
it
"allows updating protected branches so that roles and users cannot
#{
git_operation
}
to it"
do
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
users
.
each
{
|
user
|
set_allowed_to
(
git_operation
,
user
.
name
)
}
roles
.
each
{
|
(
_
,
access_type_name
)
|
set_allowed_to
(
git_operation
,
access_type_name
)
}
groups
.
each
{
|
group
|
set_allowed_to
(
git_operation
,
group
.
name
)
}
set_allowed_to
(
other_git_operation
)
click_on
"Protect"
users
.
each
{
|
user
|
set_allowed_to
(
git_operation
,
user
.
name
,
form:
".js-protected-branch-edit-form"
)
}
groups
.
each
{
|
group
|
set_allowed_to
(
git_operation
,
group
.
name
,
form:
".js-protected-branch-edit-form"
)
}
roles
.
each
{
|
(
_
,
access_type_name
)
|
set_allowed_to
(
git_operation
,
access_type_name
,
form:
".js-protected-branch-edit-form"
)
}
wait_for_requests
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
)).
to
be_empty
end
it
"prepends selected users that can
#{
git_operation
}
to"
do
users
=
create_list
(
:user
,
21
)
users
.
each
{
|
user
|
project
.
team
<<
[
user
,
:developer
]
}
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
# Create Protected Branch
set_protected_branch_name
(
'master'
)
set_allowed_to
(
git_operation
,
roles
.
values
)
set_allowed_to
(
other_git_operation
)
click_on
'Protect'
# Update Protected Branch
within
(
".protected-branches-list"
)
do
find
(
".js-allowed-to-
#{
git_operation
}
"
).
click
find
(
".dropdown-input-field"
).
set
(
users
.
last
.
name
)
# Find a user that is not loaded
expect
(
page
).
to
have_selector
(
'.dropdown-header'
,
count:
3
)
%w{Roles Groups Users}
.
each_with_index
do
|
header
,
index
|
expect
(
all
(
'.dropdown-header'
)[
index
]).
to
have_content
(
header
)
end
wait_for_requests
click_on
users
.
last
.
name
find
(
".js-allowed-to-
#{
git_operation
}
"
).
click
# close
end
wait_for_requests
# Verify the user is appended in the dropdown
find
(
".protected-branches-list .js-allowed-to-
#{
git_operation
}
"
).
click
expect
(
page
).
to
have_selector
'.dropdown-content .is-active'
,
text:
users
.
last
.
name
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
roles
.
each
{
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:access_level
)).
to
include
(
access_type_id
)
}
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:user_id
)).
to
include
(
users
.
last
.
id
)
end
end
context
'When updating a protected branch'
do
it
'discards other roles when choosing "No one"'
do
roles
=
ProtectedBranch
::
PushAccessLevel
.
human_access_levels
.
except
(
0
)
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'fix'
)
set_allowed_to
(
'merge'
)
set_allowed_to
(
'push'
,
roles
.
values
)
click_on
"Protect"
wait_for_requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
not_to
include
(
0
)
set_allowed_to
(
'push'
,
'No one'
,
form:
'.js-protected-branch-edit-form'
)
wait_for_requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
not_to
include
(
access_type_id
)
end
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
0
)
end
end
context
'When creating a protected branch'
do
it
'discards other roles when choosing "No one"'
do
roles
=
ProtectedBranch
::
PushAccessLevel
.
human_access_levels
.
except
(
0
)
visit
namespace_project_protected_branches_path
(
project
.
namespace
,
project
)
set_protected_branch_name
(
'master'
)
set_allowed_to
(
'merge'
)
set_allowed_to
(
'push'
,
ProtectedBranch
::
PushAccessLevel
.
human_access_levels
.
values
)
# Last item (No one) should deselect the other ones
click_on
"Protect"
wait_for_requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
not_to
include
(
access_type_id
)
end
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
0
)
end
end
end
spec/support/protected_tags/access_control_ce_shared_examples.rb
View file @
1c42b35b
...
...
@@ -39,7 +39,7 @@ RSpec.shared_examples "protected tags > access control > CE" do
end
end
wait_for_
ajax
wait_for_
requests
expect
(
ProtectedTag
.
last
.
create_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
...
...
spec/support/shared_examples/features/protected_branches_access_control_ce_spec.rb
View file @
1c42b35b
...
...
@@ -38,7 +38,7 @@ shared_examples "protected branches > access control > CE" do
end
end
wait_for_
ajax
wait_for_
requests
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
...
...
@@ -83,7 +83,7 @@ shared_examples "protected branches > access control > CE" do
end
end
wait_for_
ajax
wait_for_
requests
expect
(
ProtectedBranch
.
last
.
merge_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
end
...
...
spec/support/shared_examples/features/protected_branches_access_control_ee_spec.rb
View file @
1c42b35b
...
...
@@ -42,7 +42,7 @@ shared_examples "protected branches > access control > EE" do
set_allowed_to
(
git_operation
,
groups
.
map
(
&
:name
),
form:
".js-protected-branch-edit-form"
)
set_allowed_to
(
git_operation
,
roles
.
values
,
form:
".js-protected-branch-edit-form"
)
wait_for_
ajax
wait_for_
requests
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
roles
.
each
{
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
).
map
(
&
:access_level
)).
to
include
(
access_type_id
)
}
...
...
@@ -65,7 +65,7 @@ shared_examples "protected branches > access control > EE" do
groups
.
each
{
|
group
|
set_allowed_to
(
git_operation
,
group
.
name
,
form:
".js-protected-branch-edit-form"
)
}
roles
.
each
{
|
(
_
,
access_type_name
)
|
set_allowed_to
(
git_operation
,
access_type_name
,
form:
".js-protected-branch-edit-form"
)
}
wait_for_
ajax
wait_for_
requests
expect
(
ProtectedBranch
.
count
).
to
eq
(
1
)
expect
(
ProtectedBranch
.
last
.
send
(
"
#{
git_operation
}
_access_levels"
.
to_sym
)).
to
be_empty
...
...
@@ -95,11 +95,11 @@ shared_examples "protected branches > access control > EE" do
expect
(
all
(
'.dropdown-header'
)[
index
]).
to
have_content
(
header
)
end
wait_for_
ajax
wait_for_
requests
click_on
users
.
last
.
name
find
(
".js-allowed-to-
#{
git_operation
}
"
).
click
# close
end
wait_for_
ajax
wait_for_
requests
# Verify the user is appended in the dropdown
find
(
".protected-branches-list .js-allowed-to-
#{
git_operation
}
"
).
click
...
...
@@ -119,7 +119,7 @@ shared_examples "protected branches > access control > EE" do
set_allowed_to
(
'merge'
)
set_allowed_to
(
'push'
,
roles
.
values
)
click_on
"Protect"
wait_for_
ajax
wait_for_
requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
to
include
(
access_type_id
)
...
...
@@ -128,7 +128,7 @@ shared_examples "protected branches > access control > EE" do
set_allowed_to
(
'push'
,
'No one'
,
form:
'.js-protected-branch-edit-form'
)
wait_for_
ajax
wait_for_
requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
not_to
include
(
access_type_id
)
...
...
@@ -145,7 +145,7 @@ shared_examples "protected branches > access control > EE" do
set_allowed_to
(
'merge'
)
set_allowed_to
(
'push'
,
ProtectedBranch
::
PushAccessLevel
.
human_access_levels
.
values
)
# Last item (No one) should deselect the other ones
click_on
"Protect"
wait_for_
ajax
wait_for_
requests
roles
.
each
do
|
(
access_type_id
,
_
)
|
expect
(
ProtectedBranch
.
last
.
push_access_levels
.
map
(
&
:access_level
)).
not_to
include
(
access_type_id
)
...
...
spec/support/snippets_shared_examples.rb
View file @
1c42b35b
...
...
@@ -7,7 +7,7 @@ RSpec.shared_examples 'paginated snippets' do |remote: false|
context
'clicking on the link to the second page'
do
before
do
click_link
(
'2'
)
wait_for_
ajax
if
remote
wait_for_
requests
if
remote
end
it
'shows the remaining snippets'
do
...
...
spec/support/target_branch_helpers.rb
View file @
1c42b35b
module
TargetBranchHelpers
def
select_branch
(
name
)
first
(
'button.js-target-branch'
).
click
wait_for_
ajax
wait_for_
requests
all
(
'a[data-group="Branches"]'
).
find
do
|
el
|
el
.
text
==
name
end
.
click
...
...
spec/support/time_tracking_shared_examples.rb
View file @
1c42b35b
...
...
@@ -8,7 +8,7 @@ shared_examples 'issuable time tracker' do
it
'updates the sidebar component when estimate is added'
do
submit_time
(
'/estimate 3w 1d 1h'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.time-tracking-estimate-only-pane'
do
expect
(
page
).
to
have_content
'3w 1d 1h'
end
...
...
@@ -17,7 +17,7 @@ shared_examples 'issuable time tracker' do
it
'updates the sidebar component when spent is added'
do
submit_time
(
'/spend 3w 1d 1h'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.time-tracking-spend-only-pane'
do
expect
(
page
).
to
have_content
'3w 1d 1h'
end
...
...
@@ -27,7 +27,7 @@ shared_examples 'issuable time tracker' do
submit_time
(
'/estimate 3w 1d 1h'
)
submit_time
(
'/spend 3w 1d 1h'
)
wait_for_
ajax
wait_for_
requests
page
.
within
'.time-tracking-comparison-pane'
do
expect
(
page
).
to
have_content
'3w 1d 1h'
end
...
...
@@ -81,5 +81,5 @@ end
def
submit_time
(
slash_command
)
fill_in
'note[note]'
,
with:
slash_command
find
(
'.js-comment-submit-button'
).
trigger
(
'click'
)
wait_for_
ajax
wait_for_
requests
end
spec/support/wait_for_ajax.rb
deleted
100644 → 0
View file @
cc572c43
module
WaitForAjax
def
wait_for_ajax
Timeout
.
timeout
(
Capybara
.
default_max_wait_time
)
do
loop
until
finished_all_ajax_requests?
end
end
def
finished_all_ajax_requests?
return
true
unless
javascript_test?
return
true
if
page
.
evaluate_script
(
'typeof jQuery === "undefined"'
)
page
.
evaluate_script
(
'jQuery.active'
).
zero?
end
def
javascript_test?
Capybara
.
current_driver
==
Capybara
.
javascript_driver
end
end
spec/support/wait_for_requests.rb
View file @
1c42b35b
require_relative
'./wait_for_ajax'
require_relative
'./wait_for_vue_resource'
require_relative
'./wait_for_requests'
module
WaitForRequests
extend
self
include
WaitForAjax
include
WaitForVueResource
# This is inspired by http://www.salsify.com/blog/engineering/tearing-capybara-ajax-tests
def
wait_for_requests_complete
def
block_and_
wait_for_requests_complete
Gitlab
::
Testing
::
RequestBlockerMiddleware
.
block_requests!
wait_for
(
'pending
AJAX
requests complete'
)
do
wait_for
(
'pending requests complete'
)
do
Gitlab
::
Testing
::
RequestBlockerMiddleware
.
num_active_requests
.
zero?
end
ensure
Gitlab
::
Testing
::
RequestBlockerMiddleware
.
allow_requests!
end
def
wait_for_requests
wait_for
(
'JS requests'
)
{
finished_all_requests?
}
end
private
def
finished_all_requests?
return
true
unless
javascript_test?
finished_all_ajax_requests?
&&
finished_all_vue_resource_requests?
end
# Waits until the passed block returns true
def
wait_for
(
condition_name
,
max_wait_time:
Capybara
.
default_max_wait_time
,
polling_interval:
0.01
)
wait_until
=
Time
.
now
+
max_wait_time
.
seconds
...
...
@@ -28,10 +38,24 @@ module WaitForRequests
end
end
end
def
finished_all_vue_resource_requests?
page
.
evaluate_script
(
'window.activeVueResources || 0'
).
zero?
end
def
finished_all_ajax_requests?
return
true
if
page
.
evaluate_script
(
'typeof jQuery === "undefined"'
)
page
.
evaluate_script
(
'jQuery.active'
).
zero?
end
def
javascript_test?
Capybara
.
current_driver
==
Capybara
.
javascript_driver
end
end
RSpec
.
configure
do
|
config
|
config
.
after
(
:each
,
:js
)
do
wait_for_requests_complete
block_and_
wait_for_requests_complete
end
end
spec/support/wait_for_vue_resource.rb
deleted
100644 → 0
View file @
cc572c43
module
WaitForVueResource
def
wait_for_vue_resource
(
spinner:
true
)
Timeout
.
timeout
(
Capybara
.
default_max_wait_time
)
do
loop
until
finished_all_vue_resource_requests?
end
end
private
def
finished_all_vue_resource_requests?
return
true
unless
javascript_test?
page
.
evaluate_script
(
'window.activeVueResources || 0'
).
zero?
end
def
javascript_test?
Capybara
.
current_driver
==
Capybara
.
javascript_driver
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment