From 2afffb93f6e4948f2f6a89d83ded396b175603c9 Mon Sep 17 00:00:00 2001 From: Bobkov Andrey Date: Fri, 21 Jan 2022 01:35:23 +0300 Subject: [PATCH] feat(eager frame): add test for check fetch eager frame count --- src/tests/fixtures/frames.html | 4 ++++ .../fixtures/frames/frame_for_eager.html | 3 +++ src/tests/fixtures/page_with_eager_frame.html | 21 +++++++++++++++++++ src/tests/functional/frame_tests.ts | 18 ++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 src/tests/fixtures/frames/frame_for_eager.html create mode 100644 src/tests/fixtures/page_with_eager_frame.html diff --git a/src/tests/fixtures/frames.html b/src/tests/fixtures/frames.html index 2a84ca2a4..c3caa478c 100644 --- a/src/tests/fixtures/frames.html +++ b/src/tests/fixtures/frames.html @@ -121,5 +121,9 @@

Frames: #nested-child


Navigate #frame + +

+ Eager-loaded frame after GET redirect +

diff --git a/src/tests/fixtures/frames/frame_for_eager.html b/src/tests/fixtures/frames/frame_for_eager.html new file mode 100644 index 000000000..c6190615c --- /dev/null +++ b/src/tests/fixtures/frames/frame_for_eager.html @@ -0,0 +1,3 @@ + +

Eager-loaded frame: Loaded

+
\ No newline at end of file diff --git a/src/tests/fixtures/page_with_eager_frame.html b/src/tests/fixtures/page_with_eager_frame.html new file mode 100644 index 000000000..3509abba2 --- /dev/null +++ b/src/tests/fixtures/page_with_eager_frame.html @@ -0,0 +1,21 @@ + + + + + Frame + + + + +

Eager-loaded frame

+ + +

Eager-loaded frame: NOT Loaded...

+
+ + +

+ Page /src/tests/fixtures/frames.html +

+ + diff --git a/src/tests/functional/frame_tests.ts b/src/tests/functional/frame_tests.ts index b2550e832..ce768a09d 100644 --- a/src/tests/functional/frame_tests.ts +++ b/src/tests/functional/frame_tests.ts @@ -551,6 +551,24 @@ export class FrameTests extends TurboDriveTestCase { this.assert.ok(await this.nextEventOnTarget("frame", "turbo:before-fetch-response")) } + async "test navigating a eager frame with a link[method=get] that does not fetch eager frame twice"() { + await this.clickSelector("#link-to-eager-loaded-frame") + + await this.nextBeat + + const eventLogs = await this.eventLogChannel.read() + const fetchLogs = eventLogs.filter(([name, options]) => + name == "turbo:before-fetch-request" && options?.url?.includes('/src/tests/fixtures/frames/frame_for_eager.html') + ) + this.assert.equal(fetchLogs.length, 1) + + const src = await this.attributeForSelector("#eager-loaded-frame", "src") ?? "" + this.assert.ok(src.includes("/src/tests/fixtures/frames/frame_for_eager.html"), "updates src attribute") + this.assert.equal(await (await this.querySelector("h1")).getVisibleText(), "Eager-loaded frame") + this.assert.equal(await (await this.querySelector("#eager-loaded-frame h2")).getVisibleText(), "Eager-loaded frame: Loaded") + this.assert.equal(await this.pathname, "/src/tests/fixtures/page_with_eager_frame.html") + } + async withoutChangingEventListenersCount(callback: () => void) { const name = "eventListenersAttachedToDocument" const setup = () => {