summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-02-25 00:17:32 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-02-25 00:17:32 +0000
commitca6f7d9e723976ab6046a09d1a22211ca2c8a930 (patch)
tree81de14240bb020f7416defc6bf314880fd141bf7
parent0afa6fb9d922cb7e201e81b2b668258d3dcf9d46 (diff)
downloadgitlab-ce-ca6f7d9e723976ab6046a09d1a22211ca2c8a930.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/jobs/components/table/graphql/cache_config.js1
-rw-r--r--app/assets/javascripts/lib/utils/text_markdown.js2
-rw-r--r--app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue10
-rw-r--r--doc/administration/raketasks/doctor.md4
-rw-r--r--doc/api/resource_access_tokens.md4
-rw-r--r--doc/api/v3_to_v4.md4
-rw-r--r--doc/ci/pipelines/pipelines_for_merged_results.md4
-rw-r--r--doc/development/documentation/redirects.md60
-rw-r--r--doc/development/experiment_guide/experimentation.md4
-rw-r--r--doc/development/feature_flags/process.md4
-rw-r--r--doc/development/sidekiq_style_guide.md4
-rw-r--r--doc/install/pivotal/index.md4
-rw-r--r--doc/push_rules/push_rules.md4
-rw-r--r--doc/user/project/canary_deployments.md8
-rw-r--r--doc/user/project/issues/issue_data_and_actions.md4
-rw-r--r--doc/user/project/pages/lets_encrypt_for_gitlab_pages.md4
-rw-r--r--lib/tasks/gitlab/docs/redirect.rake4
-rw-r--r--qa/qa.rb6
-rw-r--r--qa/qa/runtime/logger.rb13
-rw-r--r--qa/qa/support/repeater.rb5
-rw-r--r--qa/spec/spec_helper.rb8
-rw-r--r--spec/features/issues/gfm_autocomplete_spec.rb8
-rw-r--r--spec/frontend/jobs/components/table/graphql/cache_config_spec.js16
-rw-r--r--spec/frontend/lib/utils/text_markdown_spec.js20
24 files changed, 142 insertions, 63 deletions
diff --git a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js b/app/assets/javascripts/jobs/components/table/graphql/cache_config.js
index 846efdf21ee..b9946925c95 100644
--- a/app/assets/javascripts/jobs/components/table/graphql/cache_config.js
+++ b/app/assets/javascripts/jobs/components/table/graphql/cache_config.js
@@ -22,6 +22,7 @@ export default {
return {
nodes,
statuses: Array.isArray(args.statuses) ? [...args.statuses] : args.statuses,
+ pageInfo: incoming.pageInfo,
};
},
},
diff --git a/app/assets/javascripts/lib/utils/text_markdown.js b/app/assets/javascripts/lib/utils/text_markdown.js
index ec6789d81ec..a4accf0ee8f 100644
--- a/app/assets/javascripts/lib/utils/text_markdown.js
+++ b/app/assets/javascripts/lib/utils/text_markdown.js
@@ -367,6 +367,8 @@ function handleContinueList(e, textArea) {
export function keypressNoteText(e) {
const textArea = this;
+ if ($(textArea).atwho?.('isSelecting')) return;
+
handleContinueList(e, textArea);
handleSurroundSelectedText(e, textArea);
}
diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
index 92ed361bcc9..2fb5e3c536a 100644
--- a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
+++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
@@ -174,14 +174,14 @@ export default {
<div class="gl-mb-2">
<gl-link
:href="pipeline.path"
- class="gl-text-decoration-underline gl-text-blue-600!"
+ class="gl-text-decoration-underline gl-text-blue-600! gl-mr-3"
data-testid="pipeline-url-link"
data-qa-selector="pipeline_url_link"
>
#{{ pipeline[pipelineKey] }}
</gl-link>
<!--Commit row-->
- <div class="icon-container gl-display-inline-block">
+ <div class="icon-container gl-display-inline-block gl-mr-1">
<gl-icon
v-gl-tooltip
:name="commitIcon"
@@ -193,18 +193,18 @@ export default {
<gl-link
v-if="mergeRequestRef"
:href="mergeRequestRef.path"
- class="ref-name"
+ class="ref-name gl-mr-3"
data-testid="merge-request-ref"
>{{ mergeRequestRef.iid }}</gl-link
>
- <gl-link v-else :href="refUrl" class="ref-name" data-testid="commit-ref-name">{{
+ <gl-link v-else :href="refUrl" class="ref-name gl-mr-3" data-testid="commit-ref-name">{{
commitRef.name
}}</gl-link>
</tooltip-on-truncate>
<gl-icon
v-gl-tooltip
name="commit"
- class="commit-icon"
+ class="commit-icon gl-mr-1"
:title="__('Commit')"
data-testid="commit-icon"
/>
diff --git a/doc/administration/raketasks/doctor.md b/doc/administration/raketasks/doctor.md
index bed3cdcbcfe..457077462a6 100644
--- a/doc/administration/raketasks/doctor.md
+++ b/doc/administration/raketasks/doctor.md
@@ -6,4 +6,6 @@ remove_date: '2022-03-04'
This document was moved to [another location](check.md#verify-database-values-can-be-decrypted-using-the-current-secrets).
<!-- This redirect file can be deleted after 2022-03-04. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/api/resource_access_tokens.md b/doc/api/resource_access_tokens.md
index c77a8f5d0d6..a9c43625193 100644
--- a/doc/api/resource_access_tokens.md
+++ b/doc/api/resource_access_tokens.md
@@ -6,4 +6,6 @@ remove_date: '2022-04-06'
This document was moved to [another location](project_access_tokens.md).
<!-- This redirect file can be deleted after <2022-04-06>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/api/v3_to_v4.md b/doc/api/v3_to_v4.md
index 9c2170e0709..875f4528c0e 100644
--- a/doc/api/v3_to_v4.md
+++ b/doc/api/v3_to_v4.md
@@ -6,4 +6,6 @@ remove_date: '2023-01-31'
This document was moved to [another location](https://gitlab.com/gitlab-org/gitlab-foss/-/blob/11-0-stable/doc/api/v3_to_v4.md).
<!-- This redirect file can be deleted after <2023-01-31>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/ci/pipelines/pipelines_for_merged_results.md b/doc/ci/pipelines/pipelines_for_merged_results.md
index 457f5ce9c30..0c3100a51f1 100644
--- a/doc/ci/pipelines/pipelines_for_merged_results.md
+++ b/doc/ci/pipelines/pipelines_for_merged_results.md
@@ -6,4 +6,6 @@ remove_date: '2022-04-27'
This document was moved to [another location](merged_results_pipelines.md).
<!-- This redirect file can be deleted after 2022-04-27. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/development/documentation/redirects.md b/doc/development/documentation/redirects.md
index 8f13048f663..4c748924c67 100644
--- a/doc/development/documentation/redirects.md
+++ b/doc/development/documentation/redirects.md
@@ -27,7 +27,7 @@ Add a redirect to ensure:
- Users see the new page and can update or delete their bookmark.
- External sites can update their links, especially sites that have automation that
- check for redirecting links.
+ checks for redirected links.
- The documentation site global navigation does not link to a missing page.
The links in the global navigation are already tested in the `gitlab-docs` project.
@@ -38,26 +38,28 @@ Technical Writers can help with any questions and can review your change.
There are two types of redirects:
-- Redirect added into the documentation files themselves, for users who
+- [Redirect added into the documentation files themselves](#add-a-redirect), for users who
view the docs in `/help` on self-managed instances. For example,
- [`/help` on GitLab.com](https://gitlab.com/help).
-- [GitLab Pages redirects](../../user/project/pages/redirects.md),
- for users who view the docs on [`docs.gitlab.com`](https://docs.gitlab.com).
+ [`/help` on GitLab.com](https://gitlab.com/help). These must be added in the same
+ MR that renames or moves a doc. Redirects to internal pages expire after three months
+ and redirects to external pages (starting with `https:`) expire after a year.
+- [GitLab Pages redirects](../../user/project/pages/redirects.md), which are added
+ automatically after redirect files expire. They must not be manually added by
+ contributors and expire after nine months. Redirects pointing to external sites
+ are not added to the GitLab Pages redirects.
- The Technical Writing team manages the [process](https://gitlab.com/gitlab-org/technical-writing/-/blob/main/.gitlab/issue_templates/tw-monthly-tasks.md)
- to regularly update and [clean up the redirects](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/doc/raketasks.md#clean-up-redirects).
- If you're a contributor, you may add a new redirect, but you don't need to delete
- the old ones. This process is automatic and handled by the Technical
- Writing team.
+Expired redirect files are removed from the documentation projects by the
+[`clean_redirects` Rake task](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/doc/raketasks.md#clean-up-redirects),
+as part of the Technical Writing team's [monthly tasks](https://gitlab.com/gitlab-org/technical-writing/-/blob/main/.gitlab/issue_templates/tw-monthly-tasks.md).
+
+## Add a redirect
NOTE:
-If the old page you're renaming doesn't exist in a stable branch, skip the
-following steps and ask a Technical Writer to add the redirect in
-[`redirects.yaml`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/content/_data/redirects.yaml).
-For example, if you add a new page on the 3rd of the month and then rename it before it gets
-added in the stable branch on the 18th, the old page will never be part of the internal `/help`.
-In that case, you can jump straight to the
-[Pages redirect](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/doc/maintenance.md#pages-redirects).
+If the renamed page is new, you can sometimes skip the following steps and ask a
+Technical Writer to manually add the redirect to [`redirects.yaml`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/content/_data/redirects.yaml).
+For example, if you add a new page and then rename it before it's added to a release
+on the 18th. The old page is not in any version's `/help` section, so a technical writer
+can jump straight to the [Pages redirect](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/doc/maintenance.md#pages-redirects).
To add a redirect:
@@ -87,20 +89,13 @@ To add a redirect:
bundle exec rake "gitlab:docs:redirect[doc/user/search/old_file.md, https://example.com]"
```
- Alternatively, you can omit the arguments and be asked to enter their values:
-
- ```shell
- bundle exec rake gitlab:docs:redirect
- ```
-
- If you don't want to use the Rake task, you can use the following template.
+ - Alternatively, you can omit the arguments and be prompted to enter the values:
- Replace the value of `redirect_to` with the new file path and `YYYY-MM-DD`
- with the date the file should be removed.
+ ```shell
+ bundle exec rake gitlab:docs:redirect
+ ```
- Redirect files that link to docs in internal documentation projects
- are removed after three months. Redirect files that link to external sites are
- removed after one year:
+ If you don't want to use the Rake task, you can use the following template:
```markdown
---
@@ -111,9 +106,14 @@ To add a redirect:
This document was moved to [another location](../path/to/file/index.md).
<!-- This redirect file can be deleted after <YYYY-MM-DD>. -->
- <!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+ <!-- Redirects that point to other docs in the same project expire in three months. -->
+ <!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+ <!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
```
+ - Replace both instances of `../newpath/to/file/index.md` with the new file path.
+ - Replace `YYYY-MM-DD` with the expiry date, as explained in the template.
+
1. If the documentation page being moved has any Disqus comments, follow the steps
described in [Redirections for pages with Disqus comments](#redirections-for-pages-with-disqus-comments).
1. Open a merge request with your changes. If a documentation page
diff --git a/doc/development/experiment_guide/experimentation.md b/doc/development/experiment_guide/experimentation.md
index bb782af80cc..28100564555 100644
--- a/doc/development/experiment_guide/experimentation.md
+++ b/doc/development/experiment_guide/experimentation.md
@@ -6,4 +6,6 @@ remove_date: '2022-04-13'
This document was moved to [another location](gitlab_experiment.md).
<!-- This redirect file can be deleted after <2022-04-13>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/development/feature_flags/process.md b/doc/development/feature_flags/process.md
index 3fbb207a12b..f98366beb6b 100644
--- a/doc/development/feature_flags/process.md
+++ b/doc/development/feature_flags/process.md
@@ -6,4 +6,6 @@ remove_date: '2022-03-01'
This document was moved to [another location](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/).
<!-- This redirect file can be deleted after 2022-03-01. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/development/sidekiq_style_guide.md b/doc/development/sidekiq_style_guide.md
index 3756dd6b598..1b5e7addf29 100644
--- a/doc/development/sidekiq_style_guide.md
+++ b/doc/development/sidekiq_style_guide.md
@@ -6,4 +6,6 @@ remove_date: '2022-04-13'
This document was moved to [another location](sidekiq/index.md).
<!-- This redirect file can be deleted after <2022-04-13>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/install/pivotal/index.md b/doc/install/pivotal/index.md
index ee379a3c95f..56dde411884 100644
--- a/doc/install/pivotal/index.md
+++ b/doc/install/pivotal/index.md
@@ -6,4 +6,6 @@ remove_date: '2022-03-08'
This document was removed. For information about installing GitLab, see [this page](../index.md).
<!-- This redirect file can be deleted after <2022-03-08>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/push_rules/push_rules.md b/doc/push_rules/push_rules.md
index 3c4b0e10bf9..ab87cba9da3 100644
--- a/doc/push_rules/push_rules.md
+++ b/doc/push_rules/push_rules.md
@@ -6,4 +6,6 @@ remove_date: '2022-05-10'
This document was moved to [another location](../user/project/repository/push_rules.md).
<!-- This redirect file can be deleted after <2022-05-10>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/user/project/canary_deployments.md b/doc/user/project/canary_deployments.md
index 0e60d0d88bc..344caed7449 100644
--- a/doc/user/project/canary_deployments.md
+++ b/doc/user/project/canary_deployments.md
@@ -6,8 +6,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Canary Deployments **(FREE)**
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/1659) in [GitLab Premium](https://about.gitlab.com/pricing/) 9.1.
-> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212320) to GitLab Free in 13.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/1659) in GitLab 9.1.
+> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212320) from GitLab Premium to GitLab Free in 13.8.
A popular [Continuous Deployment](https://en.wikipedia.org/wiki/Continuous_deployment)
strategy, where a small portion of the fleet is updated to the new version of
@@ -71,8 +71,8 @@ can quickly notice them.
### Advanced traffic control with Canary Ingress (DEPRECATED)
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/215501) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.6.
-> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212320) to Free in GitLab 13.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/215501) in GitLab 13.6.
+> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212320) from GitLab Premium to GitLab Free in 13.8.
> - [Deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/8) in GitLab 14.5.
WARNING:
diff --git a/doc/user/project/issues/issue_data_and_actions.md b/doc/user/project/issues/issue_data_and_actions.md
index 66ca29c094e..e9f3f4be1c3 100644
--- a/doc/user/project/issues/issue_data_and_actions.md
+++ b/doc/user/project/issues/issue_data_and_actions.md
@@ -6,4 +6,6 @@ remove_date: '2022-02-24'
This file was moved to [another location](index.md).
<!-- This redirect file can be deleted after <2022-02-24>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md b/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
index 1f60aafe71b..7779f87b459 100644
--- a/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
+++ b/doc/user/project/pages/lets_encrypt_for_gitlab_pages.md
@@ -6,4 +6,6 @@ remove_date: '2022-03-14'
This file was moved to [another location](custom_domains_ssl_tls_certification/lets_encrypt_integration.md).
<!-- This redirect file can be deleted after <2022-03-14>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
+<!-- Redirects that point to other docs in the same project expire in three months. -->
+<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
diff --git a/lib/tasks/gitlab/docs/redirect.rake b/lib/tasks/gitlab/docs/redirect.rake
index e7ece9e0fdd..2d234fcdb36 100644
--- a/lib/tasks/gitlab/docs/redirect.rake
+++ b/lib/tasks/gitlab/docs/redirect.rake
@@ -54,7 +54,9 @@ namespace :gitlab do
post.puts "This document was moved to [another location](#{new_path})."
post.puts
post.puts "<!-- This redirect file can be deleted after <#{date}>. -->"
- post.puts "<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->"
+ post.puts "<!-- Redirects that point to other docs in the same project expire in three months. -->"
+ post.puts "<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->"
+ post.puts "<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->"
end
end
end
diff --git a/qa/qa.rb b/qa/qa.rb
index 442f6c578cf..96914055e8e 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -11,6 +11,12 @@ require_relative 'lib/gitlab'
require_relative '../config/bundler_setup'
Bundler.require(:default)
+require 'securerandom'
+require 'pathname'
+require 'active_support/core_ext/hash'
+require 'active_support/core_ext/object/blank'
+require 'rainbow/refinement'
+
module QA
root = "#{__dir__}/qa"
diff --git a/qa/qa/runtime/logger.rb b/qa/qa/runtime/logger.rb
index 81c41000033..d538a3d1a3f 100644
--- a/qa/qa/runtime/logger.rb
+++ b/qa/qa/runtime/logger.rb
@@ -2,13 +2,19 @@
require 'logger'
require 'forwardable'
-require 'rainbow/refinement'
module QA
module Runtime
module Logger
extend SingleForwardable
- using Rainbow
+
+ LEVEL_COLORS = {
+ "DEBUG" => :magenta,
+ "INFO" => :green,
+ "WARN" => :yellow,
+ "ERROR" => :indianred,
+ "FATAL" => :red
+ }.freeze
def_delegators :logger, :debug, :info, :warn, :error, :fatal, :unknown
@@ -23,8 +29,9 @@ module QA
logger.formatter = proc do |severity, datetime, progname, msg|
date_format = datetime.strftime("%Y-%m-%d %H:%M:%S")
+ msg_prefix = "[date=#{date_format} from=QA Tests] #{severity.ljust(5)} -- "
- "[date=#{date_format} from=QA Tests] #{severity.ljust(5)} -- ".yellow + "#{msg}\n"
+ Rainbow(msg_prefix).send(LEVEL_COLORS.fetch(severity, :yellow)) + "#{msg}\n"
end
end
end
diff --git a/qa/qa/support/repeater.rb b/qa/qa/support/repeater.rb
index 1b9aa809051..6956987de05 100644
--- a/qa/qa/support/repeater.rb
+++ b/qa/qa/support/repeater.rb
@@ -1,6 +1,5 @@
# frozen_string_literal: true
require 'active_support/inflector'
-require 'rainbow/refinement'
module QA
module Support
@@ -40,7 +39,9 @@ module QA
QA::Runtime::Logger.debug(msg.join(' '))
end
- QA::Runtime::Logger.debug("Attempt number #{attempts + 1}".bg(:yellow).black) if log && max_attempts && attempts > 0
+ if log && max_attempts && attempts > 0
+ QA::Runtime::Logger.debug("Attempt number #{attempts + 1}".bg(:yellow).black)
+ end
result = yield
if result
diff --git a/qa/spec/spec_helper.rb b/qa/spec/spec_helper.rb
index 2a6acd6d014..6e7d5557a88 100644
--- a/qa/spec/spec_helper.rb
+++ b/qa/spec/spec_helper.rb
@@ -2,12 +2,6 @@
require_relative '../qa'
-require 'securerandom'
-require 'pathname'
-require 'active_support/core_ext/hash'
-require 'active_support/core_ext/object/blank'
-require 'rainbow/refinement'
-
require_relative 'qa_deprecation_toolkit_env'
QaDeprecationToolkitEnv.configure!
@@ -36,7 +30,7 @@ RSpec.configure do |config|
end
config.prepend_before do |example|
- QA::Runtime::Logger.debug("\nStarting test: #{example.full_description}\n")
+ QA::Runtime::Logger.info("Starting test: #{Rainbow(example.full_description).bright}")
QA::Runtime::Example.current = example
# Reset fabrication counters tracked in resource base
diff --git a/spec/features/issues/gfm_autocomplete_spec.rb b/spec/features/issues/gfm_autocomplete_spec.rb
index e12fceadebe..6f4a13c5fad 100644
--- a/spec/features/issues/gfm_autocomplete_spec.rb
+++ b/spec/features/issues/gfm_autocomplete_spec.rb
@@ -420,6 +420,14 @@ RSpec.describe 'GFM autocomplete', :js do
end
end
end
+
+ context 'when typing enter for autocomplete in a markdown list' do
+ it 'does not create a new list item' do
+ fill_in 'Comment', with: "- @#{user.username}\n"
+
+ expect(find_field('Comment').value).to eq "- @#{user.username}\n"
+ end
+ end
end
private
diff --git a/spec/frontend/jobs/components/table/graphql/cache_config_spec.js b/spec/frontend/jobs/components/table/graphql/cache_config_spec.js
index a387572839d..ac79186cb46 100644
--- a/spec/frontend/jobs/components/table/graphql/cache_config_spec.js
+++ b/spec/frontend/jobs/components/table/graphql/cache_config_spec.js
@@ -32,6 +32,22 @@ describe('jobs/components/table/graphql/cache_config', () => {
CIJobConnectionIncomingCache.nodes.length + CIJobConnectionExistingCache.nodes.length,
);
});
+
+ it('should contain the pageInfo key as part of the result', () => {
+ const res = cacheConfig.typePolicies.CiJobConnection.merge({}, CIJobConnectionIncomingCache, {
+ args: firstLoadArgs,
+ });
+
+ expect(res.pageInfo).toEqual(
+ expect.objectContaining({
+ __typename: 'PageInfo',
+ endCursor: 'eyJpZCI6IjIwNTEifQ',
+ hasNextPage: true,
+ hasPreviousPage: false,
+ startCursor: 'eyJpZCI6IjIxNzMifQ',
+ }),
+ );
+ });
});
describe('when fetching data with different statuses', () => {
diff --git a/spec/frontend/lib/utils/text_markdown_spec.js b/spec/frontend/lib/utils/text_markdown_spec.js
index dded32cc890..a78dab1a44d 100644
--- a/spec/frontend/lib/utils/text_markdown_spec.js
+++ b/spec/frontend/lib/utils/text_markdown_spec.js
@@ -1,4 +1,6 @@
+import $ from 'jquery';
import { insertMarkdownText, keypressNoteText } from '~/lib/utils/text_markdown';
+import '~/lib/utils/jquery_at_who';
describe('init markdown', () => {
let textArea;
@@ -223,6 +225,24 @@ describe('init markdown', () => {
expect(textArea.selectionEnd).toBe(text.length);
});
+ // test that when we're in the middle of autocomplete, we don't
+ // add a new list item
+ it.each`
+ text | expected | atwho_selecting
+ ${'- item @'} | ${'- item @'} | ${true}
+ ${'- item @'} | ${'- item @\n- '} | ${false}
+ `('behaves correctly during autocomplete', ({ text, expected, atwho_selecting }) => {
+ jest.spyOn($.fn, 'atwho').mockReturnValue(atwho_selecting);
+
+ textArea.value = text;
+ textArea.setSelectionRange(text.length, text.length);
+
+ textArea.addEventListener('keydown', keypressNoteText);
+ textArea.dispatchEvent(enterEvent);
+
+ expect(textArea.value).toEqual(expected);
+ });
+
it('does nothing if feature flag disabled', () => {
gon.features = { markdownContinueLists: false };