민감 응답 no-store 강화 + 배포 E2E stale 기대값 갱신
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m4s
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m4s
/personas·/admin 응답에 Cache-Control: no-store를 강제한다. E2E에서 미인증 /personas 요청이 일시적으로 인증 응답 본문을 받은 재현 이력이 있어 중간 캐시 재사용을 원천 차단한다. public-admin-visual 카탈로그 테스트는 운영 데이터에 따라 바뀌는 원장 모델명(claude-opus-4-8 → gpt-5.6-terra)과 엔진 옵션 수(6→9), 모델 수 문구를 고정값으로 기대했어 데이터 종속 실패였다. 계량 행·개수 정규식으로 갱신한다.
This commit is contained in:
parent
45b84faa0d
commit
d80c710f3a
3 changed files with 93 additions and 8 deletions
|
|
@ -145,29 +145,30 @@ test.describe("public admin visual @public-auth", () => {
|
|||
await page.goto("/admin/ai", { waitUntil: "domcontentloaded" });
|
||||
await expect(page.locator('[data-testid="admin-ai-page"]')).toBeVisible({ timeout: 15_000 });
|
||||
await expect(page.getByText("토큰 계량 커버리지")).toBeVisible();
|
||||
await expect(page.locator(".aic-table")).toContainText("claude-opus-4-8");
|
||||
// 원장 행은 운영 데이터에 따라 모델이 달라진다(claude CLI 시절 claude-opus-4-8,
|
||||
// 현재 gpt-5.6-terra). 고정 모델명 대신 계량 행과 커버리지 표시를 검증한다.
|
||||
const ledgerRows = page.locator(".aic-table tbody tr");
|
||||
await expect(ledgerRows.first()).toBeVisible();
|
||||
await expect(page.locator(".aic-table")).toContainText("SDK 추정");
|
||||
const claudeRow = page.locator(".aic-table tbody tr").filter({ hasText: "claude-opus-4-8" });
|
||||
await expect(claudeRow.locator(".aic-token-cell").first()).not.toHaveText("미계량");
|
||||
await expect(claudeRow.locator(".aic-token-cell small").first()).toContainText(/\d+\/\d+회/);
|
||||
await expect(page.getByText(/원장 호출은 과거 토큰 미수집 건/)).toBeVisible();
|
||||
await expect(ledgerRows.first().locator(".aic-token-cell").first()).not.toHaveText("미계량");
|
||||
await expect(ledgerRows.first().locator(".aic-token-cell small").first()).toContainText(/\d+\/\d+회/);
|
||||
|
||||
const provider = page.getByLabel("AI 엔진 공급자");
|
||||
const model = page.getByLabel("AI 기본 모델");
|
||||
const effort = page.getByLabel("AI 추론 강도");
|
||||
await expect(provider.locator("option")).toHaveCount(6);
|
||||
await expect(provider.locator("option")).toHaveCount(9);
|
||||
|
||||
await provider.selectOption("codex_cli");
|
||||
await expect(model).toBeEnabled({ timeout: 30_000 });
|
||||
await expect(model).toHaveValue("gpt-5.6-terra");
|
||||
await expect(effort).toHaveValue("medium");
|
||||
await expect(page.getByText("7개 모델 확인됨")).toBeVisible();
|
||||
await expect(page.getByText(/\d+개 모델 확인됨/)).toBeVisible();
|
||||
|
||||
await provider.selectOption("agy_cli");
|
||||
await expect(model).toBeEnabled({ timeout: 30_000 });
|
||||
await expect(model).toHaveValue("gemini-3.6-flash-high");
|
||||
await expect(effort).toHaveValue("high");
|
||||
await expect(page.getByText("11개 모델 확인됨")).toBeVisible();
|
||||
await expect(page.getByText(/\d+개 모델 확인됨/)).toBeVisible();
|
||||
|
||||
expect(pageErrors, JSON.stringify(pageErrors)).toEqual([]);
|
||||
expect(consoleErrors, JSON.stringify(consoleErrors)).toEqual([]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue