Files
KArtSell.Aegis/docs/Design/kbx-foundation-v60-status-canonical-contract-hardening/tests/e2e/common-reconcile.spec.ts
T
kjh2064 3f293d8aa8
deploy / deploy (push) Successful in 1m52s
deploy / notify (push) Successful in 1s
V13-FE-006: consolidate approved UI and contract hardening
2026-08-13 02:41:00 +09:00

36 lines
1.8 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { requireKbxScenario, scenarioTitle } from './helpers/kbxScenario'
const mismatchRecovery=requireKbxScenario('scenario.common.reconcile.mismatch-recovery')
test.describe('COMMON-REC-001 업무 데이터 대사', () => {
test(scenarioTitle(mismatchRecovery.id), async ({ page }) => {
await page.goto('/operations/reconcile')
await expect(page.locator('[data-screen-id="COMMON-REC-001"]')).toBeVisible()
await expect(page.locator('[data-kbx-surface="criteria/search"]')).toBeVisible()
await expect(page.locator('[data-kbx-surface="comparison-grid"]')).toBeVisible()
await expect(page.getByText('ORD-260811-0001', { exact: true })).toBeVisible()
})
test('예외등록 HTTP 200의 skippedCount를 실제 업무 결과로 표시하고 원천값은 변경하지 않는다', async ({ page }) => {
await page.route('**/api/reconcile/items/create-exceptions', route => route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ createdOrUpdatedCount: 0, skippedCount: 1 }),
}))
await page.goto('/operations/reconcile')
await page.getByText('ORD-260811-0001', { exact: true }).dblclick()
await expect(page.getByText(/원천값을 화면에서 직접 덮어쓰지 않습니다/)).toBeVisible()
await page.getByRole('button', { name: '이 건 예외 등록' }).click()
const receipt=page.locator('[data-kbx-surface="reconcile-authoritative-receipt"]')
await expect(receipt).toBeVisible()
await expect(receipt).toBeFocused()
await expect(receipt).toContainText('예외 업무 등록이 일부 처리되었습니다.')
await expect(receipt).toContainText('생성/갱신 0건')
await expect(receipt).toContainText('건너뜀 1건')
await expect(page.getByRole('button', { name: '최신 대사 조회' })).toBeVisible()
})
})