# Playwright 블로그 발행 모듈: 테스트 수정 + 실제 발행 테스트

## 작업 개요
task-1521.1에서 naver_playwright.py (1048줄)가 완성되었으나,
테스트가 실제 sleep을 호출하여 무한정 걸리는 버그가 있다. 수정 후 실제 발행 테스트를 수행한다.

## 산출물 위치
`/home/jay/projects/BlogAuto/publisher/naver_playwright.py` (이미 존재, 수정)
`/home/jay/projects/BlogAuto/tests/test_naver_playwright.py` (이미 존재, 수정)

## 수정 1: 테스트 sleep 버그 수정

### 원인
`_random_delay()` 함수가 `time.sleep(duration)`을 호출한다.
테스트에서 이 함수를 mock 없이 직접 호출하여, TestRandomDelay 클래스의 8개 테스트가
실제 sleep을 하면서 수백 초가 걸렸다 (특히 test_randomness가 100회 반복 × sleep).

### 수정 방법
테스트에서 `time.sleep`을 mock으로 패치:
```python
from unittest.mock import patch

class TestRandomDelay:
    @patch("publisher.naver_playwright.time.sleep")
    def test_returns_float(self, mock_sleep):
        result = _random_delay(1.0, 2.0)
        assert isinstance(result, float)
        mock_sleep.assert_called_once()
```

또는 `_random_delay` 함수 자체를 sleep과 값 반환으로 분리:
```python
def _calc_delay(min_sec, max_sec) -> float:
    return random.uniform(min_sec, max_sec)

def _random_delay(min_sec, max_sec) -> float:
    duration = _calc_delay(min_sec, max_sec)
    time.sleep(duration)
    return duration
```
테스트에서는 `_calc_delay`만 테스트.

### 완료 기준
- `python3 -m pytest tests/test_naver_playwright.py -v` → 67건 전체 PASS, **10초 이내**

## 수정 2: 실제 발행 테스트

### 준비물
- 콘텐츠: `/home/jay/workspace/output/blog/naver/content-20260408-인카금융.md`
- 이미지: `/home/jay/workspace/output/blog/naver/images/` (3장)
- 태그: 인카금융,보험대리점,보험영업,보험GA,인카보험,인카다이렉트,GA보험,보험설계사이직,GA보험대리점취업,인카금융설계사조건
- 인증: `/home/jay/projects/BlogAuto/.env.keys` (NAVER_LOGIN_ID, NAVER_LOGIN_PW — export 접두사 없음)
- 블로그 ID: incar_top

### 발행 순서
1. 먼저 **임시저장(draft)**으로 테스트
2. 성공하면 결과 보고 (임시저장 URL 또는 성공 여부)
3. public 발행은 아누가 판단

### 주의
- headless 모드가 네이버에서 탐지될 수 있음 → headful 모드도 시도
- Playwright launch args: `--disable-blink-features=AutomationControlled`
- persistent context로 Chrome 프로필 유지: `/home/jay/projects/BlogAuto/chrome-profile/`
- 로그인이 안 되면 (캡차 등) 보고서에 기록하고 실패 사유 분석

## 완료 기준
1. 테스트 67건 전체 PASS (10초 이내)
2. 실제 발행 테스트 결과 보고 (성공/실패 + 사유)
3. pyright 에러 0건