From b50d89c3456bed561cc2e673f98ebe10e94c4350 Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 19 Dec 2023 08:21:12 +0000 Subject: [PATCH] Send full codepoints when creating key events Previously, given a string in element send keys, we iterated over each UCS2 "character" in the string, so that non-BMP characters ended up as separate key events, one for the high surrogate and one for the low surrogate. With this change we instead use the built in string iterator which provides the surrogate pair in the case of non-BMP characters, so we emit a single event for each unicode codepoint. Differential Revision: https://phabricator.services.mozilla.com/D196220 bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1866431 gecko-commit: f19c3570bc57265bbb5ba139efdb1dcb53a328bc gecko-reviewers: webdriver-reviewers, masayuki, whimboo --- .../tests/classic/element_send_keys/send_keys.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/webdriver/tests/classic/element_send_keys/send_keys.py b/webdriver/tests/classic/element_send_keys/send_keys.py index 92002f294576b9..7b25d65a1b11ea 100644 --- a/webdriver/tests/classic/element_send_keys/send_keys.py +++ b/webdriver/tests/classic/element_send_keys/send_keys.py @@ -119,3 +119,14 @@ def test_invalid_text_type(session, inline, value): response = element_send_keys(session, element, value) assert_error(response, "invalid argument") + + +def test_surrogates(session, inline): + session.url = inline("") + element = session.find.css("input", all=False) + + text = "🦥🍄" + response = element_send_keys(session, element, text) + assert_success(response) + + assert element.property("value") == text