commit 863f33c85c06ac304e5c7c5aeaf87bfffe3d60a0
parent 9d7e1b70bdba058df8a4a834bac693a02870f0f9
Author: Anne van Kesteren <annevk@annevk.nl>
Date: Tue, 21 Oct 2025 10:16:15 +0000
Bug 1994294 [wpt PR 55424] - Enhanced <select>: add more coverage for selectedOptions, a=testonly
Automatic update from web-platform-tests
Enhanced <select>: add more coverage for selectedOptions
--
wpt-commits: 056eb1dda0254cc363b4dc5616e1d2407b333096
wpt-pr: 55424
Diffstat:
1 file changed, 89 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/html/semantics/forms/the-select-element/select-selectedOptions-nesting.window.js b/testing/web-platform/tests/html/semantics/forms/the-select-element/select-selectedOptions-nesting.window.js
@@ -0,0 +1,89 @@
+
+for (const optionParentElementName of ["option", "hr", "select"]) {
+ test(() => {
+ const select = document.createElement("select");
+ const selectedOptions = select.selectedOptions;
+ select.innerHTML = "<option>1";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild);
+ assert_equals(select.value, "1");
+
+ const optionParent = select.appendChild(document.createElement(optionParentElementName));
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild);
+ assert_equals(select.value, "1");
+
+ const option = optionParent.appendChild(document.createElement("option"));
+ option.setAttribute("selected", "");
+ option.textContent = "2";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild);
+ assert_equals(select.value, "1");
+ }, `<select> containing <${optionParentElementName}><option selected>`);
+}
+
+for (const optionParentElementName of ["option", "hr", "select", "optgroup"]) {
+ test(() => {
+ const select = document.createElement("select");
+ const selectedOptions = select.selectedOptions;
+ select.innerHTML = "<optgroup><option>1";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ const optionParent = select.firstChild.appendChild(document.createElement(optionParentElementName));
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ const option = optionParent.appendChild(document.createElement("option"));
+ option.setAttribute("selected", "");
+ option.textContent = "2";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ }, `<select><optgroup> containing <${optionParentElementName}><option selected>`);
+}
+
+for (const optionParentElementName of ["option", "hr", "select", "optgroup"]) {
+ test(() => {
+ const select = document.createElement("select");
+ select.multiple = true;
+ const selectedOptions = select.selectedOptions;
+ select.innerHTML = "<div><optgroup><div><option selected>1";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ const optionParent = select.firstChild.firstChild.firstChild.appendChild(document.createElement(optionParentElementName));
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ const option = optionParent.appendChild(document.createElement("option"));
+ option.setAttribute("selected", "");
+ option.textContent = "2";
+
+ assert_equals(selectedOptions.length, 1);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild.firstChild.firstChild);
+ assert_equals(select.value, "1");
+
+ const secondOption = select.appendChild(document.createElement("option"));
+ secondOption.setAttribute("selected", "");
+ secondOption.textContent = "3";
+
+ assert_equals(selectedOptions.length, 2);
+ assert_equals(selectedOptions[0], select.firstChild.firstChild.firstChild.firstChild);
+ assert_equals(selectedOptions[1], secondOption);
+ assert_equals(select.value, "1");
+ }, `<select><div><optgroup><div> containing <${optionParentElementName}><option selected>`);
+}