]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix: tests
authordaiwei <daiwei521@126.com>
Sun, 2 Mar 2025 07:09:08 +0000 (15:09 +0800)
committerdaiwei <daiwei521@126.com>
Sun, 2 Mar 2025 07:09:08 +0000 (15:09 +0800)
packages/runtime-core/src/hydrationStrategies.ts
packages/vue/__tests__/e2e/hydration-strat-idle.html
packages/vue/__tests__/e2e/hydrationStrategies.spec.ts

index bad39884830ea2d262464ca2f56bdc87289fa8ee..071ac819b686e5c098fc4ff0767959de9b2c28f5 100644 (file)
@@ -18,7 +18,7 @@ const cancelIdleCallback: Window['cancelIdleCallback'] =
  *          listeners.
  */
 export type HydrationStrategy = (
-  hydrate: () => void,
+  hydrate: () => void | Promise<any>,
   forEachElement: (cb: (el: Element) => any) => void,
 ) => (() => void) | void
 
@@ -86,11 +86,12 @@ export const hydrateOnInteraction: HydrationStrategyFactory<
   (hydrate, forEach) => {
     if (isString(interactions)) interactions = [interactions]
     let hasHydrated = false
-    const doHydrate = (e: Event) => {
+    const doHydrate = async (e: Event) => {
       if (!hasHydrated) {
         hasHydrated = true
         teardown()
-        hydrate()
+        // eslint-disable-next-line no-restricted-syntax
+        await hydrate()
         // replay event
         e.target!.dispatchEvent(new (e.constructor as any)(e.type, e))
       }
index d2e71815ffba4b9d55b03dba3c359ec229b0e8ad..f9131e0c6dd43abdd8c7ef78780e0abe74ff5b40 100644 (file)
     loader: () =>
       new Promise(resolve => {
         setTimeout(() => {
-          debugger
           console.log('resolve')
           resolve(Comp)
-          requestIdleCallback(() => {
-            console.log('busy')
-          })
         }, 10)
       }),
     hydrate: hydrateOnIdle(),
index 69934d9591e8b10f71cd00aafe059c193175e93a..54c07f3df1e2face4cfd04a1cc82b01f14597b4a 100644 (file)
@@ -31,8 +31,8 @@ describe('async component hydration strategies', () => {
     expect(await page().evaluate(() => window.isHydrated)).toBe(false)
     // wait for hydration
     await page().waitForFunction(() => window.isHydrated)
-    // assert message order: hyration should happen after already queued main thread work
-    expect(messages.slice(1)).toMatchObject(['resolve', 'busy', 'hydrated'])
+    // assert message order
+    expect(messages.slice(1)).toMatchObject(['resolve', 'hydrated'])
     await assertHydrationSuccess()
   })