From f80b193bbde1b535bbdfaf8ca61845aa4fdd600c Mon Sep 17 00:00:00 2001 From: Thomas Scholtes Date: Tue, 11 Jul 2023 15:33:29 +0200 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20intercept=20navigation=20to=20e?= =?UTF-8?q?xternal=20URLs=20in=20Markdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes 928 Signed-off-by: Thomas Scholtes --- src/components/Markdown.svelte | 6 ++++-- tests/e2e/project.spec.ts | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) 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/", + ); +});