Skip to content

[WC-3390] DG2: improve virtual scroll behavior and height logic #8880

[WC-3390] DG2: improve virtual scroll behavior and height logic

[WC-3390] DG2: improve virtual scroll behavior and height logic #8880

Triggered via pull request April 28, 2026 13:06
Status Failure
Total duration 12m 46s
Artifacts 2

BuildJobs.yml

on: pull_request
Check SHA in GH Actions
6s
Check SHA in GH Actions
Run code quality check
4m 10s
Run code quality check
Read versions file
6s
Read versions file
Plan E2E matrix
38s
Plan E2E matrix
Matrix: build
Matrix: Run automated end-to-end tests
Publish E2E test summary
46s
Publish E2E test summary
Fit to window
Zoom out
Zoom in

Annotations

9 errors and 17 warnings
Run automated end-to-end tests (0)
Process completed with exit code 1.
Run automated end-to-end tests (0)
@mendix/datagrid-web#e2e: command (/home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web) /home/runner/setup-pnpm/node_modules/.bin/pnpm run e2e exited (1)
Failed Test: reset filter state when empty option is clicked: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringSingle.spec.js#L0
reset filter state when empty option is clicked: Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(3)') Timeout: 5000ms - Expected - 4 + Received + 4 Array [ + "No", + "No", "Yes", "Yes", "Yes", - "No", "Yes", - "No", - "No", + "Yes", "Yes", - "No", + "Yes", "Yes", ] Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(3)') 9 × locator resolved to 10 elements - Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(3)') Timeout: 5000ms - Expected - 4 + Received + 4 Array [ + "No", + "No", "Yes", "Yes", "Yes", - "No", "Yes", - "No", - "No", + "Yes", "Yes", - "No", + "Yes", "Yes", ] Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(3)') 9 × locator resolved to 10 elements at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringSingle.spec.js:69:33
Failed Test: compares with a screenshot baseline and checks if all datagrid and filter elements are rendered as expected: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringSingle.spec.js#L0
compares with a screenshot baseline and checks if all datagrid and filter elements are rendered as expected: Error: expect(page).toHaveScreenshot(expected) failed 16951 pixels (ratio 0.02 of all image pixels) are different. Snapshot: datagridFilteringSingle.png Call log: - Expect "toHaveScreenshot(datagridFilteringSingle.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 16951 pixels (ratio 0.02 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 16951 pixels (ratio 0.02 of all image pixels) are different. - Error: expect(page).toHaveScreenshot(expected) failed 16951 pixels (ratio 0.02 of all image pixels) are different. Snapshot: datagridFilteringSingle.png Call log: - Expect "toHaveScreenshot(datagridFilteringSingle.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 16951 pixels (ratio 0.02 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 16951 pixels (ratio 0.02 of all image pixels) are different. at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringSingle.spec.js:19:28
Failed Test: filter rows where Reference equal to one of selected objects: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js#L0
filter rows where Reference equal to one of selected objects: Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(4)').first() Expected: "W.R. Berkley Corporation" Received: "PETsMART Inc" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(4)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="3,0" class="td td-borders align-column-left">…</div> - unexpected value "PETsMART Inc" - Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(4)').first() Expected: "W.R. Berkley Corporation" Received: "PETsMART Inc" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(4)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="3,0" class="td td-borders align-column-left">…</div> - unexpected value "PETsMART Inc" at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js:80:47
Failed Test: filter rows where ReferenceSet contains at least one of selected objects: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js#L0
filter rows where ReferenceSet contains at least one of selected objects: Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(3)').first() Expected: "EconomistArmed forces officerTraderHealth service manager" Received: "Homeless workerHealth service managerMarket research analystNanoscientist" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(3)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="2,0" class="td td-borders align-column-left">…</div> - unexpected value "Homeless workerHealth service managerMarket research analystNanoscientist" - Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(3)').first() Expected: "EconomistArmed forces officerTraderHealth service manager" Received: "Homeless workerHealth service managerMarket research analystNanoscientist" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(3)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="2,0" class="td td-borders align-column-left">…</div> - unexpected value "Homeless workerHealth service managerMarket research analystNanoscientist" at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js:54:47
Failed Test: filter rows where enum attribute equal to one of selected values: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js#L0
filter rows where enum attribute equal to one of selected values: Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(2)').first() Expected: "Black" Received: "Red" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(2)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="1,0" class="td td-borders align-column-left">…</div> - unexpected value "Red" - Error: expect(locator).toHaveText(expected) failed Locator: locator('[role="gridcell"]:nth-child(2)').first() Expected: "Black" Received: "Red" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('[role="gridcell"]:nth-child(2)').first() 9 × locator resolved to <div tabindex="-1" role="gridcell" data-position="1,0" class="td td-borders align-column-left">…</div> - unexpected value "Red" at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringMulti.spec.js:20:47
Failed Test: datagrid-web filtering integration: packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringIntegration.spec.js#L0
datagrid-web filtering integration: Error: expect(page).toHaveScreenshot(expected) failed 101 pixels (ratio 0.01 of all image pixels) are different. Snapshot: datagridFilteringIntegration.png Call log: - Expect "toHaveScreenshot(datagridFilteringIntegration.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 101 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 101 pixels (ratio 0.01 of all image pixels) are different. - Error: expect(page).toHaveScreenshot(expected) failed 101 pixels (ratio 0.01 of all image pixels) are different. Snapshot: datagridFilteringIntegration.png Call log: - Expect "toHaveScreenshot(datagridFilteringIntegration.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 101 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 101 pixels (ratio 0.01 of all image pixels) are different. at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/filtering/DataGridFilteringIntegration.spec.js:55:24
Failed Test: compares with a screenshot baseline and checks datagrid using virtual scrolling are rendered as expected: packages/pluggableWidgets/datagrid-web/e2e/DataGrid.spec.js#L0
compares with a screenshot baseline and checks datagrid using virtual scrolling are rendered as expected: Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx-page') 110 pixels (ratio 0.01 of all image pixels) are different. Snapshot: datagrid-virtual-scrolling.png Call log: - Expect "toHaveScreenshot(datagrid-virtual-scrolling.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx-page') - locator resolved to <div data-focusindex="0" class="mx-page layout-atlas layout-atlas-responsive-default">…</div> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 110 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx-page') - locator resolved to <div data-focusindex="0" class="mx-page layout-atlas layout-atlas-responsive-default">…</div> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 110 pixels (ratio 0.01 of all image pixels) are different. - Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('.mx-page') 110 pixels (ratio 0.01 of all image pixels) are different. Snapshot: datagrid-virtual-scrolling.png Call log: - Expect "toHaveScreenshot(datagrid-virtual-scrolling.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('.mx-page') - locator resolved to <div data-focusindex="0" class="mx-page layout-atlas layout-atlas-responsive-default">…</div> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 110 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('.mx-page') - locator resolved to <div data-focusindex="0" class="mx-page layout-atlas layout-atlas-responsive-default">…</div> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 110 pixels (ratio 0.01 of all image pixels) are different. at /home/runner/work/web-widgets/web-widgets/packages/pluggableWidgets/datagrid-web/e2e/DataGrid.spec.js:194:48
Plan E2E matrix
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Run automated end-to-end tests (1)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Run code quality check
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/DataCell.tsx#L6
`../typings/CellComponent` import should occur after import of `./CellElement`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/DataCell.tsx#L1
`@mendix/widget-plugin-grid/keyboard-navigation/useFocusTargetProps` import should occur after import of `react`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/ColumnResizer.tsx#L2
`react` import should occur before import of `@mendix/widget-plugin-hooks/useEventCallback`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/ColumnProvider.tsx#L1
`@mendix/widget-plugin-mobx-kit/react/useConst` import should occur after import of `react`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/CheckboxColumnHeader.tsx#L4
`react` import should occur before import of `@mendix/widget-plugin-component-kit/If`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/CheckboxColumnHeader.tsx#L3
`mobx-react-lite` import should occur before import of `@mendix/widget-plugin-component-kit/If`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/CheckboxCell.tsx#L4
`../model/hooks/injection-hooks` import should occur after import of `./CellElement`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/components/CheckboxCell.tsx#L1
`@mendix/widget-plugin-grid/keyboard-navigation/useFocusTargetProps` import should occur after import of `react`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/Datagrid.editorPreview.tsx#L2
`@mendix/widget-plugin-grid/components/Pagination` import should occur after import of `typings/DatagridProps`
Run code quality check: packages/pluggableWidgets/datagrid-web/src/Datagrid.editorPreview.tsx#L1
`@mendix/widget-plugin-component-kit/If` import should occur after import of `typings/DatagridProps`
Run release task on ubuntu-latest
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Run release task on windows-latest
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Run automated end-to-end tests (0)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Publish E2E test summary
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6, pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

Artifacts

Produced during runtime
Name Size Digest
ctrf-reports-0
5.13 KB
sha256:acd5c82f9bf17a7578e33076491d691b04e2d101621f2d92c7860e2815f8b978
test-screenshot-results-0
17.6 MB
sha256:67c4aa58eeac3510dcdd5b694a9802e259aacfbbfbc99b7e52c784aa370b214e