Files
omarchycn/test/acceptance.d/menu-test.sh
T
Ryan Hughes 55a3906f4c Step past the restored Unlock entry to reach Menu Bar in the menu test
The Style submenu grew its Unlock entry back (d411c90a) the same day the
menu acceptance test was written, so the blind Down-key walk landed on
Font and picked a font instead of opening the Menu Bar submenu — the bar
position assertion then timed out on every run.
2026-08-30 15:31:13 -04:00

108 lines
2.8 KiB
Bash

#!/bin/bash
set -euo pipefail
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
CONFIG_FILE="$HOME/.config/omarchy/shell.json"
DEFAULTS_FILE="$OMARCHY_PATH/config/omarchy/shell.json"
config_backup=$(mktemp)
config_existed=0
if [[ -f $CONFIG_FILE ]]; then
cp "$CONFIG_FILE" "$config_backup"
config_existed=1
fi
restore_bar_config() {
omarchy-shell shell hide omarchy.menu >/dev/null 2>&1 || true
if ((config_existed)); then
mkdir -p "$(dirname "$CONFIG_FILE")"
cp "$config_backup" "$CONFIG_FILE"
else
rm -f "$CONFIG_FILE"
fi
omarchy-shell shell reloadConfig >/dev/null 2>&1 || true
rm -f "$config_backup"
}
trap restore_bar_config EXIT
bar_is_vertical() {
local width height
read -r width height < <(hyprctl -j layers | jq -r '
[.. | objects | select(.namespace? == "omarchy-bar")][0]
| [.w, .h] | @tsv
')
[[ $width =~ ^[0-9]+$ && $height =~ ^[0-9]+$ ]] && ((width < height))
}
bar_is_horizontal() {
local width height
read -r width height < <(hyprctl -j layers | jq -r '
[.. | objects | select(.namespace? == "omarchy-bar")][0]
| [.w, .h] | @tsv
')
[[ $width =~ ^[0-9]+$ && $height =~ ^[0-9]+$ ]] && ((width > height))
}
bar_position_is() {
local expected="$1"
[[ $(jq -r '.bar.position // "top"' "$CONFIG_FILE") == $expected ]]
}
source_file=$DEFAULTS_FILE
((config_existed)) && source_file=$CONFIG_FILE
original_position=$(jq -r '.bar.position // "top"' "$source_file")
omarchy-shell shell summon omarchy.menu '{"menu":"root"}' >/dev/null
wait_until "root menu opens" 15 layer_present "omarchy-menu"
wait_until "root menu content is visible" 15 screen_contains "Apps"
screenshot "success-menu-01-root"
wtype -k Down -k Down -k Down
sleep 1
screenshot "success-menu-02-style-selected"
wtype -k Return
wait_until "style submenu is visible" 15 screen_contains "Theme"
screenshot "success-menu-03-style-submenu"
wtype -k Down -k Down -k Down -k Down -k Return
sleep 1
screenshot "success-menu-04-menu-bar-submenu"
wtype -k Return
sleep 1
screenshot "success-menu-05-position-submenu"
wtype -k Down -k Down -k Return
wait_until "menu bar position changes to left" 20 bar_position_is "left"
wait_until "menu bar becomes vertical" 20 bar_is_vertical
wait_until "menu closes after selecting a position" 15 layer_absent "omarchy-menu"
screenshot "success-menu-06-bar-left"
if ((config_existed)); then
cp "$config_backup" "$CONFIG_FILE"
else
rm -f "$CONFIG_FILE"
fi
omarchy-shell shell reloadConfig >/dev/null
if [[ $original_position == "left" || $original_position == "right" ]]; then
wait_until "menu bar restores its original vertical position" 20 bar_is_vertical
else
wait_until "menu bar restores its original horizontal position" 20 bar_is_horizontal
fi
screenshot "success-menu-07-bar-restored"
trap - EXIT
restore_bar_config