diff --git a/app/components/OgImage/Compare.vue b/app/components/OgImage/Compare.vue new file mode 100644 index 0000000000..e02b328873 --- /dev/null +++ b/app/components/OgImage/Compare.vue @@ -0,0 +1,339 @@ + + + diff --git a/app/pages/compare.vue b/app/pages/compare.vue index 40f42775b7..bf3c62bc65 100644 --- a/app/pages/compare.vue +++ b/app/pages/compare.vue @@ -138,6 +138,11 @@ async function exportComparisonDataAsMarkdown() { await copy(markdown) } +defineOgImageComponent('Compare', { + packages: () => packages.value, + emptyDescription: () => $t('compare.packages.meta_description_empty'), +}) + const { announce } = useCommandPalette() useCommandPaletteContextCommands( diff --git a/test/nuxt/components/compare/FacetSelector.spec.ts b/test/nuxt/components/compare/FacetSelector.spec.ts index 623857f07c..0b7595ced8 100644 --- a/test/nuxt/components/compare/FacetSelector.spec.ts +++ b/test/nuxt/components/compare/FacetSelector.spec.ts @@ -100,6 +100,16 @@ vi.mock('@vueuse/router', () => ({ useRouteQuery: () => ref(''), })) +function findCategoryActionButton( + component: Awaited>, + category: string, + action: 'all' | 'none', +) { + return component.find( + `button[data-facet-category="${category}"][data-facet-category-action="${action}"]`, + ) +} + describe('FacetSelector', () => { beforeEach(() => { mockSelectedFacets.value = ['downloads', 'types'] @@ -232,16 +242,6 @@ describe('FacetSelector', () => { }) describe('category all/none buttons', () => { - function findCategoryActionButton( - component: Awaited>, - category: string, - action: 'all' | 'none', - ) { - return component.find( - `button[data-facet-category="${category}"][data-facet-category-action="${action}"]`, - ) - } - it('calls selectCategory when all button is clicked', async () => { const component = await mountSuspended(FacetSelector) diff --git a/test/unit/a11y-component-coverage.spec.ts b/test/unit/a11y-component-coverage.spec.ts index 6100cc04dc..1029590fd1 100644 --- a/test/unit/a11y-component-coverage.spec.ts +++ b/test/unit/a11y-component-coverage.spec.ts @@ -25,6 +25,7 @@ const SKIPPED_COMPONENTS: Record = { 'OgImage/BlogPost.vue': 'OG Image component - server-rendered image, not interactive UI', 'OgImage/Default.vue': 'OG Image component - server-rendered image, not interactive UI', 'OgImage/Package.vue': 'OG Image component - server-rendered image, not interactive UI', + 'OgImage/Compare.vue': 'OG Image component - server-rendered image, not interactive UI', // Client-only components with complex dependencies 'Header/AuthModal.client.vue': 'Complex auth modal with navigation - requires full app context',