aboutsummaryrefslogtreecommitdiff
path: root/test-suite/unit/input-reliability.test.mjs
diff options
context:
space:
mode:
authorTianren Dong <tianrendong.dtr@gmail.com>2026-09-28 19:30:23 -0400
committerTianren Dong <tianrendong.dtr@gmail.com>2026-09-28 19:30:23 -0400
commite6c01048363e35b29ebb66e5f8936bdcf60c2913 (patch)
tree640daa8f30888fe627ff6cae176a5aacbf36b79f /test-suite/unit/input-reliability.test.mjs
parent6c5d31eddd145697f4c6f9d4964000c6e2068cb1 (diff)
Fill whole textareas; cover new tabs' first page with early capture
chrome_fill's triple-click selected one line of a multi-line textarea, so fill replaced only that line. Select value fields with the selectAll editing command before deleting. Early capture now waits for in-flight tab.new creations, so a first page that commits before the tab is tracked is still captured.
Diffstat (limited to 'test-suite/unit/input-reliability.test.mjs')
-rw-r--r--test-suite/unit/input-reliability.test.mjs12
1 files changed, 12 insertions, 0 deletions
diff --git a/test-suite/unit/input-reliability.test.mjs b/test-suite/unit/input-reliability.test.mjs
index 4a47e9c..8ea4bc5 100644
--- a/test-suite/unit/input-reliability.test.mjs
+++ b/test-suite/unit/input-reliability.test.mjs
@@ -215,6 +215,18 @@ for (const perCharacter of [false, true]) {
});
}
+test("fill selects a textarea's whole value with the selectAll command, not just the clicked line", async () => {
+ const h = harness({ tag: "TEXTAREA", editable: false });
+ const result = await h.call("fill", { selector: "#target", text: "NEW", domFallback: false });
+ assert.equal(result.input, "chrome");
+ const keys = h.commands("Input.dispatchKeyEvent");
+ const selectAll = keys.findIndex((c) => (c.params.commands || []).includes("selectAll"));
+ const del = keys.findIndex((c) => c.params.key === "Delete" && c.params.type === "keyDown");
+ assert.ok(selectAll >= 0, "selectAll editing command sent");
+ assert.ok(del > selectAll, "delete follows select-all");
+ assert.equal(h.selected.length, 0, "no DOM range selection for value fields");
+});
+
test("fill refuses to select an unrelated focused editor", async () => {
const h = harness({ initial: "keep this" });
h.page.document.activeElement = { isContentEditable: true, contains: () => false };