test(control-ui): cover stale overview usage refresh

This commit is contained in:
Vincent Koc
2026-05-25 22:40:15 +02:00
committed by Peter Steinberger
parent 7f4fde3bd7
commit d52d8d10da
2 changed files with 19 additions and 3 deletions

View File

@@ -330,6 +330,23 @@ describe("refreshActiveTab", () => {
expect(mocks.loadUsageMock).toHaveBeenCalled();
});
it("skips overview usage refresh if the user leaves while primary loaders run", async () => {
const host = createHost();
host.tab = "overview";
const channels = createDeferred();
mocks.loadChannelsMock.mockReturnValueOnce(channels.promise);
const refresh = refreshActiveTab(host as never);
await Promise.resolve();
host.tab = "sessions";
channels.resolve();
await refresh;
expect(mocks.loadUsageMock).not.toHaveBeenCalled();
expect(mocks.loadSkillsMock).toHaveBeenCalledOnce();
});
it("does not wait for config schema before resolving config tab refresh", async () => {
const host = createHost();
host.tab = "config";

View File

@@ -741,9 +741,8 @@ export async function loadOverview(host: SettingsHost, opts?: { refresh?: boolea
void Promise.allSettled([
loadDebug(app),
loadSkills(app),
// Only fetch usage data if the overview tab is still active. The user may
// have navigated away during the async primary load, in which case firing
// usage.cost is wasteful — especially expensive on 5.22 (pre-beta.2).
// The primary overview loaders can finish after the user has navigated away.
// Avoid starting the expensive usage RPC for stale overview refreshes.
isCurrentOverviewRefresh() ? loadUsage(app) : Promise.resolve(),
loadOverviewLogs(app),
// `refresh: true` bypasses the gateway's 60s auth-status cache so a