fix(web): пинг участника показывается только при наведении
Постоянная подпись в плитке занимала место и была не нужна: задержка теперь живёт в подсказке индикатора связи («Отличное соединение, 46 мс — задержка до голосового сервера»), а плитка осталась компактной. Тесты и e2e проверяют `title`/`aria-label` индикатора вместо видимого текста.
This commit is contained in:
+16
-10
@@ -198,7 +198,7 @@ describe('голосовая комната: вход', () => {
|
||||
expect(voice.joinCount()).toBe(0);
|
||||
});
|
||||
|
||||
it('показывает пинг участника рядом с качеством связи', { timeout: 20_000 }, async () => {
|
||||
it('показывает пинг участника в подсказке индикатора связи', { timeout: 20_000 }, async () => {
|
||||
await bootVoice({ seated: [{ user_id: 'user-2', channel_id: 'c-voice' }] });
|
||||
|
||||
await clickChannel('Голосовая');
|
||||
@@ -211,19 +211,24 @@ describe('голосовая комната: вход', () => {
|
||||
['pair', { type: 'candidate-pair', state: 'succeeded', currentRoundTripTime: 0.042 }],
|
||||
]);
|
||||
// Первый такт может прийтись на момент, когда микрофон ещё не опубликован,
|
||||
// поэтому ждём следующего (интервал публикации пинга — секунда).
|
||||
// поэтому ждём следующего (интервал публикации пинга — секунда). Пинг виден
|
||||
// только при наведении: он попадает в подсказку индикатора связи.
|
||||
const ownQuality = () =>
|
||||
within(screen.getByTestId('voice-tile-user-1')).getByTestId('voice-quality');
|
||||
await waitFor(
|
||||
() => {
|
||||
expect(
|
||||
within(screen.getByTestId('voice-tile-user-1')).getByTestId('voice-quality-label'),
|
||||
).toHaveTextContent('42 мс');
|
||||
expect(ownQuality()).toHaveAttribute(
|
||||
'title',
|
||||
expect.stringContaining('Отличное соединение, 42 мс'),
|
||||
);
|
||||
},
|
||||
{ timeout: 5_000 },
|
||||
);
|
||||
const ownLabel = within(screen.getByTestId('voice-tile-user-1')).getByTestId(
|
||||
'voice-quality-label',
|
||||
expect(ownQuality()).toHaveAttribute('data-latency', '42');
|
||||
expect(ownQuality()).toHaveAttribute(
|
||||
'aria-label',
|
||||
expect.stringContaining('задержка до голосового сервера'),
|
||||
);
|
||||
expect(ownLabel).toHaveTextContent('Отличное соединение, 42 мс');
|
||||
|
||||
// Второй участник подключается к комнате и присылает свой пинг.
|
||||
const remote = room.addRemote('user-2', 'Bob');
|
||||
@@ -237,8 +242,9 @@ describe('голосовая комната: вход', () => {
|
||||
const remoteTile = await screen.findByTestId('voice-tile-user-2');
|
||||
await waitFor(
|
||||
() => {
|
||||
expect(within(remoteTile).getByTestId('voice-quality-label')).toHaveTextContent(
|
||||
'Отличное соединение, 128 мс',
|
||||
expect(within(remoteTile).getByTestId('voice-quality')).toHaveAttribute(
|
||||
'title',
|
||||
expect.stringContaining('Отличное соединение, 128 мс'),
|
||||
);
|
||||
},
|
||||
{ timeout: 5_000 },
|
||||
|
||||
Reference in New Issue
Block a user