- Replace global '.loading' count check in webdriver.py with a
getBoundingClientRect viewport-visibility check to avoid deadlock
when DashboardVirtualization renders off-screen placeholder spinners
- Narrow except clause in screenshot_utils.py from bare Exception to
PlaywrightTimeout so non-timeout errors (e.g. browser crash) propagate
- Fix load_wait default from 30 s to 60 s to match SCREENSHOT_LOAD_WAIT
config default
- Add tests covering per-tile spinner wait, timeout warning, non-timeout
propagation, and load_wait default value
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>