Selenium WebDriverの driver.manage.window.resize_to って、これブラウザの表示領域じゃなくてブラウザウィンドウ全体の大きさってことなのかな。微妙にスクリーンショットの下が切れるのは、ブラウザのアドレスバー部分なのかしら・・・
headlessオプション切って試してみたらその通りでした
ブラウザのviewport以外の大きさは、window.outerHeight - window.innerHeight で計算できるので、その分をdocument.body.scrollHeightに加算することでなんとか調整した