Fix annotation UI test flush helper

This commit is contained in:
Dotta committed 2026-05-26 12:13:52 +00:00
1 parent 82e2bbec97
commit a98418689e
2 files changed
+16 -7

No files matched your search

@@ -1,6 +1,5 @@
// @vitest-environment jsdom
import { act } from "react";
import { createRoot, type Root } from "react-dom/client";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { DocumentAnnotationLayer } from "./DocumentAnnotationLayer";
@@ -16,6 +15,12 @@ vi.mock("@/lib/document-annotation-selection", () => ({
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
async function act(callback: () => void | Promise<void>) {
await callback();
await Promise.resolve();
await new Promise((resolve) => setTimeout(resolve, 0));
}
function makeRect(left: number, top: number, width: number, height: number): DOMRect {
return {
x: left,
@@ -49,9 +54,9 @@ describe("DocumentAnnotationLayer", () => {
rectSpy = vi.spyOn(HTMLElement.prototype, "getBoundingClientRect").mockReturnValue(makeRect(0, 0, 400, 300));
});
afterEach(() => {
afterEach(async () => {
if (root) {
act(() => root?.unmount());
await act(() => root?.unmount());
root = null;
}
rectSpy.mockRestore();
@@ -1,6 +1,6 @@
// @vitest-environment jsdom
import { act, useState } from "react";
import { useState } from "react";
import { createRoot } from "react-dom/client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import type {
@@ -94,10 +94,14 @@ vi.mock("./DocumentAnnotationLayer", () => ({
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
async function act(callback: () => void | Promise<void>) {
await callback();
await Promise.resolve();
await new Promise((resolve) => setTimeout(resolve, 0));
}
async function flush() {
await act(async () => {
await new Promise((resolve) => setTimeout(resolve, 0));
});
await act(() => {});
}
function setTextareaValue(textarea: HTMLTextAreaElement, value: string) {