diff --git a/apps/guides/__tests__/layout.metadata.test.ts b/apps/guides/__tests__/layout.metadata.test.ts new file mode 100644 index 0000000000..2d952f7a97 --- /dev/null +++ b/apps/guides/__tests__/layout.metadata.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest'; +import { siteConfig } from '../lib/config'; +import { guidesMetadata as metadata } from '../lib/metadata'; + +describe('guides metadata', () => { + it('includes absolute Open Graph and Twitter image URLs', () => { + const expectedImageUrl = new URL('/opengraph-image.png', siteConfig.url).toString(); + + expect(metadata.openGraph?.images).toEqual([ + { + url: expectedImageUrl, + width: 1200, + height: 630, + alt: 'PackRat Guides | Hiking & Outdoor Adventures', + }, + ]); + + expect(metadata.twitter?.images).toEqual([ + new URL('/twitter-image.png', siteConfig.url).toString(), + ]); + }); +}); diff --git a/apps/guides/lib/metadata.ts b/apps/guides/lib/metadata.ts index f0e826959d..bd6b6e70d8 100644 --- a/apps/guides/lib/metadata.ts +++ b/apps/guides/lib/metadata.ts @@ -27,14 +27,21 @@ export const guidesMetadata: Metadata = { siteName: 'PackRat Guides', title: 'PackRat Guides | Hiking & Outdoor Adventures', description: 'Expert hiking and outdoor guides to help you prepare for your next adventure', - images: [{ url: '/og-image.png', width: 1200, height: 630, alt: 'PackRat Guides' }], + images: [ + { + url: new URL('/opengraph-image.png', siteConfig.url).toString(), + width: 1200, + height: 630, + alt: 'PackRat Guides | Hiking & Outdoor Adventures', + }, + ], }, twitter: { card: 'summary_large_image', title: 'PackRat Guides | Hiking & Outdoor Adventures', description: 'Expert hiking and outdoor guides to help you prepare for your next adventure', creator: '@packratai', - images: ['/og-image.png'], + images: [new URL('/twitter-image.png', siteConfig.url).toString()], }, icons: { icon: [{ url: '/PackRatGuides.ico', type: 'image/x-icon' }], diff --git a/apps/landing/__tests__/layout.metadata.test.ts b/apps/landing/__tests__/layout.metadata.test.ts new file mode 100644 index 0000000000..1c2d8078d1 --- /dev/null +++ b/apps/landing/__tests__/layout.metadata.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from 'vitest'; +import { siteConfig } from '../config/site'; +import { landingMetadata as metadata } from '../lib/metadata'; + +describe('landing metadata', () => { + it('includes absolute Open Graph and Twitter image URLs', () => { + const expectedImageUrl = new URL('/opengraph-image.png', siteConfig.url).toString(); + + expect(metadata.openGraph?.images).toEqual([ + { + url: expectedImageUrl, + width: 1200, + height: 630, + alt: siteConfig.name, + }, + ]); + + expect(metadata.twitter?.images).toEqual([ + new URL('/twitter-image.png', siteConfig.url).toString(), + ]); + }); +}); diff --git a/apps/landing/lib/metadata.ts b/apps/landing/lib/metadata.ts index 7dce150a79..35aa479a04 100644 --- a/apps/landing/lib/metadata.ts +++ b/apps/landing/lib/metadata.ts @@ -18,14 +18,21 @@ export const landingMetadata: Metadata = { title: siteConfig.name, description: siteConfig.description, siteName: siteConfig.name, - images: [{ url: '/og-image.png', width: 1200, height: 630, alt: siteConfig.name }], + images: [ + { + url: new URL('/opengraph-image.png', siteConfig.url).toString(), + width: 1200, + height: 630, + alt: siteConfig.name, + }, + ], }, twitter: { card: 'summary_large_image', title: siteConfig.name, description: siteConfig.description, creator: siteConfig.twitterHandle, - images: ['/og-image.png'], + images: [new URL('/twitter-image.png', siteConfig.url).toString()], }, icons: { icon: '/PackRat.ico',