From a478349ca94ff4453f2a92bdd886f4111e23468d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 7 Aug 2026 23:13:53 -0700 Subject: [PATCH] Harness: prove the OEM keyboard step applies a non-default layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drive the OEM first-boot keyboard picker to English (UK) and assert the installed system ends up with KEYMAP=uk and XKBLAYOUT=gb — proving the deferred keyboard step actually applied a layout, not just rendered. UK keeps every letter identical to US so the raw-keycode password still matches, and the email's '@' (Shift+' under UK, not Shift+2) is typed with the UK keycode. The console bootstrap now fetches-then-runs instead of piping, so it survives the non-US layout the keyboard step installs. Co-Authored-By: Claude Fable 5 --- bin/omarchy-iso-test | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/bin/omarchy-iso-test b/bin/omarchy-iso-test index 0af38f5..1822305 100755 --- a/bin/omarchy-iso-test +++ b/bin/omarchy-iso-test @@ -695,9 +695,14 @@ drive_oem_setup() { log "Driving the OEM first-boot setup" # OEM defers the keyboard step to first boot; it comes before the user form. + # Pick English (UK) (one row above the preselected English (US)) so the + # verifier can prove the deferred step applied a non-default layout — UK + # leaves every letter identical to US, so the typed password (sent as raw + # keycodes) still matches the literal one the harness pipes to sudo. wait_for_screen "keyboard layout" 600 - capture_console "success-oem-01-keyboard-layout" - press ret # English (US) preselected + press up + capture_console "success-oem-01-keyboard-layout-uk" + press ret wait_for_screen "Username" 120 capture_console "success-oem-02-username" @@ -718,7 +723,12 @@ drive_oem_setup() { press ret wait_for_screen "Email address" 60 - type_text "test@omarchy.org" + # The keyboard step above applied English (UK), where '@' is Shift+' (not + # Shift+2 as on US); send that keycode so the typed email is correct under + # the new layout — itself further proof the deferred keymap took effect. + type_text "test" + press shift-apostrophe + type_text "omarchy.org" capture_console "success-oem-04-email" press ret @@ -847,7 +857,7 @@ EOF press ret sleep 3 - type_text "curl -fsS http://10.0.2.2:$HTTP_PORT/bootstrap | bash" + type_text "curl -fsS http://10.0.2.2:$HTTP_PORT/bootstrap -o /tmp/bs && bash /tmp/bs" capture_console "success-first-boot-05-bootstrap-command" press ret