|
|
|
@ -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
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"bar": true
|
|
|
|
|
"b": true
|
|
|
|
|
}
|
|
|
|
|
]"
|
|
|
|
|
`)
|
|
|
|
@ -39,4 +42,67 @@ describe('static data file support in vite 3', () => {
|
|
|
|
|
]"
|
|
|
|
|
`)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
test.runIf(!process.env.VITE_TEST_BUILD)('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
|
|
|
|
|
*/
|
|
|
|
|
})
|
|
|
|
|