{
"packages/font/src/google/find-font-files-in-css.test.ts": {
"passed": [
"findFontFilesInCss should find all font files and preload requested subsets",
"findFontFilesInCss should not return duplicate font files when several variants use the same font file"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/google/get-font-axes.test.ts": {
"passed": [
"getFontAxes errors Invalid axes value",
"getFontAxes errors Invalid value in axes array",
"getFontAxes errors Setting axes on font without definable axes"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/google/loader.test.ts": {
"passed": [
"next/font/google loader URL from options Albert_Sans",
"next/font/google loader URL from options Ballet",
"next/font/google loader URL from options Fraunces",
"next/font/google loader URL from options Inter",
"next/font/google loader URL from options Molle",
"next/font/google loader URL from options Nabla",
"next/font/google loader URL from options Oooh_Baby",
"next/font/google loader URL from options Poppins",
"next/font/google loader URL from options Roboto",
"next/font/google loader URL from options Roboto Mono",
"next/font/google loader URL from options Roboto_Flex",
"next/font/google loader URL from options Source_Sans_3"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/google/sort-fonts-variant-values.test.ts": {
"passed": [
"sortFontsVariantValues should correctly compare and return result for comma-separated values",
"sortFontsVariantValues should correctly compare and return result for plain integer values",
"sortFontsVariantValues should sort an array of plain integer values correctly",
"sortFontsVariantValues should sort an array of values with comma-separated values correctly"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/google/validate-google-font-function-call.test.ts": {
"passed": [
"validateFontFunctionCall errors Invalid display value",
"validateFontFunctionCall errors Invalid subset in call",
"validateFontFunctionCall errors Missing function name",
"validateFontFunctionCall errors Missing subsets in config and call",
"validateFontFunctionCall errors Missing weight for non variable font",
"validateFontFunctionCall errors Setting axes on non variable font",
"validateFontFunctionCall errors Unknown font",
"validateFontFunctionCall errors Unknown style",
"validateFontFunctionCall errors Unknown weight",
"validateFontFunctionCall errors Variable in weight array"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/local/loader.test.ts": {
"passed": [
"next/font/local loader generated CSS Default CSS",
"next/font/local loader generated CSS Multiple styles default weight",
"next/font/local loader generated CSS Multiple weights default style",
"next/font/local loader generated CSS Other properties",
"next/font/local loader generated CSS Weight and style"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/local/pick-font-file-for-fallback-generation.test.ts": {
"passed": [
"pickFontFileForFallbackGeneration Invalid variable weight in array",
"pickFontFileForFallbackGeneration should error on invalid weight in array",
"pickFontFileForFallbackGeneration should pick the thinner weight if both have the same distance to 400",
"pickFontFileForFallbackGeneration should pick the weight closest to 400",
"pickFontFileForFallbackGeneration should pick variable range closest to 400",
"pickFontFileForFallbackGeneration should prefer normal style over italic"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/font/src/local/validate-local-font-function-call.test.ts": {
"passed": [
"validateLocalFontFunctionCall Empty src array",
"validateLocalFontFunctionCall Invalid declaration",
"validateLocalFontFunctionCall Invalid display value",
"validateLocalFontFunctionCall Invalid file extension",
"validateLocalFontFunctionCall Missing src",
"validateLocalFontFunctionCall Not using default export"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/build/normalize-catchall-routes.test.ts": {
"passed": [
"normalizeCatchallRoutes should add the catch-all route to all matched paths at the root",
"normalizeCatchallRoutes should add the catch-all route to all matched paths when nested",
"normalizeCatchallRoutes should not add the catch-all route to a path that has a @children slot",
"normalizeCatchallRoutes should not add the catch-all route to non-catchall segments that are more specific",
"normalizeCatchallRoutes should not add the catch-all route to segments that have a more specific [dynamicRoute]",
"normalizeCatchallRoutes should not add the catch-all route to segments that have a more specific default",
"normalizeCatchallRoutes should not add the catch-all to the interception route"
],
"failed": [],
"pending": [
"normalizeCatchallRoutes should only match optional catch-all paths to the \"index\" of a segment"
],
"flakey": [],
"runtimeError": false
},
"packages/next/src/build/webpack/loaders/metadata/resolve-route-data.test.ts": {
"passed": [
"resolveRouteData resolveRobots should error with ts when specify both wildcard userAgent and specific userAgent",
"resolveRouteData resolveRobots should resolve robots.txt",
"resolveRouteData resolveSitemap should resolve sitemap.xml",
"resolveRouteData resolveSitemap should resolve sitemap.xml with alternates"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/build/webpack/plugins/next-types-plugin/index.test.ts": {
"passed": [
"next-types-plugin should generate correct base import path",
"next-types-plugin should generate correct base import path for custom projects",
"next-types-plugin should generate correct base import path for nx monorepos"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/navigation.test.ts": {
"passed": [
"next/navigation should be able to construct URLSearchParams from ReadonlyURLSearchParams"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/promise-queue.test.ts": {
"passed": [
"PromiseQueue should allow bumping a promise to be next in the queue",
"PromiseQueue should limit the number of concurrent promises"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/redirect.test.ts": {
"passed": ["test should throw a redirect error"],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/apply-router-state-patch-to-tree.test.tsx": {
"passed": ["applyRouterStatePatchToTree should apply a patch to the tree"],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/clear-cache-node-data-for-segment-path.test.tsx": {
"passed": [
"clearCacheNodeDataForSegmentPath should clear the data property"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/compute-changed-path.test.ts": {
"passed": ["computeChangedPath should return the correct path"],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/create-href-from-url.test.ts": {
"passed": [
"createHrefFromUrl adds hash",
"createHrefFromUrl adds pathname",
"createHrefFromUrl adds pathname, searchParams, and hash",
"createHrefFromUrl adds searchParams",
"createHrefFromUrl returns a string"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/create-initial-router-state.test.tsx": {
"passed": [
"createInitialRouterState should return the correct initial router state"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/create-router-cache-key.test.ts": {
"passed": [
"createRouterCacheKey should support catch all segment",
"createRouterCacheKey should support dynamic segment",
"createRouterCacheKey should support string segment"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/fill-cache-with-new-subtree-data.test.tsx": {
"passed": [
"fillCacheWithNewSubtreeData should apply rsc and head property"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.test.tsx": {
"passed": [
"fillLazyItemsTillLeafWithHead should fill lazy items till leaf with head"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/get-segment-value.test.ts": {
"passed": [
"getSegmentValue should support catch all segment",
"getSegmentValue should support dynamic segment",
"getSegmentValue should support string segment"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.test.tsx": {
"passed": [
"invalidateCacheBelowFlightSegmentPath should invalidate cache below flight segment path"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/invalidate-cache-by-router-state.test.tsx": {
"passed": [
"invalidateCacheByRouterState should invalidate the cache by router state"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/is-navigating-to-new-root-layout.test.ts": {
"passed": [
"isNavigatingToNewRootLayout should return false if there is no new root layout",
"isNavigatingToNewRootLayout should return true if there is a mismatch between the root layouts"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/reducers/find-head-in-cache.test.tsx": {
"passed": ["findHeadInCache should find the head"],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/client/components/router-reducer/should-hard-navigate.test.tsx": {
"passed": [
"shouldHardNavigate should return false if segments are dynamic and match",
"shouldHardNavigate should return false if the segments match",
"shouldHardNavigate should return true if segments are dynamic and mismatch"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/batcher.test.ts": {
"passed": [
"Batcher batch should batch multiple calls to the same key",
"Batcher batch should execute the work function immediately",
"Batcher batch should not batch calls to different keys",
"Batcher batch should use the cacheKeyFn to generate cache keys",
"Batcher batch should use the schedulerFn to schedule work"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/find-config.test.ts": {
"passed": [
"findConfig() should load config properly from *.config.* file (type: \"commonjs\", config: awsome.config.cjs)",
"findConfig() should load config properly from *.config.* file (type: \"commonjs\", config: awsome.config.js)",
"findConfig() should load config properly from *.config.* file (type: \"commonjs\", config: awsome.config.mjs)",
"findConfig() should load config properly from *.config.* file (type: \"module\", config: awsome.config.cjs)",
"findConfig() should load config properly from *.config.* file (type: \"module\", config: awsome.config.js)",
"findConfig() should load config properly from *.config.* file (type: \"module\", config: awsome.config.mjs)",
"findConfig() should load config properly from the config in package.json)"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/format-server-error.test.ts": {
"passed": ["formatServerError should not append message several times"],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/metadata/resolve-metadata.test.ts": {
"passed": [
"accumulateMetadata alternate should support URL alternate canonical with search params",
"accumulateMetadata alternate should support alternate descriptors",
"accumulateMetadata alternate should support string alternate",
"accumulateMetadata alternate should support string alternate canonical with search params",
"accumulateMetadata icon should resolve icons.apple",
"accumulateMetadata icon should resolve icons.icon correctly",
"accumulateMetadata itunes should resolve relative url starting with ./ with pathname for itunes.appArgument",
"accumulateMetadata openGraph and twitter should convert string or URL images field to array, not only for basic og type",
"accumulateMetadata openGraph and twitter should fill only the existing props from openGraph to twitter",
"accumulateMetadata openGraph and twitter should fill twitter with partial existing openGraph metadata",
"accumulateMetadata openGraph and twitter should inherit metadata title description into openGraph or twitter if they are configured",
"accumulateMetadata openGraph and twitter should override openGraph or twitter images when current layer specifies social images properties",
"accumulateMetadata openGraph and twitter should prefer title and description from openGraph rather than metadata for twitter",
"accumulateMetadata openGraph and twitter should resolve relative url starting with ./ with pathname for openGraph.url",
"accumulateMetadata title should merge title with page title",
"accumulateMetadata title should merge title with parent layout ",
"accumulateMetadata typing should support both sync and async metadata",
"accumulateViewport themeColor should support string theme color",
"accumulateViewport themeColor should support theme color descriptors",
"accumulateViewport viewport should support viewport descriptors"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/metadata/resolvers/resolve-opengraph.test.ts": {
"passed": [
"resolveImages should filter out invalid images",
"resolveImages should not mutate passed images",
"resolveImages should resolve images"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/metadata/resolvers/resolve-title.test.ts": {
"passed": [
"resolveTitle should resolve nullable template as empty string title",
"resolveTitle should resolve title with template"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/metadata/resolvers/resolve-url.test.ts": {
"passed": [
"getSocialImageFallbackMetadataBase fallbackMetadataBase when metadataBase is not present should prefer branch url in preview deployment if presents",
"getSocialImageFallbackMetadataBase fallbackMetadataBase when metadataBase is not present should return local url in local build mode",
"getSocialImageFallbackMetadataBase fallbackMetadataBase when metadataBase is not present should return localhost url in local dev mode",
"getSocialImageFallbackMetadataBase fallbackMetadataBase when metadataBase is not present should return project production url in production deployment",
"getSocialImageFallbackMetadataBase fallbackMetadataBase when metadataBase is not present should return vercel url in preview deployment if only it presents",
"metadata: resolveUrl should compose with metadataBase when url is relative or absolute",
"metadata: resolveUrl should ignore metadataBase when url is valid URL",
"metadata: resolveUrl should return null when url is falsy",
"metadata: resolveUrl should return url itself when metadataBase is null or url is valid URL",
"resolveAbsoluteUrlWithPathname trailingSlash is false should resolve absolute internal url",
"resolveAbsoluteUrlWithPathname trailingSlash is true should add trailing slash to absolute internal url",
"resolveAbsoluteUrlWithPathname trailingSlash is true should add trailing slash to relative url",
"resolveAbsoluteUrlWithPathname trailingSlash is true should not add trailing slash to absolute internal url with query",
"resolveAbsoluteUrlWithPathname trailingSlash is true should not add trailing slash to external url",
"resolveAbsoluteUrlWithPathname trailingSlash is true should not add trailing slash to relative url with query"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/lib/typescript/writeConfigurationDefaults.test.ts": {
"passed": [
"writeConfigurationDefaults() appDir applies suggested and mandatory defaults to existing tsconfig.json and logs them",
"writeConfigurationDefaults() appDir does not warn about disabled strict mode if strict mode was already enabled",
"writeConfigurationDefaults() appDir with tsconfig extends should not add strictNullChecks if base provides it",
"writeConfigurationDefaults() appDir with tsconfig extends should replace includes when base is missing appTypes",
"writeConfigurationDefaults() appDir with tsconfig extends should support empty includes when base provides it"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/after/after-context.test.ts": {
"passed": [
"createAfterContext does not hang forever if onClose failed",
"createAfterContext runs after() callbacks added within an after()",
"createAfterContext runs after() callbacks from a run() callback that resolves",
"createAfterContext runs after() callbacks from a run() callback that streams",
"createAfterContext runs after() callbacks from a run() callback that throws",
"createAfterContext runs all after() callbacks even if some of them threw",
"createAfterContext throws from after() if onClose is not provided",
"createAfterContext throws from after() if waitUntil is not provided"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/app-render/csrf-protection.test.ts": {
"passed": [
"isCsrfOriginAllowed should return false when allowedOrigins contains originDomain with non-matching pattern",
"isCsrfOriginAllowed should return false when allowedOrigins does not contain originDomain",
"isCsrfOriginAllowed should return false when allowedOrigins is empty",
"isCsrfOriginAllowed should return false when allowedOrigins is empty string",
"isCsrfOriginAllowed should return false when allowedOrigins is undefined",
"isCsrfOriginAllowed should return true when allowedOrigins contains originDomain",
"isCsrfOriginAllowed should return true when allowedOrigins contains originDomain with matching pattern"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/app-render/types.test.ts": {
"passed": [
"flightRouterStateSchema should not validate an incorrect flight router state",
"flightRouterStateSchema should validate a correct flight router state"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/base-http/web.test.ts": {
"passed": [
"WebNextResponse onClose doesn't track onClose unless enabled",
"WebNextResponse onClose stream body",
"WebNextResponse onClose string body"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/config.test.ts": {
"passed": [
"loadConfig nextConfig.images defaults should assign a `images.remotePatterns` when using assetPrefix",
"loadConfig nextConfig.images defaults should not assign a duplicate `images.remotePatterns` value when using assetPrefix"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/dev/parse-version-info.test.ts": {
"passed": [
"parse version info installed: 12.0.0, latest: 13.1.1, canary: 13.0.1-canary.0 yields stale-major",
"parse version info installed: 13.0.0, latest: 12.0.0, canary: 12.0.1-canary.0 yields newer-than-npm",
"parse version info installed: 13.0.0, latest: 13.1.0, canary: 13.1.1-canary.0 yields stale-minor",
"parse version info installed: 13.0.0, latest: 13.1.0, canary: invalid yields unknown",
"parse version info installed: 13.0.0, latest: invalid, canary: 13.0.1-canary.0 yields unknown",
"parse version info installed: 13.0.1-canary.0, latest: 13.0.0, canary: 13.0.1-canary.1 yields stale-prerelease",
"parse version info installed: 13.0.1-canary.0, latest: 13.0.0, canary: 13.1.0-canary.0 yields stale-prerelease",
"parse version info installed: 13.0.1-canary.8, latest: 13.0.0, canary: 13.0.1-canary.7 yields newer-than-npm",
"parse version info installed: 13.1.0, latest: 13.1.0, canary: 13.1.1-canary.0 yields fresh",
"parse version info installed: 13.1.1, latest: 13.1.2, canary: 13.1.3-canary.0 yields stale-patch",
"parse version info installed: 13.1.1-canary.7, latest: 13.1.0, canary: 13.1.1-canary.7 yields fresh",
"parse version info installed: invalid, latest: 13.0.1, canary: 13.0.1-canary.0 yields unknown"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/lib/i18n-provider.test.ts": {
"passed": [
"I18NProvider analyze for pathname / and defaultLocale en",
"I18NProvider analyze for pathname /another/page and defaultLocale en",
"I18NProvider analyze for pathname /en and defaultLocale en",
"I18NProvider analyze for pathname /en-CA and defaultLocale en",
"I18NProvider analyze for pathname /en-CA/another/page and defaultLocale en",
"I18NProvider analyze for pathname /en/another/page and defaultLocale en",
"I18NProvider analyze for pathname /fr and defaultLocale en",
"I18NProvider analyze for pathname /fr/another/page and defaultLocale en",
"I18NProvider detectDomainLocale for domain example.ca",
"I18NProvider detectDomainLocale for domain example.com",
"I18NProvider detectDomainLocale for domain example.de",
"I18NProvider detectDomainLocale for domain example.fr",
"I18NProvider should detect the correct domain locale"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/lib/interception-routes.test.ts": {
"passed": [
"Interception Route helper extractInterceptionRouteInformation should check the segment length",
"Interception Route helper extractInterceptionRouteInformation should extract correct information",
"Interception Route helper extractInterceptionRouteInformation should not extract incorrect information",
"Interception Route helper isInterceptionRouteAppPath should not validate incorrect paths",
"Interception Route helper isInterceptionRouteAppPath should validate correct paths"
],
"failed": [],
"pending": [],
"flakey": [],
"runtimeError": false
},
"packages/next/src/server/normalizers/absolute-filename-normalizer.test.ts": {
"passed": [
"AbsoluteFilenameNormalizer normalizes '
with strictNextHead=false while client routing should update title during client routing", "updating
with strictNextHead=false while client routing should warn when scripts are in head", "updating
with strictNextHead=false while client routing should warn when stylesheets or scripts are in head", "updating
with strictNextHead=true while client routing should handle boolean async prop in next/head client-side: false", "updating
with strictNextHead=true while client routing should handle boolean async prop in next/head client-side: true", "updating
with strictNextHead=true while client routing should not warn when application/ld+json scripts are in head", "updating
with strictNextHead=true while client routing should only execute async and defer scripts once", "updating
with strictNextHead=true while client routing should update head during client routing", "updating
with strictNextHead=true while client routing should update head when unmounting component", "updating
with strictNextHead=true while client routing should update title during client routing", "updating
with strictNextHead=true while client routing should warn when scripts are in head", "updating
with strictNextHead=true while client routing should warn when stylesheets or scripts are in head" ], "failed": [], "pending": [], "flakey": [], "runtimeError": false }, "test/development/pages-dir/client-navigation/rendering.test.ts": { "passed": [ "Client Navigation rendering
with strictNextHead=false header helper avoids dedupe of meta tags with the same name if they use unique keys", "Client Navigation rendering
with strictNextHead=false header helper avoids dedupe of specific tags", "Client Navigation rendering
with strictNextHead=false header helper dedupes tags", "Client Navigation rendering
with strictNextHead=false header helper dedupes tags with the same key as the default", "Client Navigation rendering
with strictNextHead=false header helper renders Fragment children", "Client Navigation rendering
with strictNextHead=false header helper renders boolean attributes correctly children", "Client Navigation rendering
with strictNextHead=false header helper renders header information", "Client Navigation rendering
with strictNextHead=false header renders default charset", "Client Navigation rendering
with strictNextHead=false header renders default viewport", "Client Navigation rendering
with strictNextHead=false should handle undefined prop in head server-side", "Client Navigation rendering
with strictNextHead=false should place charset element at the top of
", "Client Navigation rendering
with strictNextHead=true header helper avoids dedupe of meta tags with the same name if they use unique keys", "Client Navigation rendering
with strictNextHead=true header helper avoids dedupe of specific tags", "Client Navigation rendering
with strictNextHead=true header helper dedupes tags", "Client Navigation rendering
with strictNextHead=true header helper dedupes tags with the same key as the default", "Client Navigation rendering
with strictNextHead=true header helper renders Fragment children", "Client Navigation rendering
with strictNextHead=true header helper renders boolean attributes correctly children", "Client Navigation rendering
with strictNextHead=true header helper renders header information", "Client Navigation rendering
with strictNextHead=true header renders default charset", "Client Navigation rendering
with strictNextHead=true header renders default viewport", "Client Navigation rendering
with strictNextHead=true should handle undefined prop in head server-side", "Client Navigation rendering
with strictNextHead=true should place charset element at the top of
",
"Client Navigation rendering Rendering via HTTP 404 should 404 on not existent page",
"Client Navigation rendering Rendering via HTTP 404 should 404 on wrong casing",
"Client Navigation rendering Rendering via HTTP 404 should not 404 for