diff --git a/src/observers/form_link_click_observer.js b/src/observers/form_link_click_observer.js
index c6471fba4..c6eff7683 100644
--- a/src/observers/form_link_click_observer.js
+++ b/src/observers/form_link_click_observer.js
@@ -30,7 +30,7 @@ export class FormLinkClickObserver {
willFollowLinkToLocation(link, location, originalEvent) {
return (
this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&
- (link.hasAttribute("data-turbo-method") || link.hasAttribute("data-turbo-stream"))
+ (link.hasAttribute("data-turbo-method") || link.hasAttribute("data-turbo-stream") || link.hasAttribute("data-turbo-confirm"))
)
}
diff --git a/src/tests/fixtures/drive.html b/src/tests/fixtures/drive.html
index 7499a06b0..375528b32 100644
--- a/src/tests/fixtures/drive.html
+++ b/src/tests/fixtures/drive.html
@@ -11,6 +11,7 @@
Drive
diff --git a/src/tests/functional/drive_tests.js b/src/tests/functional/drive_tests.js
index 68980aa80..f97c206a9 100644
--- a/src/tests/functional/drive_tests.js
+++ b/src/tests/functional/drive_tests.js
@@ -1,6 +1,6 @@
import { test } from "@playwright/test"
import { assert } from "chai"
-import { nextBody, pathname, visitAction } from "../helpers/page"
+import { nextBody, pathname, visitAction, search } from "../helpers/page"
const path = "/src/tests/fixtures/drive.html"
@@ -33,3 +33,25 @@ test("drive enabled by default; click link inside data-turbo='false'", async ({
assert.equal(pathname(page.url()), path)
assert.equal(await visitAction(page), "load")
})
+
+test("link with confirmation without method confirmed", async ({ page }) => {
+ page.on("dialog", (alert) => {
+ assert.equal(alert.message(), "Are you sure?")
+ alert.accept()
+ })
+
+ await page.click("#drive_enabled_with_confirm")
+ await nextBody(page)
+ assert.equal(search(page.url()), "?confirmed=true")
+})
+
+test("link with confirmation without method cancelled", async ({ page }) => {
+ page.on("dialog", (alert) => {
+ assert.equal(alert.message(), "Are you sure?")
+ alert.dismiss()
+ })
+
+ await page.click("#drive_enabled_with_confirm")
+ await nextBody(page)
+ assert.notEqual(search(page.url()), "?confirmed=true")
+})