diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/tui-golden.py | 202 |
1 files changed, 200 insertions, 2 deletions
diff --git a/scripts/tui-golden.py b/scripts/tui-golden.py index 25cfdc3..f5d5b7f 100755 --- a/scripts/tui-golden.py +++ b/scripts/tui-golden.py @@ -56,6 +56,9 @@ KEYS = { "ctrlc": "\x03", "ctrln": "\x0e", "ctrlenter": "\x1b[27;5;13~", + "ctrlenter-kitty": "\x1b[13;5u", + "f5": "\x1b[15~", + "f9": "\x1b[20~", } # {org_name} {org_nr} {fy_label} {fy_start} {fy_end} are substituted at run @@ -64,7 +67,8 @@ SCENARIOS = [ { "name": "dashboard", "screen": "dashboard", - "expect": ["{org_name}", "{fy_label}", "{fy_start}", "{fy_end}"], + "expect": ["{org_name}", "{fy_label}", "{fy_start}", "{fy_end}", + "Bolaget", "System", "Räkenskapsår"], }, { "name": "audit-ok", @@ -118,6 +122,21 @@ SCENARIOS = [ ], }, { + "name": "inbox-file-browser", + "screen": "inbox", + "expect": ["Underlag (inkorg)"], + "steps": [ + { + "keys": ["a"], + "expect": ["Välj fil — /"], + }, + { + "keys": ["esc"], + "expect": ["Underlag (inkorg)"], + }, + ], + }, + { "name": "bank-new-voucher", "screen": "bank", "expect": ["Bankavstämning", "GOLDEN INSÄTTNING", "CDON"], @@ -211,6 +230,156 @@ SCENARIOS = [ }, ], }, + { + "name": "employees", + "screen": "employees", + "expect": ["Anställda", "Testanställd", "Ny anställd"], + }, + { + "name": "employee-new-f9", + "screen": "employees", + "steps": [ + { + "keys": ["ctrln"], + "expect": ["Ny anställd", "Personnummer"], + }, + { + "keys": ["enter", "Testperson", "enter"], + "expect": ["Ny anställd", "Testperson"], + }, + { + "keys": ["down", "enter", "19900101-1234", "enter"], + "expect": ["19900101-1234"], + }, + { + "keys": ["f9"], + "expect": ["Anställd skapad."], + }, + { + "keys": ["enter"], + "expect": ["Anställda", "Testperson"], + }, + ], + }, + { + "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", + "E-post (SMTP)", "Anställda", "Kunder", "Momsregler"], + "steps": [ + { + "keys": ["3"], + "expect": ["E-post (SMTP)", "SMTP-server", + "lämna tomt för oförändrat"], + }, + { + "keys": ["esc"], + "expect": ["Bolaget", "Företagsuppgifter"], + }, + { + "keys": ["5"], + "expect": ["Anställda", "Testanställd"], + }, + { + "keys": ["esc"], + "expect": ["Bolaget", "Kunder"], + }, + ], + }, + { + "name": "system", + "screen": "system", + "expect": ["System", "Skattetabeller", "Revision"], + "steps": [ + { + "keys": ["1"], + "expect": ["Skattetabeller", "Status: skattetabeller för"], + }, + { + "keys": ["esc"], + "expect": ["System", "Revision"], + }, + { + "keys": ["2"], + "expect": ["Revision", "Verifiera hashkedjan"], + }, + { + "keys": ["esc"], + "expect": ["System", "Skattetabeller"], + }, + ], + }, + { + "name": "tax-tables", + "screen": "tax_tables", + "expect": ["Skattetabeller", "Status: skattetabeller för", + "Hämta från Skatteverket"], + }, + { + "name": "payroll", + "screen": "payroll", + "expect": ["Lönekörningar", "Ny lönekörning"], + }, + { + "name": "payroll-run", + "screen": "payroll", + "steps": [ + { + "keys": ["ctrln"], + "expect": ["Ny lönekörning", "Period", "Bokför körning"], + }, + { + "keys": ["f5"], + "expect": ["Testanställd", "30 000,00", "Avgifter"], + }, + { + "keys": ["esc"], + "expect": ["Ny lönekörning", "Bokför körning"], + }, + { + "keys": ["ctrlenter"], + "expect": ["Bokför lönekörningen"], + }, + { + "keys": ["j"], + "expect": ["Lönekörningen är bokförd"], + }, + { + "keys": ["enter"], + "expect": ["Status: bokförd", "Lönebesked (PDF)"], + }, + { + "keys": ["down", "down", "down", "down", "enter"], + "expect": ["Sparad", "Lönebesked"], + }, + ], + }, ] # -------------------------------------------------------------------------- @@ -739,6 +908,24 @@ def setup_rig(repo, tmp, env): "unit_price_ore": 100000, "vat_code": "25"}], })], env) + # Payroll rig: one B record covering the employee's salary, and one + # employee, so the Lön screens have data to show. + table_line = "30B30 1 80000 7000 7000 7000 7000 7000 7000\n" + run_checked([str(bind / "bokfctl"), "--socket", str(sock), + "--user", "admin", "--password", env["BOKFD_PASSWORD"], + "--org", str(org_id), "payroll.tax_tables_import", + json.dumps({"year": start.year, + "content_base64": base64.b64encode( + table_line.encode("utf-8")).decode()})], env) + run_checked([str(bind / "bokfctl"), "--socket", str(sock), + "--user", "admin", "--password", env["BOKFD_PASSWORD"], + "--org", str(org_id), "employee.create", + json.dumps({"name": "Testanställd", + "personal_no": "19800101-1234", + "monthly_salary_ore": 3000000, + "tax_table": 30, + "tax_column": 1, + "email": "test@example.com"})], env) return daemon, sock, org_id, fy @@ -763,9 +950,14 @@ def main(argv): tmp = Path(tempfile.mkdtemp(prefix="bokf-golden-", dir="/tmp")) password = "golden-" + os.urandom(6).hex() env = dict(os.environ) - env.update({"BOKFD_PASSWORD": password}) + env.update({"BOKFD_PASSWORD": password, + "BOKFD_SECRET_KEY": os.urandom(32).hex()}) env.pop("BOKFD_SESSION", None) env.pop("BOKFD_TOKEN", None) + # keep generated PDFs from opening a window: the TUI then reports where + # it saved the file, which is what the scenarios assert on + env.pop("DISPLAY", None) + env.pop("WAYLAND_DISPLAY", None) daemon = None failures = 0 @@ -809,6 +1001,12 @@ 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) + failures += 1 + continue current = before for step in sc.get("steps", []): keys = resolve_keys(step["keys"]) |
