| | |
| | | FIXTURE_APP_COUNT="${ALIGNER_ROUND1_MOUSE_FIXTURE_APP_COUNT:-8}" |
| | | FIXTURE_WINDOWS_PER_APP="${ALIGNER_ROUND1_MOUSE_FIXTURE_WINDOWS_PER_APP:-8}" |
| | | MOUSE_SEQUENCE="${ALIGNER_ROUND1_MOUSE_SEQUENCE:-hover-card:1:7,hover-app:5,hover-card:7:0,click-card:7:0}" |
| | | APP_ONLY_MOUSE_SEQUENCE="${ALIGNER_ROUND1_MOUSE_APP_ONLY_SEQUENCE:-hover-app:5,click-app:7}" |
| | | APP_ONLY_MOUSE_SEQUENCE="${ALIGNER_ROUND1_MOUSE_APP_ONLY_SEQUENCE:-hover-app:7,click-app-near-close:7}" |
| | | REPORT_WAIT="${ALIGNER_ROUND1_MOUSE_REPORT_WAIT:-6.0}" |
| | | WINDOW_WAIT="${ALIGNER_ROUND1_MOUSE_WINDOW_WAIT:-6.0}" |
| | | |
| | |
| | | root = report.get("rootView", {}) |
| | | items = root.get("appShelfItems", []) |
| | | columns = root.get("waterfallColumns", []) |
| | | click_app_commands = [command for command in mouse_sequence if command.startswith("click-app:")] |
| | | require(click_app_commands, "app-only sequence must include click-app:<appGroupIndex>") |
| | | click_app_prefixes = ("click-app:", "click-app-center:", "click-app-near-close:") |
| | | click_app_commands = [command for command in mouse_sequence if command.startswith(click_app_prefixes)] |
| | | require(click_app_commands, "app-only sequence must include an App click command") |
| | | last_click_app = click_app_commands[-1] |
| | | last_click_parts = last_click_app.split(":") |
| | | require(len(last_click_parts) == 2, "click-app command must be click-app:<appGroupIndex>") |
| | | require(len(last_click_parts) == 2, "App click command must be <command>:<appGroupIndex>") |
| | | target_app_group_index = int(last_click_parts[1]) |
| | | |
| | | require(report.get("snapshotLoaded") is True, "app-only snapshotLoaded must be true") |
| | |
| | | require(report.get("lastCommitSource") == "mouse", "session App Shelf commit source must be mouse") |
| | | require(report.get("lastActivationWindowID") == expected_window_id, "App Shelf activation window must be the first target-column window") |
| | | require(report.get("lastActivationResult") == "activated", "debug activation must activate the App Shelf first window") |
| | | require(report.get("lastCloseTargetKind") is None, "App Shelf body click must not enter close flow") |
| | | require(report.get("lastCloseResult") is None, "App Shelf body click must not request close") |
| | | require(root.get("pendingCloseTargetKind") is None, "App Shelf body click must not create pending close target") |
| | | require(root.get("hoveredCloseTargetKind") is None, "App Shelf body click must not leave a hovered close target") |
| | | require(root.get("closeConfirmationVisible") is False, "App Shelf body click must not show close confirmation") |
| | | require(root.get("closeFeedbackKind") is None, "App Shelf body click must not show close feedback") |
| | | require(root.get("lastClickedAppGroupIndex") == target_app_group_index, "click App Shelf must record target App group") |
| | | require(root.get("lastAppShelfClickChangedSelection") is True, "click App Shelf must explicitly report selection moved to target column") |
| | | require(root.get("waterfallScrollOffset", 0) > 0, "clicking far-right App Shelf item must position its Waterfall column") |
| | |
| | | "selectedAppGroupIndex": root.get("selectedAppGroupIndex"), |
| | | "lastCommittedWindowID": root.get("lastCommittedWindowID"), |
| | | "lastActivationResult": report.get("lastActivationResult"), |
| | | "closeConfirmationVisible": root.get("closeConfirmationVisible"), |
| | | "pendingCloseTargetKind": root.get("pendingCloseTargetKind"), |
| | | "lastClickedAppGroupIndex": root.get("lastClickedAppGroupIndex"), |
| | | "waterfallScrollOffset": root.get("waterfallScrollOffset") |
| | | }, indent=2, ensure_ascii=False)) |
| | |
| | | require("focused" not in window_associated_segments[0].get("visualStates", []), "window-associated Space segment must not expose focused") |
| | | |
| | | frame = selected_cards[0].get("visibleFrame", {}) |
| | | selected_card_visual_overflow_tolerance = 2.5 |
| | | require(frame.get("x", -1) >= 0, "clicked Waterfall card must be horizontally visible") |
| | | require(frame.get("x", 0) + frame.get("width", 0) <= root.get("waterfallVisibleWidth", 0) + 1, "clicked card must fit in visible Waterfall width") |
| | | require( |
| | | frame.get("x", 0) + frame.get("width", 0) |
| | | <= root.get("waterfallVisibleWidth", 0) + selected_card_visual_overflow_tolerance, |
| | | "clicked card must fit in visible Waterfall width" |
| | | ) |
| | | |
| | | print(json.dumps({ |
| | | "quickSwitchVisible": report.get("quickSwitchVisible"), |
| | |
| | | "$APP/Contents/MacOS/Aligner" \ |
| | | --round0-skip-permissions \ |
| | | --round01-open-quick-switch \ |
| | | --round01-waterfall-view-mode=vertical \ |
| | | --round01-fixture-app-count="$FIXTURE_APP_COUNT" \ |
| | | --round01-fixture-windows-per-app="$FIXTURE_WINDOWS_PER_APP" \ |
| | | --round01-disable-screenshot-refresh \ |
| | |
| | | "$APP/Contents/MacOS/Aligner" \ |
| | | --round0-skip-permissions \ |
| | | --round01-open-quick-switch \ |
| | | --round01-waterfall-view-mode=vertical \ |
| | | --round01-fixture-app-count="$FIXTURE_APP_COUNT" \ |
| | | --round01-fixture-windows-per-app="$FIXTURE_WINDOWS_PER_APP" \ |
| | | --round01-disable-screenshot-refresh \ |