diff --git a/test/integration/image-optimizer/test/index.test.js b/test/integration/image-optimizer/test/index.test.js index 2b095c2d0225864..0e73ecb56446cee 100644 --- a/test/integration/image-optimizer/test/index.test.js +++ b/test/integration/image-optimizer/test/index.test.js @@ -380,6 +380,44 @@ function runTests({ w, isDev, domains }) { expect(json2).toStrictEqual(json1) }) + it('should use cached image file when parameters are the same for svg', async () => { + await fs.remove(imagesDir) + + const query = { url: '/test.svg', w, q: 80 } + const opts = { headers: { accept: 'image/webp' } } + + const res1 = await fetchViaHTTP(appPort, '/_next/image', query, opts) + expect(res1.status).toBe(200) + expect(res1.headers.get('Content-Type')).toBe('image/svg+xml') + const json1 = await fsToJson(imagesDir) + expect(Object.keys(json1).length).toBe(1) + + const res2 = await fetchViaHTTP(appPort, '/_next/image', query, opts) + expect(res2.status).toBe(200) + expect(res2.headers.get('Content-Type')).toBe('image/svg+xml') + const json2 = await fsToJson(imagesDir) + expect(json2).toStrictEqual(json1) + }) + + it('should use cached image file when parameters are the same for animated gif', async () => { + await fs.remove(imagesDir) + + const query = { url: '/animated.gif', w, q: 80 } + const opts = { headers: { accept: 'image/webp' } } + + const res1 = await fetchViaHTTP(appPort, '/_next/image', query, opts) + expect(res1.status).toBe(200) + expect(res1.headers.get('Content-Type')).toBe('image/gif') + const json1 = await fsToJson(imagesDir) + expect(Object.keys(json1).length).toBe(1) + + const res2 = await fetchViaHTTP(appPort, '/_next/image', query, opts) + expect(res2.status).toBe(200) + expect(res2.headers.get('Content-Type')).toBe('image/gif') + const json2 = await fsToJson(imagesDir) + expect(json2).toStrictEqual(json1) + }) + it('should set 304 status without body when etag matches if-none-match', async () => { const query = { url: '/test.jpg', w, q: 80 } const opts1 = { headers: { accept: 'image/webp' } }