next.js
6aa3dbd2 - Fix: Image component ignores images.qualities in Jest environment (#89536)

Commit
49 days ago
Fix: Image component ignores images.qualities in Jest environment (#89536) - Fixes #89492 - Fixes #18415 ## Problem When testing Next.js <Image /> components with Jest, custom images.qualities configured in next.config.js are ignored, causing: - Image URLs to use default quality (q=75) instead of configured values - Warning: "Image with src ... is using quality X which is not configured in images.qualities [75]" ### Root Cause In production and development, Next.js uses webpack's DefinePlugin to inject the image configuration via process.env.__NEXT_IMAGE_OPTS. However, *Jest tests don't use webpack*, so process.env.__NEXT_IMAGE_OPTS is undefined, causing the Image component to fall back to default configuration. ## Solution This PR implements a two-part fix: 1. *Jest globals population* (packages/next/src/build/jest/jest.ts): - Expose nextConfig.images via Jest globals.__NEXT_IMAGE_OPTS 2. *Runtime fallback* (image components): - When process.env.__NEXT_IMAGE_OPTS is undefined, fall back to globalThis.__NEXT_IMAGE_OPTS - Applied to: - packages/next/src/client/image-component.tsx - packages/next/src/shared/lib/image-external.tsx - packages/next/src/client/legacy/image.tsx ## Changes - ✅ Minimal, targeted fix (4 files, ~40 lines) - ✅ No production/development behavior changes - ✅ No test-only conditionals or environment checks - ✅ Comprehensive test coverage added ## Testing Added test in test/production/app-dir/image-jest-qualities/ that: - Configures custom qualities [90, 100] in next.config.js - Renders <Image quality={100} /> in Jest with jsdom - Asserts generated image URLs contain q=100 not q=75 Test correctly *fails on canary* (shows warning about unconfigured quality) and *passes with fix*. ## Verification - ✅ New test passes with fix - ✅ Existing image tests unaffected - ✅ Addresses original issue reproduction exactly --------- Co-authored-by: Steven <steven@ceriously.com>
Author
Parents
Loading