This commit is contained in:
team3
2026-09-19 21:59:04 +02:00
parent 736437f609
commit 7da689889c
5 changed files with 76 additions and 10 deletions

View File

@@ -40,6 +40,8 @@ rclickb() { $IN rclick $(val "bottom($1).join(' ')"); sleep 0.3; }
type_() { $IN type "$1"; sleep 0.2; }
key() { $IN key "$1"; sleep 0.3; }
shot() { "$DIR/shot.sh" "$SHOTS/$1.png" >/dev/null; }
# Wochenraster auf eine Stunde scrollen, wie ein Nutzer mit dem Mausrad. Die Ansicht startet sonst bei der aktuellen Uhrzeit.
weekscroll() { "$E" "$PRE cal._weekScroll.vadjustment.value = $1 * cal._rowPitch(); 'ok'" >/dev/null; sleep 0.3; }
check() {
local name=$1 actual=$2 expected=$3
if [ "$actual" == "$expected" ]; then
@@ -60,6 +62,9 @@ check "Rechte Spalte füllt den Rest, Abstand wie außen" "$(val '(r => [r.x - (
echo "=== Woche: Termin per Drag"
click 'cal._viewButtons.week'
check "Wochenansicht" "$(val 'cal._view')" "week"
check "Aktuelle Uhrzeit mittig" "$(val '(a => { const n = new Date(); const y = (n.getHours() * 60 + n.getMinutes()) / 60 * cal._rowPitch(); return Math.abs(a.value + a.page_size / 2 - y) < 30 || a.value === 0 || a.value >= a.upper - a.page_size - 1; })(cal._weekScroll.vadjustment)')" "true"
check "Rote Linie in der Spalte von heute" "$(val '(l => l.visible + " " + (Math.abs(l.get_transformed_position()[0] - cal._slots[cal._todayIndex][0].get_transformed_position()[0]) <= 1))(cal._nowLine)')" "true true"
weekscroll 7
$IN drag $(xy 'cal._slots[4][10]') $(xy 'cal._slots[4][12]'); sleep 0.3
check "Popover offen" "$(val 'grabbed()?.style_class')" "desktop-popover form"
check "Zeitraum im Popover" "$(val '["Fr, 18.09.2026 ▾", "10:00 ▾", "13:00 ▾"].map(t => find(grabbed(), t) ? "ja" : "nein").join(" ")')" "ja ja ja"
@@ -71,6 +76,8 @@ check "Termin gespeichert" "$(val 'JSON.stringify((({title, date, start, end, en
'{"title":"Sport","date":"2026-09-18","start":"10:00","end":"13:00","endDate":null}'
check "Popover zu, Markierung weg" "$(val '[grabbed() ? "grab" : "frei", cal._slots[4].filter(s => s.has_style_class_name("selecting")).length].join(" ")')" "frei 0"
check "Ein Block über drei Stunden" "$(val '(b => b.length + " " + Math.round(b[0].block.height / cal._rowPitch()))(cal._blocks.filter(b => b.event.title === "Sport"))')" "1 3"
check "Titel läuft über mehrere Zeilen" "$(val '(b => b.block.get_child().get_child_at_index(1).clutter_text.get_layout().get_line_count() > 1)(cal._blocks.find(b => b.event.title === "Sehr langer Termintitel der abgeschnitten wird"))')" "true"
weekscroll 3
shot "02-week"
echo "=== Woche: Termin bearbeiten, Escape, Löschen per Rechtsklick"
@@ -82,6 +89,7 @@ rclick 'cal._blocks.find(b => b.event.title === "Sport").block'
check "Kontextmenü offen" "$(val 'labels(grabbed()).join("|")')" "Löschen"
shot "03-context-menu"
click 'find(grabbed(), "Löschen")'
check "Scrollposition bleibt nach dem Löschen" "$(val 'Math.round(cal._weekScroll.vadjustment.value / cal._rowPitch())')" "3"
check "Termin gelöscht (Tombstone bleibt)" "$(val 'store.events.filter(e => e.title === "Sport").map(e => e.deleted).join(",") + " " + store.eventsOn("2026-09-18").filter(e => e.title === "Sport").length')" "true 0"
echo "=== Woche: ganztägiger Termin, Klick daneben schließt"
@@ -135,7 +143,7 @@ check "Notiz-Datei angelegt" "$(val 'GLib.file_test(store.notesDir + "/Testnotiz
check "Editor offen mit Fokus" "$(val '[notes._editing, notes._editScroll.visible, global.stage.get_key_focus() === notes._editor.clutter_text].join(" ")')" "true true true"
type_ "# Hallo"; key Return; key Return; type_ "Erste **Notiz**"
shot "06-inline-editor"
sleep 4
sleep 6
check "Autosave nach ein paar Sekunden" "$(val '[notes._editing, JSON.stringify(read(store.notesDir + "/Testnotiz.md"))].join(" ")')" 'true "# Hallo\n\nErste **Notiz**"'
click 'cal._viewButtons.month'
check "Fokusverlust beendet den Editor, Anzeige gerendert" "$(val '[notes._editing, notes._viewScroll.visible, notes._content.text].join("|")')" "false|true|Hallo
@@ -189,6 +197,7 @@ check "Ordner gewählt zeigt nichts" "$(val '[notes._selected.type, JSON.stringi
echo "=== Woche: Rechtsklick, Termin ohne Ende, mehrtägig"
click 'cal._viewButtons.week'
weekscroll 7
rclick 'cal._slots[1][9]'
check "Rechtsklick Stundenzelle" "$(val 'labels(grabbed()).join("|")')" "Termin erstellen|Todo erstellen"
click 'find(grabbed(), "Todo erstellen")'