@@ -272,3 +272,41 @@ test('prefetch works with deferred props without errors', async ({ page }) => {
272272
273273 expect ( consoleMessages . errors ) . toHaveLength ( 0 )
274274} )
275+
276+ test ( 'deferred props do not clear validation errors' , async ( { page } ) => {
277+ await page . goto ( '/deferred-props/with-errors' )
278+
279+ await expect ( page . locator ( '#page-error' ) ) . not . toBeVisible ( )
280+ await expect ( page . locator ( '#form-error' ) ) . not . toBeVisible ( )
281+ await expect ( page . getByText ( 'Loading foo...' ) ) . toBeVisible ( )
282+
283+ await page . waitForResponse (
284+ ( response ) => response . request ( ) . headers ( ) [ 'x-inertia-partial-data' ] === 'foo' && response . status ( ) === 200 ,
285+ )
286+
287+ await expect ( page . getByText ( 'foo value' ) ) . toBeVisible ( )
288+
289+ const deferredResponsePromise = page . waitForResponse (
290+ ( response ) => response . request ( ) . headers ( ) [ 'x-inertia-partial-data' ] === 'foo' && response . status ( ) === 200 ,
291+ )
292+ const errorResponsePromise = page . waitForResponse (
293+ ( response ) => ! response . request ( ) . headers ( ) [ 'x-inertia-partial-data' ] && response . status ( ) === 200 ,
294+ )
295+
296+ await page . getByRole ( 'button' , { name : 'Submit' } ) . click ( )
297+ await errorResponsePromise
298+
299+ await expect ( page . locator ( '#page-error' ) ) . toBeVisible ( )
300+ await expect ( page . locator ( '#page-error' ) ) . toHaveText ( 'The name field is required.' )
301+ await expect ( page . locator ( '#form-error' ) ) . toBeVisible ( )
302+ await expect ( page . locator ( '#form-error' ) ) . toHaveText ( 'The name field is required.' )
303+ await expect ( page . getByText ( 'Loading foo...' ) ) . toBeVisible ( )
304+
305+ await deferredResponsePromise
306+
307+ await expect ( page . locator ( '#page-error' ) ) . toBeVisible ( )
308+ await expect ( page . locator ( '#page-error' ) ) . toHaveText ( 'The name field is required.' )
309+ await expect ( page . locator ( '#form-error' ) ) . toBeVisible ( )
310+ await expect ( page . locator ( '#form-error' ) ) . toHaveText ( 'The name field is required.' )
311+ await expect ( page . getByText ( 'foo value' ) ) . toBeVisible ( )
312+ } )
0 commit comments