Skip to content

DataGrid: stabilaze testcafe tests suit#34138

Open
EugeniyKiyashko wants to merge 3 commits into
DevExpress:26_1from
EugeniyKiyashko:26_1_grids
Open

DataGrid: stabilaze testcafe tests suit#34138
EugeniyKiyashko wants to merge 3 commits into
DevExpress:26_1from
EugeniyKiyashko:26_1_grids

Conversation

@EugeniyKiyashko

Copy link
Copy Markdown
Contributor

No description provided.

@EugeniyKiyashko EugeniyKiyashko self-assigned this Jun 26, 2026
Copilot AI review requested due to automatic review settings June 26, 2026 05:13
@EugeniyKiyashko EugeniyKiyashko requested a review from a team as a code owner June 26, 2026 05:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR focuses on reducing flakiness in the TestCafe E2E suite (primarily DataGrid and CardView) by replacing timing-sensitive steps (fixed waits, reloads, and implicit UI readiness assumptions) with explicit state assertions and more deterministic flows.

Changes:

  • Added explicit readiness/tooltip assertions around visual and validation checks to reduce race conditions.
  • Reworked several drag-and-drop and event-collection checks to wait on concrete UI states instead of using fixed delays.
  • Marked a small set of known-flaky tests as unstable and adjusted the runner’s failed-tests retry attempts.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
e2e/testcafe-devextreme/tests/dataGrid/common/validation/validationPopup.ts Adds pre-screenshot assertions for validation tooltips to reduce screenshot timing flakiness.
e2e/testcafe-devextreme/tests/dataGrid/common/stateStoring/stateStoring.ts Uses navigateTo(...) instead of location.reload() to reset state more reliably under the fixture configuration.
e2e/testcafe-devextreme/tests/dataGrid/common/focus/focusEvents/newRows_T1162227.ts Switches to reading callback results via ClientFunction for a more deterministic assertion flow.
e2e/testcafe-devextreme/tests/dataGrid/common/focus/focusedRow/markup.ts Marks a visual test as unstable and adds a dataGrid.isReady() assertion before screenshot.
e2e/testcafe-devextreme/tests/dataGrid/common/focus/focusedRow/focusedRow.ts Marks a flaky test as unstable and simplifies a jQuery cast in a master-detail template.
e2e/testcafe-devextreme/tests/dataGrid/common/filtering/functional.ts Moves console log capture to the point after the action and makes the error array check resilient.
e2e/testcafe-devextreme/tests/dataGrid/common/editing/functional.ts Marks a flaky editing/navigation test as unstable.
e2e/testcafe-devextreme/tests/cardView/helpers/cardUtils.ts Adds a bounded wait for expected caption count before reading captions.
e2e/testcafe-devextreme/tests/cardView/columnSortable/utils.ts Replaces fixed wait with UI-state assertions after drag-and-drop; tightens column expectations.
e2e/testcafe-devextreme/tests/cardView/columnSortable/functional.ts Uses the shared drag helper and adds a timeouted assertion for header update.
e2e/testcafe-devextreme/tests/cardView/columnChooser/functional.ts Adds local drag helpers and a consistent “drag end” wait to stabilize DnD interactions.
e2e/testcafe-devextreme/tests/accessibility/dataGrid/fixedColumns.ts Uses direct cell click + focus assertion to reduce keyboard-navigation timing dependence.
e2e/testcafe-devextreme/runner.ts Sets failed-tests retry attempts to 0.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

e2e/testcafe-devextreme/tests/dataGrid/common/stateStoring/stateStoring.ts:145

  • This test creates the widget in the .before hook, but then immediately navigates to container.html and recreates the widget again inside the test body. The first createWidget is redundant and makes the test do extra work under fixture.disablePageReloads, which can slow the suite and introduce extra side effects.
test('DataGrid - Cannot read properties of undefined (reading \'done\') error occurs when column fixing and state storing are used (T1283168)', async (t) => {
  await t.navigateTo(url(__dirname, '../../../container.html'));
  await createWidget('dxDataGrid', { ...dataGridConfig });
  // eslint-disable-next-line @stylistic/max-len
  // DataGrid is expected to load normally with the given configuration, so no other checks are required.
}).before(async () => {
  await createWidget('dxDataGrid', { ...dataGridConfig });
});

