fix(gateway): 서버 작업 이력을 상태 중심으로 간결화한다

서버별 화면의 작업 이력을 세 열 요약과 접근 가능한 상세 행으로 재구성한다. 500px Chromium에서 가로 넘침 없이 상태, 로그, 상세와 재시도 동작을 확인한다.
This commit is contained in:
2026-08-24 06:05:03 +00:00
parent 334ed09620
commit 2f4440f737
5 changed files with 277 additions and 142 deletions
@@ -34,15 +34,20 @@ const resetScenario = async (page: Page, scenarioId: string, sourceCommit: strin
await expect(page.getByText(/개 시나리오를 확인했습니다/)).toBeVisible();
await page.getByTestId('scenario-select').selectOption(scenarioId);
const latestOperation = page.getByTestId('operations-table').locator('tbody tr').first();
const latestOperation = page.getByTestId('operation-summary-row').first();
const previousLatestOperation = await latestOperation.textContent();
await page.getByTestId('request-reset').click();
await expect(page.getByText('초기화 작업을 시작했습니다.')).toBeVisible();
await expect.poll(() => latestOperation.textContent(), { timeout: 15_000 }).not.toBe(previousLatestOperation);
await expect(latestOperation).toContainText(sourceCommit, { timeout: 15_000 });
await expect(latestOperation.locator('td').nth(3)).toHaveText('SUCCEEDED', {
timeout: 300_000,
});
await latestOperation.getByTestId('operation-details-toggle').click();
await expect(page.getByTestId('operation-detail').first()).toContainText(sourceCommit, { timeout: 15_000 });
await expect(latestOperation.locator('[data-operation-status]')).toHaveAttribute(
'data-operation-status',
'SUCCEEDED',
{
timeout: 300_000,
}
);
const profileStatus = page.getByTestId('selected-profile-status');
await expect(profileStatus.locator(':scope > div').nth(0)).toContainText('RUNNING', {
timeout: 30_000,