@ -1,3 +1,6 @@
import fs from 'node:fs/promises'
import { fileURLToPath } from 'node:url'
describe ( 'static data file support in vite 3' , ( ) = > {
beforeAll ( async ( ) = > {
await goto ( '/data-loading/data' )
@ -7,10 +10,10 @@ describe('static data file support in vite 3', () => {
expect ( await page . textContent ( 'pre#basic' ) ) . toMatchInlineSnapshot ( `
" [
{
" foo ": true
" a ": true
} ,
{
"b ar ": true
"b ": true
}
] "
` )
@ -39,4 +42,68 @@ describe('static data file support in vite 3', () => {
] "
` )
} )
// TODO: make it `.runIf(!process.env.VITE_TEST_BUILD)` -- it currently works, but is skipped to avoid vite's ecosystem-ci from failing (https://github.com/vitejs/vite/pull/16471#issuecomment-2308437187)
test . skip ( 'hmr works' , async ( ) = > {
const a = fileURLToPath ( new URL ( './data/a.json' , import . meta . url ) )
const b = fileURLToPath ( new URL ( './data/b.json' , import . meta . url ) )
try {
await fs . writeFile ( a , JSON . stringify ( { a : false } , null , 2 ) + '\n' )
await page . waitForFunction (
( ) = >
document . querySelector ( 'pre#basic' ) ? . textContent ===
JSON . stringify ( [ { a : false } , { b : true } ] , null , 2 ) ,
undefined ,
{ timeout : 3000 }
)
} finally {
await fs . writeFile ( a , JSON . stringify ( { a : true } , null , 2 ) + '\n' )
}
let err = true
try {
await fs . unlink ( b )
await page . waitForFunction (
( ) = >
document . querySelector ( 'pre#basic' ) ? . textContent ===
JSON . stringify ( [ { a : true } ] , null , 2 ) ,
undefined ,
{ timeout : 3000 }
)
err = false
} finally {
if ( err ) {
await fs . writeFile ( b , JSON . stringify ( { b : true } , null , 2 ) + '\n' )
}
}
try {
await fs . writeFile ( b , JSON . stringify ( { b : false } , null , 2 ) + '\n' )
await page . waitForFunction (
( ) = >
document . querySelector ( 'pre#basic' ) ? . textContent ===
JSON . stringify ( [ { a : true } , { b : false } ] , null , 2 ) ,
undefined ,
{ timeout : 3000 }
)
} finally {
await fs . writeFile ( b , JSON . stringify ( { b : true } , null , 2 ) + '\n' )
}
} )
/ *
MODIFY a . json with { a : false }
this should trigger a hmr update and the content should be updated to [ { a : false } , { b : true } ]
reset a . json
DELETE b . json
this should trigger a hmr update and the content should be updated to [ { a : true } ]
reset b . json if failed
CREATE b . json with { b : false }
this should trigger a hmr update and the content should be updated to [ { a : true } , { b : false } ]
reset b . json
* /
} )