diff --git a/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html b/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html
new file mode 100644
index 00000000000..78adc168b59
--- /dev/null
+++ b/Tests/LibWeb/Ref/reference/scroll-using-mousewheel-event-ref.html
@@ -0,0 +1,12 @@
+
+
+
2
+3
+4
diff --git a/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html b/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html
new file mode 100644
index 00000000000..f6d2b219e33
--- /dev/null
+++ b/Tests/LibWeb/Ref/scroll-using-mousewheel-event.html
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/Userland/Libraries/LibWeb/Internals/Internals.cpp b/Userland/Libraries/LibWeb/Internals/Internals.cpp
index 1c97951c8f5..c856b615b6d 100644
--- a/Userland/Libraries/LibWeb/Internals/Internals.cpp
+++ b/Userland/Libraries/LibWeb/Internals/Internals.cpp
@@ -83,6 +83,12 @@ void Internals::click(double x, double y)
page.handle_mouseup({ x, y }, { x, y }, 1, 0, 0);
}
+void Internals::wheel(double x, double y, double delta_x, double delta_y)
+{
+ auto& page = global_object().browsing_context()->page();
+ page.handle_mousewheel({ x, y }, { x, y }, 0, 0, 0, delta_x, delta_y);
+}
+
WebIDL::ExceptionOr Internals::dispatch_user_activated_event(DOM::EventTarget& target, DOM::Event& event)
{
event.set_is_trusted(true);
diff --git a/Userland/Libraries/LibWeb/Internals/Internals.h b/Userland/Libraries/LibWeb/Internals/Internals.h
index 7372d84e7c9..3ebe5d19c9e 100644
--- a/Userland/Libraries/LibWeb/Internals/Internals.h
+++ b/Userland/Libraries/LibWeb/Internals/Internals.h
@@ -26,6 +26,7 @@ public:
void commit_text();
void click(double x, double y);
+ void wheel(double x, double y, double delta_x, double delta_y);
WebIDL::ExceptionOr dispatch_user_activated_event(DOM::EventTarget&, DOM::Event& event);
diff --git a/Userland/Libraries/LibWeb/Internals/Internals.idl b/Userland/Libraries/LibWeb/Internals/Internals.idl
index 1842ae14766..c3d13f3c0f6 100644
--- a/Userland/Libraries/LibWeb/Internals/Internals.idl
+++ b/Userland/Libraries/LibWeb/Internals/Internals.idl
@@ -11,6 +11,7 @@
undefined commitText();
undefined click(double x, double y);
+ undefined wheel(double x, double y, double deltaX, double deltaY);
boolean dispatchUserActivatedEvent(EventTarget target, Event event);