From 1b3c476dd434733d56c6f6ccbee4e529f4c1d6af Mon Sep 17 00:00:00 2001 From: root Date: Wed, 29 Jul 2026 00:01:18 -0400 Subject: [PATCH] fix production favicon issue --- apps/homepage/src/app/favicon.ico/route.ts | 6 +++++ .../homepage/tests/unit/favicon-route.test.ts | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 apps/homepage/src/app/favicon.ico/route.ts create mode 100644 apps/homepage/tests/unit/favicon-route.test.ts diff --git a/apps/homepage/src/app/favicon.ico/route.ts b/apps/homepage/src/app/favicon.ico/route.ts new file mode 100644 index 0000000..11c78e8 --- /dev/null +++ b/apps/homepage/src/app/favicon.ico/route.ts @@ -0,0 +1,6 @@ +import { NextResponse } from 'next/server'; + +export function GET(request: Request) { + const url = new URL('/rentaldrivego.png', request.url); + return NextResponse.redirect(url); +} diff --git a/apps/homepage/tests/unit/favicon-route.test.ts b/apps/homepage/tests/unit/favicon-route.test.ts new file mode 100644 index 0000000..856cb2a --- /dev/null +++ b/apps/homepage/tests/unit/favicon-route.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it, vi } from 'vitest'; + +const nextServer = vi.hoisted(() => ({ + redirect: vi.fn((url: URL) => ({ kind: 'redirect', url: url.toString() })), +})); + +vi.mock('next/server', () => ({ + NextResponse: { + redirect: nextServer.redirect, + }, +})); + +describe('homepage favicon route', () => { + it('redirects root favicon requests to the existing brand icon asset', async () => { + const { GET } = await import('../../src/app/favicon.ico/route'); + + const response = GET(new Request('https://rentaldrivego.ma/favicon.ico')); + + expect(response).toEqual({ kind: 'redirect', url: 'https://rentaldrivego.ma/rentaldrivego.png' }); + expect(nextServer.redirect).toHaveBeenCalledTimes(1); + }); +});