diff --git a/docs/.i18n/zh-Hans-navigation.json b/docs/.i18n/zh-Hans-navigation.json index 9bc6e12f72cf..12e4f6af7f7b 100644 --- a/docs/.i18n/zh-Hans-navigation.json +++ b/docs/.i18n/zh-Hans-navigation.json @@ -501,7 +501,12 @@ { "group": "项目", "pages": ["zh-CN/reference/credits"] - }, + } + ] + }, + { + "tab": "发布与 CI", + "groups": [ { "group": "发布策略", "pages": ["zh-CN/reference/RELEASING", "zh-CN/reference/test"] diff --git a/docs/docs.json b/docs/docs.json index 612221f4e635..45e0abed6999 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -2007,7 +2007,12 @@ "pages": [ "reference/pull-request-review-flow" ] - }, + } + ] + }, + { + "tab": "Release & CI", + "groups": [ { "group": "Release and CI", "pages": [ diff --git a/test/scripts/docs-sync-publish.test.ts b/test/scripts/docs-sync-publish.test.ts index 52e91595a9d2..932388dc36d5 100644 --- a/test/scripts/docs-sync-publish.test.ts +++ b/test/scripts/docs-sync-publish.test.ts @@ -116,7 +116,10 @@ describe("docs-sync-publish", () => { navigation: { languages: Array<{ language: string; - tabs: Array<{ tab: string; groups?: Array<{ group: string }> }>; + tabs: Array<{ + tab: string; + groups?: Array<{ group: string; pages?: unknown }>; + }>; }>; }; }; @@ -129,6 +132,28 @@ describe("docs-sync-publish", () => { expect(english).toBeDefined(); expect(simplifiedChinese).toBeDefined(); expect(german).toBeDefined(); + expect(english!.tabs.slice(-4).map((tab) => tab.tab)).toEqual([ + "Gateway & Ops", + "Reference", + "Release & CI", + "Help", + ]); + + const releaseRoutes = [ + "releases/index", + "releases/2026.7.1", + "releases/2026.6.11", + "maturity/scorecard", + "maturity/taxonomy", + "reference/RELEASING", + "reference/full-release-validation", + "reference/release-performance-sweep", + "reference/test", + "ci", + "help/scripts", + ]; + const releaseTab = english!.tabs.find((tab) => tab.tab === "Release & CI"); + expect(collectPages(releaseTab)).toEqual(releaseRoutes); const englishWithoutClawHub = { ...english, @@ -140,6 +165,13 @@ describe("docs-sync-publish", () => { expect(collectPages(simplifiedChinese).toSorted()).toEqual(expectedZhPages); expect(simplifiedChinese!.tabs[0]?.tab).toBe("快速开始"); expect(simplifiedChinese!.tabs[0]?.groups?.[0]?.group).toBe("首页"); + const simplifiedChineseReleaseTab = simplifiedChinese!.tabs.find( + (tab) => tab.tab === "发布与 CI", + ); + expect(simplifiedChineseReleaseTab?.groups?.[0]?.group).toBe("发布策略"); + expect(collectPages(simplifiedChineseReleaseTab)).toEqual( + releaseRoutes.map((page) => `zh-CN/${page}`), + ); expect(collectPages(german)).toHaveLength(collectPages(englishWithoutClawHub).length); expect(german!.tabs[0]?.tab).toBe("Loslegen");