"""تست سریع بدون Chrome: شبیه‌سازی چیزی که افزونه می‌فرستد (با startedAt/endedAt). اول سرور را بالا بیاور: python ws_server.py بعد: python _smoke_test.py باید PONG + چند ACK بگیری و فایل‌های transcripts/meeting-abc123.{srt,txt,json} ساخته شوند. """ import asyncio import json import websockets async def main(): base = 1_700_000_000_000 # epoch ms async with websockets.connect("ws://127.0.0.1:8765") as ws: await ws.send(json.dumps({"type": "PING", "ts": 1})) print("PONG:", await ws.recv()) # حرف ۱: سه snapshotِ روبه‌رشد با startedAt ثابت → باید در یک segment جمع شوند for end, txt in [(1200, "سلام"), (2600, "سلام به همه"), (4000, "سلام به همه خوش آمدید")]: await ws.send(json.dumps({ "type": "TRANSCRIPT_UPDATE", "sessionId": "meeting-abc123", "speaker": "Arash", "text": txt, "startedAt": base, "endedAt": base + end, })) print("ACK:", await ws.recv()) # حرف ۲: speaker دیگر، startedAt جدید for end, txt in [(7000, "ممنون"), (8500, "ممنون از دعوت")]: await ws.send(json.dumps({ "type": "TRANSCRIPT_UPDATE", "sessionId": "meeting-abc123", "speaker": "Vahid", "text": txt, "startedAt": base + 6000, "endedAt": base + end, })) print("ACK:", await ws.recv()) asyncio.run(main())