From a71a21fea39a243867165c11c569909f112bcb13 Mon Sep 17 00:00:00 2001
From: Sam Figueroa <sam@samuelfigueroa.com>
Date: Mon, 10 Jan 2022 09:35:11 +0100
Subject: [PATCH] Open doc links in new tab/window only

- refs: https://gitlab.com/gitlab-org/gitlab/-/issues/349804
        https://gitlab.com/gitlab-org/gitlab/-/merge_requests/77849#note_806338073
        https://gitlab.com/gitlab-org/gitlab/-/merge_requests/77849#note_806337735
---
 .../components/learn_gitlab_section_link.vue  |  6 ++++-
 .../projects/learn_gitlab/constants/index.js  |  1 +
 .../__snapshots__/learn_gitlab_spec.js.snap   | 27 ++++++++++---------
 .../learn_gitlab_section_link_spec.js         | 12 +++++++++
 .../learn_gitlab/components/mock_data.js      |  2 +-
 5 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab_section_link.vue b/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab_section_link.vue
index 3a401f5cb31..34a0190a503 100644
--- a/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab_section_link.vue
+++ b/app/assets/javascripts/pages/projects/learn_gitlab/components/learn_gitlab_section_link.vue
@@ -31,6 +31,9 @@ export default {
         this.action === 'userAdded' && isExperimentVariant('invite_for_help_continuous_onboarding')
       );
     },
+    openInNewTab() {
+      return ACTION_LABELS[this.action]?.openInNewTab === true;
+    },
   },
   methods: {
     openModal() {
@@ -61,8 +64,9 @@ export default {
     </gl-link>
     <gl-link
       v-else
-      target="_blank"
+      :target="openInNewTab ? '_blank' : '_self'"
       :href="value.url"
+      data-testid="uncompleted-learn-gitlab-link"
       data-track-action="click_link"
       :data-track-label="$options.i18n.ACTION_LABELS[action].title"
       data-track-property="Growth::Conversion::Experiment::LearnGitLab"
diff --git a/app/assets/javascripts/pages/projects/learn_gitlab/constants/index.js b/app/assets/javascripts/pages/projects/learn_gitlab/constants/index.js
index 9e204aa6746..8a88ad299b4 100644
--- a/app/assets/javascripts/pages/projects/learn_gitlab/constants/index.js
+++ b/app/assets/javascripts/pages/projects/learn_gitlab/constants/index.js
@@ -62,6 +62,7 @@ export const ACTION_LABELS = {
     description: s__('LearnGitLab|Scan your code to uncover vulnerabilities before deploying.'),
     section: 'deploy',
     position: 1,
+    openInNewTab: true,
   },
   issueCreated: {
     title: s__('LearnGitLab|Create an issue'),
diff --git a/spec/frontend/pages/projects/learn_gitlab/components/__snapshots__/learn_gitlab_spec.js.snap b/spec/frontend/pages/projects/learn_gitlab/components/__snapshots__/learn_gitlab_spec.js.snap
index 1586aded6e6..86ccaa43786 100644
--- a/spec/frontend/pages/projects/learn_gitlab/components/__snapshots__/learn_gitlab_spec.js.snap
+++ b/spec/frontend/pages/projects/learn_gitlab/components/__snapshots__/learn_gitlab_spec.js.snap
@@ -135,13 +135,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Set up CI/CD"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Set up CI/CD
@@ -155,13 +155,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Start a free Ultimate trial"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Start a free Ultimate trial
@@ -175,13 +175,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Add code owners"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Add code owners
@@ -202,13 +202,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Add merge request approval"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Add merge request approval
@@ -265,13 +265,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Create an issue"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Create an issue
@@ -285,13 +285,13 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Submit a merge request"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
               href="http://example.com/"
-              rel="noopener noreferrer"
-              target="_blank"
+              target="_self"
             >
               
     Submit a merge request
@@ -341,11 +341,12 @@ exports[`Learn GitLab renders correctly 1`] = `
           >
             <a
               class="gl-link"
+              data-testid="uncompleted-learn-gitlab-link"
               data-track-action="click_link"
               data-track-experiment="change_continuous_onboarding_link_urls"
               data-track-label="Run a Security scan using CI/CD"
               data-track-property="Growth::Conversion::Experiment::LearnGitLab"
-              href="http://example.com/"
+              href="https://docs.gitlab.com/ee/foobar/"
               rel="noopener noreferrer"
               target="_blank"
             >
diff --git a/spec/frontend/pages/projects/learn_gitlab/components/learn_gitlab_section_link_spec.js b/spec/frontend/pages/projects/learn_gitlab/components/learn_gitlab_section_link_spec.js
index f7b2154a935..8da3d747b54 100644
--- a/spec/frontend/pages/projects/learn_gitlab/components/learn_gitlab_section_link_spec.js
+++ b/spec/frontend/pages/projects/learn_gitlab/components/learn_gitlab_section_link_spec.js
@@ -12,6 +12,10 @@ const defaultProps = {
   completed: false,
 };
 
+const docLinkProps = {
+  url: 'https://docs.gitlab.com/ee/user/application_security/security_dashboard/',
+};
+
 describe('Learn GitLab Section Link', () => {
   let wrapper;
 
@@ -53,6 +57,14 @@ describe('Learn GitLab Section Link', () => {
     expect(wrapper.find('[data-testid="trial-only"]').exists()).toBe(true);
   });
 
+  it('renders doc links with blank target', () => {
+    createWrapper('securityScanEnabled', docLinkProps);
+    const linkElement = wrapper.find('[data-testid="uncompleted-learn-gitlab-link"]');
+
+    expect(linkElement.exists()).toBe(true);
+    expect(linkElement.attributes('target')).toEqual('_blank');
+  });
+
   describe('rendering a link to open the invite_members modal instead of a regular link', () => {
     it.each`
       action           | experimentVariant | showModal
diff --git a/spec/frontend/pages/projects/learn_gitlab/components/mock_data.js b/spec/frontend/pages/projects/learn_gitlab/components/mock_data.js
index 1e633cb7cf5..b21965e8f48 100644
--- a/spec/frontend/pages/projects/learn_gitlab/components/mock_data.js
+++ b/spec/frontend/pages/projects/learn_gitlab/components/mock_data.js
@@ -35,7 +35,7 @@ export const testActions = {
     svg: 'http://example.com/images/illustration.svg',
   },
   securityScanEnabled: {
-    url: 'http://example.com/',
+    url: 'https://docs.gitlab.com/ee/foobar/',
     completed: false,
     svg: 'http://example.com/images/illustration.svg',
   },
-- 
2.30.9