Skip to content

Commit 77a6c5b

Browse files
authored
improve: MCD-541: Add waitForNuxtHydration helper (#33)
* improve: MCD-541: Add waitForNuxtHydration helper * MCD-541: Fix CSP * MCD-541: Improve waitForNuxtHydration * MCD-541: Improve wait for nuxt to use events * Update comments test-methods.d.ts
1 parent b76fce1 commit 77a6c5b

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

tests/helpers/test-methods.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,15 @@ export function theStatusMessageShouldContain([message, page]): Promise<void>;
5656
* array page object, selector and text to be filled.
5757
*/
5858
export function fillCKEditorTextArea([page, locator, textAreaContent]): Promise<void>;
59+
60+
/**
61+
* Wait for Nuxt hydration to complete before running tests.
62+
* @param {Page} page The page to wait for.
63+
*/
64+
export function waitForNuxtHydration(page): Promise<void>;
65+
66+
/**
67+
* Wait for Nuxt to be ready before running tests.
68+
* @param {Page} page The page to wait for.
69+
*/
70+
export function waitForNuxtToBeReady(page): Promise<void>;

tests/helpers/test-methods.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,42 @@ module.exports = {
138138
editorInstance.setData(textAreaContent);
139139
}, { locator, textAreaContent });
140140
},
141+
/**
142+
* Wait for Nuxt hydration to complete before running tests.
143+
* @param {Page} page The page to wait for.
144+
*/
145+
waitForNuxtHydration: async (page) => {
146+
await page.evaluate(async () => {
147+
return new Promise((resolve) => {
148+
// Check if hydration has already completed.
149+
if (window.lupusNuxtHydrationComplete) {
150+
resolve(true);
151+
return;
152+
}
153+
// Otherwise, wait for the event.
154+
window.addEventListener('lupus-nuxt:loading:end', () => resolve(true), {
155+
once: true,
156+
});
157+
});
158+
});
159+
},
160+
/**
161+
* Wait for Nuxt to be ready before running tests.
162+
* @param {Page} page The page to wait for.
163+
*/
164+
waitForNuxtToBeReady: async (page) => {
165+
await page.evaluate(async () => {
166+
return new Promise((resolve) => {
167+
// Check if Nuxt is already ready.
168+
if (window.lupusNuxtReady) {
169+
resolve(true);
170+
return;
171+
}
172+
// Otherwise, wait for the event.
173+
window.addEventListener('lupus-nuxt:ready', () => resolve(true), {
174+
once: true,
175+
});
176+
});
177+
});
178+
},
141179
};

0 commit comments

Comments
 (0)