From c39c2236d186cf7fc7f90f55b70155137975ca54 Mon Sep 17 00:00:00 2001 From: Dom Christie <christiedom@gmail.com> Date: Thu, 28 Sep 2023 18:42:32 +0100 Subject: [PATCH] Add data-turbo-visit-direction to html element --- src/core/session.js | 2 ++ src/core/view.js | 8 ++++++++ src/tests/functional/visit_tests.js | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/core/session.js b/src/core/session.js index 868804c59..39fe8377c 100644 --- a/src/core/session.js +++ b/src/core/session.js @@ -186,6 +186,7 @@ export class Session { visitStarted(visit) { if (!visit.acceptsStreamResponse) { markAsBusy(document.documentElement) + this.view.markVisitDirection(visit.direction) } extendURLWithDeprecatedProperties(visit.location) if (!visit.silent) { @@ -194,6 +195,7 @@ export class Session { } visitCompleted(visit) { + this.view.unmarkVisitDirection() clearBusyState(document.documentElement) this.notifyApplicationAfterPageLoad(visit.getTimingMetrics()) } diff --git a/src/core/view.js b/src/core/view.js index ca81e8bdb..5c62259f1 100644 --- a/src/core/view.js +++ b/src/core/view.js @@ -99,6 +99,14 @@ export class View { } } + markVisitDirection(direction) { + this.element.setAttribute("data-turbo-visit-direction", direction) + } + + unmarkVisitDirection() { + this.element.removeAttribute("data-turbo-visit-direction") + } + async renderSnapshot(renderer) { await renderer.render() } diff --git a/src/tests/functional/visit_tests.js b/src/tests/functional/visit_tests.js index e3bac99c7..2ab405965 100644 --- a/src/tests/functional/visit_tests.js +++ b/src/tests/functional/visit_tests.js @@ -13,6 +13,7 @@ import { readEventLogs, scrollToSelector, visitAction, + waitUntilSelector, willChangeBody } from "../helpers/page" @@ -221,7 +222,8 @@ test("test Visit with network error", async ({ page }) => { }) test("test turbo:visit direction details", async ({ page }) => { - await page.click("#same-origin-link") + page.click("#same-origin-link") + await waitUntilSelector(page, "[data-turbo-visit-direction='forward']") let details = await nextEventNamed(page, "turbo:visit") assert.equal(details.direction, "forward")