diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-23 10:58:17 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-23 10:58:17 +0200 |
| commit | 71a702f375750829c634b552217c9925d549828b (patch) | |
| tree | 2b963da1d0110ed43920722ba4193ee9c79f2521 /scripts/tui-golden.py | |
| parent | 8ccb6d58d8e2f1c65dfd7ab5f0eb7d93f1f19def (diff) | |
| download | bokf-71a702f375750829c634b552217c9925d549828b.tar.gz bokf-71a702f375750829c634b552217c9925d549828b.zip | |
tui: context menu on → / ^O; no F-keys, ^N or ^Enter
→ (where no caret uses it) and ^O (everywhere, also in table cells)
open "Åtgärder": a box at the right edge with every action of the view
and its key. Screens declare their actions with tui_set_actions();
choosing one feeds its key to the widget, so the menu and accelerators
share one path. Function keys, Ctrl+N (now n), Ctrl+Enter and Ctrl+F are
gone and no extended keyboard protocol is enabled, so the TUI works in a
browser terminal; save/post/validate/preview/template/attach are menu
actions. make check rejects F-keys, ^N and ^Enter in clients/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'scripts/tui-golden.py')
| -rwxr-xr-x | scripts/tui-golden.py | 134 |
1 files changed, 76 insertions, 58 deletions
diff --git a/scripts/tui-golden.py b/scripts/tui-golden.py index b6aaada..bce00eb 100755 --- a/scripts/tui-golden.py +++ b/scripts/tui-golden.py @@ -57,12 +57,8 @@ KEYS = { "pgup": "\x1b[5~", "pgdn": "\x1b[6~", "ctrlc": "\x03", - "ctrln": "\x0e", - "ctrlenter": "\x1b[27;5;13~", - "ctrlenter-kitty": "\x1b[13;5u", - "f5": "\x1b[15~", - "f9": "\x1b[20~", - "f2": "\x1bOQ", + "ctrlo": "\x0f", # context menu, also inside a table cell + "f5": "\x1b[15~", # only to prove that F-keys do nothing "backspace": "\x7f", "tab": "\t", } @@ -120,7 +116,7 @@ SCENARIOS = [ }, { "keys": ["enter"], - "expect": ["piltangenter/PgUp/PgDn rullar", "kvitto"], + "expect": ["upp/ned/PgUp/PgDn rullar", "kvitto"], }, { "keys": ["esc"], @@ -140,7 +136,7 @@ SCENARIOS = [ }, { "keys": ["enter"], - "expect": ["piltangenter/PgUp/PgDn rullar", "kvitto"], + "expect": ["upp/ned/PgUp/PgDn rullar", "kvitto"], }, { "keys": ["esc"], @@ -184,7 +180,7 @@ SCENARIOS = [ "expect": ["Bankavstämning", "GOLDEN INSÄTTNING", "CDON"], "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Nytt verifikat", "GOLDEN INSÄTTNING", "123,00", "1930"], }, @@ -224,14 +220,19 @@ SCENARIOS = [ "expect": ["Bankavstämning", "CDON", "1 omatchade"], "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Nytt verifikat", "CDON", "24,09", "1930"], }, { "keys": ["\t\t\t\t\t\t\t", "3001", "\t", "24,09"], }, { - "keys": ["ctrlenter"], + "keys": ["ctrlo"], + "expect": ["Åtgärder", "Bokför", "Validera (torrkörning)", + "Hämta mall…"], + }, + { + "keys": ["enter"], "expect": ["Bokfört"], }, { @@ -243,7 +244,7 @@ SCENARIOS = [ "expect": ["→ A2", "0 omatchade"], }, { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Transaktionen är redan matchad."], }, { @@ -268,7 +269,7 @@ SCENARIOS = [ "expect": ["Kunder", "Testkund AB"], "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny kund", "<UTKAST>"], }, { @@ -284,11 +285,11 @@ SCENARIOS = [ "expect": ["<UTKAST> Utkastkund"], }, { - "keys": ["f2"], - "expect": ["Åtgärder", "Öppna", "Radera utkast"], + "keys": ["right"], + "expect": ["Åtgärder", "Radera utkast", "Öppna", "Enter"], }, { - "keys": ["down", "enter"], + "keys": ["enter"], "expect": ["Radera utkastet?"], }, { @@ -303,7 +304,7 @@ SCENARIOS = [ "expect": ["Kunder", "Testkund AB"], "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny kund", "<UTKAST>"], }, { @@ -311,7 +312,11 @@ SCENARIOS = [ "expect": ["Sparad kund", "<UTKAST>"], }, { - "keys": ["f9"], + "keys": ["right"], + "expect": ["Åtgärder", "Spara", "Validera"], + }, + { + "keys": ["enter"], "expect": ["Sparat."], }, { @@ -325,7 +330,7 @@ SCENARIOS = [ "screen": "invoices", "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny faktura", "Kund"], }, ], @@ -363,7 +368,7 @@ SCENARIOS = [ "Betalning faktura"], }, { - "keys": ["f9"], + "keys": ["ctrlo", "enter"], "expect": ["Bokfört"], }, { @@ -382,11 +387,11 @@ SCENARIOS = [ "expect": ["Anställda", "Testanställd", "Ny anställd"], }, { - "name": "employee-new-f9", + "name": "employee-new-save", "screen": "employees", "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny anställd", "Personnummer"], }, { @@ -398,7 +403,7 @@ SCENARIOS = [ "expect": ["19900101-1234"], }, { - "keys": ["f9"], + "keys": ["right", "enter"], "expect": ["Anställd skapad."], }, { @@ -408,32 +413,6 @@ SCENARIOS = [ ], }, { - "name": "employee-new-kitty", - "screen": "employees", - "steps": [ - { - "keys": ["ctrln"], - "expect": ["Ny anställd", "Personnummer"], - }, - { - "keys": ["enter", "Kitty Person", "enter"], - "expect": ["Kitty Person"], - }, - { - "keys": ["down", "enter", "19900202-5678", "enter"], - "expect": ["19900202-5678"], - }, - { - "keys": ["ctrlenter-kitty"], - "expect": ["Anställd skapad."], - }, - { - "keys": ["enter"], - "expect": ["Anställda", "Kitty Person"], - }, - ], - }, - { "name": "company", "screen": "company", "expect": ["Bolaget", "Företagsuppgifter", "Fakturauppgifter", @@ -515,11 +494,15 @@ SCENARIOS = [ "screen": "payroll", "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny lönekörning", "Period", "Bokför körning"], }, { - "keys": ["f5"], + "keys": ["right"], + "expect": ["Åtgärder", "Förhandsvisa", "Bokför körning…"], + }, + { + "keys": ["enter"], "expect": ["Testanställd", "30 000,00", "Avgifter"], }, { @@ -527,7 +510,7 @@ SCENARIOS = [ "expect": ["Ny lönekörning", "Bokför körning"], }, { - "keys": ["ctrlenter"], + "keys": ["right", "down", "enter"], "expect": ["Bokför lönekörningen"], }, { @@ -646,13 +629,49 @@ SCENARIOS = [ ], }, { + # → opens the context menu with the screen's actions first and the + # key of each action; choosing one is the same as pressing its key. + # F-keys do nothing (browsers own them). + "name": "context-menu", + "screen": "vouchers", + "expect": ["sorterade på nummer, stigande"], + "steps": [ + { + "keys": ["right"], + "expect": ["Åtgärder", "Nytt verifikat", "Byt sortering", + "Gå till rad / sök", "Tillbaka"], + }, + { + "keys": ["esc"], + "expect": ["Enter = öppna → = åtgärder"], + }, + { + "keys": ["right", "down", "enter"], + "expect": ["sorterade på nummer, fallande"], + }, + { + "keys": ["home", "enter", "right"], + "expect": ["Rätta (ändringsverifikat)…", "Bifoga fil…", + "Nästa verifikat"], + }, + { + "keys": ["left"], + "expect": ["n = nytt c = rätta a = bifoga"], + }, + { + "keys": ["esc", "f5", "s", "s", "s"], + "expect": ["sorterade på nummer, stigande"], + }, + ], + }, + { # Backspace in a freshly opened field edits the value; the next # key must not replace everything. "name": "form-edit-backspace", "screen": "customers", "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Ny kund", "<UTKAST>"], }, { @@ -672,7 +691,7 @@ SCENARIOS = [ "screen": "vouchers", "steps": [ { - "keys": ["ctrln"], + "keys": ["n"], "expect": ["Nytt verifikat", "Datum", "Konto"], }, { @@ -1355,10 +1374,9 @@ def main(argv): report_failure(name, missing, "", before) failures += 1 continue - if (b"\x1b[>4;2m" not in app.raw or - b"\x1b[>1u" not in app.raw): - report_failure(name, ["keyboard protocol enable " - "sequence"], "", before) + if (b"\x1b[>4;2m" in app.raw or b"\x1b[>1u" in app.raw): + report_failure(name, ["no extended keyboard protocol " + "(legacy keys only)"], "", before) failures += 1 continue current = before |
