완료 턴 시각 대신 lobby serverTime을 분 경계에 맞춰 표시한다. 게임 API 응답과 SSE 및 같은 계정 탭 전달을 최근 통신으로 기록하고, 45초 공백에는 시계를 멈춘다. 공통 시계 투영과 단위 및 Chromium 회귀 검증을 추가한다.
23 lines
877 B
TypeScript
23 lines
877 B
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import {
|
|
GAME_SERVER_ACTIVITY_FRESHNESS_MS,
|
|
createGameServerActivityTracker,
|
|
isRecentGameServerActivity,
|
|
} from '../src/utils/gameServerActivity.ts';
|
|
|
|
void test('keeps the most recently observed server contact timestamp', () => {
|
|
const tracker = createGameServerActivityTracker();
|
|
tracker.markContact(2_000);
|
|
tracker.markContact(1_000);
|
|
tracker.markContact(Number.NaN);
|
|
assert.equal(tracker.lastContactAt.value, 1_000);
|
|
});
|
|
|
|
void test('treats three heartbeat intervals as recent activity', () => {
|
|
assert.equal(isRecentGameServerActivity(1_000, 1_000 + GAME_SERVER_ACTIVITY_FRESHNESS_MS), true);
|
|
assert.equal(isRecentGameServerActivity(1_000, 1_001 + GAME_SERVER_ACTIVITY_FRESHNESS_MS), false);
|
|
assert.equal(isRecentGameServerActivity(null, 1_000), false);
|
|
});
|