From 96acc400313e8ebb0754977868504d78169a1b81 Mon Sep 17 00:00:00 2001 From: grendervill Date: Sun, 20 Sep 2026 22:15:39 +0300 Subject: [PATCH] =?UTF-8?q?test(web):=20e2e=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=8F=D0=B5=D1=82=20=D0=BF=D0=B8=D0=BD=D0=B3=20?= =?UTF-8?q?=D1=83=D1=87=D0=B0=D1=81=D1=82=D0=BD=D0=B8=D0=BA=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D0=BF=D0=BB=D0=B8=D1=82=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Два реальных браузера в одной комнате: у каждого в плитке появляется своя задержка («N мс», измеряется по WebRTC-статистике), а второй участник видит пинг первого, пришедший по data-каналу LiveKit. --- web/e2e/voice.spec.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/web/e2e/voice.spec.ts b/web/e2e/voice.spec.ts index dd07630..d795ffc 100644 --- a/web/e2e/voice.spec.ts +++ b/web/e2e/voice.spec.ts @@ -340,6 +340,28 @@ test.describe('голос: два клиента в одной комнате', await expect(session.page.getByTestId(`voice-tile-${fixture.guestId}`)).toBeVisible(); } + // Пинг участника виден в плитке и обновляется: своё значение измеряется + // по статистике WebRTC, чужое приходит по data-каналу LiveKit. + for (const session of [adminSession, guestSession]) { + const ownLabel = session.page + .getByTestId(`voice-tile-${session === adminSession ? fixture.adminId : fixture.guestId}`) + .getByTestId('voice-quality-label'); + await expect + .poll(async () => (await ownLabel.textContent()) ?? '', { timeout: 30_000 }) + .toMatch(/\d+ мс/u); + } + // Каждый видит пинг другого участника. + await expect + .poll( + async () => + (await adminSession.page + .getByTestId(`voice-tile-${fixture.guestId}`) + .getByTestId('voice-quality-label') + .textContent()) ?? '', + { timeout: 30_000 }, + ) + .toMatch(/\d+ мс/u); + // Аудио реально приходит: ждём ненулевые байты входящего аудио-потока. for (const session of [adminSession, guestSession]) { await expect