diff --git a/src/components/Markdown.svelte b/src/components/Markdown.svelte index 4b9140901..ef4d30ed0 100644 --- a/src/components/Markdown.svelte +++ b/src/components/Markdown.svelte @@ -45,8 +45,10 @@ return; } - event.preventDefault(); - void router.navigateToUrl("push", url); + if (url.origin === window.origin) { + event.preventDefault(); + void router.navigateToUrl("push", url); + } } function render(content: string): string { diff --git a/tests/e2e/project.spec.ts b/tests/e2e/project.spec.ts index b4382995e..34f107e72 100644 --- a/tests/e2e/project.spec.ts +++ b/tests/e2e/project.spec.ts @@ -436,3 +436,16 @@ test.describe("browser error handling", () => { await expect(page.locator("text=Not able to load file")).toBeVisible(); }); }); + +test("external markdown link", async ({ page }) => { + await page.route("http://github.github.com/**", route => { + return route.fulfill({ body: "hello", contentType: "text/plain" }); + }); + await page.goto(`${markdownUrl}/tree/main/cheatsheet.md`); + await page + .getByRole("link", { name: "Github-flavored Markdown info page" }) + .click(); + await expect(page).toHaveURL( + "http://github.github.com/github-flavored-markdown/", + ); +});