Fix sibling intercepted App Router routes #2810
Annotations
12 errors, 1 warning, and 9 notices
|
E2E (app-router)
Process completed with exit code 1.
|
|
[app-router] › tests/e2e/app-router/advanced.spec.ts:96:7 › Intercepting Routes › chained intercepted navigations keep the original source context:
tests/e2e/app-router/advanced.spec.ts#L107
1) [app-router] › tests/e2e/app-router/advanced.spec.ts:96:7 › Intercepting Routes › chained intercepted navigations keep the original source context
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toContainText(expected) failed
Locator: locator('[data-testid="photo-modal"]')
Expected substring: "Viewing photo 43"
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toContainText" with timeout 5000ms
- waiting for locator('[data-testid="photo-modal"]')
2 × locator resolved to <div data-testid="photo-modal">…</div>
- unexpected value "Photo ModalViewing photo 42 in modalNext PhotoRefresh modal0Like"
105 |
106 | await expect(page.locator('[data-testid="photo-modal"]')).toBeVisible();
> 107 | await expect(page.locator('[data-testid="photo-modal"]')).toContainText("Viewing photo 43");
| ^
108 | await expect(page.locator('[data-testid="feed-page"]')).toBeVisible();
109 | await expect(page.locator('[data-testid="photo-page"]')).not.toBeVisible();
110 | });
at /home/runner/work/vinext/vinext/tests/e2e/app-router/advanced.spec.ts:107:63
|
|
[app-router] › tests/e2e/app-router/advanced.spec.ts:96:7 › Intercepting Routes › chained intercepted navigations keep the original source context:
tests/e2e/app-router/advanced.spec.ts#L107
1) [app-router] › tests/e2e/app-router/advanced.spec.ts:96:7 › Intercepting Routes › chained intercepted navigations keep the original source context
Error: expect(locator).toContainText(expected) failed
Locator: locator('[data-testid="photo-modal"]')
Expected substring: "Viewing photo 43"
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toContainText" with timeout 5000ms
- waiting for locator('[data-testid="photo-modal"]')
2 × locator resolved to <div data-testid="photo-modal">…</div>
- unexpected value "Photo ModalViewing photo 42 in modalNext PhotoRefresh modal0Like"
105 |
106 | await expect(page.locator('[data-testid="photo-modal"]')).toBeVisible();
> 107 | await expect(page.locator('[data-testid="photo-modal"]')).toContainText("Viewing photo 43");
| ^
108 | await expect(page.locator('[data-testid="feed-page"]')).toBeVisible();
109 | await expect(page.locator('[data-testid="photo-page"]')).not.toBeVisible();
110 | });
at /home/runner/work/vinext/vinext/tests/e2e/app-router/advanced.spec.ts:107:63
|
|
Vitest (integration 2/3)
Process completed with exit code 1.
|
|
Vitest (integration report)
Process completed with exit code 1.
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (with metadata routes):
tests/entry-templates.test.ts#L233
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (with metadata routes) 1` mismatched
- Expected
+ Received
@@ -715,16 +715,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -734,12 +746,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -859,11 +872,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: null,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1588,11 +1601,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -1869,12 +1884,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2042,11 +2058,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voi
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (with config):
tests/entry-templates.test.ts#L211
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (with config) 1` mismatched
- Expected
+ Received
@@ -708,16 +708,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -727,12 +739,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -852,11 +865,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: null,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1587,11 +1600,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -1868,12 +1883,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2041,11 +2057,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (with global error):
tests/entry-templates.test.ts#L181
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (with global error) 1` mismatched
- Expected
+ Received
@@ -709,16 +709,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -728,12 +740,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -853,11 +866,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: mod_11,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1582,11 +1595,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -1863,12 +1878,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2036,11 +2052,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@void
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (with instrumentation):
tests/entry-templates.test.ts#L168
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (with instrumentation) 1` mismatched
- Expected
+ Received
@@ -738,16 +738,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -757,12 +769,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -882,11 +895,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: null,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1614,11 +1627,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -1895,12 +1910,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2068,11 +2084,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voi
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (with middleware):
tests/entry-templates.test.ts#L153
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (with middleware) 1` mismatched
- Expected
+ Received
@@ -708,16 +708,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -727,12 +739,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -852,11 +865,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: null,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1948,11 +1961,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -2229,12 +2244,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2402,11 +2418,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero
|
|
[integration] tests/entry-templates.test.ts > App Router entry templates > generateRscEntry snapshot (minimal routes):
tests/entry-templates.test.ts#L140
Error: Snapshot `App Router entry templates > generateRscEntry snapshot (minimal routes) 1` mismatched
- Expected
+ Received
@@ -708,16 +708,28 @@
/**
* Check if a pathname matches any intercepting route.
* Returns the match info or null.
*/
- function findIntercept(pathname) {
+ function findIntercept(pathname, sourcePathname = null) {
const urlParts = pathname.split("/").filter(Boolean);
for (const entry of interceptLookup) {
const params = matchPattern(urlParts, entry.targetPatternParts);
if (params !== null) {
- return { ...entry, matchedParams: params };
+ let sourceParams = {};
+ if (sourcePathname !== null) {
+ const sourceRoute = routes[entry.sourceRouteIndex];
+ const sourceParts = sourcePathname.split("/").filter(Boolean);
+ const matchedSourceParams = sourceRoute
+ ? matchPattern(sourceParts, sourceRoute.patternParts)
+ : null;
+ if (matchedSourceParams === null) {
+ continue;
+ }
+ sourceParams = matchedSourceParams;
+ }
+ return { ...entry, matchedParams: { ...sourceParams, ...params } };
}
}
return null;
}
@@ -727,12 +739,13 @@
searchParams,
isRscRequest,
request,
mountedSlotsHeader,
} = pageRequest;
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
const _interceptionContext = opts?.interceptionContext ?? null;
const _noExportRouteId = __createAppPayloadRouteId(routePath, _interceptionContext);
let _noExportRootLayout = null;
if (route.layouts?.length > 0) {
// Compute the root layout tree path for this error payload using the
@@ -852,11 +865,11 @@
const mountedSlotIds = mountedSlotsHeader
? new Set(mountedSlotsHeader.split(" "))
: null;
return __buildAppPageElements({
- element: createElement(PageComponent, pageProps),
+ element: PageComponent ? createElement(PageComponent, pageProps) : null,
globalErrorModule: null,
isRscRequest,
mountedSlotIds,
makeThenableParams,
matchedParams: params,
@@ -1581,11 +1594,13 @@
const { route: actionRoute, params: actionParams } = match;
const __actionRerenderTarget = __resolveAppPageActionRerenderTarget({
cleanPathname,
currentParams: actionParams,
currentRoute: actionRoute,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
@@ -1862,12 +1877,13 @@
_mwCtx,
);
}
// Build the component tree: layouts wrapping the page
+ const hasPageModule = !!route.page;
const PageComponent = route.page?.default;
- if (!PageComponent) {
+ if (hasPageModule && !PageComponent) {
setHeadersContext(null);
setNavigationContext(null);
return new Response("Page has no default export", { status: 500 });
}
@@ -2035,11 +2051,13 @@
},
);
},
cleanPathname,
currentRoute: route,
- findIntercept,
+ findIntercept(pathname) {
+ return findIntercept(pathname, interceptionContextHeader);
+ },
getRouteParamNames(sourceRoute) {
return sourceRoute.params;
},
getSourceRoute(sourceRouteIndex) {
return routes[sourceRouteIndex];
❯ assertMatchResult node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-dev/vite-plus-test/dist/chunks/test.D1JkM1w4.js:4027:25
❯ Proxy.<anonymous> node_modules/.pnpm/@voidzero-dev[email protected]_@[email protected]_@[email protected]_@voidze_f63249bc202c8b757f929e08a6ee9746/node_modules/@voidzero-
|
|
CI
Process completed with exit code 1.
|
|
E2E (app-router)
No files were found with the provided path: playwright-report/. No artifacts will be uploaded.
|
|
🎭 Playwright Run Summary
1 passed (5.0s)
|
|
🎭 Playwright Run Summary
16 passed (8.8s)
|
|
🎭 Playwright Run Summary
13 passed (6.8s)
|
|
🎭 Playwright Run Summary
22 passed (10.8s)
|
|
🎭 Playwright Run Summary
38 passed (11.4s)
|
|
🎭 Playwright Run Summary
37 passed (20.6s)
|
|
🎭 Playwright Run Summary
17 passed (10.7s)
|
|
🎭 Playwright Run Summary
85 passed (23.4s)
|
|
🎭 Playwright Run Summary
1 failed
[app-router] › tests/e2e/app-router/advanced.spec.ts:96:7 › Intercepting Routes › chained intercepted navigations keep the original source context
8 skipped
327 passed (1.5m)
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
blob-report-1
|
47.8 KB |
sha256:ed828e2ca5fb0bb75c4aeb730555860b7957d49ab5876630db0629868341a173
|
|
|
blob-report-2
|
391 KB |
sha256:06c3d3ccb84400b60688bcb302e861faa62d8f0bcc720ddc4ea4a9db42f6a58c
|
|
|
blob-report-3
|
34.9 KB |
sha256:50fd8b588c5064c3d52d9ba4e95a4e886b63ccfb0fb9340019eb9ae65eb1ab03
|
|