rsnext/test/ppr-tests-manifest.json
Zack Tanner 7d20ba17b8
Fix instant loading states after invalidating prefetch cache (#63256)
In #61573, I updated the navigation reducer to request a new prefetch
entry if it's stale. But this has the unintended consequence of making
instant loading states effectively useless after 30s (when the prefetch
would have expired). Blocking navigation and then rendering the loading
state isn't ideal - if we have some loading data in a cache node, we
should re-use it.

Now that #62346 stores loading data in the `CacheNode`, we can copy over
`loading` during a navigation.

This PR repurposes `fillCacheWithDataProperty` which wasn't being used
anywhere, to instead be a utility we can use to programmatically trigger
a lazy fetch on a particular segment path by nulling out it's data while
copying over other properties. We could have used the existing util
as-is, but ideally we only have a single spot where lazy fetching can
happen, which currently is in `LayoutRouter`.

When a stale prefetch entry is detected, rather than applying the data
to the tree, this PR will copy over the `loading` nodes and will
"delete" the data so it can be refetched.

<!-- Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change(s) that you're making:

## For Contributors

### Improving Documentation

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- Read the Docs Contribution Guide to ensure your contribution follows
the docs guidelines:
https://nextjs.org/docs/community/contribution-guide

### Adding or Updating Examples

- The "examples guidelines" are followed from our contributing doc
https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md
- Make sure the linting passes by running `pnpm build && pnpm lint`. See
https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md

### Fixing a bug

- Related issues linked using `fixes #number`
- Tests added. See:
https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md

### Adding a feature

- Implements an existing feature request or RFC. Make sure the feature
request has been accepted for implementation before opening a PR. (A
discussion must be opened, see
https://github.com/vercel/next.js/discussions/new?category=ideas)
- Related issues/discussions are linked using `fixes #number`
- e2e tests added
(https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
- Documentation added
- Telemetry added. In case of a feature if it's used or not.
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md


## For Maintainers

- Minimal description (aim for explaining to someone not on the team to
understand the PR)
- When linking to a Slack thread, you might want to share details of the
conclusion
- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues
- Add review comments if necessary to explain to the reviewer the logic
behind a change

### What?

### Why?

### How?

Closes NEXT-
Fixes #

-->


Closes NEXT-2806
2024-03-19 12:02:12 -07:00

81 lines
3.8 KiB
JSON

{
"version": 2,
"suites": {
"test/e2e/app-dir/app-static/app-static.test.ts": {
"failed": [
"app-dir static/dynamic handling usePathname should have values from canonical url on rewrite",
"app-dir static/dynamic handling should have correct prerender-manifest entries",
"app-dir static/dynamic handling should output HTML/RSC files for static paths",
"app-dir static/dynamic handling should output debug info for static bailouts"
]
},
"test/e2e/app-dir/app-client-cache/client-cache.test.ts": {
"failed": [
"app dir client cache semantics prefetch={undefined} - default should re-use the full cache for only 30 seconds",
"app dir client cache semantics prefetch={undefined} - default should renew the 30s cache once the data is revalidated",
"app dir client cache semantics prefetch={undefined} - default should refetch the full page after 5 mins"
]
},
"test/e2e/app-dir/headers-static-bailout/headers-static-bailout.test.ts": {
"failed": [
"headers-static-bailout it provides a helpful link in case static generation bailout is uncaught"
]
},
"test/e2e/app-dir/error-boundary-navigation/override-node-env.test.ts": {
"failed": [
"app dir - not found navigation - with overridden node env should be able to navigate to other page from root not-found page"
]
},
"test/e2e/opentelemetry/opentelemetry.test.ts": {
"failed": [
"opentelemetry root context app router should handle RSC with fetch",
"opentelemetry incoming context propagation app router should handle RSC with fetch",
"opentelemetry incoming context propagation app router should handle route handlers in app router"
]
},
"test/e2e/app-dir/rsc-basic/rsc-basic.test.ts": {
"failed": [
"app dir - rsc basics should render initial styles of css-in-js in edge SSR correctly",
"app dir - rsc basics should render initial styles of css-in-js in nodejs SSR correctly",
"app dir - rsc basics should render server components correctly"
]
},
"test/e2e/app-dir/navigation/navigation.test.ts": {
"failed": [
"app dir - navigation redirect status code should respond with 308 status code if permanent flag is set",
"app dir - navigation redirect status code should respond with 307 status code in client component",
"app dir - navigation redirect status code should respond with 307 status code in server component",
"app dir - navigation bots should block rendering for bots and return 404 status"
]
},
"test/e2e/app-dir/app-static/app-static-custom-handler.test.ts": {
"failed": [
"app-dir static/dynamic handling should output debug info for static bailouts",
"app-dir static/dynamic handling should have correct prerender-manifest entries",
"app-dir static/dynamic handling should output HTML/RSC files for static paths"
]
},
"test/production/app-dir/unexpected-error/unexpected-error.test.ts": {
"failed": [
"unexpected-error should set response status to 500 for unexpected errors in ssr app route",
"unexpected-error should set response status to 500 for unexpected errors in isr app route"
]
}
},
"rules": {
"include": [
"test/e2e/**/*.test.{t,j}s{,x}",
"test/integration/app-*/**/*.test.{t,j}s{,x}",
"test/production/app-*/**/*.test.{t,j}s{,x}",
"test/development/app-*/**/*.test.{t,j}s{,x}"
],
"exclude": [
"test/integration/app-dir-export/**/*",
"test/e2e/app-dir/next-font/**/*",
"test/e2e/app-dir/ppr/**/*",
"test/e2e/app-dir/ppr-*/**/*",
"test/e2e/app-dir/app-prefetch*/**/*",
"test/e2e/app-dir/searchparams-static-bailout/searchparams-static-bailout.test.ts"
]
}
}