Ariver
2026-06-09 146fbcf6430d2513df7fb536c7e9ace81f1e57b9
C3.tools/round1-waterfall-fixture-qa.sh
@@ -121,8 +121,12 @@
    require(column.get("windowCount") == fixture_windows_per_app, "Waterfall column window count must match fixture")
    require(column.get("appNameAlignment") == "center", "Waterfall column app name must be center aligned")
    column_frame = column.get("frame", {})
    header_frame = column.get("headerFrame", {})
    app_name_frame = column.get("appNameFrame", {})
    count_frame = column.get("countFrame", {})
    header_to_first_card_gap = column.get("headerToFirstCardGap")
    top_to_first_card_gap = column.get("topToFirstCardGap")
    require(isinstance(header_frame, dict), "Waterfall column must expose headerFrame")
    require(isinstance(app_name_frame, dict), "Waterfall column must expose appNameFrame")
    require(isinstance(count_frame, dict), "Waterfall column must expose countFrame")
    column_width = column_frame.get("width", 0)
@@ -131,6 +135,8 @@
    require(app_name_frame.get("width", 0) >= column_width * 0.88, "Waterfall column app name frame must span most of the title bar")
    require(count_frame.get("x", 0) + count_frame.get("width", 0) <= column_width + 1.0, "Waterfall count frame must remain inside the title bar")
    require(count_frame.get("x", 0) >= column_width * 0.72, "Waterfall count frame must stay in the right side of the title bar")
    require(abs(header_to_first_card_gap) <= 1.0, "Waterfall first card must sit directly under the title bar")
    require(top_to_first_card_gap <= header_frame.get("height", 0) + 1.0, "Waterfall title-to-card height must remain compact")
    require(column.get("maxVerticalScrollOffset", 0) > 0, "Long Waterfall column must expose vertical scroll overflow")
    require(column.get("verticalScrollOffset") == 0, "Waterfall column should start at top")