브라우저 분할 창
터미널 옆에 웹사이트를 열고 기본 탐색 컨트롤을 사용하며 프로젝트 안에서 링크를 관리하세요.
Zshell은 모든 탭이나 분할 창에 내장 브라우저를 표시할 수 있습니다. 로컬 개발 서버, API 문서, 이슈 등 관련 터미널 옆에 두고 싶은 페이지를 열 때 유용합니다.
브라우저 열기
- 파일 → 새 브라우저 탭을 선택하면 빈 탭이 열립니다.
- 명령 팔레트(Cmd+P)를 열고 새 브라우저 탭 또는 새 브라우저 분할 창을 실행하세요.
- 터미널에서 감지된 URL을 Command 키를 누른 채 오른쪽 클릭하고 새 브라우저 탭 또는 새 브라우저 분할 창을 선택하면 주소를 복사하지 않고 열 수 있습니다.
브라우저 탭은 선택한 프로젝트에 속하며 일반 탭 및 분할 창 배치에 포함됩니다. 열린 프로젝트가 없으면 Zshell이 브라우저를 담을 프로젝트를 만듭니다.
주소와 검색
위쪽 입력란에는 전체 URL, 호스트 이름 또는 검색어를 입력할 수 있습니다.
zshell.sh은 HTTPS 주소로 연결됩니다.localhost, 로컬 호스트 이름, IP 주소와 명시적인 포트는 HTTP를 사용합니다.- 그 밖의 입력은 Google 검색으로 처리됩니다.
Cmd+L로 주소 입력란에 포커스를 이동하고 Cmd+R로 새로 고칩니다. 도구 막대에는 뒤로, 앞으로, 중지/새로 고침, 공유 및 기본 브라우저에서 열기도 있습니다. 트랙패드의 뒤로/앞으로 탐색 제스처도 지원됩니다.
| 작업 | 단축키 |
|---|---|
| 주소 막대로 포커스 이동 | Cmd+L |
| 페이지 새로 고침 | Cmd+R |
원하는 위치에 링크 열기
페이지의 링크를 오른쪽 클릭하면 링크를 새 탭에서 열기 또는 링크를 새 분할 창에서 열기를 선택할 수 있습니다. 새 페이지는 같은 프로젝트 작업 공간에 남습니다.
터미널에서 감지된 웹 URL을 Command 키를 누른 채 클릭하면 기본 브라우저에서 열립니다. Command 키를 누른 채 오른쪽 클릭하면 Zshell 탭이나 분할 창에서 여는 메뉴가 표시됩니다. 로컬 경로도 비슷한 방식으로 다룰 수 있으며 경로와 URL에서 설명합니다.
유지되는 항목
탭이나 프로젝트를 전환해도 페이지의 탐색 기록, 스크롤 위치, 양식과 페이지 내부 상태가 그대로 유지됩니다. Zshell을 다시 실행하면 현재 URL과 배치가 복원되지만 전체 뒤로/앞으로 기록은 복원되지 않습니다.
브라우저 분할 창은 탭을 전환하거나 앱을 다시 실행해도 쿠키, 로그인 및 기타 사이트 데이터를 유지합니다. 비공개 브라우징 모드가 아닙니다.
Agent로 페이지 테스트하기
코딩 Agent에게 현재 프로젝트에서 열린 페이지 확인, 양식 입력, 결과 검증 또는 표시 영역 캡처를 요청할 수 있습니다. 기존 브라우저 세션을 사용하며 기본적으로 터미널 포커스를 유지합니다. 로컬 개발 URL을 백그라운드 브라우저 창으로 열 수도 있습니다.
스크립트에서는 Zshell 터미널 안에서 다음 명령을 실행하세요. 반환된 browser_id를 기록하고 아래 BROWSER_ID를 바꾸세요:
zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.png스냅샷은 기본 프레임의 텍스트, 접근성 레이블 및 요소 참조를 반환합니다. 페이지 변경이나 작업 후에는 참조가 만료되므로 다시 사용하기 전에 새 스냅샷을 얻으세요. CSS 선택기는 요소 하나에만 일치해야 합니다. 탐색에는 navigate, back, forward, reload, stop을 사용합니다.
자동화는 전체 HTTP/HTTPS URL과 about:blank만 허용합니다. 다른 프로토콜, 다운로드, 파일 선택기 및 기본 대화 상자는 직접 조작해야 합니다. 주소 표시줄이나 도구 모음으로 수동 탐색하면 이 제한이 해제됩니다. 명령은 호출한 터미널의 프로젝트와 창 안에서만 작동합니다. --timeout은 100–30000밀리초입니다. 스냅샷은 최대 200개 요소, 32768자, 256 KiB이며 암호 및 파일 입력 값은 제외합니다. PNG는 표시 영역만 최대 512 KiB로 캡처하며 한 번도 표시하지 않은 백그라운드 창도 초점을 바꾸지 않고 1024 × 768 뷰포트로 캡처할 수 있으며 기존 파일은 덮어쓰지 않습니다. --width로 줄일 수 있습니다. 전체 구문은 zshell +browser --help에서 확인하세요.
페이지 스크립트와 로그인 상태
zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --waiteval --script는 실제 메인 프레임에서 실행하고 반환된 Promise를 기다린 뒤 value에 JSON을 반환합니다. undefined는 null이 됩니다. await는 비동기 함수 표현식 안에서 사용하세요. 입력은 64 KiB, 결과는 256 KiB·10000개 값·64단계로 제한됩니다. 실행 후 DOM 참조는 만료됩니다. 시간 초과는 대기만 끝내며 스크립트를 취소하지 않습니다. 변경을 재시도하기 전에 페이지를 확인하세요. 동기 무한 루프로 멈춘 페이지는 닫아야 할 수 있습니다. 단일 표현식(IIFE 포함)은 네이티브 전역 Script로 주입됩니다. 여러 문장으로 된 문자열은 페이지 CSP를 따릅니다. 문자열 평가가 차단되면 문장들을 IIFE로 감싸세요.
state save는 대상 호스트에 적용되는 Cookie(상위 도메인 및 HttpOnly 포함)와 현재 출처의 localStorage를 Playwright storage-state JSON으로 저장합니다. state load는 Cookie를 병합하고 해당 출처의 localStorage를 교체합니다. 이후 페이지를 새로 고치세요. 출처는 스킴·호스트·포트가 정확히 일치해야 합니다. 무관한 Cookie 도메인, 공용 접미사, 지원하지 않는 필드 및 잘못된 유형은 변경 전에 거부됩니다. Secure Cookie는 HTTPS가 필요합니다.
두 명령에 --format cookies를 지정하면 Netscape cookies.txt를 사용하며 localStorage와 SameSite는 저장하지 않습니다. 파일은 최대 256 KiB이고 자격 증명을 포함하므로 비공개로 유지하고 Git에 넣지 마세요. 가져오기는 소유자만 접근하는 일반 파일(예: 0600)만 허용하고 심볼릭 링크는 거부합니다. 내보내기는 새 비공개 파일을 만들며 기존 경로를 덮어쓰지 않습니다. WebKit 사이트 데이터는 브라우저 창 사이에서 공유되며 프로젝트·창·탐색 제한은 유지됩니다.
광고 및 추적기
설정 → 브라우저에서 WebKit 콘텐츠 차단을 관리합니다. EasyList와 EasyPrivacy가 기본으로 켜져 있습니다. 각 목록을 끄거나 HTTP/HTTPS ABP 목록 URL을 한 줄씩 입력한 뒤 목록 적용을 누르세요. 최대 8개 목록, 목록당 8 MiB입니다. HTTP는 암호화되지 않습니다.
모든 브라우저 창의 이후 요청에 적용됩니다. 변경 후 페이지를 새로고침해 리소스와 숨김 요소를 갱신하세요. 지금 목록 업데이트로 강제 갱신합니다. 목록은 로컬에 캐시되며 재시작 후 브라우저를 열 때 4일이 지난 목록을 확인합니다. 설정에 변환/건너뛴 필터 수, 실패와 캐시 사용 상태가 표시됩니다. 목록 변경 실패 시 선택 해제된 다른 목록을 조용히 재사용하지 않습니다.
URL 와일드카드와 앵커, 일반 리소스 유형, @@ 예외, 단순 도메인 범위, CSS ##/#@#를 지원합니다. 도메인은 최상위 페이지를 기준으로 하며 당사자 분류는 WebKit을 따릅니다. 스크립틀릿, 절차적 필터, 리디렉션, 정규식, 전체 페이지 허용, 포함 도메인의 하위 도메인 제외는 건너뜁니다. uBlock Origin과 완전히 호환되지는 않습니다.