Files
OwnCord/Client/tests/e2e/message-send-flow.spec.ts
T
J3vbandClaude 7365a31b45 refactor: flatten Client/tauri-client into Client (B1-1) (#1411)
* refactor: move Client/tauri-client to Client (pure move, no content change)

* refactor: re-point paths after the Client flatten (mechanical, no behaviour change)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-08-26 08:55:06 +02:00

77 lines
2.6 KiB
TypeScript

/**
* E2E tests for the message send round-trip flow.
* Covers: type message → send → see it appear in message list.
*/
import { test, expect } from "@playwright/test";
import { mockTauriFullSessionWithEcho, navigateToMainPage } from "./helpers";
test.describe("Message Send Flow", () => {
test.beforeEach(async ({ page }) => {
await mockTauriFullSessionWithEcho(page);
await page.goto("/");
await navigateToMainPage(page);
});
test("typing and pressing Enter sends a message", async ({ page }) => {
const textarea = page.locator("[data-testid='msg-textarea']");
await textarea.fill("Hello from E2E test!");
await textarea.press("Enter");
// Message should appear in the list via WS echo
const newMsg = page.locator(".message .msg-text", {
hasText: "Hello from E2E test!",
});
await expect(newMsg).toBeVisible({ timeout: 5000 });
});
test("send button click sends the message", async ({ page }) => {
const textarea = page.locator("[data-testid='msg-textarea']");
await textarea.fill("Sent via button click");
const sendBtn = page.locator("[data-testid='send-btn']");
await sendBtn.click();
const newMsg = page.locator(".message .msg-text", {
hasText: "Sent via button click",
});
await expect(newMsg).toBeVisible({ timeout: 5000 });
});
test("textarea clears after sending", async ({ page }) => {
const textarea = page.locator("[data-testid='msg-textarea']");
await textarea.fill("Clear after send");
await textarea.press("Enter");
// Wait for the echo message to appear (confirms send happened)
await expect(page.locator(".message .msg-text", { hasText: "Clear after send" })).toBeVisible({
timeout: 5000,
});
// Textarea should be empty
await expect(textarea).toHaveValue("");
});
test("empty message is not sent", async ({ page }) => {
const textarea = page.locator("[data-testid='msg-textarea']");
// Focus and press Enter without typing
await textarea.focus();
await textarea.press("Enter");
// Count messages — should still be 1 (the pre-loaded mock message)
const messages = page.locator(".message");
await expect(messages).toHaveCount(1);
});
test("long message sends successfully", async ({ page }) => {
const longContent = "A".repeat(500);
const textarea = page.locator("[data-testid='msg-textarea']");
await textarea.fill(longContent);
await textarea.press("Enter");
const newMsg = page.locator(".message .msg-text", {
hasText: longContent,
});
await expect(newMsg).toBeVisible({ timeout: 5000 });
});
});