@@ -490,7 +490,7 @@ test.describe("Middleware", () => {
490
490
return <h1>Should not see me</h1>
491
491
}
492
492
export function ErrorBoundary({ error }) {
493
- return <h1>{error.message}</h1>
493
+ return <h1 data-error >{error.message}</h1>
494
494
}
495
495
` ,
496
496
} ,
@@ -508,10 +508,8 @@ test.describe("Middleware", () => {
508
508
await page . waitForSelector ( 'a:has-text("Link")' ) ;
509
509
510
510
( await page . getByRole ( "link" ) ) ?. click ( ) ;
511
- // Bubbles to the root error boundary in SPA mode because every route has
512
- // a loader to load the client assets
513
- await page . waitForSelector ( 'h1:has-text("Application Error")' ) ;
514
- await page . waitForSelector ( 'pre:has-text("Error: broken!")' ) ;
511
+ await page . waitForSelector ( "[data-error]" ) ;
512
+ expect ( await page . innerText ( "[data-error]" ) ) . toBe ( "broken!" ) ;
515
513
516
514
appFixture . close ( ) ;
517
515
} ) ;
@@ -557,7 +555,7 @@ test.describe("Middleware", () => {
557
555
export function ErrorBoundary({ loaderData, error }) {
558
556
return (
559
557
<>
560
- <h1>{error.message}</h1>
558
+ <h1 data-error >{error.message}</h1>
561
559
<pre>{loaderData ?? 'empty'}</pre>
562
560
</>
563
561
);
@@ -578,7 +576,8 @@ test.describe("Middleware", () => {
578
576
await page . waitForSelector ( 'a:has-text("Link")' ) ;
579
577
580
578
( await page . getByRole ( "link" ) ) ?. click ( ) ;
581
- await page . waitForSelector ( 'h1:has-text("broken!")' ) ;
579
+ await page . waitForSelector ( "[data-error]" ) ;
580
+ expect ( await page . innerText ( "[data-error]" ) ) . toBe ( "broken!" ) ;
582
581
expect ( await page . innerText ( "pre" ) ) . toBe ( "empty" ) ;
583
582
584
583
appFixture . close ( ) ;
@@ -1120,7 +1119,6 @@ test.describe("Middleware", () => {
1120
1119
}
1121
1120
` ,
1122
1121
"app/routes/broken.tsx" : js `
1123
- import { useRouteError } from 'react-router'
1124
1122
export const unstable_clientMiddleware = [
1125
1123
async ({ request, context }, next) => {
1126
1124
throw new Error('broken!')
@@ -1129,8 +1127,8 @@ test.describe("Middleware", () => {
1129
1127
export default function Component() {
1130
1128
return <h1>Should not see me</h1>
1131
1129
}
1132
- export function ErrorBoundary() {
1133
- return <h1>{useRouteError() .message}</h1>
1130
+ export function ErrorBoundary({ error } ) {
1131
+ return <h1 data-error>{error .message}</h1>
1134
1132
}
1135
1133
` ,
1136
1134
} ,
@@ -1148,10 +1146,8 @@ test.describe("Middleware", () => {
1148
1146
await page . waitForSelector ( 'a:has-text("Link")' ) ;
1149
1147
1150
1148
( await page . getByRole ( "link" ) ) ?. click ( ) ;
1151
- // Bubbles to the root error boundary in SPA mode because every route has
1152
- // a loader to load the client assets
1153
- await page . waitForSelector ( 'h1:has-text("Application Error")' ) ;
1154
- await page . waitForSelector ( 'pre:has-text("Error: broken!")' ) ;
1149
+ await page . waitForSelector ( "[data-error]" ) ;
1150
+ expect ( await page . innerText ( "[data-error]" ) ) . toBe ( "broken!" ) ;
1155
1151
1156
1152
appFixture . close ( ) ;
1157
1153
} ) ;
@@ -1196,7 +1192,7 @@ test.describe("Middleware", () => {
1196
1192
export function ErrorBoundary({ loaderData, error }) {
1197
1193
return (
1198
1194
<>
1199
- <h1>{error.message}</h1>
1195
+ <h1 data-error >{error.message}</h1>
1200
1196
<pre>{loaderData ?? 'empty'}</pre>
1201
1197
</>
1202
1198
);
@@ -1217,7 +1213,8 @@ test.describe("Middleware", () => {
1217
1213
await page . waitForSelector ( 'a:has-text("Link")' ) ;
1218
1214
1219
1215
( await page . getByRole ( "link" ) ) ?. click ( ) ;
1220
- await page . waitForSelector ( 'h1:has-text("broken!")' ) ;
1216
+ await page . waitForSelector ( "[data-error]" ) ;
1217
+ expect ( await page . innerText ( "[data-error]" ) ) . toBe ( "broken!" ) ;
1221
1218
expect ( await page . innerText ( "pre" ) ) . toBe ( "empty" ) ;
1222
1219
1223
1220
appFixture . close ( ) ;
@@ -1987,7 +1984,7 @@ test.describe("Middleware", () => {
1987
1984
return <h1>Should not see me</h1>
1988
1985
}
1989
1986
export function ErrorBoundary({ error }) {
1990
- return <h1>{error.message}</h1>
1987
+ return <h1 data-error >{error.message}</h1>
1991
1988
}
1992
1989
` ,
1993
1990
} ,
@@ -2002,7 +1999,7 @@ test.describe("Middleware", () => {
2002
1999
2003
2000
let app = new PlaywrightFixture ( appFixture , page ) ;
2004
2001
await app . goto ( "/broken" ) ;
2005
- expect ( await page . innerText ( "h1 " ) ) . toBe ( "broken!" ) ;
2002
+ expect ( await page . innerText ( "[data-error] " ) ) . toBe ( "broken!" ) ;
2006
2003
expect ( errors ) . toEqual ( [
2007
2004
[ "handleError" , "GET" , "/broken" , new Error ( "broken!" ) ] ,
2008
2005
] ) ;
@@ -2049,7 +2046,7 @@ test.describe("Middleware", () => {
2049
2046
return <h1>Should not see me</h1>
2050
2047
}
2051
2048
export function ErrorBoundary({ error }) {
2052
- return <h1>{error.message}</h1>
2049
+ return <h1 data-error >{error.message}</h1>
2053
2050
}
2054
2051
` ,
2055
2052
} ,
@@ -2066,8 +2063,8 @@ test.describe("Middleware", () => {
2066
2063
await app . goto ( "/" ) ;
2067
2064
2068
2065
( await page . $ ( 'a[href="/broken"]' ) ) ?. click ( ) ;
2069
- await page . waitForSelector ( "h1 " ) ;
2070
- expect ( await page . innerText ( "h1 " ) ) . toBe ( "broken!" ) ;
2066
+ await page . waitForSelector ( "[data-error] " ) ;
2067
+ expect ( await page . innerText ( "[data-error] " ) ) . toBe ( "broken!" ) ;
2071
2068
expect ( errors ) . toEqual ( [
2072
2069
[ "handleError" , "GET" , "/broken.data" , new Error ( "broken!" ) ] ,
2073
2070
] ) ;
@@ -2117,7 +2114,7 @@ test.describe("Middleware", () => {
2117
2114
export function ErrorBoundary({ error, loaderData }) {
2118
2115
return (
2119
2116
<>
2120
- <h1>{error.message}</h1>
2117
+ <h1 data-error >{error.message}</h1>
2121
2118
<pre>{loaderData ?? 'empty'}</pre>
2122
2119
</>
2123
2120
);
@@ -2135,7 +2132,7 @@ test.describe("Middleware", () => {
2135
2132
2136
2133
let app = new PlaywrightFixture ( appFixture , page ) ;
2137
2134
await app . goto ( "/broken" ) ;
2138
- expect ( await page . innerText ( "h1 " ) ) . toBe ( "broken!" ) ;
2135
+ expect ( await page . innerText ( "[data-error] " ) ) . toBe ( "broken!" ) ;
2139
2136
expect ( await page . innerText ( "pre" ) ) . toBe ( "empty" ) ;
2140
2137
expect ( errors ) . toEqual ( [
2141
2138
[ "handleError" , "GET" , "/broken" , new Error ( "broken!" ) ] ,
@@ -2186,7 +2183,7 @@ test.describe("Middleware", () => {
2186
2183
export function ErrorBoundary({ error, loaderData }) {
2187
2184
return (
2188
2185
<>
2189
- <h1>{error.message}</h1>
2186
+ <h1 data-error >{error.message}</h1>
2190
2187
<pre>{loaderData ?? 'empty'}</pre>
2191
2188
</>
2192
2189
);
@@ -2207,7 +2204,8 @@ test.describe("Middleware", () => {
2207
2204
2208
2205
( await page . $ ( 'a[href="/broken"]' ) ) ?. click ( ) ;
2209
2206
await page . waitForSelector ( "h1" ) ;
2210
- expect ( await page . innerText ( "h1" ) ) . toBe ( "broken!" ) ;
2207
+ await page . waitForSelector ( "[data-error]" ) ;
2208
+ expect ( await page . innerText ( "[data-error]" ) ) . toBe ( "broken!" ) ;
2211
2209
expect ( await page . innerText ( "pre" ) ) . toBe ( "empty" ) ;
2212
2210
expect ( errors ) . toEqual ( [
2213
2211
[ "handleError" , "GET" , "/broken.data" , new Error ( "broken!" ) ] ,
0 commit comments