Boot-screen capture results

Generated 2026-08-04T15:06:52+00:00.

Steppytest codeEmulator output (stderr)Screen
PASS
0. Boot preamble (common to every fresh-booted scenario below)
(no test action here -- every fresh-booted scenario below starts from this same state)

1 lines, common to all 3 fresh-booted scenarios

[2026-08-04 15:06:44.466] [lisa_rom] [info] input-server: connection accepted
0. Boot preamble (common to every fresh-booted scenario below)
PASS
1. Boot menu appears
@pytest.mark.fresh_boot
def test_boot_menu_appears(lisa_rom_proc: LisaEmuProcess, record_step):
    """The ROM's boot-device-selection screen renders and settles without
    any input -- the baseline capture the other scenarios diff against.
    Explicitly fresh_boot (not just relying on being first) so this test's
    intent is clear even if tests are reordered or run individually."""
    out = RESULTS_DIR / "01_boot_menu.png"
    with InputClient(str(lisa_rom_proc.uds_path)) as client:
        stable = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out))

    record_step("1. Boot menu appears", lisa_rom_proc.current_test_output(), out, stable,
                lisa_rom_proc.was_fresh_boot)
    assert stable, f"display never settled; stderr:\n{lisa_rom_proc.stderr_text()}"
    assert out.exists() and out.stat().st_size > 0

10 lines after the common preamble (11 total)

[2026-08-04 15:06:44.478] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_appears0/frame-000000.png (720x364)
[2026-08-04 15:06:44.478] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (read)
[2026-08-04 15:06:44.478] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (write)
[2026-08-04 15:06:44.484] [lisa_rom] [warning] VIA2: unimplemented register SR at offset 0x14 (write)
[2026-08-04 15:06:44.484] [lisa_rom] [warning] SYSCTRL: read from write-only register VERT_RETRACE at offset 0xffc
[2026-08-04 15:06:44.484] [lisa_rom] [warning] SYSCTRL: no register at offset 0xffe (read)
[2026-08-04 15:06:44.484] [lisa_rom] [warning] SYSCTRL: no register at offset 0x27e5 (read)
[2026-08-04 15:06:44.494] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_appears0/frame-000001.png (720x364)
[2026-08-04 15:06:44.511] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_appears0/frame-000002.png (720x364)
[2026-08-04 15:06:45.099] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/01_boot_menu.png (720x364)
1. Boot menu appears
PASS
2. After reset selected (Cmd/1)
def test_boot_menu_after_reset_selected(lisa_rom_proc: LisaEmuProcess, record_step):
    """Cmd/1: RESTART (see module docstring). Continues
    test_boot_menu_appears's instance rather than rebooting -- safe since
    that test never sends input, so its ending state is the pristine menu."""
    out = RESULTS_DIR / "02_after_reset_cmd1.png"
    with InputClient(str(lisa_rom_proc.uds_path)) as client:
        client.wait_stable(timeout_ms=10000, quiet_ms=500)  # let the menu settle first
        _cmd_digit(client, KEY_1)
        stable = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out))

    record_step("2. After reset selected (Cmd/1)", lisa_rom_proc.current_test_output(), out, stable,
                lisa_rom_proc.was_fresh_boot)
    assert stable, f"display never settled after Cmd/1; stderr:\n{lisa_rom_proc.stderr_text()}"
    assert out.exists() and out.stat().st_size > 0

6 lines during this test (continuing the previous instance)

[2026-08-04 15:06:45.154] [lisa_rom] [info] input-server: connection closed
[2026-08-04 15:06:45.154] [lisa_rom] [info] input-server: connection accepted
[2026-08-04 15:06:45.677] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_appears0/frame-000003.png (720x364)
[2026-08-04 15:06:45.694] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_appears0/frame-000004.png (720x364)
[2026-08-04 15:06:46.230] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/02_after_reset_cmd1.png (720x364)
[2026-08-04 15:06:46.280] [lisa_rom] [info] input-server: connection closed
2. After reset selected (Cmd/1)
PASS
3. After disk selected (Cmd/3)
@pytest.mark.fresh_boot
def test_boot_menu_after_disk_selected(lisa_rom_proc: LisaEmuProcess, record_step):
    """Cmd/3: STARTUP FROM... (opens a startup-device submenu; see module
    docstring). Two images: before (the pristine menu, same baseline as
    test_boot_menu_appears's own capture but taken independently within
    this test so the row is self-contained) and after Cmd/3. fresh_boot:
    this needs the original pristine menu, not whatever state Cmd/1 (the
    previous test) left behind."""
    out_before = RESULTS_DIR / "03a_before_disk_select.png"
    out_after = RESULTS_DIR / "03b_after_disk_cmd3.png"

    with InputClient(str(lisa_rom_proc.uds_path)) as client:
        stable_before = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out_before))

        _cmd_digit(client, KEY_3)
        stable_after = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out_after))

    all_stable = stable_before and stable_after
    record_step("3. After disk selected (Cmd/3)", lisa_rom_proc.current_test_output(),
                [out_before, out_after], all_stable, lisa_rom_proc.was_fresh_boot)
    assert all_stable, f"display never settled after Cmd/3; stderr:\n{lisa_rom_proc.stderr_text()}"
    assert out_before.exists() and out_before.stat().st_size > 0
    assert out_after.exists() and out_after.stat().st_size > 0

14 lines after the common preamble (15 total)

