mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
Add a per-browser "Control hints" switch to the popup that hides the in-page control overlay (status pill + orange glow, along with its input blocker) while the Agent controls a tab. Preference lives in chrome.storage.local (bsk_control_hints_hidden, default: shown) and is applied live in content scripts via storage.onChanged. Both popup settings rows share a single Switch component; the hint copy lives in an info-icon tooltip. Refs #62
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import { cleanup, fireEvent, render, screen } from "@testing-library/react";
|
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { Switch } from "./switch";
|
|
|
|
describe("Switch", () => {
|
|
afterEach(() => {
|
|
cleanup();
|
|
});
|
|
|
|
it("renders switch semantics with the checked state", () => {
|
|
render(<Switch checked={true} onCheckedChange={vi.fn()} aria-label="开关" />);
|
|
|
|
const toggle = screen.getByRole("switch", { name: "开关" });
|
|
expect(toggle.getAttribute("aria-checked")).toBe("true");
|
|
expect(toggle.className).toContain("h-5 w-9");
|
|
expect(toggle.className).toContain("bg-primary");
|
|
});
|
|
|
|
it("calls onCheckedChange with the negated state when clicked", () => {
|
|
const onCheckedChange = vi.fn();
|
|
render(<Switch checked={false} onCheckedChange={onCheckedChange} aria-label="开关" />);
|
|
|
|
const toggle = screen.getByRole("switch", { name: "开关" });
|
|
expect(toggle.className).toContain("bg-muted");
|
|
|
|
fireEvent.click(toggle);
|
|
expect(onCheckedChange).toHaveBeenCalledWith(true);
|
|
});
|
|
});
|