Visitar URL original
Repo sync by docs-bot · Pull Request #46195 · github/docs · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dbc15b2
Merge pull request #63682 from github/repo-sync
docs-bot Oct 5, 2026
74526f5
Close OS PRs not targeting main on a schedule (#63679)
subatoi Oct 5, 2026
53aea1e
Update the GHES deprecation runbook from the 3.17 run (#63587)
heiskr Oct 5, 2026
43e2031
Fix GHD022 handling of ifversion not conditions (#63656)
heiskr Oct 5, 2026
248ce07
Unskip GHD022 test for all-versions feature conditions (#63657)
heiskr Oct 5, 2026
94a53bb
Remove unused validateIfversionConditionalsVersions (#63658)
heiskr Oct 5, 2026
c5a7a29
Flag GHD022 feature conditions that cover all versions with products …
heiskr Oct 5, 2026
8efb0b1
Remove skipped webhook payload example test (#63661)
heiskr Oct 5, 2026
8ec6dd1
Unskip sidebar custom link tests (#63662)
heiskr Oct 5, 2026
e8b0a57
Fix and unskip category pages test (#63665)
heiskr Oct 5, 2026
b4bd00d
Replace skipped languages search test with a Japanese search page tes…
heiskr Oct 5, 2026
5a41e5d
Keep GHES ranges in GHD022 condition fixes (#63668)
heiskr Oct 5, 2026
b1bc867
Add exported repository rulesets (#63517)
heiskr Oct 5, 2026
1230337
Copilot dynamic workflows: small addition about availability (#63681)
hubwriter Oct 5, 2026
d58d5e3
Remove redundant ifversion tags from GitHub App transfer article (#63…
heiskr Oct 5, 2026
b9ef095
Add aspire.dev to Copilot cloud agent allowlist (#63667)
timrogers Oct 5, 2026
4a5124b
Allow 10 category directory names to differ from titles (#63664)
heiskr Oct 5, 2026
b7184a2
Follow-up to add section on GitHub's role in incident response (we d…
chiph Oct 5, 2026
eb102ab
Sync secret scanning data (#63686)
docs-bot Oct 5, 2026
2e3a124
GraphQL schema update (#63689)
docs-bot Oct 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix and unskip category pages test (#63665)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3725887d-99f1-4760-b935-f3fe2443bbd6
  • Loading branch information
heiskr and Copilot authored Oct 5, 2026
commit e8b0a578ec45b3aecddc9f6f899d3420969a0761
1 change: 1 addition & 0 deletions content/admin/managing-iam/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ redirect_from:
- /enterprise/admin/authentication
- /admin/authentication
- /admin/identity-and-access-management
allowTitleToDifferFromFilename: true
versions:
ghec: '*'
ghes: '*'
Expand Down
1 change: 1 addition & 0 deletions content/codespaces/about-codespaces/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: 'Getting started with {% data variables.product.prodname_github_codespaces %}'
shortTitle: Getting started
intro: 'Learn how to get started with {% data variables.product.prodname_github_codespaces %}, then find out more about how a codespace works.'
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
ghec: '*'
Expand Down
1 change: 1 addition & 0 deletions content/get-started/learning-to-code/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Learn to code with GitHub Copilot
shortTitle: Learn to code
intro: "Learn how {% data variables.product.github %} and {% data variables.product.prodname_copilot_short %} can help you build programming skills, write better code, and ship secure projects."
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
layout: journey-landing
Expand Down
1 change: 1 addition & 0 deletions content/migrations/ado/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Migrating from Azure DevOps
shortTitle: Migrate from Azure DevOps
intro: Plan and execute a migration from Azure DevOps to {% data variables.product.prodname_ghe_cloud %}. This six-part guide explains how to configure access, migrate, and the follow-up tasks needed to get your repositories ready for work.
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
ghec: '*'
Expand Down
1 change: 1 addition & 0 deletions content/migrations/elm/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Live migrations from GitHub Enterprise Server to GHE.com
shortTitle: Live migrations (GHES to GHE.com)
intro: 'Use the Enterprise Live Migrations tool to migrate repositories with minimal downtime for developers.'
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
ghec: '*'
Expand Down
1 change: 1 addition & 0 deletions content/migrations/troubleshooting/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Troubleshooting migrations
shortTitle: Troubleshoot migrations
intro: 'Troubleshoot common issues when migrating repositories with {% data variables.product.prodname_importer_proper_name %}.'
allowTitleToDifferFromFilename: true
versions:
ghec: '*'
children:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Open Source Projects for Good
intro: Nonprofit organizations can partner with open source collaborators to build solutions together.
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
children:
Expand Down
1 change: 1 addition & 0 deletions content/nonprofit/nonprofit-enterprise-plan/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: GitHub Enterprise Cloud for nonprofits
intro: Learn how to apply for a discounted GitHub Enterprise Cloud plan for nonprofits.
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
shortTitle: Discounted GitHub Enterprise Cloud plan for nonprofits
Expand Down
1 change: 1 addition & 0 deletions content/nonprofit/nonprofit-teams-plan/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: GitHub Team plan for nonprofits
intro: Learn how to apply for a free GitHub Team plan for nonprofits.
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
shortTitle: Free GitHub Team plan for nonprofits
Expand Down
1 change: 1 addition & 0 deletions content/nonprofit/troubleshooting/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: Frequently asked questions
intro: Troubleshooting for GitHub for Nonprofits applications
allowTitleToDifferFromFilename: true
versions:
fpt: '*'
children:
Expand Down
47 changes: 9 additions & 38 deletions src/content-linter/tests/category-pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { beforeAll, describe, expect, test } from 'vitest'

import matter from '@/frame/lib/read-frontmatter'
import { renderContent } from '@/content-render/index'
import getApplicableVersions from '@/versions/lib/get-applicable-versions'
import contextualize from '@/frame/middleware/context/context'
import shortVersions from '@/versions/middleware/short-versions'
import { ROOT } from '@/frame/lib/constants'
Expand All @@ -26,7 +25,7 @@ function getFrontmatterData(markdown: string): MarkdownFrontmatter {
return parsed.data as MarkdownFrontmatter
}

describe.skip('category pages', () => {
describe('category pages', () => {
const walkOptions = {
globs: ['*/index.md', 'enterprise/*/index.md'],
ignore: [
Expand Down Expand Up @@ -76,14 +75,10 @@ describe.skip('category pages', () => {
(indexRelPath, indexAbsPath, indexLink) => {
let publishedArticlePaths: string[] = []
let availableArticlePaths: string[] = []
let categoryVersions: string[] = []

let allowTitleToDifferFromFilename: boolean | undefined = false
let indexTitle: string = ''
let indexShortTitle: string = ''
const articleVersions: {
[articlePath: string]: string[]
} = {}

beforeAll(async () => {
const categoryDir = path.dirname(indexAbsPath)
Expand All @@ -92,7 +87,6 @@ describe.skip('category pages', () => {
const parsed = matter(indexContents)
if (!parsed.data) throw new Error('No frontmatter')
const categoryData = parsed.data as MarkdownFrontmatter
categoryVersions = getApplicableVersions(categoryData.versions, indexAbsPath)
allowTitleToDifferFromFilename = categoryData.allowTitleToDifferFromFilename
const articleLinks = categoryData.children.filter((child) => {
const mdPath = getPath(productDir, indexLink, child)
Expand All @@ -112,17 +106,14 @@ describe.skip('category pages', () => {
await contextualize(req as ExtendedRequest, res as Response, next)
await shortVersions(req as ExtendedRequest, res as Response, next)

const productIndexContents = await fs.promises.readFile(productIndex, 'utf8')
const productIndexData = getFrontmatterData(productIndexContents)
indexTitle = categoryData.title.includes('{')
? await renderContent(categoryData.title, req.context, { textOnly: true })
: categoryData.title

indexTitle = productIndexData.title.includes('{')
? await renderContent(productIndexData.title, req.context, { textOnly: true })
: productIndexData.title

if (productIndexData.shortTitle) {
indexShortTitle = productIndexData.shortTitle.includes('{')
? await renderContent(productIndexData.shortTitle, req.context, { textOnly: true })
: productIndexData.shortTitle
if (categoryData.shortTitle) {
indexShortTitle = categoryData.shortTitle.includes('{')
? await renderContent(categoryData.shortTitle, req.context, { textOnly: true })
: categoryData.shortTitle
} else {
indexShortTitle = ''
}
Expand All @@ -145,7 +136,7 @@ describe.skip('category pages', () => {

const childEntries = await fs.promises.readdir(categoryDir, { withFileTypes: true })
const childFileEntries = childEntries.filter(
(ent) => ent.isFile() && ent.name !== 'index.md',
(ent) => ent.isFile() && ent.name.endsWith('.md') && ent.name !== 'index.md',
)
const childFilePaths = childFileEntries.map((ent) => path.join(categoryDir, ent.name))

Expand All @@ -163,18 +154,6 @@ describe.skip('category pages', () => {
}),
)
).filter(Boolean) as string[]

await Promise.all(
childFilePaths.map(async (articlePath) => {
const articleContents = await fs.promises.readFile(articlePath, 'utf8')
const versionData = getFrontmatterData(articleContents)

articleVersions[articlePath] = getApplicableVersions(
versionData.versions,
articlePath,
) as string[]
}),
)
})

test('contains all expected articles', () => {
Expand All @@ -189,14 +168,6 @@ describe.skip('category pages', () => {
expect(unexpectedArticles.length, errorMessage).toBe(0)
})

test('contains only articles and subcategories with versions that are also available in the parent category', () => {
for (const [articleName, versions] of Object.entries(articleVersions)) {
const unexpectedVersions = difference(versions, categoryVersions)
const errorMessage = `${articleName} has versions that are not available in parent category`
expect(unexpectedVersions.length, errorMessage).toBe(0)
}
})

test('slugified title matches parent directory name', () => {
if (allowTitleToDifferFromFilename) return

Expand Down