Skip to content

Commit 6d58cf4

Browse files
test: added enableLivePreviewOutsideIframe key to on or off the outside iframe feature by default
1 parent 785bb2d commit 6d58cf4

3 files changed

Lines changed: 108 additions & 1 deletion

File tree

src/configManager/__test__/configManager.test.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Config, { updateConfigFromUrl } from "../configManager";
2-
import { getDefaultConfig } from "../config.default";
2+
import { getDefaultConfig, getUserInitData } from "../config.default";
33
import { DeepSignal } from "deepsignal";
44
import { IConfig } from "../../types/types";
55

@@ -90,6 +90,18 @@ describe("Config", () => {
9090
});
9191
});
9292

93+
describe("config default flags", () => {
94+
test("enableLivePreviewOutsideIframe defaults to false in getDefaultConfig", () => {
95+
const defaultConfig = getDefaultConfig();
96+
expect(defaultConfig.enableLivePreviewOutsideIframe).toBe(false);
97+
});
98+
99+
test("enableLivePreviewOutsideIframe defaults to false in getUserInitData", () => {
100+
const initData = getUserInitData();
101+
expect(initData.enableLivePreviewOutsideIframe).toBe(false);
102+
});
103+
});
104+
93105
describe("update config from url", () => {
94106
let config: DeepSignal<IConfig>;
95107

src/configManager/__test__/handleUserConfig.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,41 @@ describe("handleInitData()", () => {
411411
});
412412
});
413413

414+
describe("handleInitData() - enableLivePreviewOutsideIframe", () => {
415+
let config: DeepSignal<IConfig>;
416+
417+
beforeEach(() => {
418+
Config.reset();
419+
config = Config.get();
420+
});
421+
422+
afterAll(() => {
423+
Config.reset();
424+
});
425+
426+
test("should default to false when not provided", () => {
427+
const initData: Partial<IInitData> = {};
428+
handleInitData(initData);
429+
expect(config.enableLivePreviewOutsideIframe).toBe(false);
430+
});
431+
432+
test("should set to true when provided as true", () => {
433+
const initData: Partial<IInitData> = {
434+
enableLivePreviewOutsideIframe: true,
435+
};
436+
handleInitData(initData);
437+
expect(config.enableLivePreviewOutsideIframe).toBe(true);
438+
});
439+
440+
test("should remain false when provided as false", () => {
441+
const initData: Partial<IInitData> = {
442+
enableLivePreviewOutsideIframe: false,
443+
};
444+
handleInitData(initData);
445+
expect(config.enableLivePreviewOutsideIframe).toBe(false);
446+
});
447+
});
448+
414449
describe("handleClientUrlParams()", () => {
415450
let config: DeepSignal<IConfig>;
416451

src/livePreview/eventManager/__test__/postMessageEvent.hooks.test.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ import {
1515
import {
1616
useOnEntryUpdatePostMessageEvent,
1717
useHistoryPostMessageEvent,
18+
sendInitializeLivePreviewPostMessageEvent,
1819
} from "../postMessageEvent.hooks";
1920
import { isOpeningInNewTab } from "../../../common/inIframe";
2021

2122
// Mock dependencies
2223
vi.mock("../../../configManager/configManager", () => ({
2324
default: {
2425
get: vi.fn(),
26+
set: vi.fn(),
2527
},
2628
setConfigFromParams: vi.fn(),
2729
}));
@@ -35,13 +37,19 @@ vi.mock("../../../logger/logger", () => ({
3537
vi.mock("../livePreviewEventManager", () => ({
3638
default: {
3739
on: vi.fn(),
40+
send: vi.fn(),
3841
},
3942
}));
4043

4144
vi.mock("../../../common/inIframe", () => ({
4245
isOpeningInNewTab: vi.fn(),
4346
}));
4447

48+
vi.mock("../../../utils", () => ({
49+
addParamsToUrl: vi.fn(),
50+
isOpeningInTimeline: vi.fn(() => false),
51+
}));
52+
4553
describe("postMessageEvent.hooks", () => {
4654
let mockWindow: any;
4755
let mockConfig: any;
@@ -415,4 +423,56 @@ describe("postMessageEvent.hooks", () => {
415423
}).toThrow("Unhandled event: unknown");
416424
});
417425
});
426+
427+
describe("sendInitializeLivePreviewPostMessageEvent", () => {
428+
beforeEach(() => {
429+
// default send resolves with preview windowType, no contentType/entry to avoid side-effects
430+
(livePreviewPostMessage as any).send.mockResolvedValue({
431+
windowType: "preview",
432+
});
433+
});
434+
435+
it("should include enableLivePreviewOutsideIframe=false in INIT payload", async () => {
436+
mockConfig = {
437+
ssr: true, // avoid timers
438+
mode: 1,
439+
enableLivePreviewOutsideIframe: false,
440+
};
441+
(Config.get as any).mockReturnValue(mockConfig);
442+
443+
await sendInitializeLivePreviewPostMessageEvent();
444+
// allow microtasks to flush
445+
await Promise.resolve();
446+
447+
expect(livePreviewPostMessage?.send).toHaveBeenCalledWith(
448+
LIVE_PREVIEW_POST_MESSAGE_EVENTS.INIT,
449+
expect.objectContaining({
450+
config: expect.objectContaining({
451+
enableLivePreviewOutsideIframe: false,
452+
}),
453+
})
454+
);
455+
});
456+
457+
it("should include enableLivePreviewOutsideIframe=true in INIT payload", async () => {
458+
mockConfig = {
459+
ssr: true, // avoid timers
460+
mode: 1,
461+
enableLivePreviewOutsideIframe: true,
462+
};
463+
(Config.get as any).mockReturnValue(mockConfig);
464+
465+
await sendInitializeLivePreviewPostMessageEvent();
466+
await Promise.resolve();
467+
468+
expect(livePreviewPostMessage?.send).toHaveBeenCalledWith(
469+
LIVE_PREVIEW_POST_MESSAGE_EVENTS.INIT,
470+
expect.objectContaining({
471+
config: expect.objectContaining({
472+
enableLivePreviewOutsideIframe: true,
473+
}),
474+
})
475+
);
476+
});
477+
});
418478
});

0 commit comments

Comments
 (0)