Files
canvas-frontend/qa/probe_personas.mjs
T
shad fd8c4853df feat(chat): EA2-backed 1:1 messaging surface
New Chat scene at the Chat top-bar tab. Threads and messages are stored
as flow docs (kind=definition, source_context=EA2_CHAT_THREAD / _MSG)
linked by defines edges with role=next — same proven contract as wizard
steps. Persona directory lets the signed-in operator open a thread with
the CEO / HR / IT personas.

- src/lib/chatApi.ts: listThreads / createThread / listMessages / sendMessage
- src/scenes/Chat.tsx: sidebar (threads + new-thread picker) + main pane
  (header, bubbles, composer with Enter-to-send / Shift-Enter newline)
- src/index.css: chat-scene grid + bubble + composer styles
- src/App.tsx: Chat tab + scene route
2026-06-14 12:33:43 +04:00

14 lines
755 B
JavaScript

import { chromium } from "playwright";
const b = await chromium.launch({ headless: true, args: ["--host-resolver-rules=MAP canvas.flow-master.ai 65.21.71.186", "--ignore-certificate-errors"] });
const p = await (await b.newContext()).newPage();
await p.goto("https://canvas.flow-master.ai/", { waitUntil: "networkidle" });
await p.waitForTimeout(1000);
const chips = await p.locator(".persona-chip").allTextContents();
console.log("persona chips:", chips);
// Click CEO chip → email field should fill
await p.locator(".persona-chip", { hasText: /Mariana/ }).click().catch(() => {});
await p.waitForTimeout(300);
const email = await p.locator("input[type='email']").inputValue();
console.log("after Mariana click, email field:", email);
await b.close();