mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-10-03 18:23:47 +10:00
Prune the unit and e2e suites to what protects security, user data, public contracts and past regressions. Drop what slowed development without catching bugs: markup and label assertions, wrappers that only proved Base UI works, copied inventories and snapshots, mock call-shape checks, permutation matrices across templates, fonts and locales, and env-gated suites that never ran in CI. - Unit: 4749 tests in 421 files become 1212 in 227. PDF tests that rendered or rasterized every template, font and locale combination go; one render per template stays and now checks that every visible section reaches a page, which a blank page used to pass. - E2E: 55 tests in 35 specs become 11 in 9, one journey per severe area: sign-up and sign-in, autosave, a failed save during navigation, JSON export and import, public and password-protected sharing, slug redirects, OAuth consent for MCP clients, and the assistant. - Tests a coverage review found to be the only guard of a contract were kept or restored, each checked by breaking the code it guards. - Remove exports, tooling and dev dependencies that only the pruned tests used. - The Semantic CSS guide check now reads indented code fences, so the guide example it skipped is compiled too.
21 lines
727 B
TypeScript
21 lines
727 B
TypeScript
import { render, screen } from "@testing-library/react";
|
|
import userEvent from "@testing-library/user-event";
|
|
import { describe, expect, it, vi } from "vitest";
|
|
import { Button } from "./button";
|
|
|
|
describe("Button", () => {
|
|
it("shows a spinner, sets aria-busy and ignores clicks while loading", async () => {
|
|
const onClick = vi.fn();
|
|
render(
|
|
<Button loading onClick={onClick}>
|
|
Preparing…
|
|
</Button>,
|
|
);
|
|
const button = screen.getByRole("button", { name: "Preparing…" });
|
|
expect(button).toHaveAttribute("aria-busy", "true");
|
|
expect(button.querySelector('[data-slot="spinner"]')).toHaveAttribute("aria-hidden", "true");
|
|
await userEvent.click(button);
|
|
expect(onClick).not.toHaveBeenCalled();
|
|
});
|
|
});
|