forked from github/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsidebar.js
56 lines (49 loc) · 2.34 KB
/
sidebar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import '../../lib/feature-flags.js'
import { getDOM } from '../helpers/supertest.js'
import { jest } from '@jest/globals'
describe('sidebar', () => {
jest.setTimeout(3 * 60 * 1000)
let $homePage, $githubPage, $enterprisePage
beforeAll(async () => {
;[$homePage, $githubPage, $enterprisePage] = await Promise.all([
getDOM('/en'),
getDOM('/en/github'),
getDOM('/en/enterprise/admin'),
])
})
test('highlights active product on Enterprise pages', async () => {
expect($enterprisePage('[data-testid=sidebar] [data-testid=sidebar-product]').length).toBe(1)
expect(
$enterprisePage('[data-testid=sidebar] [data-testid=sidebar-product] > a').text().trim()
).toBe('Enterprise administrators')
})
test('highlights active product on GitHub pages', async () => {
expect($githubPage('[data-testid=sidebar] [data-testid=sidebar-product]').length).toBe(1)
expect(
$githubPage('[data-testid=sidebar] [data-testid=sidebar-product] > a').text().trim()
).toBe('GitHub')
})
test('includes links to external products like the Atom, Electron, and CodeQL', async () => {
expect($homePage('[data-testid=sidebar] a[href="https://atom.io/docs"]')).toHaveLength(1)
expect($homePage('[data-testid=sidebar] a[href="https://electronjs.org/docs"]')).toHaveLength(1)
expect(
$homePage('[data-testid=sidebar] a[href="https://codeql.github.com/docs"]')
).toHaveLength(1)
expect($homePage('[data-testid=sidebar] a[href="https://docs.npmjs.com/"]')).toHaveLength(1)
})
test('adds `data-is-current-page` and `data-is-active-category` properties to the sidebar link for the current page', async () => {
const url = '/en/github/importing-your-projects-to-github/importing-source-code-to-github'
const $ = await getDOM(url)
expect($('[data-testid=sidebar] [data-is-active-category=true]').length).toBe(1)
expect($('[data-testid=sidebar] [data-is-current-page=true]').length).toBe(1)
expect($('[data-testid=sidebar] [data-is-current-page=true] a').attr('href')).toContain(url)
})
test('does not display Early Access as a product', async () => {
expect(
$homePage('[data-testid=sidebar] [data-testid=sidebar-product][title*="Early"]').length
).toBe(0)
expect(
$homePage('[data-testid=sidebar] [data-testid=sidebar-product][title*="early"]').length
).toBe(0)
})
})