diff --git a/e2e/basic.spec.ts b/e2e/basic.spec.ts index 1cf9a2f..2cc7ed0 100644 --- a/e2e/basic.spec.ts +++ b/e2e/basic.spec.ts @@ -14,6 +14,14 @@ test("file input", async ({ page }) => { await testHtmlReport(page); }); +test("fetch error clears on drop recovery", async ({ page }) => { + await page.goto("/?url=http://localhost:1/test.zip"); + await expect(page.getByTestId("fetch-error")).toContainText("likely blocked by CORS"); + await page.locator('input[type="file"]').setInputFiles("docs/assets/vitest-html-reporter.zip"); + await expect(page.getByTestId("fetch-error")).not.toBeVisible(); + await testHtmlReport(page); +}); + async function testHtmlReport(page: Page) { await expect(page.getByTestId("status")).toContainText("Cached 7 files"); const frame = page.frameLocator("iframe"); diff --git a/src/index.html b/src/index.html index 64f07c7..4696163 100644 --- a/src/index.html +++ b/src/index.html @@ -209,7 +209,10 @@ function FetchError({ error }) { return h( "div", - { style: { textAlign: "center", fontSize: "0.85rem", color: "#c00", marginTop: "1rem" } }, + { + "data-testid": "fetch-error", + style: { textAlign: "center", fontSize: "0.85rem", color: "#c00", marginTop: "1rem" }, + }, h("div", null, error.message), h( "div", @@ -238,6 +241,7 @@ } setFileCount(count); setStatusMsg(`Cached ${count} files. Loading...`); + setFetchError(null); setLoaded(true); }