diff --git a/src/browser/actions.zig b/src/browser/actions.zig
index c54518c0c..e7c3384e8 100644
--- a/src/browser/actions.zig
+++ b/src/browser/actions.zig
@@ -26,7 +26,7 @@ const KeyboardEvent = @import("webapi/event/KeyboardEvent.zig");
const Frame = @import("Frame.zig");
const Session = @import("Session.zig");
-fn dispatchInputAndChangeEvents(el: *Element, frame: *Frame) !void {
+pub fn dispatchInputAndChangeEvents(el: *Element, frame: *Frame) !void {
const input_evt: *Event = try .initTrusted(comptime .wrap("input"), .{ .bubbles = true }, frame.page);
frame._event_manager.dispatch(el.asEventTarget(), input_evt) catch |err| {
lp.log.err(.app, "dispatch input event failed", .{ .err = err });
diff --git a/src/browser/tests/webdriver/elements.html b/src/browser/tests/webdriver/elements.html
index e3b94c389..1a27b5c4e 100644
--- a/src/browser/tests/webdriver/elements.html
+++ b/src/browser/tests/webdriver/elements.html
@@ -13,3 +13,4 @@
+
diff --git a/src/browser/tests/webdriver/input.html b/src/browser/tests/webdriver/input.html
new file mode 100644
index 000000000..dcf516b56
--- /dev/null
+++ b/src/browser/tests/webdriver/input.html
@@ -0,0 +1,26 @@
+
+
webdriver input
+
+
+
+
+
+
+not focusable
+
+next
+
+
diff --git a/src/browser/webapi/element/html/Option.zig b/src/browser/webapi/element/html/Option.zig
index 609744fd6..42a5afce0 100644
--- a/src/browser/webapi/element/html/Option.zig
+++ b/src/browser/webapi/element/html/Option.zig
@@ -79,7 +79,7 @@ pub fn getSelected(self: *const Option) bool {
return self._selected;
}
-fn setSelected(self: *Option, selected: bool, frame: *Frame) !void {
+pub fn setSelected(self: *Option, selected: bool, frame: *Frame) !void {
self.setSelectedness(selected);
frame.domChanged();
}
@@ -96,7 +96,7 @@ fn setSelectedness(self: *Option, selected: bool) void {
}
/// The