import { test, expect } from '@playwright/test';

test.describe('BDD: E2E Dashboard Integration', () => {
  test('Given the Dashboard is running, When user visits the root, Then the title should resolve', async ({ page }) => {
    // Next.js 페이지 접속
    await page.goto('/');

    // 랜딩 렌더링 확인 
    // (현재 페이지 구조에 따라 expect 조건 변경 가능: 예: expect(page).toHaveTitle(/Kord/))
    await expect(page).not.toBeNull();
  });

  test('Given the gRPC is exposed, When calling /api/grpc-test via E2E, Then it should proxy to Bot Layer', async ({ request }) => {
    // API Route 호출 시뮬레이션
    const response = await request.get('/api/grpc-test?msg=E2E_Test');
    
    // HTTP 응답 검증
    expect(response.ok()).toBeTruthy();
    
    // 서버측 Payload 검증 (Dashboard -> gRPC -> Bot 통신 성공 여부)
    const data = await response.json();
    // 봇 내부의 로컬 핑이 죽어있거나 연결이 안되면 실패하게 됨으로써 E2E 구간 검증 가능
    if (data.success) {
      expect(data.reply).toContain('E2E_Test');
    } else {
      // 로컬 Bot 레이어가 내려가 있을 경우 실패 안내 (또는 Mock 설정 연동)
      console.warn('Bot server might be offline, E2E gRPC test received: ', data.error);
    }
  });
});
