File tree Expand file tree Collapse file tree 2 files changed +29
-3
lines changed
Expand file tree Collapse file tree 2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change 1- import type { ModuleReplacement } from 'module-replacements'
1+ import type { ModuleReplacement , ModuleReplacementMapping } from 'module-replacements'
22
33export interface ReplacementSuggestion {
44 forPackage : string
@@ -41,8 +41,8 @@ export function useCompareReplacements(packageNames: MaybeRefOrGetter<string[]>)
4141 const results = await Promise . all (
4242 namesToCheck . map ( async name => {
4343 try {
44- const replacement = await $fetch < ModuleReplacement | null > ( `/api/replacements/${ name } ` )
45- return { name, replacement }
44+ const result = await $fetch < { mapping : ModuleReplacementMapping ; replacement : ModuleReplacement } | null > ( `/api/replacements/${ name } ` )
45+ return { name, replacement : result ?. replacement ?? null }
4646 } catch {
4747 return { name, replacement : null }
4848 }
Original file line number Diff line number Diff line change 1+ import { expect , test } from './test-utils'
2+
3+ test . describe ( 'Compare page - replacement suggestions' , ( ) => {
4+ test ( 'shows "Consider no dep?" box for packages with native/simple replacements' , async ( {
5+ page,
6+ goto,
7+ } ) => {
8+ // is-odd has a 'simple' replacement in module-replacements v3
9+ await goto ( '/compare?packages=is-odd,is-even' , { waitUntil : 'hydration' } )
10+
11+ // The suggestion box should appear after client-side fetch resolves
12+ // Button text comes from $t('package.replacement.consider_no_dep')
13+ const considerNoDepButton = page . getByRole ( 'button' , { name : / c o n s i d e r n o d e p / i } )
14+ await expect ( considerNoDepButton ) . toBeVisible ( { timeout : 15_000 } )
15+ } )
16+
17+ test ( 'does not show "Consider no dep?" box for packages without replacements' , async ( {
18+ page,
19+ goto,
20+ } ) => {
21+ await goto ( '/compare?packages=nuxt,vue' , { waitUntil : 'hydration' } )
22+
23+ const considerNoDepButton = page . getByRole ( 'button' , { name : / c o n s i d e r n o d e p / i } )
24+ await expect ( considerNoDepButton ) . not . toBeVisible ( { timeout : 10_000 } )
25+ } )
26+ } )
You can’t perform that action at this time.
0 commit comments