Load current terminal session tail

This commit is contained in:
npc0-hue
2026-08-31 12:16:43 +08:00
parent 9691dbcb3d
commit bc927a5144
2 changed files with 38 additions and 2 deletions
@@ -99,6 +99,21 @@ describe("ServerManagementTerminalDrawer", () => {
expect(systemLine?.querySelector("time")?.textContent).toBe(formatTerminalServerTime(serverTime));
});
it("loads the current session tail when stream metadata arrives", async () => {
const stream = logStream("stdout-current", "session-current", "process.stdout");
stream.latestSeq = 42;
apiMocks.queryLogStream.mockResolvedValue({ logStreamId: stream.id, entries: [logEntry(41, "tail before drawer opened"), logEntry(42, "latest stored output")], nextSeq: 42, latestSeq: 42 });
await renderDrawer();
await emitSession("session-current");
await emitStream(stream);
await flushPromises();
expect(container?.textContent).toContain("tail before drawer opened");
expect(container?.textContent).toContain("latest stored output");
expect(apiMocks.queryLogStream).toHaveBeenCalledWith({ logStreamId: stream.id, afterSeq: 0, limit: 500 });
});
it("renders an empty current session without accepting unrelated or sessionless logs", async () => {
await renderDrawer();
@@ -153,7 +168,9 @@ describe("ServerManagementTerminalDrawer", () => {
const oldStream = logStream("stdout-old", "session-old", "process.stdout", "2026-08-01T00:00:00Z");
oldStream.latestSeq = 900;
apiMocks.listLogStreams.mockResolvedValue({ items: [oldStream], count: 1 });
apiMocks.queryLogStream.mockResolvedValue({ logStreamId: oldStream.id, entries: [logEntry(1, "selected historical output", "2026-08-01T00:00:01Z")], nextSeq: 1, latestSeq: 1 });
apiMocks.queryLogStream.mockImplementation((request: { logStreamId: string }) => Promise.resolve(request.logStreamId === oldStream.id
? { logStreamId: oldStream.id, entries: [logEntry(1, "selected historical output", "2026-08-01T00:00:01Z")], nextSeq: 1, latestSeq: 1 }
: { logStreamId: request.logStreamId, entries: [], nextSeq: 0, latestSeq: 0 }));
await renderDrawer();
await emitSession("session-current");
await emitStream(logStream("stdout-current", "session-current", "process.stdout"));