import { act, fireEvent, render, screen } from "@testing-library/react" import { Effect, Layer } from "effect" import * as React from "react" import { describe, expect, it, vi } from "vitest" import * as Async from "../src/Async.js" import * as Component from "../src/Component.js" import * as Memoized from "../src/Memoized.js" import * as ReactRuntime from "../src/ReactRuntime.js" describe("Async", () => { it("does not rerun for an unrelated parent state update", async () => { const load = vi.fn((_id: number) => Effect.never) const renderPost = vi.fn() const runtime = ReactRuntime.make(Layer.empty) const context = await runtime.runtime.context() const Post = Component.make("Post")(function*(props: { readonly id: number }) { renderPost() const value = yield* Component.useOnChange(() => load(props.id), [props.id]) return