From 6491c6bb90abce732fc87c3ee6843327043f6806 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Fri, 13 Feb 2026 16:30:04 +0000 Subject: [PATCH] test-web: Reset viewport size after each test --- Libraries/LibWebView/HeadlessWebView.cpp | 10 ++++++++++ Libraries/LibWebView/HeadlessWebView.h | 2 ++ Tests/LibWeb/test-web/main.cpp | 6 ++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWebView/HeadlessWebView.cpp b/Libraries/LibWebView/HeadlessWebView.cpp index 8967245708..e0b28299a0 100644 --- a/Libraries/LibWebView/HeadlessWebView.cpp +++ b/Libraries/LibWebView/HeadlessWebView.cpp @@ -173,6 +173,16 @@ void HeadlessWebView::initialize_client(CreateNewClient create_new_client) client().async_update_screen_rects(m_client_state.page_index, { { screen_rect } }, 0); } +void HeadlessWebView::reset_viewport_size(Web::DevicePixelSize size) +{ + m_viewport_size = size; + + client().async_set_window_size(m_client_state.page_index, m_viewport_size); + client().async_set_viewport(m_client_state.page_index, m_viewport_size, m_device_pixel_ratio); + + client().async_did_update_window_rect(m_client_state.page_index); +} + void HeadlessWebView::update_zoom() { ViewImplementation::update_zoom(); diff --git a/Libraries/LibWebView/HeadlessWebView.h b/Libraries/LibWebView/HeadlessWebView.h index 4599013545..4d07d10334 100644 --- a/Libraries/LibWebView/HeadlessWebView.h +++ b/Libraries/LibWebView/HeadlessWebView.h @@ -20,6 +20,8 @@ public: static NonnullOwnPtr create(Core::AnonymousBuffer theme, Web::DevicePixelSize window_size); static NonnullOwnPtr create_child(HeadlessWebView&, u64 page_index); + void reset_viewport_size(Web::DevicePixelSize); + void disconnect_child_crash_handlers() { // Disconnect crash handlers so child crashes don't propagate to parent. diff --git a/Tests/LibWeb/test-web/main.cpp b/Tests/LibWeb/test-web/main.cpp index b92591164b..4f3b0396d0 100644 --- a/Tests/LibWeb/test-web/main.cpp +++ b/Tests/LibWeb/test-web/main.cpp @@ -1309,9 +1309,11 @@ static ErrorOr run_tests(Core::AnonymousBuffer const& theme, Web::DevicePix // Disconnect child crash handlers so old child crashes don't affect the next test view->disconnect_child_crash_handlers(); - // Don't try to reset zoom if WebContent crashed - it's gone - if (test_result != TestResult::Crashed) + // Don't try to reset state if WebContent crashed - it's gone + if (test_result != TestResult::Crashed) { view->reset_zoom(); + view->reset_viewport_size(window_size); + } auto& test = tests[test_index]; if (test.timeout_timer) {