diff --git a/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/admin-board-notification-channel-toggle.test.tsx b/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/admin-board-notification-channel-toggle.test.tsx index 843dcfdf..af3ad751 100644 --- a/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/admin-board-notification-channel-toggle.test.tsx +++ b/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/admin-board-notification-channel-toggle.test.tsx @@ -1,6 +1,6 @@ -// e2e:allow 채널 토글 저장(upsert)·하단탭 필터는 본 레이아웃 회귀테스트(vitest) + MCP 실브라우저 검증(하단탭 노출/저장/발송)으로 커버. 알림설정 화면 Playwright 인프라 부재 (#28) +// e2e:allow 채널 토글 저장(upsert)·하단탭 필터는 본 레이아웃 회귀테스트(vitest) + MCP 실브라우저 검증(하단탭 노출/저장/발송)으로 커버. 알림설정 화면 Playwright 인프라 부재 /** - * 게시판 알림 채널 토글 저장 upsert + 하단 서브탭 필터 회귀 가드 (#28) + * 게시판 알림 채널 토글 저장 upsert + 하단 서브탭 필터 회귀 가드 * * @description * 회귀 시나리오 (코어 admin 템플릿과 동일 구조): @@ -21,7 +21,7 @@ import tab from '../../../layouts/admin/partials/admin_board_settings/_tab_notif const tabJson = JSON.stringify(tab); -describe('게시판 알림 채널 토글 저장 upsert (#28)', () => { +describe('게시판 알림 채널 토글 저장 upsert', () => { it('토글 저장이 upsert 형태다 (미저장 채널은 새 엔트리로 추가)', () => { // 엔트리 존재 판별용 .some(...) — 있으면 map 으로 토글, 없으면 spread 로 새 엔트리 추가 expect(/\.some\(c => c\.id === ch\.id\)/.test(tabJson)).toBe(true); @@ -36,7 +36,7 @@ describe('게시판 알림 채널 토글 저장 upsert (#28)', () => { }); }); -describe('게시판 하단 서브탭 필터 source 분기 (#28)', () => { +describe('게시판 하단 서브탭 필터 source 분기', () => { it('코어기본 채널은 미저장 노출 유지, 확장 채널은 명시적 활성만 노출', () => { expect(/c\.source === 'core'/.test(tabJson)).toBe(true); expect(/is_active !== false/.test(tabJson)).toBe(true); diff --git a/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx b/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx index fcd56397..457d2964 100644 --- a/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx +++ b/modules/_bundled/sirsoft-board/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx @@ -1,7 +1,7 @@ // e2e:allow 레이아웃 트리 위치 검증(정적 구조 회귀 가드)이라 vitest 로 충분. 실제 화면 렌더는 -// Chrome MCP 로 확인·수정까지 완료(2026-07-28). 알림설정 화면 Playwright 인프라 부재 (#28) +// Chrome MCP 로 확인·수정까지 완료(2026-07-28). 알림설정 화면 Playwright 인프라 부재 /** - * 게시판 알림 정의 행 하단 확장 슬롯(notification_definition_row_footer) 위치 회귀 가드 (#28) + * 게시판 알림 정의 행 하단 확장 슬롯(notification_definition_row_footer) 위치 회귀 가드 * * @description * 회귀 시나리오: extension_point 를 행 정보 컬럼(`flex-1 min-w-0`) 밖에 형제로 잘못 넣으면, @@ -36,7 +36,7 @@ function findAll(node: AnyNode | undefined, pred: (n: AnyNode) => boolean, resul return results; } -describe('게시판 알림 행 footer extension_point 위치 (#28)', () => { +describe('게시판 알림 행 footer extension_point 위치', () => { it('extension_point 는 정보 컬럼(flex-1 min-w-0)의 children 이다', () => { const infoColumns = findAll(tab as AnyNode, (n) => n.props?.className === 'flex-1 min-w-0'); expect(infoColumns.length).toBeGreaterThan(0); diff --git a/modules/_bundled/sirsoft-board/resources/layouts/admin/partials/admin_board_settings/_tab_notification_definitions.json b/modules/_bundled/sirsoft-board/resources/layouts/admin/partials/admin_board_settings/_tab_notification_definitions.json index f15da32b..0a2bf959 100644 --- a/modules/_bundled/sirsoft-board/resources/layouts/admin/partials/admin_board_settings/_tab_notification_definitions.json +++ b/modules/_bundled/sirsoft-board/resources/layouts/admin/partials/admin_board_settings/_tab_notification_definitions.json @@ -1,7 +1,7 @@ { "meta": { "is_partial": true, - "_e2e_allow": "e2e:allow 채널 토글 저장(upsert)·하단탭 필터는 레이아웃 회귀테스트(vitest) + MCP 실브라우저 검증(하단탭 노출/저장/발송)으로 커버. 알림설정 화면 Playwright 인프라 부재 (#28)", + "_e2e_allow": "e2e:allow 채널 토글 저장(upsert)·하단탭 필터는 레이아웃 회귀테스트(vitest) + MCP 실브라우저 검증(하단탭 노출/저장/발송)으로 커버. 알림설정 화면 Playwright 인프라 부재", "description": "게시판 알림 설정 탭 — 채널 토글 + 2단 탭 + 채널별 템플릿 목록" }, "id": "tab_content_notification_definitions", diff --git a/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/adminEcommerceNotificationChannelToggle.test.tsx b/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/adminEcommerceNotificationChannelToggle.test.tsx index 1965c9de..705c72b3 100644 --- a/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/adminEcommerceNotificationChannelToggle.test.tsx +++ b/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/adminEcommerceNotificationChannelToggle.test.tsx @@ -1,5 +1,5 @@ /** - * 이커머스 알림 채널 토글 저장 upsert + 하단 서브탭 필터 회귀 가드 (#28) + * 이커머스 알림 채널 토글 저장 upsert + 하단 서브탭 필터 회귀 가드 * * @description * 회귀 시나리오 (코어 admin 템플릿과 동일 구조): @@ -20,7 +20,7 @@ import tab from '../../../layouts/admin/partials/admin_ecommerce_settings/_tab_n const tabJson = JSON.stringify(tab); -describe('이커머스 알림 채널 토글 저장 upsert (#28)', () => { +describe('이커머스 알림 채널 토글 저장 upsert', () => { it('토글 저장이 upsert 형태다 (미저장 채널은 새 엔트리로 추가)', () => { // 엔트리 존재 판별용 .some(...) — 있으면 map 으로 토글, 없으면 spread 로 새 엔트리 추가 expect(/\.some\(c => c\.id === ch\.id\)/.test(tabJson)).toBe(true); @@ -35,7 +35,7 @@ describe('이커머스 알림 채널 토글 저장 upsert (#28)', () => { }); }); -describe('이커머스 하단 서브탭 필터 source 분기 (#28)', () => { +describe('이커머스 하단 서브탭 필터 source 분기', () => { it('코어기본 채널은 미저장 노출 유지, 확장 채널은 명시적 활성만 노출', () => { expect(/c\.source === 'core'/.test(tabJson)).toBe(true); expect(/is_active !== false/.test(tabJson)).toBe(true); diff --git a/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx b/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx index caf7d366..53d85fec 100644 --- a/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx +++ b/modules/_bundled/sirsoft-ecommerce/resources/js/__tests__/layouts/notificationRowFooterExtensionPoint.test.tsx @@ -1,7 +1,7 @@ // e2e:allow 레이아웃 트리 위치 검증(정적 구조 회귀 가드)이라 vitest 로 충분. 실제 화면 렌더는 -// Chrome MCP 로 확인·수정까지 완료(2026-07-28). 알림설정 화면 Playwright 인프라 부재 (#28) +// Chrome MCP 로 확인·수정까지 완료(2026-07-28). 알림설정 화면 Playwright 인프라 부재 /** - * 이커머스 알림 정의 행 하단 확장 슬롯(notification_definition_row_footer) 위치 회귀 가드 (#28) + * 이커머스 알림 정의 행 하단 확장 슬롯(notification_definition_row_footer) 위치 회귀 가드 * * @description * 회귀 시나리오: extension_point 를 행 정보 컬럼(`flex-1 min-w-0`) 밖에 형제로 잘못 넣으면, @@ -36,7 +36,7 @@ function findAll(node: AnyNode | undefined, pred: (n: AnyNode) => boolean, resul return results; } -describe('이커머스 알림 행 footer extension_point 위치 (#28)', () => { +describe('이커머스 알림 행 footer extension_point 위치', () => { it('extension_point 는 정보 컬럼(flex-1 min-w-0)의 children 이다', () => { const infoColumns = findAll(tab as AnyNode, (n) => n.props?.className === 'flex-1 min-w-0'); expect(infoColumns.length).toBeGreaterThan(0); diff --git a/plugins/_bundled/sirsoft-message_bizppurio/tests/scenarios/alimtalk-dispatch-binding.yaml b/plugins/_bundled/sirsoft-message_bizppurio/tests/scenarios/alimtalk-dispatch-binding.yaml index 62585477..d4f549fd 100644 --- a/plugins/_bundled/sirsoft-message_bizppurio/tests/scenarios/alimtalk-dispatch-binding.yaml +++ b/plugins/_bundled/sirsoft-message_bizppurio/tests/scenarios/alimtalk-dispatch-binding.yaml @@ -7,7 +7,8 @@ # - 카카오→발송 변환(kakao_elements 축): AlimtalkPayloadMapperTest — 본문/버튼/바로연결/title·header·item·highlight·link 변환 + #{var} 치환 + 부재 필드 생략. # - 캐시 수동 초기화 엔드포인트·권한: AlimtalkTemplateControllerTest + NotificationBindingServiceTest. # - template 증강: SeedChannelTemplatesListenerTest — 회원판정/기본문구/채널추가/멱등. -# - 연동 즉시저장·조회·권한: NotificationBindingServiceTest + NotificationBindingEndpointTest. +# - 연동 즉시저장·조회·권한(저장 시점 카카오 승인 재검증 포함): NotificationBindingServiceTest + +# NotificationBindingEndpointTest. # - 채널 메타(is_test_mode): RegisterNotificationChannelsListenerTest. # - overlay 전용칸·배너·i18n·무오염: notification_tab_binding.test.tsx. # e2e_* 축(브라우저 왕복: 편집 열기→드롭다운 선택→즉시 저장→toast→배너)은 실제 카카오 발신 @@ -107,6 +108,8 @@ effects: - store_creates_or_updates_binding_immediately - store_empty_code_unbinds - only_approved_templates_offered_as_options + - bind_rejects_unapproved_template_code + - bind_rejects_when_kakao_lookup_fails - bindings_map_returned_for_prefill - view_permission_required_for_read - manage_permission_required_for_store