diff --git a/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Libraries/LibWeb/HTML/HTMLInputElement.cpp
index 0032d636804..337542a90c7 100644
--- a/Libraries/LibWeb/HTML/HTMLInputElement.cpp
+++ b/Libraries/LibWeb/HTML/HTMLInputElement.cpp
@@ -1863,9 +1863,10 @@ WebIDL::ExceptionOr HTMLInputElement::set_min_length(WebIDL::Long value)
// https://html.spec.whatwg.org/multipage/input.html#the-size-attribute
unsigned HTMLInputElement::size() const
{
+ // The size attribute, if specified, must have a value that is a valid non-negative integer greater than zero.
// The size IDL attribute is limited to only positive numbers and has a default value of 20.
if (auto size_string = get_attribute(HTML::AttributeNames::size); size_string.has_value()) {
- if (auto size = parse_non_negative_integer(*size_string); size.has_value())
+ if (auto size = parse_non_negative_integer(*size_string); size.has_value() && size.value() != 0)
return *size;
}
return 20;
diff --git a/Tests/LibWeb/Text/expected/wpt-import/html/rendering/widgets/input-text-size.txt b/Tests/LibWeb/Text/expected/wpt-import/html/rendering/widgets/input-text-size.txt
new file mode 100644
index 00000000000..910538125a9
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/wpt-import/html/rendering/widgets/input-text-size.txt
@@ -0,0 +1,16 @@
+Summary
+
+Harness status: OK
+
+Rerun
+
+Found 5 tests
+
+4 Pass
+1 Fail
+Details
+Result Test Name MessagePass A misssing attribute is equivalent to size=20
+Pass An invalid attribute value is equivalent to size=20
+Pass The width depends on a size attribute
+Pass Size attribute value affects layout-dependent computed style
+Fail Size attribute value is not a presentational hint
\ No newline at end of file
diff --git a/Tests/LibWeb/Text/input/wpt-import/html/rendering/widgets/input-text-size.html b/Tests/LibWeb/Text/input/wpt-import/html/rendering/widgets/input-text-size.html
new file mode 100644
index 00000000000..8b7f42aaf03
--- /dev/null
+++ b/Tests/LibWeb/Text/input/wpt-import/html/rendering/widgets/input-text-size.html
@@ -0,0 +1,45 @@
+
+
+Test `size` attribute behavior
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+