Skip to content

Commit

Permalink
fix: typetext issue test (#8342)
Browse files Browse the repository at this point in the history
<!--
Thank you for your contribution.

Before making a PR, please read our contributing guidelines at

https://github.com/DevExpress/testcafe/blob/master/CONTRIBUTING.md#code-contribution

We recommend creating a *draft* PR, so that you can mark it as 'ready
for review' when you are done.
-->

## Purpose
_Describe the problem you want to address or the feature you want to
implement._

## Approach
_Describe how your changes address the issue or implement the desired
functionality in as much detail as possible._

## References
closes #8321

## Pre-Merge TODO
- [ ] Write tests for your proposed changes
- [ ] Make sure that existing tests do not fail

---------

Co-authored-by: Bayheck <adil.rakhaliyev@devexpress.com>
  • Loading branch information
Bayheck and Bayheck authored Dec 5, 2024
1 parent 817e3a4 commit cc0f2f8
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/client/core/utils/content-editable.js
Original file line number Diff line number Diff line change
Expand Up @@ -285,16 +285,16 @@ export function getNearestCommonAncestor (node1, node2) {

//selection utils
function getSelectedPositionInParentByOffset (node, offset) {
// NOTE: we get a child element by its offset index in the parent
if (domUtils.isShadowUIElement(node))
return { node, offset };

const childNodes = nativeMethods.nodeChildNodesGetter.call(node);
const childCount = domUtils.getChildNodesLength(childNodes);
let isSearchForLastChild = offset >= childCount;
let currentNode = childNodes[offset];
let currentOffset = 0;

// NOTE: we get a child element by its offset index in the parent
if (domUtils.isShadowUIElement(node) || !currentNode)
return { node, offset };

// NOTE: skip shadowUI elements
if (domUtils.isShadowUIElement(currentNode)) {
if (childCount <= 1)
Expand Down
23 changes: 23 additions & 0 deletions test/functional/fixtures/regression/gh-8321/pages/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div contenteditable="true">
<div id="myText">example</div>
</div>
</body>
<script>
const element = document.getElementById("myText");
element.addEventListener("click", () => {
const selection = document.getSelection();
const range = document.createRange();

range.selectNodeContents(element);
range.collapse(false);
selection.removeAllRanges();
selection.addRange(range);
});
</script>
</html>
5 changes: 5 additions & 0 deletions test/functional/fixtures/regression/gh-8321/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
describe('[Regression](GH-8321)', function () {
it('Should type text without errors when document selection is updated', function () {
return runTests('testcafe-fixtures/index.js', 'Callsite Issue', { only: 'chrome' });
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Selector } from 'testcafe';

fixture('GH-8321 - Callsite Issue')
.page`http://localhost:3000/fixtures/regression/gh-8321/pages/index.html`;

test('Callsite Issue', async t => {
const editor = Selector('[contenteditable=true]');

await t.click(editor);
await t.typeText(editor, 'text1');
});

0 comments on commit cc0f2f8

Please sign in to comment.