Skip to content

Commit 5e39120

Browse files
authored
release notes: add version selector and fix UI bug (#231)
* release notes: add version selector and fix UI bug * fix test * fix test
1 parent 49395f9 commit 5e39120

File tree

16 files changed

+269
-91
lines changed

16 files changed

+269
-91
lines changed

.github/copilot-instructions.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export default ComponentName;
108108

109109
- Uses `next-intl` for translations
110110
- Locale files in `locales/` directory
111+
- Only add en-GB translations when UK-specific spelling or wording is required
111112
- Route structure: `app/[locale]/...`
112113
- Access translations: `const t = useTranslations('namespace')`
113114

locales/de.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@
213213
"title": "Versionshinweise",
214214
"couldnt-find-release-notes": "Hoppla... Wir konnten diese Versionshinweise nicht finden",
215215
"not-found-helper": "Bitte stellen Sie sicher, dass Sie eine Version mit dem URL-Parameter 'version' angegeben haben:",
216-
"description": "Dieser Abschnitt ordnet die Änderungen der ausgewählten Update-Version nach Hauptkomponenten, unter denen die jeweiligen Probleme erfasst sind."
216+
"description": "Dieser Abschnitt ordnet die Änderungen der ausgewählten Update-Version nach Hauptkomponenten, unter denen die jeweiligen Probleme erfasst sind.",
217+
"selectVersion": "Temurin-Version auswählen",
218+
"selectVersionDescription": "Wählen Sie eine Temurin-Version aus, um die neuesten Versionshinweise anzuzeigen:",
219+
"viewReleaseNotes": "Versionshinweise anzeigen →"
217220
}
218221
}

locales/en.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,9 @@
205205
"title": "Release Notes",
206206
"couldnt-find-release-notes": "Oops... We couldn't find those release notes",
207207
"not-found-helper": "Please ensure that you have a specified a version using the version URL parameter:",
208-
"description": "This section organizes the changes in the selected update release by the main component under which each issue is filed."
208+
"description": "This section organizes the changes in the selected update release by the main component under which each issue is filed.",
209+
"selectVersion": "Select a Temurin Version",
210+
"selectVersionDescription": "Choose a Temurin version to view its latest release notes:",
211+
"viewReleaseNotes": "View Release Notes →"
209212
}
210213
}

locales/es.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@
213213
"title": "Notas de la versión",
214214
"couldnt-find-release-notes": "Vaya... No pudimos encontrar esas notas de la versión",
215215
"not-found-helper": "Asegúrate de haber especificado una versión utilizando el parámetro de URL 'version':",
216-
"description": "Esta sección organiza los cambios de la versión seleccionada por el componente principal bajo el cual se registró cada incidencia."
216+
"description": "Esta sección organiza los cambios de la versión seleccionada por el componente principal bajo el cual se registró cada incidencia.",
217+
"selectVersion": "Seleccionar una versión de Temurin",
218+
"selectVersionDescription": "Elige una versión de Temurin para ver sus últimas notas de versión:",
219+
"viewReleaseNotes": "Ver notas de versión →"
217220
}
218221
}

locales/fr.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,10 @@
212212
"ReleaseNotes": {
213213
"title": "Notes de version",
214214
"couldnt-find-release-notes": "Oups... Nous n'avons pas trouvé ces notes de version",
215-
"not-found-helper": "Veuillez vérifier que vous avez spécifié une version à l’aide du paramètre d’URL 'version' :",
216-
"description": "Cette section organise les changements de la mise à jour sélectionnée selon le composant principal associé à chaque problème."
215+
"not-found-helper": "Veuillez vérifier que vous avez spécifié une version à l'aide du paramètre d'URL 'version' :",
216+
"description": "Cette section organise les changements de la mise à jour sélectionnée selon le composant principal associé à chaque problème.",
217+
"selectVersion": "Sélectionner une version de Temurin",
218+
"selectVersionDescription": "Choisissez une version de Temurin pour voir ses dernières notes de version :",
219+
"viewReleaseNotes": "Voir les notes de version →"
217220
}
218221
}

locales/pt-BR.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@
213213
"title": "Notas da versão",
214214
"couldnt-find-release-notes": "Ops... Não conseguimos encontrar essas notas da versão",
215215
"not-found-helper": "Certifique-se de que você especificou uma versão usando o parâmetro de URL 'version':",
216-
"description": "Esta seção organiza as alterações da atualização selecionada pelo componente principal ao qual cada item está relacionado."
216+
"description": "Esta seção organiza as alterações da atualização selecionada pelo componente principal ao qual cada item está relacionado.",
217+
"selectVersion": "Selecionar uma versão do Temurin",
218+
"selectVersionDescription": "Escolha uma versão do Temurin para ver suas últimas notas de versão:",
219+
"viewReleaseNotes": "Ver notas da versão →"
217220
}
218221
}

