From eb9db2afffc1c92c10be8374965623dc13993a44 Mon Sep 17 00:00:00 2001
From: Anthony GAEREMYNCK <1@anthony.sh>
Date: Sun, 2 Aug 2026 16:00:04 +0200
Subject: [PATCH] feat: add footer to the hub page
---
src/components/Footer.astro | 15 +++++++++++++++
src/pages/en/index.astro | 2 ++
src/pages/fr/index.astro | 2 ++
tests/footer.test.ts | 17 +++++++++++++++++
4 files changed, 36 insertions(+)
create mode 100644 src/components/Footer.astro
create mode 100644 tests/footer.test.ts
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
new file mode 100644
index 0000000..43eec92
--- /dev/null
+++ b/src/components/Footer.astro
@@ -0,0 +1,15 @@
+---
+import { getDictionary } from '../i18n';
+import type { Locale } from '../i18n/locale';
+
+interface Props {
+ locale: Locale;
+}
+
+const { locale } = Astro.props;
+const t = getDictionary(locale);
+const year = new Date().getFullYear();
+---
+
diff --git a/src/pages/en/index.astro b/src/pages/en/index.astro
index d9a2b38..cf6654b 100644
--- a/src/pages/en/index.astro
+++ b/src/pages/en/index.astro
@@ -1,6 +1,7 @@
---
import BaseLayout from '../../layouts/BaseLayout.astro';
import Header from '../../components/Header.astro';
+import Footer from '../../components/Footer.astro';
import ServiceCard from '../../components/ServiceCard.astro';
import { getDictionary } from '../../i18n';
import { services } from '../../i18n/services';
@@ -22,4 +23,5 @@ const t = getDictionary(locale);
+
diff --git a/src/pages/fr/index.astro b/src/pages/fr/index.astro
index cb49e6d..be1c3da 100644
--- a/src/pages/fr/index.astro
+++ b/src/pages/fr/index.astro
@@ -1,6 +1,7 @@
---
import BaseLayout from '../../layouts/BaseLayout.astro';
import Header from '../../components/Header.astro';
+import Footer from '../../components/Footer.astro';
import ServiceCard from '../../components/ServiceCard.astro';
import { getDictionary } from '../../i18n';
import { services } from '../../i18n/services';
@@ -22,4 +23,5 @@ const t = getDictionary(locale);
+
diff --git a/tests/footer.test.ts b/tests/footer.test.ts
new file mode 100644
index 0000000..b6c2a07
--- /dev/null
+++ b/tests/footer.test.ts
@@ -0,0 +1,17 @@
+import { describe, it, expect, beforeAll } from 'vitest';
+import { execSync } from 'node:child_process';
+import { readFileSync } from 'node:fs';
+
+describe('footer', () => {
+ beforeAll(() => {
+ execSync('npm run build', { stdio: 'inherit' });
+ });
+
+ it('renders the current year and brand name on both locales', () => {
+ const en = readFileSync('dist/en/index.html', 'utf-8');
+ const fr = readFileSync('dist/fr/index.html', 'utf-8');
+ const yearPattern = /©\s*\d{4}\s*Ombrora/;
+ expect(en).toMatch(yearPattern);
+ expect(fr).toMatch(yearPattern);
+ });
+});