import "../../../tests/web/test-utils"; import { render } from "@testing-library/react"; import { describe, expect, test } from "bun:test"; import type { TargetMetricsResponse, TargetStatus } from "../../../src/shared/api"; import { OverviewTab } from "../../../src/web/components/OverviewTab"; describe("OverviewTab", () => { const target: TargetStatus = { currentStreak: null, description: null, group: "default", id: "1", interval: "30s", latestCheck: { detail: "200 OK", durationMs: 100, failure: null, matched: true, observation: null, timestamp: "2025-01-15T10:00:00.000Z", }, name: "test-target", recentSamples: [], stats: { availability: 100, downChecks: 0, totalChecks: 10, upChecks: 10 }, target: "https://example.com", type: "http", }; const metricsData: TargetMetricsResponse = { stats: { availability: 95, avgDurationMs: 150, currentStreak: { count: 5, up: true }, downChecks: 1, incidentCount: 1, longestOutage: 60000, mttr: 30000, p95DurationMs: 200, p99DurationMs: 250, totalChecks: 20, upChecks: 19, }, targetId: "1", trend: [], window: { bucket: "1h", from: "", to: "" }, }; test("有数据不崩溃", () => { const { container } = render(); expect(container.firstChild).not.toBeNull(); }); test("loading 状态不崩溃", () => { const { container } = render(); expect(container.firstChild).not.toBeNull(); }); test("无指标数据不崩溃", () => { const { container } = render(); expect(container.firstChild).not.toBeNull(); }); test("显示趋势图表不崩溃", () => { const { container } = render(); expect(container.firstChild).not.toBeNull(); }); });