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);
+ });
+});