diff --git a/.prettierignore b/.prettierignore index 76d0e7f08c2be1..1692b9d26cfa20 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,3 +9,4 @@ LICENSE.md pnpm-lock.yaml pnpm-workspace.yaml packages/playground/tsconfig-json-load-error/has-error/tsconfig.json +packages/playground/html/invalid.html diff --git a/packages/playground/html/__tests__/html.spec.ts b/packages/playground/html/__tests__/html.spec.ts index 823e2f4784ad7a..66f537e5026361 100644 --- a/packages/playground/html/__tests__/html.spec.ts +++ b/packages/playground/html/__tests__/html.spec.ts @@ -1,4 +1,4 @@ -import { getColor, isBuild } from '../../testUtils' +import { getColor, isBuild, editFile } from '../../testUtils' function testPage(isNested: boolean) { test('pre transform', async () => { @@ -210,3 +210,29 @@ describe('unicode path', () => { expect(await page.textContent('h1')).toBe('unicode-path') }) }) + +if (!isBuild) { + describe('invalid', () => { + test('should be 500 with overlay', async () => { + const response = await page.goto(viteTestUrl + '/invalid.html') + expect(response.status()).toBe(500) + + const errorOverlay = await page.waitForSelector('vite-error-overlay') + expect(errorOverlay).toBeTruthy() + + const message = await errorOverlay.$$eval('.message-body', (m) => { + return m[0].innerHTML + }) + expect(message).toMatch(/^Unable to parse HTML/) + }) + + test('should reload when fixed', async () => { + const response = await page.goto(viteTestUrl + '/invalid.html') + await editFile('invalid.html', (content) => { + return content.replace('