Files
next.js/test/e2e/next-font/with-font-declarations-file.test.ts
4588a73542 Convert tests using createNext -> nextTestSetup (#93767)
## What?

Converts existing `createNext()` usage into `nextTestSetup()`. 

`createNext()` was the setup step we had before `nextTestSetup()` was
added.

This PR focused on the simple conversion cases. There will be a
follow-up to complete the last few.

---------

Co-authored-by: Cursor <[email protected]>
2026-05-12 13:16:31 +02:00

148 lines
4.4 KiB
TypeScript

import cheerio from 'cheerio'
import { nextTestSetup } from 'e2e-utils'
import { renderViaHTTP } from 'next-test-utils'
import { join } from 'path'
const mockedGoogleFontResponses = require.resolve(
'./google-font-mocked-responses.js'
)
const isDev = (global as any).isNextDev
describe('next/font/google with-font-declarations-file', () => {
if ((global as any).isNextDeploy) {
it('should skip next deploy for now', () => {})
return
}
const { next } = nextTestSetup({
files: join(__dirname, 'with-font-declarations-file'),
env: {
NEXT_FONT_GOOGLE_MOCKED_RESPONSES: mockedGoogleFontResponses,
},
})
test('preload correct files at /inter', async () => {
const html = await renderViaHTTP(next.url, '/inter')
const $ = cheerio.load(html)
// Preconnect
expect($('link[rel="preconnect"]').length).toBe(0)
if (isDev) {
// In dev all fonts will be preloaded since it's before DCE
expect($('link[as="font"]').length).toBe(4)
} else {
// Preload
expect($('link[as="font"]').length).toBe(
// TODO: Remove this once tree shaking PACK-4656
process.env.IS_TURBOPACK_TEST ? 4 : 2
)
// From /_app
expect($('link[as="font"]').get(0).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
// From /inter
expect($('link[as="font"]').get(1).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
}
})
test('preload correct files at /roboto', async () => {
const html = await renderViaHTTP(next.url, '/roboto')
const $ = cheerio.load(html)
// Preconnect
expect($('link[rel="preconnect"]').length).toBe(0)
if (isDev) {
// In dev all fonts will be preloaded since it's before DCE
expect($('link[as="font"]').length).toBe(4)
} else {
// Preload
expect($('link[as="font"]').length).toBe(
// TODO: Remove this once tree shaking PACK-4656
process.env.IS_TURBOPACK_TEST ? 4 : 2
)
// From /_app
expect($('link[as="font"]').get(0).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
// From /roboto
expect($('link[as="font"]').get(1).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
}
})
test('preload correct files at /local-font', async () => {
const html = await renderViaHTTP(next.url, '/local-font')
const $ = cheerio.load(html)
// Preconnect
expect($('link[rel="preconnect"]').length).toBe(0)
if (isDev) {
// In dev all fonts will be preloaded since it's before DCE
expect($('link[as="font"]').length).toBe(4)
} else {
// Preload
expect($('link[as="font"]').length).toBe(
// TODO: Remove this once tree shaking PACK-4656
process.env.IS_TURBOPACK_TEST ? 4 : 2
)
// From /_app
expect($('link[as="font"]').get(0).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
// From /local-font
expect($('link[as="font"]').get(1).attribs).toEqual({
as: 'font',
crossorigin: 'anonymous',
href: expect.stringMatching(
/\/_next\/static\/(immutable\/)?media\/.*-s\.p(\..*)?\.woff2/
),
rel: 'preload',
type: 'font/woff2',
'data-next-font': 'size-adjust',
})
}
})
})