Переглянути джерело

Fix notes caret positioning in E2E test on macOS

Control+Home and End don't move the textarea caret on macOS Chromium,
so TypeNotesLineAfterFirstLineAsync silently typed at the wrong
position and the mid-text test failed on Mac dev machines (CI's Linux
runners were unaffected). Position the caret with setSelectionRange
instead; the typing under test remains real key events. Verified the
test still fails against the unfixed MarkdownEditor.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tim Jones 17 годин тому
батько
коміт
7dd3a102f4
1 змінених файлів з 14 додано та 3 видалено
  1. 14 3
      Tests.E2e/PageObjectModels/AccessPointCardPom.cs

+ 14 - 3
Tests.E2e/PageObjectModels/AccessPointCardPom.cs

@@ -128,9 +128,20 @@ public class AccessPointCardPom(IPage page) {
             new LocatorPressSequentiallyOptions { Delay = 30 });
             new LocatorPressSequentiallyOptions { Delay = 30 });
 
 
     public async Task TypeNotesLineAfterFirstLineAsync(string accessPointName, string line) {
     public async Task TypeNotesLineAfterFirstLineAsync(string accessPointName, string line) {
-        await NotesEditorTextarea(accessPointName).FocusAsync();
-        await page.Keyboard.PressAsync("Control+Home");
-        await page.Keyboard.PressAsync("End");
+        // Place the caret at the end of the first line via setSelectionRange:
+        // Home/End/Control+Home don't move the caret on macOS Chromium, so
+        // keyboard-based positioning silently types at the wrong place there.
+        // The typing itself stays as real key events.
+        ILocator textarea = NotesEditorTextarea(accessPointName);
+        await textarea.FocusAsync();
+
+        await textarea.EvaluateAsync(
+            @"el => {
+                const pos = el.value.indexOf('\n');
+                const at = pos < 0 ? el.value.length : pos;
+                el.setSelectionRange(at, at);
+            }");
+
         await page.Keyboard.PressAsync("Enter");
         await page.Keyboard.PressAsync("Enter");
         await TypeNotesAsync(accessPointName, line);
         await TypeNotesAsync(accessPointName, line);
     }
     }