Skip to content

Commit 133b53d

Browse files
committed
disable sync IO tests in turbopack due to workUnitAsyncStorage bug
1 parent 8397add commit 133b53d

File tree

1 file changed

+43
-36
lines changed

1 file changed

+43
-36
lines changed

test/development/app-dir/cache-components-dev-warmup/cache-components.dev-warmup.test.ts

Lines changed: 43 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -309,50 +309,57 @@ describe.each([
309309
}
310310
})
311311

312-
it('sync IO in the static phase', async () => {
313-
const path = '/sync-io/static'
312+
// FIXME: it seems like in Turbopack we sometimes get two instances of `workUnitAsyncStorage` --
313+
// `app-render` gets a second, newer instance, different from `io()`.
314+
// Thus, `io()` gets an undefined `workUnitStore` and does nothing, so sync IO does not get tracked at all.
315+
// This is likely caused by the same bug that breaks `/revalidate` (see other FIXME above),
316+
// where a route crashes due to a missing `workStore`.
317+
if (!isTurbopack) {
318+
it('sync IO in the static phase', async () => {
319+
const path = '/sync-io/static'
314320

315-
const assertLogs = async (browser: Playwright) => {
316-
const logs = await browser.log()
321+
const assertLogs = async (browser: Playwright) => {
322+
const logs = await browser.log()
317323

318-
assertLog(logs, 'after first cache', 'Prerender')
319-
// sync IO in the static stage errors and advances to Server.
320-
assertLog(logs, 'after sync io', 'Server')
321-
assertLog(logs, 'after cache read - page', 'Server')
322-
}
324+
assertLog(logs, 'after first cache', 'Prerender')
325+
// sync IO in the static stage errors and advances to Server.
326+
assertLog(logs, 'after sync io', 'Server')
327+
assertLog(logs, 'after cache read - page', 'Server')
328+
}
323329

324-
if (isInitialLoad) {
325-
await testInitialLoad(path, assertLogs)
326-
} else {
327-
await testNavigation(path, assertLogs)
328-
}
329-
})
330+
if (isInitialLoad) {
331+
await testInitialLoad(path, assertLogs)
332+
} else {
333+
await testNavigation(path, assertLogs)
334+
}
335+
})
330336

331-
it('sync IO in the runtime phase', async () => {
332-
const path = '/sync-io/runtime'
337+
it('sync IO in the runtime phase', async () => {
338+
const path = '/sync-io/runtime'
333339

334-
const assertLogs = async (browser: Playwright) => {
335-
const logs = await browser.log()
340+
const assertLogs = async (browser: Playwright) => {
341+
const logs = await browser.log()
336342

337-
assertLog(logs, 'after first cache', 'Prerender')
338-
assertLog(logs, 'after cookies', RUNTIME_ENV)
339-
if (hasRuntimePrefetch) {
340-
// if runtime prefetching is on, sync IO in the runtime stage errors and advances to Server.
341-
assertLog(logs, 'after sync io', 'Server')
342-
assertLog(logs, 'after cache read - page', 'Server')
343-
} else {
344-
// if runtime prefetching is not on, sync IO in the runtime stage does nothing.
345-
assertLog(logs, 'after sync io', RUNTIME_ENV)
346-
assertLog(logs, 'after cache read - page', RUNTIME_ENV)
343+
assertLog(logs, 'after first cache', 'Prerender')
344+
assertLog(logs, 'after cookies', RUNTIME_ENV)
345+
if (hasRuntimePrefetch) {
346+
// if runtime prefetching is on, sync IO in the runtime stage errors and advances to Server.
347+
assertLog(logs, 'after sync io', 'Server')
348+
assertLog(logs, 'after cache read - page', 'Server')
349+
} else {
350+
// if runtime prefetching is not on, sync IO in the runtime stage does nothing.
351+
assertLog(logs, 'after sync io', RUNTIME_ENV)
352+
assertLog(logs, 'after cache read - page', RUNTIME_ENV)
353+
}
347354
}
348-
}
349355

350-
if (isInitialLoad) {
351-
await testInitialLoad(path, assertLogs)
352-
} else {
353-
await testNavigation(path, assertLogs)
354-
}
355-
})
356+
if (isInitialLoad) {
357+
await testInitialLoad(path, assertLogs)
358+
} else {
359+
await testNavigation(path, assertLogs)
360+
}
361+
})
362+
}
356363
})
357364
}
358365
)

0 commit comments

Comments
 (0)