From 7e2ae24bc08c8ebf56fec24b9f69f74e97a612e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 16:07:15 +0100 Subject: [PATCH 1/8] TestCafe: Move cursor before test --- ...-Customization (material.blue.light)_mask.png | Bin 4641 -> 0 bytes ...t-MessageEditing (fluent.blue.light)_mask.png | Bin 4560 -> 0 bytes .../testing/widgets/tagbox/GroupedItems.test.ts | 3 +++ apps/demos/utils/visual-tests/testcafe-runner.ts | 1 + e2e/testcafe-devextreme/runner.ts | 2 +- 5 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 apps/demos/testing/etalons/Chat-Customization (material.blue.light)_mask.png delete mode 100644 apps/demos/testing/etalons/Chat-MessageEditing (fluent.blue.light)_mask.png diff --git a/apps/demos/testing/etalons/Chat-Customization (material.blue.light)_mask.png b/apps/demos/testing/etalons/Chat-Customization (material.blue.light)_mask.png deleted file mode 100644 index 0cb11d76e99b636d89e5f713dd4283b0aa13b81d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 zcmeAS@N?(olHy`uVBq!ia0y~yV15C_3LI=ekqr_awhRn{FFaiwLn;{G9yAn^c4uHV z&~yL)|C8FfH;4LG^DGr^DE==BRGYAh5lB9h0x{Q(GDpKv_u@O4o0iR z(Kf+o+i0|5INB;6uvT&0L&0;Fj1B%p?|B(MT-FBmaGuZk^Xi^7!;iG}9|A#A>Q>L6 zv{&adJdid8rqly5hmTu4XJMH4ZjLa+4>w+*kim5z!B7lgegGSnUwDp_p=LIyt2Cp! z)qU4@Himl#E!7zg+y|QRe{psGySQ^lUu#eNJ8_p^cV*RZqgxFs+x-8&0P8uRxaQl4A<>F{22h7Bb^ zg&)e-f5><~2dM7DKWN%e1|^sKk3gx@48!*y3_&Sp`EFoZ+ZV_T)OKd?A@`l%pS1(+ zd*BI@%m2nD|MK4K__@VQ4D+9W65aCfiWXqfW?=XcgJB*}6qcw*nIk%M{xdAqck?Lu SSNRf@5IkM|T-G@yGywoyG>2~h diff --git a/apps/demos/testing/etalons/Chat-MessageEditing (fluent.blue.light)_mask.png b/apps/demos/testing/etalons/Chat-MessageEditing (fluent.blue.light)_mask.png deleted file mode 100644 index 75f57c0c716a2e2617cbc8ae834d4e1890400c40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4560 zcmeAS@N?(olHy`uVBq!ia0y~yV15C_3LI=ekqr_awhRn{(>+}rLn;{G9<-b!;=sUc zus!?V|EFo2RUdR5DE6@W?hRDguo9$xMmC7KbCfw64x@=+G&78r1fwP5Xmv1JEsnMc zM%zZ@H4Lj;wile^WY{yQI-j8-zn_7DXHM~_%|OnB$)*ep{txC%F7{)15Da899Jr&r zrw7ElJGZ##JugGeER1Go1?TfQ3acg zg}vtA?=djcUt?hS!wzEYzYbK$P|TbE^qw?BMHpBJC { test('Grouping', async (t) => { const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + // await t.click($('body'), { offsetX: 0, offsetY: 0 }); + await t .pressKey('tab') .pressKey('alt+down'); diff --git a/apps/demos/utils/visual-tests/testcafe-runner.ts b/apps/demos/utils/visual-tests/testcafe-runner.ts index b16313c49448..38069697280d 100644 --- a/apps/demos/utils/visual-tests/testcafe-runner.ts +++ b/apps/demos/utils/visual-tests/testcafe-runner.ts @@ -106,6 +106,7 @@ async function main() { // eslint-disable-next-line no-undef before: async (t: TestController) => { await ClientFunction(() => { + document.body.dispatchEvent(new MouseEvent('click', { clientX: 0, clientY: 0 })); if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); } diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index f0745b919cfa..0e65cc9af4dd 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -1,4 +1,3 @@ -/* eslint-disable spellcheck/spell-checker */ import createTestCafe, { ClientFunction } from 'testcafe'; import * as fs from 'fs'; import * as process from 'process'; @@ -265,6 +264,7 @@ async function main() { const { meta } = t.testRun.test; await ClientFunction(() => { + document.body.dispatchEvent(new MouseEvent('click', { clientX: 0, clientY: 0 })); if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); } From 75792b37be71862effe39781f20810d814381a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 16:10:55 +0100 Subject: [PATCH 2/8] revert(minor) --- e2e/testcafe-devextreme/runner.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index 0e65cc9af4dd..a9c1ce3553ac 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -1,3 +1,4 @@ +/* eslint-disable spellcheck/spell-checker */ import createTestCafe, { ClientFunction } from 'testcafe'; import * as fs from 'fs'; import * as process from 'process'; From a21951c863b501a4e19009ef0fd6adb5fed531ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 16:46:32 +0100 Subject: [PATCH 3/8] chore() --- apps/demos/testing/widgets/tagbox/GroupedItems.test.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/demos/testing/widgets/tagbox/GroupedItems.test.ts b/apps/demos/testing/widgets/tagbox/GroupedItems.test.ts index 48f72f4b17ea..6cd31f82f3b9 100644 --- a/apps/demos/testing/widgets/tagbox/GroupedItems.test.ts +++ b/apps/demos/testing/widgets/tagbox/GroupedItems.test.ts @@ -1,5 +1,4 @@ import { createScreenshotsComparer } from 'devextreme-screenshot-comparer'; -// import { Selector as $ } from 'testcafe'; import { runManualTest } from '../../../utils/visual-tests/matrix-test-helper'; import { testScreenshot } from '../../../utils/visual-tests/helpers/theme-utils'; @@ -12,8 +11,6 @@ runManualTest('TagBox', 'Grouping', (test) => { test('Grouping', async (t) => { const { takeScreenshot, compareResults } = createScreenshotsComparer(t); - // await t.click($('body'), { offsetX: 0, offsetY: 0 }); - await t .pressKey('tab') .pressKey('alt+down'); From 43258f4cc44ca3029239ca0b96e322025d9b00f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 17:48:55 +0100 Subject: [PATCH 4/8] feat(runners): Replace event call with testcafe click --- apps/demos/utils/visual-tests/testcafe-runner.ts | 3 ++- e2e/testcafe-devextreme/runner.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/demos/utils/visual-tests/testcafe-runner.ts b/apps/demos/utils/visual-tests/testcafe-runner.ts index 38069697280d..4012233a0919 100644 --- a/apps/demos/utils/visual-tests/testcafe-runner.ts +++ b/apps/demos/utils/visual-tests/testcafe-runner.ts @@ -105,8 +105,9 @@ async function main() { test: { // eslint-disable-next-line no-undef before: async (t: TestController) => { + await t.click('body', { offsetX: 0, offsetY: 0 }); + await ClientFunction(() => { - document.body.dispatchEvent(new MouseEvent('click', { clientX: 0, clientY: 0 })); if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); } diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index a9c1ce3553ac..a8072922e71a 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -1,4 +1,3 @@ -/* eslint-disable spellcheck/spell-checker */ import createTestCafe, { ClientFunction } from 'testcafe'; import * as fs from 'fs'; import * as process from 'process'; @@ -264,8 +263,9 @@ async function main() { // @ts-expect-error ts-errors const { meta } = t.testRun.test; + await t.click('body', { offsetX: 0, offsetY: 0 }); + await ClientFunction(() => { - document.body.dispatchEvent(new MouseEvent('click', { clientX: 0, clientY: 0 })); if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); } From b95bebc7985441e42326c1d22da35b08b9710b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 17:51:31 +0100 Subject: [PATCH 5/8] revert(minor) --- e2e/testcafe-devextreme/runner.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index a8072922e71a..630bd7063918 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -1,3 +1,4 @@ +/* eslint-disable spellcheck/spell-checker */ import createTestCafe, { ClientFunction } from 'testcafe'; import * as fs from 'fs'; import * as process from 'process'; From b2bacb9c9583a78a20852d7756260f713113a6c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 20:19:03 +0100 Subject: [PATCH 6/8] feat(runners): Remove click, Add hover html with big offsets --- apps/demos/utils/visual-tests/testcafe-runner.ts | 4 ++-- e2e/testcafe-devextreme/runner.ts | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/apps/demos/utils/visual-tests/testcafe-runner.ts b/apps/demos/utils/visual-tests/testcafe-runner.ts index 4012233a0919..8582dd765cbc 100644 --- a/apps/demos/utils/visual-tests/testcafe-runner.ts +++ b/apps/demos/utils/visual-tests/testcafe-runner.ts @@ -105,14 +105,14 @@ async function main() { test: { // eslint-disable-next-line no-undef before: async (t: TestController) => { - await t.click('body', { offsetX: 0, offsetY: 0 }); - await ClientFunction(() => { if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); } window.getSelection()?.removeAllRanges(); }).with({ boundTestRun: t })(); + + await t.hover('html', { offsetX: -9999, offsetY: -9999 }); }, }, }, diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index 630bd7063918..8f0cdffa235f 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -264,8 +264,6 @@ async function main() { // @ts-expect-error ts-errors const { meta } = t.testRun.test; - await t.click('body', { offsetX: 0, offsetY: 0 }); - await ClientFunction(() => { if (document.activeElement && document.activeElement !== document.body) { (document.activeElement as HTMLElement).blur(); @@ -274,7 +272,7 @@ async function main() { window.getSelection()?.removeAllRanges(); }).with({ boundTestRun: t })(); - await t.hover('html'); + await t.hover('html', { offsetX: -9999, offsetY: -9999 }); const [width, height] = meta?.browserSize ?? DEFAULT_BROWSER_SIZE; await t.resizeWindow(width, height); From 3596699491ba6d954936c09fbd6aa7aa28cb1e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 4 Mar 2026 21:10:40 +0100 Subject: [PATCH 7/8] fix(runners): Set offset 1 --- apps/demos/utils/visual-tests/testcafe-runner.ts | 2 +- e2e/testcafe-devextreme/runner.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/demos/utils/visual-tests/testcafe-runner.ts b/apps/demos/utils/visual-tests/testcafe-runner.ts index 8582dd765cbc..acc415194b90 100644 --- a/apps/demos/utils/visual-tests/testcafe-runner.ts +++ b/apps/demos/utils/visual-tests/testcafe-runner.ts @@ -112,7 +112,7 @@ async function main() { window.getSelection()?.removeAllRanges(); }).with({ boundTestRun: t })(); - await t.hover('html', { offsetX: -9999, offsetY: -9999 }); + await t.hover('html', { offsetX: 1, offsetY: 1 }); }, }, }, diff --git a/e2e/testcafe-devextreme/runner.ts b/e2e/testcafe-devextreme/runner.ts index 8f0cdffa235f..ee2616dc2f39 100644 --- a/e2e/testcafe-devextreme/runner.ts +++ b/e2e/testcafe-devextreme/runner.ts @@ -272,7 +272,7 @@ async function main() { window.getSelection()?.removeAllRanges(); }).with({ boundTestRun: t })(); - await t.hover('html', { offsetX: -9999, offsetY: -9999 }); + await t.hover('html', { offsetX: 1, offsetY: 1 }); const [width, height] = meta?.browserSize ?? DEFAULT_BROWSER_SIZE; await t.resizeWindow(width, height); From 297ec1f5405ef6512b859d87b1aa3d3f70bbb3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Thu, 5 Mar 2026 15:29:40 +0100 Subject: [PATCH 8/8] skip(filemanager): Add empty-table-header to config --- apps/demos/testing/common.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/demos/testing/common.test.ts b/apps/demos/testing/common.test.ts index 346cca76faae..3958dd87e93c 100644 --- a/apps/demos/testing/common.test.ts +++ b/apps/demos/testing/common.test.ts @@ -96,7 +96,7 @@ const getIgnoredRules = (testName) => { 'Diagram-UICustomization': ['aria-dialog-name', 'label'], 'Diagram-WebAPIService': ['aria-dialog-name', 'label'], - 'FileManager-BindingToEF': ['aria-command-name', 'label'], + 'FileManager-BindingToEF': ['aria-command-name', 'empty-table-header', 'label'], 'FileManager-BindingToFileSystem': ['aria-command-name', 'empty-table-header', 'label'], 'FileManager-BindingToHierarchicalStructure': ['aria-command-name', 'empty-table-header', 'label'], 'FileManager-CustomThumbnails': ['aria-allowed-attr', 'aria-command-name', 'image-alt', 'label'],