@@ -3,9 +3,9 @@ import { jest } from '@jest/globals'
3
3
4
4
jest . setTimeout ( 3 * 60 * 1000 )
5
5
6
- describe . skip ( 'learning tracks' , ( ) => {
6
+ describe ( 'learning tracks' , ( ) => {
7
7
test ( 'render first track as feature track' , async ( ) => {
8
- const $ = await getDOM ( '/en/actions /guides' )
8
+ const $ = await getDOM ( '/en/code-security /guides' )
9
9
expect ( $ ( '[data-testid=feature-track]' ) ) . toHaveLength ( 1 )
10
10
const href = $ ( '[data-testid=feature-track] li a' ) . first ( ) . attr ( 'href' )
11
11
const found = href . match ( / .* \? l e a r n = ( .* ) / i)
@@ -19,7 +19,7 @@ describe.skip('learning tracks', () => {
19
19
} )
20
20
21
21
test ( 'render other tracks' , async ( ) => {
22
- const $ = await getDOM ( '/en/actions /guides' )
22
+ const $ = await getDOM ( '/en/code-security /guides' )
23
23
expect ( $ ( '[data-testid=learning-track]' ) . length ) . toBeGreaterThanOrEqual ( 4 )
24
24
$ ( '[data-testid=learning-track]' ) . each ( ( i , trackElem ) => {
25
25
const href = $ ( trackElem ) . find ( '.Box-header a' ) . first ( ) . attr ( 'href' )
@@ -37,16 +37,16 @@ describe.skip('learning tracks', () => {
37
37
} )
38
38
} )
39
39
40
- describe . skip ( 'navigation banner' , ( ) => {
40
+ describe ( 'navigation banner' , ( ) => {
41
41
test ( 'render navigation banner when url includes correct learning track name' , async ( ) => {
42
42
const $ = await getDOM (
43
- '/en/actions/guides/setting-up-continuous-integration-using-workflow-templates ?learn=continuous_integration '
43
+ '/en/code-security/security-advisories/creating-a-security-advisory ?learn=security_advisories '
44
44
)
45
45
expect ( $ ( '[data-testid=learning-track-nav]' ) ) . toHaveLength ( 1 )
46
46
const $navLinks = $ ( '[data-testid=learning-track-nav] a' )
47
47
expect ( $navLinks ) . toHaveLength ( 2 )
48
48
$navLinks . each ( ( i , elem ) => {
49
- expect ( $ ( elem ) . attr ( 'href' ) ) . toEqual ( expect . stringContaining ( '?learn=continuous_integration ' ) )
49
+ expect ( $ ( elem ) . attr ( 'href' ) ) . toEqual ( expect . stringContaining ( '?learn=security_advisories ' ) )
50
50
} )
51
51
} )
52
52
@@ -62,6 +62,47 @@ describe.skip('navigation banner', () => {
62
62
} )
63
63
} )
64
64
65
+ test ( 'render navigation banner when url belongs to a multi-product learning track' , async ( ) => {
66
+ // This is a `code-security` product learning track and it includes a guide
67
+ // path that belongs to the `repositories` product.
68
+ const $ = await getDOM (
69
+ '/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository?learn=dependabot_alerts&learnProduct=code-security'
70
+ )
71
+ expect ( $ ( '[data-testid=learning-track-nav]' ) ) . toHaveLength ( 1 )
72
+ const $navLinks = $ ( '[data-testid=learning-track-nav] a' )
73
+ expect ( $navLinks ) . toHaveLength ( 2 )
74
+ $navLinks . each ( ( i , elem ) => {
75
+ expect ( $ ( elem ) . attr ( 'href' ) ) . toEqual (
76
+ expect . stringContaining ( '?learn=dependabot_alerts&learnProduct=code-security' )
77
+ )
78
+ } )
79
+ } )
80
+
81
+ test ( 'render navigation banner when url belongs to a learning track and has an incorrect `learnProduct` param' , async ( ) => {
82
+ // This is a `code-security` product learning track so the path should
83
+ // work as-is and we won't check `learnProduct`.
84
+ const $ = await getDOM (
85
+ '/en/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository?learn=dependabot_alerts&learnProduct=not_real'
86
+ )
87
+ expect ( $ ( '[data-testid=learning-track-nav]' ) ) . toHaveLength ( 1 )
88
+ const $navLinks = $ ( '[data-testid=learning-track-nav] a' )
89
+ expect ( $navLinks ) . toHaveLength ( 2 )
90
+ $navLinks . each ( ( i , elem ) => {
91
+ expect ( $ ( elem ) . attr ( 'href' ) ) . toEqual (
92
+ expect . stringContaining ( '?learn=dependabot_alerts&learnProduct=code-security' )
93
+ )
94
+ } )
95
+ } )
96
+
97
+ test ( 'does not include banner with multi-product learning track and when url has incorrect `learnProduct` param' , async ( ) => {
98
+ // This is a `code-security` product learning track and it includes a guide
99
+ // path that belongs to the `repositories` product.
100
+ const $ = await getDOM (
101
+ '/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository?learn=dependabot_alerts&learnProduct=not_real'
102
+ )
103
+ expect ( $ ( '[data-testid=learning-track-nav]' ) ) . toHaveLength ( 0 )
104
+ } )
105
+
65
106
test ( 'does not include banner when url does not include `learn` param' , async ( ) => {
66
107
const $ = await getDOM (
67
108
'/en/actions/guides/setting-up-continuous-integration-using-workflow-templates'
0 commit comments