locales/zh-CN.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,9 @@
213213
"title": "版本说明",
214214
"couldnt-find-release-notes": "哎呀……我们找不到这些版本说明",
215215
"not-found-helper": "请确保您已使用版本 URL 参数指定了版本:",
216-
"description": "本节根据每个问题所属的主要组件,整理了所选更新版本中的更改内容。"
216+
"description": "本节根据每个问题所属的主要组件,整理了所选更新版本中的更改内容。",
217+
"selectVersion": "选择 Temurin 版本",
218+
"selectVersionDescription": "选择一个 Temurin 版本以查看其最新的版本说明:",
219+
"viewReleaseNotes": "查看版本说明 →"
217220
}
218221
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use client"
2+
3+
import React from "react"
4+
import { useSearchParams } from "next/navigation"
5+
import ReleaseNotesRender from "@/components/ReleaseNotesRender"
6+
import ReleaseNotesVersionSelector from "@/components/ReleaseNotesVersionSelector"
7+
8+
interface AvailableReleases {
9+
available_lts_releases: number[]
10+
available_releases: number[]
11+
most_recent_feature_release: number
12+
most_recent_feature_version: number
13+
most_recent_lts: number
14+
tip_version: number
15+
}
16+
17+
interface ReleaseNotesPageClientProps {
18+
availableReleases: AvailableReleases
19+
}
20+
21+
const ReleaseNotesPageClient: React.FC<ReleaseNotesPageClientProps> = ({
22+
availableReleases
23+
}) => {
24+
const searchParams = useSearchParams()
25+
const version = searchParams.get("version")
26+
27+
// If no version is specified, show the version selector
28+
if (!version) {
29+
return (
30+
<ReleaseNotesVersionSelector
31+
availableVersions={availableReleases.available_releases}
32+
availableLTSVersions={availableReleases.available_lts_releases}
33+
/>
34+
)
35+
}
36+
37+
// If a version is specified, show the release notes
38+
return <ReleaseNotesRender />
39+
}
40+
41+
export default ReleaseNotesPageClient

src/app/[locale]/temurin/release-notes/__tests__/__snapshots__/page.test.tsx.snap

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
exports[`TemurinPage > renders the release notes page with header and content 1`] = `
44
<div>
5-
<div>
5+
<div
6+
data-testid="temurin-release-notes-page"
7+
>
68
<div
79
class="relative pt-20 pb-8 md:pb-16 md:pt-32 overflow-hidden"
810
>
@@ -77,7 +79,9 @@ exports[`TemurinPage > renders the release notes page with header and content 1`
7779
</div>
7880
</div>
7981
</div>
80-
<div>
82+
<div
83+
data-testid="release-notes-content"
84+
>
8185
Release Notes Content
8286
</div>
8387
</div>

src/app/[locale]/temurin/release-notes/__tests__/page.test.tsx

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,40 @@ import { describe, it, expect, vi } from 'vitest';
22
import { render, screen } from '@testing-library/react';
33
import TemurinPage, { metadata } from '../page';
44

5-
vi.mock('next-intl', () => ({ useTranslations: () => (key: string) => key === 'title' ? 'Release Notes' : key }));
6-
vi.mock('@/components/ReleaseNotesRender', () => ({ default: () => <div>Release Notes Content</div> }));
5+
vi.mock('next-intl/server', () => ({
6+
getTranslations: vi.fn().mockImplementation(() =>
7+
Promise.resolve((key: string) => {
8+
if (key === 'title') return 'Release Notes';
9+
return key;
10+
})
11+
),
12+
}));
13+
14+
// Mock the fetchAvailableReleases function
15+
vi.mock('@/utils/fetchAvailableReleases', () => ({
16+
fetchAvailableReleases: () => Promise.resolve({
17+
available_lts_releases: [8, 11, 17, 21],
18+
available_releases: [8, 11, 17, 18, 19, 20, 21, 22, 23],
19+
most_recent_feature_release: 23,
20+
most_recent_feature_version: 23,
21+
most_recent_lts: 21,
22+
tip_version: 24
23+
})
24+
}));
25+
26+
// Mock the ReleaseNotesPageClient component
27+
vi.mock('../ReleaseNotesPageClient', () => ({
28+
default: () => <div data-testid="release-notes-content">Release Notes Content</div>
29+
}));
730

831

932
describe('TemurinPage', () => {
10-
it('renders the release notes page with header and content', () => {
11-
const { container } = render(<TemurinPage />);
33+
it('renders the release notes page with header and content', async () => {
34+
const { container } = render(await TemurinPage());
35+
expect(screen.getByTestId('temurin-release-notes-page')).toBeInTheDocument();
1236
expect(screen.getByText('Release Notes')).toBeInTheDocument();
13-
expect(screen.getByText('Release Notes Content')).toBeInTheDocument();
37+
expect(screen.getByText('Temurin')).toBeInTheDocument();
38+
expect(screen.getByTestId('release-notes-content')).toBeInTheDocument();
1439
expect(container).toMatchSnapshot();
1540
});
1641

0 commit comments

Comments
 (0)