Skip to content

Commit 1be7039

Browse files
committed
[tests] Assert scheduler log empty in internalAct (#28737)
We should force `assertLog` to be called before each `act` block to ensure the queue is empty. Requires fixing tests: - #28745 - #28758 - #28759 - #28760 - #28761 - #28762 - #28763 - #28812
1 parent 9d096fb commit 1be7039

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

packages/internal-test-utils/internalAct.js

+13
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {Thenable} from 'shared/ReactTypes';
1919
import * as Scheduler from 'scheduler/unstable_mock';
2020

2121
import enqueueTask from './enqueueTask';
22+
import {diff} from 'jest-diff';
2223

2324
export let actingUpdatesScopeDepth: number = 0;
2425

@@ -45,6 +46,18 @@ export async function act<T>(scope: () => Thenable<T>): Thenable<T> {
4546
);
4647
}
4748

49+
const actualYields = Scheduler.unstable_clearLog();
50+
if (actualYields.length !== 0) {
51+
const error = Error(
52+
'Log of yielded values is not empty. Call assertLog first.\n\n' +
53+
`Received:\n${diff('', actualYields.join('\n'), {
54+
omitAnnotationLines: true,
55+
})}`,
56+
);
57+
Error.captureStackTrace(error, act);
58+
throw error;
59+
}
60+
4861
// $FlowFixMe[cannot-resolve-name]: Flow doesn't know about global Jest object
4962
if (!jest.isMockFunction(setTimeout)) {
5063
throw Error(

scripts/flow/environment.js

+25
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,31 @@ declare module 'node:worker_threads' {
332332
}
333333
}
334334

335+
declare module 'jest-diff' {
336+
declare type CompareKeys = ((a: string, b: string) => number) | void;
337+
declare type DiffOptions = {
338+
aAnnotation?: string,
339+
aColor?: (arg: string) => string,
340+
aIndicator?: string,
341+
bAnnotation?: string,
342+
bColor?: (arg: string) => string,
343+
bIndicator?: string,
344+
changeColor?: (arg: string) => string,
345+
changeLineTrailingSpaceColor?: (arg: string) => string,
346+
commonColor?: (arg: string) => string,
347+
commonIndicator?: string,
348+
commonLineTrailingSpaceColor?: (arg: string) => string,
349+
contextLines?: number,
350+
emptyFirstOrLastLinePlaceholder?: string,
351+
expand?: boolean,
352+
includeChangeCounts?: boolean,
353+
omitAnnotationLines?: boolean,
354+
patchColor?: (arg: string) => string,
355+
compareKeys?: CompareKeys,
356+
};
357+
declare function diff(a: any, b: any, options?: DiffOptions): string;
358+
}
359+
335360
declare const Bun: {
336361
hash(
337362
input: string | $TypedArray | DataView | ArrayBuffer | SharedArrayBuffer,

0 commit comments

Comments
 (0)