[2026-08-04 15:06:46.315] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (read)
[2026-08-04 15:06:46.316] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (write)
[2026-08-04 15:06:46.316] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_after_disk_sele0/frame-000000.png (720x364)
[2026-08-04 15:06:46.321] [lisa_rom] [warning] VIA2: unimplemented register SR at offset 0x14 (write)
[2026-08-04 15:06:46.322] [lisa_rom] [warning] SYSCTRL: read from write-only register VERT_RETRACE at offset 0xffc
[2026-08-04 15:06:46.322] [lisa_rom] [warning] SYSCTRL: no register at offset 0xffe (read)
[2026-08-04 15:06:46.322] [lisa_rom] [warning] SYSCTRL: no register at offset 0x27e5 (read)
[2026-08-04 15:06:46.332] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_after_disk_sele0/frame-000001.png (720x364)
[2026-08-04 15:06:46.349] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_after_disk_sele0/frame-000002.png (720x364)
[2026-08-04 15:06:47.162] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/03a_before_disk_select.png (720x364)
[2026-08-04 15:06:47.215] [lisa_rom] [warning] VIA1: unimplemented register PCR at offset 0x60 (read)
[2026-08-04 15:06:47.215] [lisa_rom] [warning] VIA1: unimplemented register PCR at offset 0x60 (write)
[2026-08-04 15:06:47.233] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_boot_menu_after_disk_sele0/frame-000003.png (720x364)
[2026-08-04 15:06:47.759] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/03b_after_disk_cmd3.png (720x364)
3. After disk selected (Cmd/3)3. After disk selected (Cmd/3)
PASS
4. Selection via mouse
@pytest.mark.fresh_boot
def test_mouse_selection(lisa_rom_proc: LisaEmuProcess, record_step):
    """Selection via mouse instead of keyboard: move to the "STARTUP
    FROM..." button, press and hold (captured after a short settle -- the
    button should be visibly highlighted while held, same as clicking it
    for real), then release (captured after a full settle -- same result
    Cmd/3 produces in test_boot_menu_after_disk_selected). Three images:
    before any mouse action, mid-press, and after release. fresh_boot:
    needs the original pristine menu's button layout, not whatever the
    previous test's submenu left on screen.

    KNOWN BUG, not yet fixed: mouse_move currently makes the cursor
    disappear entirely instead of moving it to the target position --
    confirmed by sending mouse_move alone (no click) and comparing
    before/after captures; root cause not yet isolated (candidates:
    cops.hpp's mouse-delta encoding, entry_cli.cpp's delta-splitting, or a
    COPS protocol desync). So today: image 2 shows a missing cursor, not a
    highlighted button, and image 3 shows the unchanged original menu, not
    a disk-selection submenu. The 3-image structure and both settle points
    are already correct for when that's fixed -- only the assertions below
    (currently just wait_stable()+files-written) would need tightening
    then, to actually check the click landed."""
    out_before = RESULTS_DIR / "04a_before_click.png"
    out_pressed = RESULTS_DIR / "04b_button_highlighted.png"
    out_after = RESULTS_DIR / "04c_after_disk_selection.png"

    with InputClient(str(lisa_rom_proc.uds_path)) as client:
        stable_before = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out_before))

        client.mouse_move(455, 178)  # "STARTUP FROM..." button center
        client.wait_stable(timeout_ms=2000, quiet_ms=200)  # let the move itself settle first
        client.mouse_button(0, True)
        # Short settle, not the usual 500ms: a highlighted-while-held state
        # is exactly the kind of thing a longer quiet window could blow
        # past if something else were still animating.
        stable_pressed = client.wait_stable(timeout_ms=2000, quiet_ms=150)
        _capture_and_sync(client, str(out_pressed))

        client.mouse_button(0, False)
        stable_after = client.wait_stable(timeout_ms=10000, quiet_ms=500)
        _capture_and_sync(client, str(out_after))

    all_stable = stable_before and stable_pressed and stable_after
    record_step("4. Selection via mouse", lisa_rom_proc.current_test_output(),
                [out_before, out_pressed, out_after], all_stable, lisa_rom_proc.was_fresh_boot)
    assert all_stable, f"display never settled; stderr:\n{lisa_rom_proc.stderr_text()}"
    assert all(p.exists() and p.stat().st_size > 0 for p in (out_before, out_pressed, out_after))

13 lines after the common preamble (14 total)

[2026-08-04 15:06:47.845] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (read)
[2026-08-04 15:06:47.845] [lisa_rom] [warning] VIA2: unimplemented register PCR at offset 0x18 (write)
[2026-08-04 15:06:47.846] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_mouse_selection0/frame-000000.png (720x364)
[2026-08-04 15:06:47.851] [lisa_rom] [warning] VIA2: unimplemented register SR at offset 0x14 (write)
[2026-08-04 15:06:47.851] [lisa_rom] [warning] SYSCTRL: read from write-only register VERT_RETRACE at offset 0xffc
[2026-08-04 15:06:47.851] [lisa_rom] [warning] SYSCTRL: no register at offset 0xffe (read)
[2026-08-04 15:06:47.851] [lisa_rom] [warning] SYSCTRL: no register at offset 0x27e5 (read)
[2026-08-04 15:06:47.861] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_mouse_selection0/frame-000001.png (720x364)
[2026-08-04 15:06:47.878] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_mouse_selection0/frame-000002.png (720x364)
[2026-08-04 15:06:48.367] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/04a_before_click.png (720x364)
[2026-08-04 15:06:48.429] [lisa_rom] [info] display(png): wrote /tmp/pytest-of-runner/pytest-0/test_mouse_selection0/frame-000003.png (720x364)
[2026-08-04 15:06:48.848] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/04b_button_highlighted.png (720x364)
[2026-08-04 15:06:49.532] [lisa_rom] [info] display: captured /home/runner/work/lisa-source-project/lisa-source-project/tests/system/results/boot_screens/04c_after_disk_selection.png (720x364)
4. Selection via mouse4. Selection via mouse4. Selection via mouse