| | |
| | | root = report.get("rootView", {}) |
| | | groups = root.get("spaceLaneDisplayGroups", []) |
| | | segments = root.get("spaceLaneSegments", []) |
| | | lane_background = root.get("spaceLaneBackgroundColor", {}) |
| | | |
| | | require(report.get("snapshotLoaded") is True, "snapshotLoaded must be true") |
| | | require(report.get("quickSwitchVisible") is True, "multi-display report must keep Quick Switch visible") |
| | |
| | | require(len(segments) == 5, "Space segment reports must contain five segments") |
| | | require(groups[0].get("spaceLabels") == ["A1", "A2", "A3"], "first Display group must contain A spaces") |
| | | require(groups[1].get("spaceLabels") == ["B1", "B2"], "second Display group must contain B spaces") |
| | | require(lane_background.get("alpha", 1) <= 0.01, "Space Lane outer background must be transparent") |
| | | require(root.get("spaceLaneCornerRadius") == 0, "Space Lane outer layer must not draw a rounded white rectangle") |
| | | |
| | | first_group_frame = groups[0].get("visibleFrame", {}) |
| | | second_group_frame = groups[1].get("visibleFrame", {}) |
| | |
| | | for group in groups: |
| | | group_frame = group.get("visibleFrame", {}) |
| | | labels = group.get("spaceLabels", []) |
| | | require(group.get("borderWidth") == 0, "Display group container must be borderless") |
| | | require(group.get("shadowOpacity") == 0, "Display group container must not add a floating shadow") |
| | | require(group.get("backgroundColor", {}).get("alpha", 0) >= 0.98, "Display group container must use an opaque system surface") |
| | | require(group.get("groupHorizontalPadding", 0) >= 24, "Display group horizontal padding must be widened") |
| | | for label in labels: |
| | | require(label in segments_by_label, f"segment report must include {label}") |
| | | require(contains(group_frame, segments_by_label[label].get("visibleFrame", {})), f"{label} must be inside its Display group") |
| | | first_segment = segments_by_label[labels[0]].get("visibleFrame", {}) |
| | | last_segment = segments_by_label[labels[-1]].get("visibleFrame", {}) |
| | | require( |
| | | first_segment.get("x", 0) - group_frame.get("x", 0) >= group.get("groupHorizontalPadding", 0) - 1.0, |
| | | "Display group leading padding must match widened padding" |
| | | ) |
| | | require( |
| | | right_edge(group_frame) - right_edge(last_segment) >= group.get("groupHorizontalPadding", 0) - 1.0, |
| | | "Display group trailing padding must match widened padding" |
| | | ) |
| | | |
| | | for group in groups: |
| | | labels = group.get("spaceLabels", []) |
| | |
| | | require(len(focused) == 1, "exactly one Space segment must be focused") |
| | | require(focused[0].get("label") == "B1", "hovered multi-display Space must be B1") |
| | | require("focused" in focused[0].get("visualStates", []), "focused B1 segment must expose focused visual state") |
| | | |
| | | idle_empty_segments = [ |
| | | segment for segment in segments |
| | | if segment.get("windowCount") == 0 |
| | | and segment.get("isFocused") is not True |
| | | and segment.get("isCurrent") is not True |
| | | and segment.get("isAppAssociated") is not True |
| | | and segment.get("isWindowAssociated") is not True |
| | | ] |
| | | require(idle_empty_segments, "multi-display visual fixture must include at least one idle empty Space") |
| | | require( |
| | | all(segment.get("backgroundColor", {}).get("alpha", 1) <= 0.01 for segment in idle_empty_segments), |
| | | "idle empty Spaces must not keep a dirty gray fill" |
| | | ) |
| | | fullscreen_segments = [segment for segment in segments if segment.get("type") == "fullscreen"] |
| | | require(fullscreen_segments, "multi-display visual fixture must include a fullscreen Space") |
| | | for segment in fullscreen_segments: |
| | | marker_frame = segment.get("fullscreenMarkerFrame", {}) |
| | | require(marker_frame.get("y") == 30, "fullscreen Space marker must keep the previous vertical style") |
| | | |
| | | print(json.dumps({ |
| | | "displayGroups": [ |
| | |
| | | run_report "$SCROLL_REPORT" "scroll-app-shelf:99999" "scroll-app-shelf:99999" 60 1 |
| | | assert_app_shelf_scroll_report "$SCROLL_REPORT" |
| | | |
| | | run_report "$DISPLAY_GROUP_REPORT" "hover-space:4" "hover-space:4" 6 3 report-only multi-display |
| | | run_report "$DISPLAY_GROUP_REPORT" "hover-space:4" "hover-space:4" 1 1 report-only multi-display |
| | | assert_display_group_report "$DISPLAY_GROUP_REPORT" |
| | | |
| | | swift "$SCRIPT_DIR/window-logic-qa.swift" --expect-no-quick-switch >&2 |