Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

block-robots.js 4.0 KB

You have to be logged in to leave a comment. Sign In
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
  1. const { blockIndex } = require('../../middleware/block-robots')
  2. const languages = require('../../lib/languages')
  3. const { productMap } = require('../../lib/all-products')
  4. const enterpriseServerReleases = require('../../lib/enterprise-server-releases')
  5. function allowIndex (path) {
  6. return !blockIndex(path)
  7. }
  8. describe('block robots', () => {
  9. it('allows crawling of the homepage and English content', async () => {
  10. expect(allowIndex('/')).toBe(true)
  11. expect(allowIndex('/en')).toBe(true)
  12. expect(allowIndex('/en/articles/verifying-your-email-address')).toBe(true)
  13. })
  14. it('allows crawling of generally available localized content', async () => {
  15. Object.values(languages)
  16. .filter(language => !language.wip)
  17. .forEach(language => {
  18. expect(allowIndex(`/${language.code}`)).toBe(true)
  19. expect(allowIndex(`/${language.code}/articles/verifying-your-email-address`)).toBe(true)
  20. })
  21. })
  22. it('disallows crawling of WIP localized content', async () => {
  23. Object.values(languages)
  24. .filter(language => language.wip)
  25. .forEach(language => {
  26. expect(allowIndex(`/${language.code}`)).toBe(false)
  27. expect(allowIndex(`/${language.code}/articles/verifying-your-email-address`)).toBe(false)
  28. })
  29. })
  30. it('disallows crawling of WIP products', async () => {
  31. const wipProductIds = Object.values(productMap)
  32. .filter(product => product.wip)
  33. .map(product => product.id)
  34. wipProductIds.forEach(id => {
  35. const { href } = productMap[id]
  36. const blockedPaths = [
  37. // English
  38. `/en${href}`,
  39. `/en${href}/overview`,
  40. `/en${href}/overview/intro`,
  41. `/en/enterprise/${enterpriseServerReleases.latest}/user${href}`,
  42. `/en/enterprise/${enterpriseServerReleases.oldestSupported}/user${href}`,
  43. // Japanese
  44. `/ja${href}`,
  45. `/ja${href}/overview`,
  46. `/ja${href}/overview/intro`,
  47. `/ja/enterprise/${enterpriseServerReleases.latest}/user${href}`,
  48. `/ja/enterprise/${enterpriseServerReleases.oldestSupported}/user${href}`
  49. ]
  50. blockedPaths.forEach(path => {
  51. expect(allowIndex(path)).toBe(false)
  52. })
  53. })
  54. })
  55. it('disallows crawling of early access "hidden" products', async () => {
  56. const hiddenProductIds = Object.values(productMap)
  57. .filter(product => product.hidden)
  58. .map(product => product.id)
  59. hiddenProductIds.forEach(id => {
  60. const { versions } = productMap[id]
  61. const blockedPaths = versions.map(version => {
  62. return [
  63. // English
  64. `/en/${version}/${id}`,
  65. `/en/${version}/${id}/some-early-access-article`,
  66. // Japanese
  67. `/ja/${version}/${id}`,
  68. `/ja/${version}/${id}/some-early-access-article`
  69. ]
  70. }).flat()
  71. blockedPaths.forEach(path => {
  72. expect(allowIndex(path)).toBe(false)
  73. })
  74. })
  75. })
  76. it('allows crawling of non-WIP products', async () => {
  77. expect('actions' in productMap).toBe(true)
  78. expect(allowIndex('/en/actions')).toBe(true)
  79. expect(allowIndex('/en/actions/overview')).toBe(true)
  80. expect(allowIndex('/en/actions/overview/intro')).toBe(true)
  81. expect(allowIndex(`/en/enterprise/${enterpriseServerReleases.latest}/user/actions`)).toBe(true)
  82. expect(allowIndex(`/en/enterprise/${enterpriseServerReleases.oldestSupported}/user/actions`)).toBe(true)
  83. })
  84. it('disallows crawling of deprecated enterprise releases', async () => {
  85. enterpriseServerReleases.deprecated.forEach(version => {
  86. const blockedPaths = [
  87. // English
  88. `/en/enterprise-server@${version}/actions`,
  89. `/en/enterprise/${version}/actions`,
  90. `/en/enterprise-server@${version}/actions/overview`,
  91. `/en/enterprise/${version}/actions/overview`,
  92. // Japanese
  93. `/ja/enterprise-server@${version}/actions`,
  94. `/ja/enterprise/${version}/actions`,
  95. `/ja/enterprise-server@${version}/actions/overview`,
  96. `/ja/enterprise/${version}/actions/overview`
  97. ]
  98. blockedPaths.forEach(path => {
  99. expect(allowIndex(path)).toBe(false)
  100. })
  101. })
  102. })
  103. })
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...