diff --git a/src/tests/fixtures/hover_to_prefetch.html b/src/tests/fixtures/hover_to_prefetch.html
index d47be49db..bd0f6f944 100644
--- a/src/tests/fixtures/hover_to_prefetch.html
+++ b/src/tests/fixtures/hover_to_prefetch.html
@@ -4,6 +4,7 @@
Hover to Prefetch
+
diff --git a/src/tests/fixtures/test.js b/src/tests/fixtures/test.js
index 7ba0f39e7..39e2347eb 100644
--- a/src/tests/fixtures/test.js
+++ b/src/tests/fixtures/test.js
@@ -73,6 +73,7 @@
"turbo:before-visit",
"turbo:load",
"turbo:render",
+ "turbo:before-prefetch",
"turbo:before-fetch-request",
"turbo:submit-start",
"turbo:submit-end",
diff --git a/src/tests/functional/link_prefetch_observer_tests.js b/src/tests/functional/link_prefetch_observer_tests.js
index 735efb7fb..9ec3e8fd1 100644
--- a/src/tests/functional/link_prefetch_observer_tests.js
+++ b/src/tests/functional/link_prefetch_observer_tests.js
@@ -1,6 +1,6 @@
-import { test } from "@playwright/test"
+import { expect, test } from "@playwright/test"
import { assert } from "chai"
-import { nextBeat, sleep } from "../helpers/page"
+import { nextBeat, nextEventOnTarget, noNextEventOnTarget, sleep } from "../helpers/page"
import fs from "fs"
import path from "path"
@@ -17,7 +17,22 @@ test.afterEach(() => {
test("it prefetches the page", async ({ page }) => {
await goTo({ page, path: "/hover_to_prefetch.html" })
- await assertPrefetchedOnHover({ page, selector: "#anchor_for_prefetch" })
+
+ const link = page.locator("#anchor_for_prefetch")
+
+ await link.hover()
+ await nextEventOnTarget(page, "anchor_for_prefetch", "turbo:before-prefetch")
+ const { url, fetchOptions } = await nextEventOnTarget(page, "anchor_for_prefetch", "turbo:before-fetch-request")
+
+ expect(url).toEqual(await link.evaluate(a => a.href))
+ expect(fetchOptions.headers["X-Sec-Purpose"]).toEqual("prefetch")
+
+ await link.hover()
+ await noNextEventOnTarget(page, "anchor_for_prefetch", "turbo:before-fetch-request")
+ await link.click()
+ await noNextEventOnTarget(page, "anchor_for_prefetch", "turbo:before-fetch-request")
+
+ await expect(page.locator("body")).toHaveText("Prefetched Page Content")
})
test("it doesn't follow the link", async ({ page }) => {