[READ-ONLY] a fast, modern browser for the npm registry
at main 40 lines 1.3 kB view raw
1import process from 'node:process' 2import { addServerPlugin, createResolver, defineNuxtModule, useNuxt } from 'nuxt/kit' 3 4/** 5 * Test fixtures module for mocking external API requests. 6 * 7 * This module intercepts server-side requests to external APIs (npm registry, etc.) 8 * and serves pre-recorded fixture data instead. This ensures tests are deterministic 9 * and don't depend on external API availability. 10 * 11 * Enabled when: 12 * - `nuxt.options.test` is true (Nuxt test mode), OR 13 * - `NUXT_TEST_FIXTURES=true` environment variable is set 14 * 15 * Set `NUXT_TEST_FIXTURES_VERBOSE=true` for detailed logging. 16 * 17 * Note: This only mocks server-side requests. For client-side mocking in 18 * Playwright tests, see test/e2e/test-utils.ts. 19 */ 20export default defineNuxtModule({ 21 meta: { 22 name: 'fixtures', 23 }, 24 setup() { 25 const nuxt = useNuxt() 26 const resolver = createResolver(import.meta.url) 27 28 if (nuxt.options.test || process.env.NUXT_TEST_FIXTURES === 'true') { 29 addServerPlugin(resolver.resolve('./runtime/server/cache.ts')) 30 31 nuxt.hook('nitro:config', nitroConfig => { 32 nitroConfig.storage ||= {} 33 nitroConfig.storage['fixtures'] = { 34 driver: 'fsLite', 35 base: resolver.resolve('../test/fixtures'), 36 } 37 }) 38 } 39 }, 40})