Comment thread e2e/testcafe-devextreme/runner.ts Outdated
@EugeniyKiyashko EugeniyKiyashko force-pushed the 26_1_grids branch 2 times, most recently from 1461f9f to 08f2965 Compare June 26, 2026 06:25
Copilot AI review requested due to automatic review settings June 26, 2026 06:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 16 out of 17 changed files in this pull request and generated 2 comments.

Comment thread e2e/testcafe-devextreme/runner.ts
Comment thread e2e/testcafe-devextreme/tests/accessibility/dataGrid/fixedColumns.ts Outdated
Comment thread e2e/testcafe-devextreme/tests/accessibility/dataGrid/fixedColumns.ts Outdated
Copilot AI review requested due to automatic review settings June 26, 2026 07:27
@EugeniyKiyashko EugeniyKiyashko requested a review from a team as a code owner June 26, 2026 07:27
anna-shakhova
anna-shakhova previously approved these changes Jun 26, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 2 comments.

Comment thread e2e/testcafe-devextreme/tests/cardView/columnSortable/utils.ts
Comment thread e2e/testcafe-devextreme/runner.ts
Copilot AI review requested due to automatic review settings June 26, 2026 08:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 1 comment.

Comment thread e2e/testcafe-devextreme/tests/cardView/columnSortable/utils.ts
anna-shakhova
anna-shakhova previously approved these changes Jun 26, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

e2e/testcafe-devextreme/tests/dataGrid/common/stateStoring/stateStoring.ts:145

  • This test now navigates to container.html and recreates the widget in the test body, but it also recreates the same widget again in the .before() hook. The initialization in .before() becomes redundant (and can introduce extra work/flakiness) because the test immediately navigates away from that page.

Consider moving the navigation to the hook and creating the widget only once.

test('DataGrid - Cannot read properties of undefined (reading \'done\') error occurs when column fixing and state storing are used (T1283168)', async (t) => {
  await t.navigateTo(url(__dirname, '../../../container.html'));
  await createWidget('dxDataGrid', { ...dataGridConfig });
  // eslint-disable-next-line @stylistic/max-len
  // DataGrid is expected to load normally with the given configuration, so no other checks are required.
}).before(async () => {
  await createWidget('dxDataGrid', { ...dataGridConfig });
});

Comment thread e2e/testcafe-devextreme/runner.ts
Copilot AI review requested due to automatic review settings June 26, 2026 08:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 4 comments.

Comment on lines +39 to 43
const consoleMessages = await t.getBrowserConsoleMessages();

await t
.expect(consoleMessages.error.every((msg) => !msg.includes('E1047')))
.expect((consoleMessages?.error ?? []).every((msg) => !msg.includes('E1047')))
.ok();
Comment on lines +155 to +159
await t
.expect(column.exists)
.ok({ timeout: DRAG_ASSERTION_TIMEOUT })
.expect(column.innerText)
.eql(adjustedExpectedColumns[i], { timeout: DRAG_ASSERTION_TIMEOUT });

test(`Focus events should be called when pressing the Ctrl + End key when rowRenderingMode is 'virtual' (scrolling.useNative = ${useNativeScrolling})`, async (t) => {
test.meta({ unstable: true })(`Focus events should be called when pressing the Ctrl + End key when rowRenderingMode is 'virtual' (scrolling.useNative = ${useNativeScrolling})`, async (t) => {
// arrange

test(`Focus events should be called when pressing the Ctrl + End key when virtual columns, virtual scrolling and focusedRowEnabled are enabled (scrolling.useNative = ${useNativeScrolling})`, async (t) => {
test.meta({ unstable: true })(`Focus events should be called when pressing the Ctrl + End key when virtual columns, virtual scrolling and focusedRowEnabled are enabled (scrolling.useNative = ${useNativeScrolling})`, async (t) => {
// arrange
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants