배경
#17 조사에서 모바일 viewport·가상 키보드·caret visibility는 jsdom/desktop Playwright만으로 닫을 수 없다고 정리했다. visualViewport 기반 정책은 구현할 수 있지만, iOS Safari/Android Chrome/Gboard/WebView의 실제 focus/keyboard/selection/scroll 순서는 별도 trace가 필요하다.
수집할 scenario
- iOS Safari: focus, typing, Enter, composition/update, toolbar command 후 visual viewport/caret rect/scroll 변화.
- Android Chrome + Gboard: long document/list에서 Enter 후 caret이 keyboard 위로 올라오는지.
- Android WebView: same scenario.
- iOS Safari: 16px 미만 focus target이 있을 때 auto-zoom 여부와 현재 editor CSS의 회피 여부.
- URL bar collapse/visualViewport.offsetTop이 non-zero인 상태의 caret reveal.
기록할 evidence
- user agent, device, OS, browser, keyboard.
window.innerHeight, visualViewport.height, visualViewport.offsetTop, page scroll.
- focused canonical selection, native selection rect, overlay caret rect.
- beforeinput/input/composition/focus/blur/resize/scroll ordering.
- debug recorder raw trace 또는 최소 재현 HTML.
완료 기준
근거
배경
#17 조사에서 모바일 viewport·가상 키보드·caret visibility는 jsdom/desktop Playwright만으로 닫을 수 없다고 정리했다.
visualViewport기반 정책은 구현할 수 있지만, iOS Safari/Android Chrome/Gboard/WebView의 실제 focus/keyboard/selection/scroll 순서는 별도 trace가 필요하다.수집할 scenario
기록할 evidence
window.innerHeight,visualViewport.height,visualViewport.offsetTop, page scroll.완료 기준
근거