Skip to content

TreeList - AI Assistant: parity e2e tests#33811

Open
Alyar666 wants to merge 2 commits into
DevExpress:26_1from
Alyar666:ai_assistant_e2e_treelist_parity_26_1
Open

TreeList - AI Assistant: parity e2e tests#33811
Alyar666 wants to merge 2 commits into
DevExpress:26_1from
Alyar666:ai_assistant_e2e_treelist_parity_26_1

Conversation

@Alyar666
Copy link
Copy Markdown
Contributor

@Alyar666 Alyar666 commented Jun 2, 2026

What does the PR change?

Adds e2e TestCafe tests verifying the AI Assistant on TreeList behaves identically to DataGrid (TreeList reuses grid_core): toolbar/popup/chat, sorting, searching, paging, column visibility, selection, row focusing, error paths and the in-flight lock — plus the TreeList-only differences (the grouping/summary commands are absent from the response schema) and hierarchical-data cases (test plan §6).

Part of splitting the AI Assistant e2e suite into per-area pull requests.

How did you achieve this?

aiAssistant.aiIntegration.sendRequest is mocked to return deterministic responses; the TreeList POM inherits the AI Assistant accessors from DataGrid. The PR includes the AI Assistant testcafe-models POM accessors the tests depend on. columnsReorder (issue 4294) and summary (unsupported on TreeList) are documented as not exercised.

How can we verify these changes?

pnpm nx test devextreme-testcafe-tests -- --componentFolder common/treeList/aiAssistant --file functional --browsers 'chrome:headless' --concurrency 1

Adds e2e TestCafe tests verifying the AI Assistant behaves identically on TreeList (it reuses grid_core): toolbar/popup/chat, sorting, searching, paging, column visibility, selection, row focusing, error paths and the in-flight lock; plus the TreeList-only schema differences (grouping/summary commands absent) and hierarchical-data cases (plan §6). Includes the AI Assistant testcafe-models POM accessors the tests depend on.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 2, 2026 22:34
@Alyar666 Alyar666 requested a review from a team as a code owner June 2, 2026 22:34
@Alyar666 Alyar666 self-assigned this Jun 2, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds TreeList-focused e2e parity coverage for the Grid AI Assistant (TreeList reuses grid_core) and extends the TestCafe Page Object Models to support the new scenarios (chat accessors, suggestions, schema checks, focus helpers).

Changes:

  • Added a new TestCafe suite that verifies AI Assistant parity on TreeList (toolbar/popup/chat, sorting/searching/paging/visibility/selection/focus, error and in-flight lock behavior, plus TreeList-specific schema exclusions and hierarchy cases).
  • Extended devextreme-testcafe-models AI Assistant chat POM with additional accessors (input, suggestions, confirm dialog hooks, message bubble helpers, disabled-state checks).
  • Added DataGrid POM helpers to query current DataSource sort params and programmatically focus the AI Assistant toolbar button.

Reviewed changes

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

File Description
packages/testcafe-models/dataGrid/index.ts Adds DataGrid POM helpers for DataSource sort params and focusing the AI Assistant button.
packages/testcafe-models/dataGrid/aiAssistantChat.ts Expands AI Assistant chat POM to support new e2e assertions (input, suggestions, confirm dialog, message accessors, disabled states).
packages/testcafe-models/chat.ts Introduces a reusable getMessageBubbles() accessor and refactors getMessage() to use it.
e2e/testcafe-devextreme/tests/common/treeList/aiAssistant/functional.ts New TreeList AI Assistant parity/schema/hierarchy functional e2e coverage with mocked AIIntegration responses.

Comment on lines +56 to +59
// eslint-disable-next-line class-methods-use-this
getAbortConfirmYesButton(): Selector {
return Selector(`.${CLASS.abortConfirmDialog} .dx-button`).withExactText('Yes');
}
Comment on lines +141 to +145
isClearChatDisabled(): Promise<boolean> {
return this.getClearChatButton()
.parent('.dx-button')
.hasClass('dx-state-disabled');
}
…tests

Wait for the AI integration global before creating the widget (fixes the CI
page-load race) via a local createWidgetWithAIIntegration helper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants