The test outcome depends on whether playwright is importable at test time.
When playwright is absent, PlaywrightTimeout aliases to Exception, so the
inner except clause catches RuntimeError and the screenshot proceeds.
When playwright is present the outer handler catches it and returns None.
Remove the test rather than encoding environment-specific behavior.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Update assert_any_call in per-tile spinner timeout test to include the
new (load_wait=%ss) suffix and value
- Update assert_any_call in webdriver spinner timeout test to include the
new (SCREENSHOT_LOAD_WAIT=%ss) suffix and value
- Fix test_per_tile_non_timeout_exceptions: RuntimeError is caught by the
outer take_tiled_screenshot handler and returns None, not re-raised;
rename and update assertion to match actual behavior
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>