ff
This commit is contained in:
100
e2e/smoke.spec.ts
Normal file
100
e2e/smoke.spec.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("站点冒烟", () => {
|
||||
test("首页可访问且无致命前端错误", async ({ page }) => {
|
||||
const pageErrors: string[] = [];
|
||||
page.on("pageerror", (err) => {
|
||||
pageErrors.push(err.message);
|
||||
});
|
||||
|
||||
const response = await page.goto("/", { waitUntil: "networkidle" });
|
||||
expect(response?.ok()).toBeTruthy();
|
||||
|
||||
await expect(page.locator("main")).toBeVisible();
|
||||
await expect(page).toHaveTitle(/海宇数科/);
|
||||
await expect(page.getByRole("heading", { level: 1 })).toContainText(
|
||||
/智能报告/,
|
||||
);
|
||||
await expect(page.locator("#reports")).toBeVisible();
|
||||
await expect(page.getByText("KYB 企业核验")).toBeVisible();
|
||||
const exampleBtn = page
|
||||
.locator("#reports")
|
||||
.getByRole("button", { name: "查看智能体报告示例" })
|
||||
.first();
|
||||
await exampleBtn.scrollIntoViewIfNeeded();
|
||||
await exampleBtn.click();
|
||||
await expect(page.getByRole("dialog")).toBeVisible();
|
||||
await expect(page.getByRole("dialog")).toContainText("核验结论");
|
||||
await expect(page.locator("#models")).toBeVisible();
|
||||
|
||||
const squareLink = page.getByRole("link", { name: "模型广场" }).first();
|
||||
await squareLink.click();
|
||||
await expect(page).toHaveURL(/\/models$/);
|
||||
await expect(page.getByRole("heading", { level: 1 })).toContainText(
|
||||
"模型广场",
|
||||
);
|
||||
await expect(page.getByText("minimax-m2.7-highspeed")).toBeVisible();
|
||||
await expect(page.getByText("glm-5.1")).toBeVisible();
|
||||
|
||||
await page.goto("/news", { waitUntil: "domcontentloaded" });
|
||||
await expect(page.getByRole("heading", { level: 1 })).toContainText(
|
||||
"AI 新闻资讯",
|
||||
);
|
||||
await page
|
||||
.getByRole("link", { name: "智能报告模板库 2.0 发布" })
|
||||
.first()
|
||||
.click();
|
||||
await expect(page).toHaveURL(/\/news\/report-templates-2/);
|
||||
await expect(page.getByRole("heading", { level: 1 })).toContainText(
|
||||
"智能报告模板库 2.0 发布",
|
||||
);
|
||||
|
||||
expect(
|
||||
pageErrors,
|
||||
pageErrors.length ? pageErrors.join("\n") : undefined,
|
||||
).toEqual([]);
|
||||
});
|
||||
|
||||
test("窄屏显示移动菜单并可展开导航", async ({ page }) => {
|
||||
await page.setViewportSize({ width: 390, height: 844 });
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
await expect(page.getByRole("button", { name: "菜单" })).toBeVisible();
|
||||
await page.getByRole("button", { name: "菜单" }).click();
|
||||
await expect(page.getByRole("link", { name: "智能报告" }).first()).toBeVisible();
|
||||
await page.getByRole("link", { name: "模型能力" }).first().click();
|
||||
await expect(page).toHaveURL(/\/models\/?$/);
|
||||
});
|
||||
|
||||
test("文档中心可访问并展示侧栏与示例正文", async ({ page }) => {
|
||||
const response = await page.goto("/docs", {
|
||||
waitUntil: "domcontentloaded",
|
||||
});
|
||||
expect(response?.ok()).toBeTruthy();
|
||||
await expect(page).toHaveTitle(/文档中心/);
|
||||
await expect(
|
||||
page.getByRole("region", { name: "文档导航" }),
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("navigation", { name: "面包屑" }),
|
||||
).toContainText("文档中心");
|
||||
await expect(
|
||||
page.getByRole("complementary", { name: "文档目录" }).or(
|
||||
page.getByRole("navigation", { name: "文档目录(移动端)" }),
|
||||
),
|
||||
).toBeVisible({ timeout: 15_000 });
|
||||
await expect(page.getByRole("link", { name: "快速开始" }).first()).toBeVisible();
|
||||
await page.getByRole("link", { name: "OpenAI" }).first().click();
|
||||
await expect(page).toHaveURL(/\/docs\/models\/openai/);
|
||||
await expect(page.locator(".docs-prose h1, .docs-prose h2").first()).toContainText(
|
||||
"OpenAI",
|
||||
);
|
||||
await expect(page.getByText("chat/completions")).toBeVisible();
|
||||
});
|
||||
|
||||
test("全局样式编译通过(无 Turbopack CSS 报错页)", async ({ page }) => {
|
||||
await page.goto("/", { waitUntil: "domcontentloaded" });
|
||||
const bodyText = await page.locator("body").innerText();
|
||||
expect(bodyText).not.toContain("Cannot apply unknown utility class");
|
||||
expect(bodyText).not.toContain("CssSyntaxError");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user