56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { screen, waitFor } from "@testing-library/react";
|
|
import userEvent from "@testing-library/user-event";
|
|
import { ForgePage } from "./ForgePage";
|
|
import { renderWithProviders } from "@/test/test-utils";
|
|
|
|
describe("ForgePage", () => {
|
|
it("renders forge & deploy page without crash", async () => {
|
|
renderWithProviders(<ForgePage />);
|
|
expect(
|
|
screen.getByRole("heading", { name: /Forge & Deploy/i }),
|
|
).toBeInTheDocument();
|
|
|
|
// Dropper panel loads
|
|
await waitFor(() => {
|
|
expect(screen.getByText(/Install command/i)).toBeInTheDocument();
|
|
});
|
|
|
|
// Build list loads
|
|
await waitFor(() => {
|
|
expect(screen.getByText(/linux\/amd64/i)).toBeInTheDocument();
|
|
});
|
|
|
|
expect(screen.getAllByText("SIGNED").length).toBeGreaterThan(0);
|
|
expect(screen.getByText("PUBLIC")).toBeInTheDocument();
|
|
});
|
|
|
|
it("shows the dropper one-liner", async () => {
|
|
renderWithProviders(<ForgePage />);
|
|
await waitFor(() => {
|
|
expect(
|
|
screen.getByText(/FORGE_MESH_FLEET_SECRET/),
|
|
).toBeInTheDocument();
|
|
});
|
|
});
|
|
|
|
it("can trigger a build", async () => {
|
|
const user = userEvent.setup();
|
|
renderWithProviders(<ForgePage />);
|
|
|
|
// Wait for page to settle
|
|
await waitFor(() => {
|
|
expect(screen.getByText(/linux\/amd64/i)).toBeInTheDocument();
|
|
});
|
|
|
|
await user.click(
|
|
screen.getByRole("button", { name: /Build & Publish/i }),
|
|
);
|
|
await waitFor(() => {
|
|
expect(
|
|
screen.getByText(/Build complete — artifacts signed and published/i),
|
|
).toBeInTheDocument();
|
|
});
|
|
});
|
|
});
|