This commit is contained in:
pythongosssss
2026-04-15 03:22:00 -07:00
parent c91736e223
commit a17c98fead
4 changed files with 16 additions and 17 deletions

View File

@@ -32,21 +32,16 @@ export class LogsTab {
this.terminalRoot = page.getByTestId(TestIds.terminal.root)
this.terminalHost = page.getByTestId(TestIds.terminal.host)
this.copyButton = page.getByTestId(TestIds.terminal.copyButton)
this.errorMessage = page.getByTestId(TestIds.terminal.logsErrorMessage)
this.loadingSpinner = page.getByTestId(TestIds.terminal.logsLoadingSpinner)
this.errorMessage = page.getByTestId(TestIds.terminal.errorMessage)
this.loadingSpinner = page.getByTestId(TestIds.terminal.loadingSpinner)
this.xtermScreen = this.terminalHost.locator('.xterm-screen')
}
async activate() {
await this.tab.click()
}
}
export class BottomPanel {
readonly root: Locator
readonly keyboardShortcutsButton: Locator
readonly toggleButton: Locator
readonly closeButton: Locator
readonly shortcuts: ShortcutsTab
readonly logs: LogsTab
@@ -58,7 +53,6 @@ export class BottomPanel {
this.toggleButton = page.getByRole('button', {
name: /Toggle Bottom Panel/i
})
this.closeButton = this.root.getByRole('button', { name: /close/i })
this.shortcuts = new ShortcutsTab(page)
this.logs = new LogsTab(page)
}

View File

@@ -47,24 +47,29 @@ export class LogsTerminalHelper {
static buildWsLogFrame(messages: string[]): string {
return JSON.stringify({
type: 'logs',
data: {
entries: messages.map((m) => ({ t: new Date().toISOString(), m }))
}
data: { entries: LogsTerminalHelper.buildEntries(messages) }
})
}
private static buildRawLogsResponse(messages: string[]): LogsRawResponse {
return {
size: { cols: 80, row: 24 },
entries: messages.map((m) => ({ t: new Date().toISOString(), m }))
entries: LogsTerminalHelper.buildEntries(messages)
}
}
private static buildEntries(messages: string[]) {
return messages.map((m) => ({
t: '1970-01-01T00:00:00.000Z',
m: m.endsWith('\n') ? m : `${m}\n`
}))
}
}
export const logsTerminalFixture = base.extend<{
logsTerminal: LogsTerminalHelper
}>({
logsTerminal: async ({ page, context: _ }, use) => {
logsTerminal: async ({ page }, use) => {
await use(new LogsTerminalHelper(page))
}
})

View File

@@ -189,8 +189,8 @@ export const TestIds = {
root: 'terminal-root',
host: 'terminal-host',
copyButton: 'terminal-copy-button',
logsErrorMessage: 'logs-error-message',
logsLoadingSpinner: 'logs-loading-spinner'
errorMessage: 'terminal-error-message',
loadingSpinner: 'terminal-loading-spinner'
}
} as const

View File

@@ -2,14 +2,14 @@
<div class="size-full bg-transparent">
<p
v-if="errorMessage"
data-testid="logs-error-message"
data-testid="terminal-error-message"
class="p-4 text-center"
>
{{ errorMessage }}
</p>
<ProgressSpinner
v-else-if="loading"
data-testid="logs-loading-spinner"
data-testid="terminal-loading-spinner"
class="relative inset-0 z-10 flex h-full items-center justify-center"
/>
<BaseTerminal v-show="!loading" @created="terminalCreated" />