forked from github/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathheader.js
More file actions
146 lines (123 loc) · 6.94 KB
/
header.js
File metadata and controls
146 lines (123 loc) · 6.94 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
const { getDOM } = require('../helpers/supertest')
const { oldestSupported, latest } = require('../../lib/enterprise-server-releases')
describe('header', () => {
jest.setTimeout(5 * 60 * 1000)
test('includes localized meta tags', async () => {
const $ = await getDOM('/en')
expect($('meta[name="site.data.ui.search.placeholder"]').length).toBe(1)
})
test('includes a link to the homepage (in the current page\'s language)', async () => {
let $ = await getDOM('/en')
expect($('#github-logo a[href="/en"]').length).toBe(2)
$ = await getDOM('/ja')
expect($('#github-logo a[href="/ja"]').length).toBe(2)
expect($('#github-logo a[href="/en"]').length).toBe(0)
})
describe('language links', () => {
test('lead to the same page in a different language', async () => {
const $ = await getDOM('/github/administering-a-repository/managing-a-branch-protection-rule')
expect($('#languages-selector a[href="/ja/github/administering-a-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule"]').length).toBe(1)
})
test('display the native name and the English name for each translated language', async () => {
const $ = await getDOM('/en')
expect($('#languages-selector a[href="/en"]').text().trim()).toBe('English')
expect($('#languages-selector a[href="/cn"]').text().trim()).toBe('简体中文 (Simplified Chinese)')
expect($('#languages-selector a[href="/ja"]').text().trim()).toBe('日本語 (Japanese)')
})
test('emphasize the current language', async () => {
const $ = await getDOM('/en')
expect($('#languages-selector a.active[href="/en"]').length).toBe(1)
expect($('#languages-selector a[href="/ja"]').length).toBe(1)
})
})
describe('notices', () => {
test('displays a "localization in progress" notice for WIP languages', async () => {
const $ = await getDOM('/de')
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href="/en"]').length).toBe(1)
})
test('displays "complete" notice for non-WIP non-English languages', async () => {
const $ = await getDOM('/ja')
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href="/en"]').length).toBe(1)
expect($('.header-notifications a[href*="github.com/contact"]').length).toBe(1)
})
test.skip('does not display any notices for English', async () => {
const $ = await getDOM('/en')
expect($('.header-notifications').length).toBe(0)
})
test('displays translation disclaimer notice on localized site-policy pages', async () => {
const $ = await getDOM('/ja/github/site-policy/github-logo-policy')
expect($('.header-notifications.translation_notice a[href="https://github.com/github/site-policy/issues"]').length).toBe(1)
})
test('renders a link to the same page in user\'s preferred language, if available', async () => {
const headers = { 'accept-language': 'ja' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href*="/ja"]').length).toBe(1)
})
test('renders a link to the same page if user\'s preferred language is Chinese - PRC', async () => {
const headers = { 'accept-language': 'zh-CN' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href*="/cn"]').length).toBe(1)
})
test('does not render a link when user\'s preferred language is Chinese - Taiwan', async () => {
const headers = { 'accept-language': 'zh-TW' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications').length).toBe(0)
})
test('does not render a link when user\'s preferred language is English', async () => {
const headers = { 'accept-language': 'en' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications').length).toBe(0)
})
test('renders a link to the same page in user\'s preferred language from multiple, if available', async () => {
const headers = { 'accept-language': 'ja, *;q=0.9' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href*="/ja"]').length).toBe(1)
})
test('renders a link to the same page in user\'s preferred language with weights, if available', async () => {
const headers = { 'accept-language': 'ja;q=1.0, *;q=0.9' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href*="/ja"]').length).toBe(1)
})
test('renders a link to the user\'s 2nd preferred language if 1st is not available', async () => {
const headers = { 'accept-language': 'zh-TW,zh;q=0.9,ja *;q=0.8' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications.translation_notice').length).toBe(1)
expect($('.header-notifications a[href*="/ja"]').length).toBe(1)
})
test('renders no notices if no language preference is available', async () => {
const headers = { 'accept-language': 'zh-TW,zh;q=0.9,zh-SG *;q=0.8' }
const $ = await getDOM('/en', headers)
expect($('.header-notifications').length).toBe(0)
})
})
describe('mobile-only product dropdown links', () => {
test('include github and admin, and emphasize the current product', async () => {
const $ = await getDOM('/en/articles/enabling-required-status-checks')
const github = $('#homepages a.active[href="/en/github"]')
expect(github.length).toBe(1)
expect(github.text().trim()).toBe('GitHub.com')
expect(github.attr('class').includes('active')).toBe(true)
const ghe = $(`#homepages a[href="/en/enterprise-server@${latest}/admin"]`)
expect(ghe.length).toBe(1)
expect(ghe.text().trim()).toBe('GitHub Enterprise')
expect(ghe.attr('class').includes('active')).toBe(false)
})
test('point to homepages in the current page\'s language', async () => {
const $ = await getDOM('/ja/github/administering-a-repository/defining-the-mergeability-of-pull-requests')
expect($('#homepages a.active[href="/ja/github"]').length).toBe(1)
expect($(`#homepages a[href="/ja/enterprise-server@${latest}/admin"]`).length).toBe(1)
})
test('emphasizes the product that corresponds to the current page', async () => {
const $ = await getDOM(`/en/enterprise/${oldestSupported}/user/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address`)
expect($(`#homepages a.active[href="/en/enterprise-server@${latest}/admin"]`).length).toBe(0)
expect($('#homepages a[href="/en/github"]').length).toBe(1)
expect($('#homepages a.active[href="/en/github"]').length).toBe(1)
})
})
})