test(web): e2e-стенд Playwright для голосовой комнаты
Проверка голоса двумя реальными браузерами (AGENT.md 11.2): два контекста с фейковыми медиа-устройствами входят в одну комнату, инструментируется `RTCPeerConnection` и по `inbound-rtp` подтверждается, что аудио реально доходит; затем серверный мьют блокирует микрофон у гостя, а отключение участника убирает его плитку у обоих клиентов. - `playwright.config.ts`: прогон против развёрнутого инстанса (`GLCHAT_URL`), трейс при падении, флаги фейковых медиа-устройств; - `e2e/voice.spec.ts`: подготовка через REST (сервер, комната, инвайт, гость), завершение онбординга, уборка тестовых серверов и включение только по `GLCHAT_E2E_VOICE=1`; - `tsconfig.e2e.json` и запись в eslint для новых файлов.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { defineConfig, devices } from '@playwright/test';
|
||||
|
||||
/**
|
||||
* Playwright-конфигурация glchat: e2e-тесты идут против уже развёрнутого
|
||||
* инстанса (адрес в GLCHAT_URL, по умолчанию стенд), а не поднимают сервер —
|
||||
* так проверяется реальный путь через прокси, TLS и TURN (AGENT.md 11.2).
|
||||
*/
|
||||
export default defineConfig({
|
||||
testDir: './e2e',
|
||||
timeout: 180_000,
|
||||
expect: { timeout: 20_000 },
|
||||
fullyParallel: false,
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
reporter: [['list']],
|
||||
use: {
|
||||
baseURL: process.env.GLCHAT_URL ?? 'https://gl.mhspx.su',
|
||||
ignoreHTTPSErrors: true,
|
||||
trace: 'retain-on-failure',
|
||||
launchOptions: {
|
||||
// Фейковые медиа-устройства: Chromium отдаёт синтетический звук, поэтому
|
||||
// проверяется реальная доставка аудио через LiveKit (AGENT.md 11.2).
|
||||
args: [
|
||||
'--use-fake-device-for-media-stream',
|
||||
'--use-fake-ui-for-media-stream',
|
||||
'--autoplay-policy=no-user-gesture-required',
|
||||
'--no-sandbox',
|
||||
],
|
||||
},
|
||||
},
|
||||
projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],
|
||||
});
|
||||
Reference in New Issue
Block a user