The dashboard__populated screenshot (and the two theme variants) always rendered on a 1024×768px canvas (384dp tall at screenshotDensity 2.0), clipping the bottom node card (“Deadband”) even though captureScreen() was called with heightDp = DASHBOARD_HEIGHT_DP (700dp). DASHBOARD_HEIGHT_DP had no effect.
captureScreen() used if (widthDp != null && heightDp != null) to decide whether to pass custom dimensions to runDesktopComposeUiTest. Because the dashboard scenarios pass only heightDp (not widthDp), the && condition evaluated false and the else branch ran, using the default 1024×768px canvas regardless of the heightDp argument. The constant DASHBOARD_HEIGHT_DP = 700 introduced in PR #543 had never taken effect since it was merged.
Changed the condition from && to ||. When only one dimension is specified, the unspecified axis uses the runDesktopComposeUiTest default pixel value (1024px wide, 768px tall). The dashboard scenarios now produce a 1024×1400px canvas (512×700dp) that fits all seven fixture node cards with bottom breathing room.
captureScreen() should accept any combination of dimension overrides, not require both. The API now documents this clearly with widthDp and/or heightDp.DASHBOARD_HEIGHT_DP, verify the screenshot dimensions in the output PNG before closing the PR (python3 -c "import struct; ..." or identify). The constant having no effect was invisible without inspecting pixel output.