피드로 돌아가기
Dev.toInfrastructure
원문 읽기
macOS Keychain 패치를 통한 Playwright Chrome 세션 영속성 확보
"Persisting your real Chrome login across Playwright restarts on macOS"
AI 요약
Context
Playwright가 macOS에서 Chrome 실행 시 --use-mock-keychain 및 --password-store=basic 플래그를 기본 적용하여 실제 Keychain 접근을 차단하는 구조임. 이로 인해 /tmp 디렉토리의 프로필 복제 시에도 암호화된 쿠키를 복호화하지 못해 매번 SSO 재인증이 필요한 한계가 발생함.
Technical Solution
playwright-core/lib/coreBundle.js내의 Mock Keychain 플래그를sed명령어로--use-real-keychain및--password-store=keychain으로 강제 치환하는 패치 로직 구현- npx 캐시 경로 내의 번들 파일을 검색하여 변경 여부를 확인하고
.bak파일을 생성하는 Idempotency 보장 업데이트 프로세스 설계 - 단순 파일 복사(
cp) 시 발생하는 SQLite Write Lock 및 데이터 손상 문제를 방지하기 위해 SQLite.backup명령어를 통한 원자적 프로필 복제 수행 storageState방식의 세션 캡처가 UA Fingerprint 바인딩 및 CSRF 토큰 불일치로 인해 특정 SSO 사이트에서 실패하는 점을 파악하여 전체 프로필 클로닝 방식으로 선회- Headless 모드의 시스템 클립보드 접근 불가 제약을 해결하기 위해
--headed옵션을 강제하여pbcopy기반의 콘텐츠 주입 신뢰성 확보
실천 포인트
1. 외부 라이브러리의 기본 플래그가 로컬 보안 저장소 접근을 차단하는지 확인
2. SQLite 기반 설정 파일 복제 시 단순 복사 대신 `.backup` API를 사용하여 데이터 무결성 확보
3. Headless 환경과 Headed 환경의 시스템 API(클립보드, GPU 등) 접근 권한 차이 검토
4. npx 등 캐시 기반 도구 패치 시 멱등성(Idempotency)을 고려한 스크립트 작성