Files
OpenMesh/surfaces/gui/e2e/connector-page.spec.ts
zhaolei 6f402ffcee
Some checks failed
CI / pytest (push) Has been cancelled
CI / gui-unit (push) Has been cancelled
CI / gui-e2e (push) Has been cancelled
feat: OpenMesh 基础平台与 MD/PDF 转换技能
- 后端: coworker 智能体框架, WS API, 文件上传, 附件处理
- 前端: Open WebUI, 文件全量走 upload API (含 MD/TXT/JSON 等文本类)
- 技能: md-to-office (pandoc + wkhtmltopdf)
- 修复: 上传文件路径丢失, Agent 搜索浪费, 输出文件跑到 uploads/
- 打包: PyInstaller one-dir, 预打包 pandoc/wkhtmltopdf/chromium
2026-09-13 23:41:04 +08:00

63 lines
2.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Slack config is a detail SUBPAGE under Connectors (UX-DECISIONS §21): the list row
// navigates to it, and the §19 flows — parked senders (Allow & deliver / Allow / ×)
// and "listening" sessions — are filed under the workspace they belong to.
import { expect } from "@playwright/test";
import { test } from "./fixtures";
async function openSlackPage(page) {
await page.goto("/");
await page.getByTestId("account-row").click();
await page.getByRole("button", { name: "Connectors", exact: true }).click();
await page.getByTestId("connector-slack").click();
}
test("list row status + navigation to the Slack page", async ({ page }) => {
await page.goto("/");
await page.getByTestId("account-row").click();
await page.getByRole("button", { name: "Connectors", exact: true }).click();
const row = page.getByTestId("connector-slack");
await expect(row).toContainText("2 workspaces · relay");
await row.click();
await expect(page.getByTestId("slack-workspaces")).toBeVisible();
// signed out (fixture default) → the status line leads with the actionable layer
await expect(page.getByTestId("slack-mode-badge")).toContainText("Sign-in needed");
});
test("parked sender files under ITS workspace; Allow & deliver adds to that allow-list only", async ({
page,
}) => {
await openSlackPage(page);
// pk1 belongs to T1DL — its Waiting row renders in that workspace's group only.
const t1 = page.getByTestId("slack-workspace-T1DL");
await expect(t1.getByTestId("waiting-pk1")).toContainText("Maya");
await expect(t1.getByTestId("waiting-pk1")).toContainText("in #ocw-test");
await expect(t1.getByTestId("waiting-pk1")).toContainText("hey ocw, can you summarize this thread?");
await expect(page.getByTestId("slack-workspace-T2AC").getByTestId("waiting-pk1")).toHaveCount(0);
await page.getByTestId("parked-allow-deliver-pk1").click();
await expect(page.getByTestId("waiting-pk1")).toHaveCount(0);
// The sender lands on the T1DL allow-list; the sibling workspace stays empty.
await expect(t1).toContainText("U0NEW");
await expect(page.getByTestId("slack-workspace-T2AC")).not.toContainText("U0NEW");
});
test("parked sender can be dismissed without allowing", async ({ page }) => {
await openSlackPage(page);
await page.getByTestId("parked-dismiss-pk1").click();
await expect(page.getByTestId("waiting-pk1")).toHaveCount(0);
await expect(page.getByTestId("slack-workspace-T1DL")).not.toContainText("U0NEW");
});
test("sessions listening in a workspace: listed with unsubscribe", async ({ page }) => {
await openSlackPage(page);
const t1 = page.getByTestId("slack-workspace-T1DL");
await expect(t1.getByTestId("listening-slack")).toContainText("Weekly plan 1");
await expect(t1.getByTestId("listening-slack")).toContainText("#ocw-test");
await t1.getByTitle("Unsubscribe this session").click();
await expect(t1.getByTestId("listening-slack")).toHaveCount(0); // row hides when empty
});