diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-07 06:10:17 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-07 06:10:17 +0300 |
commit | 170765911848f0ad68e0f26f6413dd770d36f364 (patch) | |
tree | b42a0750d6e17fc6d26357d3d97aad42bbb20462 | |
parent | fd6093f6f04702cecf75306a83beba837cfde8fb (diff) |
Add latest changes from gitlab-org/gitlab@master
-rw-r--r-- | app/assets/javascripts/jobs/components/table/cells/job_cell.vue | 14 | ||||
-rw-r--r-- | app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql | 3 | ||||
-rw-r--r-- | app/views/layouts/header/_current_user_dropdown.html.haml | 2 | ||||
-rw-r--r-- | app/views/shared/users/_user.html.haml | 2 | ||||
-rw-r--r-- | app/views/users/_overview.html.haml | 2 | ||||
-rw-r--r-- | app/views/users/show.html.haml | 4 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | qa/knapsack/master_report.json | 221 | ||||
-rw-r--r-- | qa/qa.rb | 5 | ||||
-rw-r--r-- | qa/qa/page/main/menu.rb | 6 | ||||
-rw-r--r-- | qa/qa/page/user/show.rb | 40 | ||||
-rw-r--r-- | qa/qa/resource/project_issue_note.rb | 61 | ||||
-rw-r--r-- | qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb | 97 | ||||
-rw-r--r-- | spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js | 23 | ||||
-rw-r--r-- | spec/frontend/jobs/mock_data.js | 4 | ||||
-rw-r--r-- | spec/models/concerns/bulk_insert_safe_spec.rb | 36 | ||||
-rw-r--r-- | spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb | 4 | ||||
-rw-r--r-- | yarn.lock | 8 |
18 files changed, 469 insertions, 65 deletions
diff --git a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue index cea873b64a0..1797992641d 100644 --- a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue +++ b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue @@ -52,6 +52,9 @@ export default { isScheduledJob() { return Boolean(this.job.scheduledAt); }, + canReadJob() { + return this.job?.userPermissions?.readBuild; + }, }, }; </script> @@ -59,7 +62,16 @@ export default { <template> <div> <div class="gl-text-truncate"> - <gl-link class="gl-text-gray-500!" :href="jobPath" data-testid="job-id">{{ jobId }}</gl-link> + <gl-link + v-if="canReadJob" + class="gl-text-gray-500!" + :href="jobPath" + data-testid="job-id-link" + > + {{ jobId }} + </gl-link> + + <span v-else data-testid="job-id-limited-access">{{ jobId }}</span> <div class="gl-display-flex gl-align-items-center"> <div v-if="jobRef" class="gl-max-w-15 gl-text-truncate"> diff --git a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql index 7025bc97c53..2e49d07df5f 100644 --- a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql +++ b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql @@ -59,6 +59,9 @@ query getJobs($fullPath: ID!, $statuses: [CiJobStatus!]) { playable cancelable active + userPermissions { + readBuild + } } } } diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml index 0251a8b6d7c..6bb51b01c13 100644 --- a/app/views/layouts/header/_current_user_dropdown.html.haml +++ b/app/views/layouts/header/_current_user_dropdown.html.haml @@ -3,7 +3,7 @@ %ul %li.current-user - if current_user_menu?(:profile) - = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link' } do + = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link', qa_selector: 'user_profile_link' } do = render 'layouts/header/current_user_dropdown_item' - else .gl-py-3.gl-px-4 diff --git a/app/views/shared/users/_user.html.haml b/app/views/shared/users/_user.html.haml index f92c12102bb..7f7cd31591e 100644 --- a/app/views/shared/users/_user.html.haml +++ b/app/views/shared/users/_user.html.haml @@ -7,7 +7,7 @@ .user-info .block-truncated - = link_to user.name, user_path(user), class: 'user js-user-link', data: { user_id: user.id } + = link_to user.name, user_path(user), class: 'user js-user-link', data: { user_id: user.id, qa_selector: 'user_link', qa_username: user.username } .block-truncated %span.gl-text-gray-900= user.to_reference diff --git a/app/views/users/_overview.html.haml b/app/views/users/_overview.html.haml index eb29e691ebd..2e6d335a98d 100644 --- a/app/views/users/_overview.html.haml +++ b/app/views/users/_overview.html.haml @@ -18,7 +18,7 @@ %h4.gl-flex-grow-1 = Feature.enabled?(:security_auto_fix) && @user.bot? ? s_('UserProfile|Bot activity') : s_('UserProfile|Activity') = link_to s_('UserProfile|View all'), user_activity_path, class: "hide js-view-all" - .overview-content-list{ data: { href: user_activity_path } } + .overview-content-list{ data: { href: user_activity_path, qa_selector: 'user_activity_content' } } .center.light.loading .gl-spinner.gl-spinner-md diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index d89f4b811a3..a5b95883361 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -39,7 +39,7 @@ = link_to user_unfollow_path(@user, :json) , class: link_classes + 'btn gl-button btn-default', method: :post do = _('Unfollow') - else - = link_to user_follow_path(@user, :json) , class: link_classes + 'btn gl-button btn-confirm', method: :post do + = link_to user_follow_path(@user, :json) , class: link_classes + 'btn gl-button btn-confirm', method: :post, data: { qa_selector: 'follow_user_link' } do = _('Follow') .profile-header{ class: [('with-no-profile-tabs' if profile_tabs.empty?)] } @@ -103,7 +103,7 @@ - count = @user.followers.count = n_('1 follower', '%{count} followers', count) % { count: count } .profile-link-holder.middle-dot-divider - = link_to user_following_path, class: 'text-link' do + = link_to user_following_path, class: 'text-link', data: { qa_selector: 'following_link' } do = @user.followees.count = _('following') - if @user.bio.present? diff --git a/package.json b/package.json index 4975ff8937a..535c39a23d1 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "codesandbox-api": "0.0.23", "compression-webpack-plugin": "^5.0.2", "copy-webpack-plugin": "^6.4.1", - "core-js": "^3.11.3", + "core-js": "^3.12.0", "cron-validator": "^1.1.1", "cropper": "^2.3.0", "css-loader": "^2.1.1", diff --git a/qa/knapsack/master_report.json b/qa/knapsack/master_report.json index 467150e84c7..47c6099a36d 100644 --- a/qa/knapsack/master_report.json +++ b/qa/knapsack/master_report.json @@ -1,54 +1,195 @@ { "qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 4.835599899291992, - "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 69.85551619529724, - "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 14.649160623550415, - "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 12.790381908416748, - "qa/specs/features/ee/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 0.00018262863159179688, - "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 59.73394823074341, "qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 26.39240026473999, "qa/specs/features/ee/browser_ui/secure/create_project_with_secure_spec.rb": 46.76790499687195, "qa/specs/features/api/1_manage/users_spec.rb": 0.6089541912078857, - "qa/specs/features/api/3_create/repository/files_spec.rb": 5.015859127044678, - "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 1.0199065208435059, - "qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb": 33.54091453552246, - "qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb": 3.438166856765747, "qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb": 20.58603596687317, - "qa/specs/features/browser_ui/1_manage/login/register_spec.rb": 22.320587396621704, - "qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb": 8.490083694458008, - "qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb": 10.214765310287476, - "qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb": 100.28881478309631, - "qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb": 7.882027864456177, - "qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb": 13.739388942718506, - "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 13.403101205825806, - "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 10.989444971084595, - "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 10.811973810195923, - "qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 12.63524317741394, - "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 11.280649185180664, - "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 41.76726770401001, - "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 32.5517954826355, - "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 46.54227638244629, - "qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb": 27.943300485610962, - "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 3.705310821533203, - "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 40.09336972236633, "qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb": 31.49540114402771, "qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb": 16.18057894706726, - "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 0.7397980690002441, "qa/specs/features/browser_ui/3_create/repository/create_edit_delete_file_via_web_spec.rb": 18.047621726989746, - "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 9.48607873916626, - "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 23.710937023162842, "qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 19.459370374679565, - "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 7.730542182922363, - "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 29.76174831390381, "qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb": 22.800872802734375, - "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 6.731764793395996, "qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb": 5.812374591827393, - "qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb": 25.460349321365356, "qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb": 17.273863554000854, "qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb": 8.31815505027771, - "qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb": 18.679633855819702, - "qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 15.342933893203735, - "qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 92.46774697303772, - "qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 20.252174615859985, - "qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb": 8.281434059143066, - "qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb": 8.810423135757446 -}
\ No newline at end of file + "qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb": 8.810423135757446, + "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 51.81568956375122, + "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 30.373554468154907, + "qa/specs/features/sanity/version_spec.rb": 0.0004665851593017578, + "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 22.993898630142212, + "qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb": 58.383920192718506, + "qa/specs/features/browser_ui/4_verify/ci_variable/add_remove_ci_variable_spec.rb": 58.99856781959534, + "qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb": 36.358747243881226, + "qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb": 9.079580068588257, + "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 39.412545919418335, + "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 27.905837297439575, + "qa/specs/features/browser_ui/6_release/pages/pages_pipeline_spec.rb": 130.09448766708374, + "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb": 36.39329433441162, + "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 99.71209812164307, + "qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb": 34.64759969711304, + "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 25.72262978553772, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 44.536749839782715, + "qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 18.482256174087524, + "qa/specs/features/browser_ui/6_release/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 107.76105904579163, + "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 16.314701795578003, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 36.934654235839844, + "qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 17.103047847747803, + "qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 43.9788339138031, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 27.46922779083252, + "qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 28.352823495864868, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 20.208287954330444, + "qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 13.733941793441772, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 21.879905223846436, + "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 16.376311540603638, + "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 98.71593880653381, + "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.15917229652405, + "qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 21.307689666748047, + "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 39.39231467247009, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 18.50350284576416, + "qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 30.67392325401306, + "qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 16.17888569831848, + "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 45.47245216369629, + "qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb": 38.93913507461548, + "qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 12.087258100509644, + "qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 17.309232473373413, + "qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 67.43084001541138, + "qa/specs/features/browser_ui/6_release/pipeline/parent_child_pipelines_dependent_relationship_spec.rb": 70.75156497955322, + "qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 22.20275855064392, + "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 24.21539831161499, + "qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 20.22646951675415, + "qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 31.00749373435974, + "qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 18.430193424224854, + "qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb": 13.615312337875366, + "qa/specs/features/ee/browser_ui/1_manage/project/project_templates_spec.rb": 54.21430277824402, + "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 189.6901969909668, + "qa/specs/features/browser_ui/1_manage/project/protected_tags_spec.rb": 94.04865074157715, + "qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 59.575963258743286, + "qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb": 12.545408725738525, + "qa/specs/features/ee/browser_ui/1_manage/group/share_group_with_group_spec.rb": 25.6483793258667, + "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 48.9726402759552, + "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 26.07162046432495, + "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 8.41316819190979, + "qa/specs/features/ee/browser_ui/secure/merge_request_license_widget_spec.rb": 73.56247329711914, + "qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb": 70.19135999679565, + "qa/specs/features/api/3_create/repository/files_spec.rb": 6.235261917114258, + "qa/specs/features/browser_ui/5_package/container_registry_spec.rb": 7.263134717941284, + "qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 10.079012870788574, + "qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb": 16.52791404724121, + "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 10.684799909591675, + "qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 72.14465713500977, + "qa/specs/features/api/1_manage/project_access_token_spec.rb": 1.7818918228149414, + "qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 46.62651777267456, + "qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 41.63330125808716, + "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 15.664107322692871, + "qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 34.32576060295105, + "qa/specs/features/browser_ui/3_create/design_management/archive_design_content_spec.rb": 31.586787939071655, + "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 27.983626127243042, + "qa/specs/features/ee/browser_ui/secure/project_security_dashboard_spec.rb": 27.6742160320282, + "qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 33.06922268867493, + "qa/specs/features/ee/browser_ui/3_create/wiki/create_group_wiki_page_spec.rb": 22.77417540550232, + "qa/specs/features/api/1_manage/rate_limits_spec.rb": 11.836639165878296, + "qa/specs/features/ee/browser_ui/1_manage/user/minimal_access_user_spec.rb": 15.691015005111694, + "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_spec.rb": 26.72679090499878, + "qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 38.80854368209839, + "qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 15.07186245918274, + "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 41.58929800987244, + "qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 101.82257866859436, + "qa/specs/features/ee/browser_ui/4_verify/pipelines_for_merged_results_and_merge_trains_spec.rb": 114.47506761550903, + "qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 13.438591957092285, + "qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 30.66688632965088, + "qa/specs/features/browser_ui/1_manage/user/user_access_termination_spec.rb": 25.137597799301147, + "qa/specs/features/ee/browser_ui/1_manage/group/group_audit_logs_1_spec.rb": 72.90312123298645, + "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 8.731743574142456, + "qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb": 0.0008337497711181641, + "qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 40.60329842567444, + "qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb": 48.4540741443634, + "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 39.090237617492676, + "qa/specs/features/browser_ui/3_create/web_ide/create_first_file_in_web_ide_spec.rb": 22.633376359939575, + "qa/specs/features/browser_ui/3_create/design_management/modify_design_content_spec.rb": 18.457061767578125, + "qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb": 49.273433685302734, + "qa/specs/features/browser_ui/1_manage/group/transfer_group_spec.rb": 14.6923348903656, + "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 81.94199562072754, + "qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb": 38.44519090652466, + "qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 46.04780888557434, + "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb": 27.77385425567627, + "qa/specs/features/ee/browser_ui/1_manage/insights/default_insights_spec.rb": 28.850987195968628, + "qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb": 19.598198413848877, + "qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb": 65.70130896568298, + "qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb": 15.17819595336914, + "qa/specs/features/ee/browser_ui/1_manage/instance/instance_audit_logs_spec.rb": 104.32384181022644, + "qa/specs/features/ee/browser_ui/3_create/repository/code_owners_with_protected_branch_and_squashed_commits_spec.rb": 50.42676067352295, + "qa/specs/features/api/1_manage/user_access_termination_spec.rb": 6.3396782875061035, + "qa/specs/features/ee/browser_ui/secure/create_merge_request_with_secure_spec.rb": 71.55253982543945, + "qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb": 58.73203682899475, + "qa/specs/features/ee/browser_ui/4_verify/new_discussion_not_dropping_merge_trains_mr_spec.rb": 65.0450668334961, + "qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb": 42.83795666694641, + "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 60.95837211608887, + "qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 17.03721809387207, + "qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb": 25.14606213569641, + "qa/specs/features/browser_ui/3_create/web_ide/open_fork_in_web_ide_spec.rb": 70.44876503944397, + "qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb": 52.93111038208008, + "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 48.3312201499939, + "qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb": 52.52523970603943, + "qa/specs/features/ee/browser_ui/secure/security_reports_spec.rb": 49.19262075424194, + "qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 120.86664414405823, + "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 38.46292161941528, + "qa/specs/features/ee/browser_ui/1_manage/group/group_audit_logs_2_spec.rb": 100.1787781715393, + "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 22.37237572669983, + "qa/specs/features/ee/browser_ui/1_manage/group/group_file_template_spec.rb": 69.36870694160461, + "qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb": 69.17281556129456, + "qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb": 13.524356126785278, + "qa/specs/features/ee/browser_ui/1_manage/group/prevent_forking_outside_group_spec.rb": 37.17233395576477, + "qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 6.892294406890869, + "qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 40.91694402694702, + "qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 12.628767013549805, + "qa/specs/features/ee/browser_ui/secure/enable_sast_from_configuration_spec.rb": 86.38991785049438, + "qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 79.2712254524231, + "qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 161.1801998615265, + "qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb": 12.684113502502441, + "qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 31.481987714767456, + "qa/specs/features/ee/browser_ui/secure/vulnerability_management_spec.rb": 80.21465563774109, + "qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb": 12.836287260055542, + "qa/specs/features/browser_ui/1_manage/login/2fa_ssh_recovery_spec.rb": 38.852850675582886, + "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 34.88499307632446, + "qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 35.340261459350586, + "qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 19.719850540161133, + "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 38.779794216156006, + "qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 6.86094856262207, + "qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 51.54451298713684, + "qa/specs/features/ee/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 25.940913677215576, + "qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 18.586050033569336, + "qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb": 35.587294578552246, + "qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb": 14.01547122001648, + "qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb": 20.370421409606934, + "qa/specs/features/browser_ui/3_create/wiki/project_based_directory_management_spec.rb": 15.297787427902222, + "qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 42.507469177246094, + "qa/specs/features/ee/browser_ui/4_verify/pipeline_status_on_operation_dashboard_spec.rb": 46.77937316894531, + "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 131.23758912086487, + "qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb": 20.96509575843811, + "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 44.40894651412964, + "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 12.62861156463623, + "qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 49.85329723358154, + "qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb": 84.63548684120178, + "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 15.584527254104614, + "qa/specs/features/browser_ui/3_create/web_ide/review_merge_request_spec.rb": 30.72457480430603, + "qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb": 10.70707631111145, + "qa/specs/features/ee/api/1_manage/user/minimal_access_user_spec.rb": 4.82462477684021, + "qa/specs/features/browser_ui/1_manage/project/project_access_token_spec.rb": 16.23528742790222, + "qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 32.49313712120056, + "qa/specs/features/browser_ui/3_create/wiki/project_based_list_spec.rb": 32.37481236457825, + "qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb": 15.82662057876587, + "qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 16.573434114456177, + "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 43.15674066543579, + "qa/specs/features/ee/browser_ui/secure/license_compliance_spec.rb": 31.000027179718018, + "qa/specs/features/ee/browser_ui/1_manage/project/project_audit_logs_spec.rb": 149.64519357681274, + "qa/specs/features/ee/browser_ui/1_manage/group/restrict_by_ip_address_spec.rb": 116.07316851615906, + "qa/specs/features/browser_ui/1_manage/login/register_spec.rb": 145.5431580543518, + "qa/specs/features/browser_ui/3_create/repository/file/create_file_via_web_spec.rb": 19.418848514556885, + "qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 18.54582905769348, + "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 65.43303656578064, + "qa/specs/features/api/5_package/container_registry_spec.rb": 3.93778920173645, + "qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 148.70570707321167, + "qa/specs/features/ee/browser_ui/6_release/multi-project_pipelines_spec.rb": 52.770936250686646, + "qa/specs/features/ee/browser_ui/3_create/contribution_analytics_spec.rb": 45.81806302070618, + "qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 20.386794805526733 +} @@ -68,6 +68,7 @@ module QA autoload :Sandbox, 'qa/resource/sandbox' autoload :Group, 'qa/resource/group' autoload :Issue, 'qa/resource/issue' + autoload :ProjectIssueNote, 'qa/resource/project_issue_note' autoload :Project, 'qa/resource/project' autoload :Label, 'qa/resource/label' autoload :MergeRequest, 'qa/resource/merge_request' @@ -415,6 +416,10 @@ module QA end end + module User + autoload :Show, 'qa/page/user/show' + end + module Issuable autoload :New, 'qa/page/issuable/new' end diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb index 6c4c8b274e3..693f61ba97c 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/main/menu.rb @@ -125,6 +125,12 @@ module QA end end + def click_user_profile_link + within_user_menu do + click_element(:user_profile_link) + end + end + def search_for(term) fill_element :search_term_field, "#{term}\n" end diff --git a/qa/qa/page/user/show.rb b/qa/qa/page/user/show.rb new file mode 100644 index 00000000000..ad2de331ad9 --- /dev/null +++ b/qa/qa/page/user/show.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +module QA + module Page + module User + class Show < Page::Base + view 'app/views/users/show.html.haml' do + element :follow_user_link + element :following_link + end + + view 'app/views/shared/users/_user.html.haml' do + element :user_link + end + + view 'app/views/users/_overview.html.haml' do + element :user_activity_content + end + + def click_follow_user_link + click_element(:follow_user_link) + end + + def click_following_link + click_element(:following_link) + end + + def click_user_link(username) + click_element(:user_link, username: username) + end + + def has_activity?(activity) + within_element(:user_activity_content) do + has_text?(activity) + end + end + end + end + end +end diff --git a/qa/qa/resource/project_issue_note.rb b/qa/qa/resource/project_issue_note.rb new file mode 100644 index 00000000000..0eb34380332 --- /dev/null +++ b/qa/qa/resource/project_issue_note.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'securerandom' + +module QA + module Resource + class ProjectIssueNote < Base + attr_writer :body + + attribute :project do + Project.fabricate! do |resource| + resource.name = 'project-for-issue-notes' + resource.description = 'project for adding notes to issues' + end + end + + attribute :issue do + Issue.fabricate! do |resource| + resource.project = project + resource.title = 'Issue for adding notes.' + resource.description = 'Issue for adding notes.' + end + end + + attribute :id + attribute :body + + def initialize + @body = "Issue note body #{SecureRandom.hex(8)}" + end + + def fabricate! + issue.visit! + + Page::Project::Issue::Show.perform do |show| + show.comment(@body) + end + end + + def resource_web_url(resource) + super + rescue ResourceURLMissingError + # this particular resource does not expose a web_url property + end + + def api_get_path + "/projects/#{project.id}/issues/#{issue.iid}/notes/#{id}" + end + + def api_post_path + "/projects/#{project.id}/issues/#{issue.iid}/notes" + end + + def api_post_body + { + body: body + } + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb new file mode 100644 index 00000000000..964cd453049 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb @@ -0,0 +1,97 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Manage' do + describe 'User', :requires_admin do + let(:admin_api_client) { Runtime::API::Client.as_admin } + + let(:user) do + Resource::User.fabricate_via_api! do |user| + user.api_client = admin_api_client + end + end + + let(:user_api_client) do + Runtime::API::Client.new(:gitlab, user: user) + end + + let(:group) do + group = QA::Resource::Group.fabricate_via_api! do |group| + group.path = "group_for_follow_user_activity_#{SecureRandom.hex(8)}" + end + group.add_member(user) + group + end + + let(:project) do + Resource::Project.fabricate_via_api! do |project| + project.name = 'project-for-tags' + project.initialize_with_readme = true + project.api_client = user_api_client + project.group = group + end + end + + let(:merge_request) do + Resource::MergeRequest.fabricate_via_api! do |mr| + mr.project = project + mr.api_client = user_api_client + end + end + + let(:issue) do + Resource::Issue.fabricate_via_api! do |issue| + issue.project = project + issue.api_client = user_api_client + end + end + + let(:comment) do + Resource::ProjectIssueNote.fabricate_via_api! do |project_issue_note| + project_issue_note.project = project + project_issue_note.issue = issue + project_issue_note.body = 'This is a comment' + project_issue_note.api_client = user_api_client + end + end + + before do + # Create both tokens before logging in the first time so that we don't need to log out in the middle of the test + admin_api_client.personal_access_token + user_api_client.personal_access_token + end + + it 'can be followed and their activity seen', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1773' do + Flow::Login.sign_in + page.visit Runtime::Scenario.gitlab_address + "/#{user.username}" + Page::User::Show.perform(&:click_follow_user_link) + + expect(page).to have_text("No activities found") + + project + merge_request + issue + comment + + Page::Main::Menu.perform(&:click_user_profile_link) + Page::User::Show.perform do |show| + show.click_following_link + show.click_user_link(user.username) + + aggregate_failures do + expect(show).to have_activity('created project') + expect(show).to have_activity('opened merge request') + expect(show).to have_activity('opened issue') + expect(show).to have_activity('commented on issue') + end + end + end + + after do + project.api_client = admin_api_client + project.remove_via_api! + user.remove_via_api! + end + end + end +end diff --git a/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js b/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js index cfe6e45332e..77c19162747 100644 --- a/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js +++ b/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js @@ -6,11 +6,13 @@ import { mockJobsInTable } from '../../../mock_data'; const mockJob = mockJobsInTable[0]; const mockJobCreatedByTag = mockJobsInTable[1]; +const mockJobLimitedAccess = mockJobsInTable[2]; describe('Job Cell', () => { let wrapper; - const findJobId = () => wrapper.findByTestId('job-id'); + const findJobIdLink = () => wrapper.findByTestId('job-id-link'); + const findJobIdNoLink = () => wrapper.findByTestId('job-id-limited-access'); const findJobRef = () => wrapper.findByTestId('job-ref'); const findJobSha = () => wrapper.findByTestId('job-sha'); const findLabelIcon = () => wrapper.findByTestId('label-icon'); @@ -34,15 +36,24 @@ describe('Job Cell', () => { }); describe('Job Id', () => { - beforeEach(() => { + it('displays the job id and links to the job', () => { createComponent(); - }); - it('displays the job id and links to the job', () => { const expectedJobId = `#${getIdFromGraphQLId(mockJob.id)}`; - expect(findJobId().text()).toBe(expectedJobId); - expect(findJobId().attributes('href')).toBe(mockJob.detailedStatus.detailsPath); + expect(findJobIdLink().text()).toBe(expectedJobId); + expect(findJobIdLink().attributes('href')).toBe(mockJob.detailedStatus.detailsPath); + expect(findJobIdNoLink().exists()).toBe(false); + }); + + it('display the job id with no link', () => { + createComponent(mockJobLimitedAccess); + + const expectedJobId = `#${getIdFromGraphQLId(mockJobLimitedAccess.id)}`; + + expect(findJobIdNoLink().text()).toBe(expectedJobId); + expect(findJobIdNoLink().exists()).toBe(true); + expect(findJobIdLink().exists()).toBe(false); }); }); diff --git a/spec/frontend/jobs/mock_data.js b/spec/frontend/jobs/mock_data.js index 85bdd87abc6..6d9a5b77f5a 100644 --- a/spec/frontend/jobs/mock_data.js +++ b/spec/frontend/jobs/mock_data.js @@ -1322,6 +1322,7 @@ export const mockJobsInTable = [ playable: true, cancelable: false, active: false, + userPermissions: { readBuild: true, __typename: 'JobPermissions' }, __typename: 'CiJob', }, { @@ -1360,6 +1361,7 @@ export const mockJobsInTable = [ playable: false, cancelable: false, active: false, + userPermissions: { readBuild: true, __typename: 'JobPermissions' }, __typename: 'CiJob', }, { @@ -1405,6 +1407,7 @@ export const mockJobsInTable = [ playable: false, cancelable: false, active: false, + userPermissions: { readBuild: false, __typename: 'JobPermissions' }, __typename: 'CiJob', }, ]; @@ -1492,6 +1495,7 @@ export const mockJobsQueryResponse = { playable: false, cancelable: false, active: false, + userPermissions: { readBuild: true, __typename: 'JobPermissions' }, __typename: 'CiJob', }, ], diff --git a/spec/models/concerns/bulk_insert_safe_spec.rb b/spec/models/concerns/bulk_insert_safe_spec.rb index e40b0cf11ff..ca6df506ee8 100644 --- a/spec/models/concerns/bulk_insert_safe_spec.rb +++ b/spec/models/concerns/bulk_insert_safe_spec.rb @@ -5,6 +5,10 @@ require 'spec_helper' RSpec.describe BulkInsertSafe do before(:all) do ActiveRecord::Schema.define do + create_table :bulk_insert_parent_items, force: true do |t| + t.string :name, null: false + end + create_table :bulk_insert_items, force: true do |t| t.string :name, null: true t.integer :enum_value, null: false @@ -12,6 +16,7 @@ RSpec.describe BulkInsertSafe do t.string :encrypted_secret_value_iv, null: false t.binary :sha_value, null: false, limit: 20 t.jsonb :jsonb_value, null: false + t.belongs_to :bulk_insert_parent_item, foreign_key: true, null: true t.index :name, unique: true end @@ -21,9 +26,23 @@ RSpec.describe BulkInsertSafe do after(:all) do ActiveRecord::Schema.define do drop_table :bulk_insert_items, force: true + drop_table :bulk_insert_parent_items, force: true end end + BulkInsertParentItem = Class.new(ActiveRecord::Base) do + self.table_name = :bulk_insert_parent_items + self.inheritance_column = :_type_disabled + + def self.name + table_name.singularize.camelcase + end + end + + let_it_be(:bulk_insert_parent_item) do + BulkInsertParentItem.create!(name: 'parent') + end + let_it_be(:bulk_insert_item_class) do Class.new(ActiveRecord::Base) do self.table_name = 'bulk_insert_items' @@ -33,6 +52,8 @@ RSpec.describe BulkInsertSafe do validates :name, :enum_value, :secret_value, :sha_value, :jsonb_value, presence: true + belongs_to :bulk_insert_parent_item + sha_attribute :sha_value enum enum_value: { case_1: 1 } @@ -51,8 +72,8 @@ RSpec.describe BulkInsertSafe do 'BulkInsertItem' end - def self.valid_list(count) - Array.new(count) { |n| new(name: "item-#{n}", secret_value: 'my-secret') } + def self.valid_list(count, bulk_insert_parent_item: nil) + Array.new(count) { |n| new(name: "item-#{n}", secret_value: 'my-secret', bulk_insert_parent_item: bulk_insert_parent_item) } end def self.invalid_list(count) @@ -117,6 +138,14 @@ RSpec.describe BulkInsertSafe do bulk_insert_item_class.bulk_insert!(items, batch_size: 5) end + it 'inserts items with belongs_to association' do + items = bulk_insert_item_class.valid_list(10, bulk_insert_parent_item: bulk_insert_parent_item) + + bulk_insert_item_class.bulk_insert!(items, batch_size: 5) + + expect(bulk_insert_item_class.last(items.size).map(&:bulk_insert_parent_item)).to eq([bulk_insert_parent_item] * 10) + end + it 'items can be properly fetched from database' do items = bulk_insert_item_class.valid_list(10) @@ -129,8 +158,7 @@ RSpec.describe BulkInsertSafe do it 'rolls back the transaction when any item is invalid' do # second batch is bad - all_items = bulk_insert_item_class.valid_list(10) + - bulk_insert_item_class.invalid_list(10) + all_items = bulk_insert_item_class.valid_list(10) + bulk_insert_item_class.invalid_list(10) expect do bulk_insert_item_class.bulk_insert!(all_items, batch_size: 2) rescue nil diff --git a/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb b/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb index 3db5d7a8d7d..ec9756007f1 100644 --- a/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb +++ b/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb @@ -30,10 +30,6 @@ RSpec.shared_examples 'a BulkInsertSafe model' do |klass| expect { target_class.set_callback(name) {} }.not_to raise_error end end - - it 'does not raise an error when the call is triggered by belongs_to' do - expect { target_class.belongs_to(:other_record) }.not_to raise_error - end end describe '.bulk_insert!' do diff --git a/yarn.lock b/yarn.lock index 722fc8f998b..976e85e13d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3605,10 +3605,10 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@^3.1.3, core-js@^3.11.3: - version "3.11.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.3.tgz#2835b1f4d10f6d0400bf820cfe6fe64ad067dd3f" - integrity sha512-DFEW9BllWw781Op5KdYGtXfj3s9Cmykzt16bY6elaVuqXHCUwF/5pv0H3IJ7/I3BGjK7OeU+GrjD1ChCkBJPuA== +core-js@^3.1.3, core-js@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.0.tgz#62bac86f7d7f087d40dba3e90a211c2c3c8559ea" + integrity sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw== core-js@~2.3.0: version "2.3.0" |