Improve render lifecycle, geometry, and PDF parity
This commit is contained in:
1 parent
50b2ea14ff
commit
68f20cf525
12 files changed
+3279
-411
No files matched your search
@@ -13,6 +13,7 @@ usage() {
|
||||
echo "SCROLL_Y is an integer CSS-pixel offset or 'bottom'." >&2
|
||||
echo "Set CAPTURE_MODE=live to leave animations and runtime state unfrozen." >&2
|
||||
echo "CAPTURE_MODE defaults to deterministic (Chromium animations sampled at T=0)." >&2
|
||||
echo "Set SETTLE_MS=0 for latency runs; visual runs default to 3000." >&2
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
|
||||
@@ -26,10 +27,15 @@ fi
|
||||
|
||||
OUT="$1"
|
||||
CAPTURE_MODE="${CAPTURE_MODE:-deterministic}"
|
||||
SETTLE_MS="${SETTLE_MS:-3000}"
|
||||
if [[ "$CAPTURE_MODE" != "deterministic" && "$CAPTURE_MODE" != "live" ]]; then
|
||||
echo "CAPTURE_MODE must be 'deterministic' or 'live': $CAPTURE_MODE" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ ! "$SETTLE_MS" =~ ^[0-9]+$ ]] || (( SETTLE_MS % 1000 != 0 )); then
|
||||
echo "SETTLE_MS must be a non-negative whole number of seconds in milliseconds: $SETTLE_MS" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [[ -e "$OUT" ]]; then
|
||||
echo "output path already exists: $OUT" >&2
|
||||
exit 2
|
||||
@@ -46,7 +52,7 @@ args=(
|
||||
--out "$OUT"
|
||||
--width 1440
|
||||
--height 1000
|
||||
--settle-ms 3000
|
||||
--settle-ms "$SETTLE_MS"
|
||||
--geometry-selector "header, nav, footer"
|
||||
--geometry-selector "main, article"
|
||||
--geometry-selector "section"
|
||||
|
||||
@@ -129,6 +129,22 @@ class RepresentativeSuiteTests(unittest.TestCase):
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertNotIn("--animation-time-ms", arguments)
|
||||
|
||||
def test_zero_settle_latency_mode_is_forwarded(self):
|
||||
result, arguments, _, _ = self.run_wrapper(
|
||||
extra_environment={"SETTLE_MS": "0"},
|
||||
)
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
settle_index = arguments.index("--settle-ms")
|
||||
self.assertEqual(arguments[settle_index + 1], "0")
|
||||
|
||||
def test_fractional_settle_is_rejected_before_capture(self):
|
||||
result, arguments, _, _ = self.run_wrapper(
|
||||
extra_environment={"SETTLE_MS": "1500"},
|
||||
)
|
||||
self.assertEqual(result.returncode, 2)
|
||||
self.assertEqual(arguments, [])
|
||||
self.assertIn("SETTLE_MS must be", result.stderr)
|
||||
|
||||
def test_invalid_capture_mode_is_rejected_before_capture(self):
|
||||
result, arguments, _, _ = self.run_wrapper(
|
||||
extra_environment={"CAPTURE_MODE": "almost-live"},
|
||||
|
||||
Reference in new issue
Block a user