Skip to content

feat(frontend): upgrade Ant Design from v5 to v6#41636

Open
rusackas wants to merge 18 commits into
masterfrom
feat/antd6-upgrade
Open

feat(frontend): upgrade Ant Design from v5 to v6#41636
rusackas wants to merge 18 commits into
masterfrom
feat/antd6-upgrade

Conversation

@rusackas

@rusackas rusackas commented Jul 1, 2026

Copy link
Copy Markdown
Member

SUMMARY

Upgrades Ant Design from v5.26 to v6 (antd@6.5, @ant-design/icons@6) across the
Superset frontend. The upgrade is theme-safe: Superset's theme bridge
(getDesignTokenallowedAntdTokensConfigProvider + Emotion) works on v6
with no token loss — the only design-token drift is antd 6 recomputing box-shadow
values (cosmetic; dark-mode shadows are now correctly white-based).

Approach. A characterization test locks the full computed token set for light and
dark (Theme.test.tsx) so any token rename/removal fails loudly. React is already on
18 (v6's floor), and none of v6's removed legacy components were in use, so the code
surface was small and centralized in the @superset-ui/core/components wrappers.

Notable changes

  • Theme bridge: antd 6 dropped boolean from ThemeConfig['cssVar'] (now
    object-only); deserializeThemeConfig coerces true{}, false→omit.
  • Wrappers: Select (dropdownAlign removed, showSearch/tokenSeparators union
    handling), Tooltip/Popover/DropdownContainer styles.bodystyles.container.
  • App code: Steps.Stepitems, Popover/Tooltip visible/onVisibleChange
    open/onOpenChange, Dropdown overlaymenu, Pagination size="default"
    removed, dropdownAlign removed, .ant-tooltip-inner.ant-tooltip-container
    and .ant-select-selector.ant-select-content in styled CSS.
  • Genuine bug fix caught by tests: antd 6's Tag clones its icon prop and
    overwrites the icon's inline style, which silently stripped icon colors on
    Labels. Fixed by wrapping the icon in a span in Label/index.tsx so the wrapper
    (not the icon) is Tag's clone target.
  • Dependencies: removed the unused @rjsf/antd (the package pinning antd 5) and
    bumped @rjsf/core/utils/validator-ajv8 to v6 (theme-agnostic, React-only
    peers). @great-expectations/jsonforms-antd-renderers has no antd 6 release, so it
    is pinned to antd 6 via an overrides entry. Installs cleanly — no ERESOLVE, no
    legacy-peer-deps.
  • Test env: replaced the MessageChannel = undefined stub (an old rc-overflow
    workaround) with a lightweight polyfill — antd 6's scheduler requires the
    constructor.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

UI is visually unchanged (parity upgrade). Manual dark/light + Storybook pass
recommended for reviewers; the Label icon-color fix restores v5 behavior.

TESTING INSTRUCTIONS

  • cd superset-frontend && npm ci && npm run type — 0 type errors.
  • npm run test — full Jest suite green (antd-6 test-DOM assertions updated).
  • New theme characterization tests: npx jest packages/superset-core/src/theme/Theme.test.tsx.
  • Manual: verify dashboards, Explore, SQL Lab, dark-mode toggle, dataset/published
    labels show colored icons, and Select/Tooltip/Popover render correctly.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration
  • Introduces new feature or API
  • Removes existing feature or API

@dosubot dosubot Bot added change:frontend Requires changing the frontend risk:breaking-change Issues or PRs that will introduce breaking changes labels Jul 1, 2026
@netlify

netlify Bot commented Jul 1, 2026

Copy link
Copy Markdown

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit cd88821
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a4c9c5eb5bba50008ab353a
😎 Deploy Preview https://deploy-preview-41636--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 67.56757% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.77%. Comparing base (51e708d) to head (fc0b90c).
⚠️ Report is 15 commits behind head on master.

Files with missing lines Patch % Lines
...ages/superset-ui-core/src/components/Tabs/Tabs.tsx 0.00% 5 Missing ⚠️
...tiveFilters/FiltersConfigModal/NewItemDropdown.tsx 50.00% 4 Missing ⚠️
...rset-ui-core/src/components/Select/AsyncSelect.tsx 85.71% 1 Missing ⚠️
.../superset-ui-core/src/components/Select/Select.tsx 83.33% 1 Missing ⚠️
...components/DashboardBuilder/DashboardContainer.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #41636      +/-   ##
==========================================
+ Coverage   64.76%   64.77%   +0.01%     
==========================================
  Files        2688     2687       -1     
  Lines      148926   148796     -130     
  Branches    34370    34353      -17     
==========================================
- Hits        96451    96387      -64     
+ Misses      50711    50648      -63     
+ Partials     1764     1761       -3     
Flag Coverage Δ
javascript 69.69% <67.56%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bito-code-review bito-code-review Bot 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.

Code Review Agent Run #8eacea

Actionable Suggestions - 1
  • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx - 1
    • Incomplete refactoring - test/component mismatch · Line 51-51
Additional Suggestions - 7
  • superset-frontend/src/explore/components/controls/DateFilterControl/tests/CustomFrame.test.tsx - 1
    • Query method change - needs runtime verification · Line 64-64
      Changed query from `getByRole('img', { name: 'calendar' })` to `getByLabelText('calendar')`. Verify the DatePicker icon renders with aria-label="calendar" - otherwise tests will fail at runtime when no element matches.
  • superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx - 1
    • Dropdown alignment removed · Line 409-409
      Removing `dropdownAlign` from the `Select` component may cause a regression in dropdown menu positioning. The deleted configuration controlled alignment (`points: ['tl', 'bl']`), vertical offset (`[0, 4]`), and overflow adjustment (`adjustX: 0, adjustY: 1`). If this change was intentional, verify the default behavior meets UX requirements; otherwise restore the prop to avoid positioning issues in the semantic layer type selector.
  • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx - 1
    • Incomplete v6 CSS migration · Line 178-178
      This selector change from `.ant-select-selector` to `.ant-select-content` appears correct for antd v6 migration, but the same file contains two other ant-select CSS selectors (`.ant-select-selection-placeholder` at line 191 and `.ant-select-selection-overflow-item` at line 196) that still use v5 class names. For consistency and maintainability, verify these other selectors are still valid in v6 or update them as part of the same migration effort.
  • superset-frontend/src/components/TableSelector/TableSelector.test.tsx - 1
    • Inconsistent CSS selector pattern · Line 63-63
      Update `getSelectItemContainer` to handle both antd v5 and v4 class names by first querying for `ant-select-content-has-value` and falling back to `ant-select-selection-item` for broader compatibility.
  • superset-frontend/packages/superset-core/src/theme/Theme.test.tsx - 1
    • Semantic duplication in test setup patterns · Line 952-965
      The light and dark mode token-completeness tests (lines 952-965 and 967-979) share nearly identical setup code. While functionally correct, this duplication creates maintenance risk if the base theme or algorithm selection logic changes.
  • superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.test.tsx - 1
    • Unnecessary optional chaining on parentNode · Line 107-107
      The optional chaining `?.` on `container?.parentNode` may mask test failures. Since `container` comes from `screen.getByTestId('listview-table').parentNode` and should always exist in the rendered loading state, using `container.parentNode` would align with other assertions (line 106) and better catch regressions if the DOM structure changes.
  • superset-frontend/jest.config.js - 1
    • Unreachable pattern dead code · Line 75-75
      The added `|@x0k/.*|` pattern segment references packages that do not exist in package.json dependencies. This is unreachable dead code within the diff — while it won't cause a compilation or runtime failure, it increases regex complexity without serving any purpose and may confuse future maintainers.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/dashboard/components/CustomizationsBadge/index.tsx - 1
  • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts - 1
Review Details
  • Files reviewed - 54 · Commit Range: e35c7ae..e35c7ae
    • superset-frontend/jest.config.js
    • superset-frontend/packages/superset-core/src/theme/Theme.test.tsx
    • superset-frontend/packages/superset-core/src/theme/__snapshots__/Theme.test.tsx.snap
    • superset-frontend/packages/superset-core/src/theme/utils/index.ts
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/DropdownContainer/DropdownContainer.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Label/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/PageHeaderWithActions/PageHeaderWithActions.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/components/TableCollection/TableCollection.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/TooltipParagraph/TooltipParagraph.test.tsx
    • superset-frontend/plugins/plugin-chart-table/src/Styles.tsx
    • superset-frontend/plugins/plugin-chart-table/test/TableChart.test.tsx
    • superset-frontend/spec/helpers/jsDomWithFetchAPI.ts
    • superset-frontend/src/SqlLab/components/ColumnElement/index.tsx
    • superset-frontend/src/SqlLab/components/TabbedSqlEditors/TabbedSqlEditors.test.tsx
    • superset-frontend/src/components/Chart/DrillBy/DrillBySubmenu.tsx
    • superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.test.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/components/DatasetUsageTab/index.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/tests/DatasourceEditor.test.tsx
    • superset-frontend/src/components/ListView/ListView.tsx
    • superset-frontend/src/components/TableSelector/TableSelector.test.tsx
    • superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.test.tsx
    • superset-frontend/src/dashboard/components/CustomizationsBadge/index.tsx
    • superset-frontend/src/dashboard/components/gridComponents/Tabs/Tabs.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/CrossFilter.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FilterBar/UrlFilters/Vertical.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/NewItemDropdown.tsx
    • superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.test.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/tests/CustomFrame.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/AdhocFilterEditPopover.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/AdhocFilterEditPopoverSimpleTabContent.test.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx
    • superset-frontend/src/explore/components/controls/NumberControl/NumberControl.test.tsx
    • superset-frontend/src/explore/components/controls/SelectControl.test.tsx
    • superset-frontend/src/features/alerts/AlertReportModal.test.tsx
    • superset-frontend/src/features/semanticLayers/MultiEnumControl.test.tsx
    • superset-frontend/src/features/semanticLayers/SemanticLayerModal.tsx
    • superset-frontend/src/features/tasks/TaskPayloadPopover.tsx
    • superset-frontend/src/features/tasks/TaskStackTracePopover.tsx
    • superset-frontend/src/pages/ChartCreation/index.tsx
    • superset-frontend/src/pages/ChartList/ChartList.listview.test.tsx
    • superset-frontend/src/visualizations/TimeTable/TimeTable.test.tsx
  • Files skipped - 5
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-core/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-chart-controls/package.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
Comment thread superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/packages/superset-core/src/theme/utils/index.ts
@bito-code-review

bito-code-review Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #7c4d77

Actionable Suggestions - 0
Review Details
  • Files reviewed - 7 · Commit Range: e35c7ae..f3c8482
    • superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
    • superset-frontend/cypress-base/cypress/e2e/explore/utils.ts
    • superset-frontend/cypress-base/cypress/support/directories.ts
    • superset-frontend/playwright/components/core/Select.ts
    • superset-frontend/packages/superset-ui-core/src/components/Label/Label.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tooltip/Tooltip.stories.tsx
    • superset-frontend/playwright/pages/ChartCreationPage.ts
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/cypress-base/cypress/support/directories.ts
Comment thread superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx Outdated
@bito-code-review

bito-code-review Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #a43638

Actionable Suggestions - 0
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx - 2
    • Wrong antd CSS class names · Line 70-73
    • Inconsistent CSS class names across codebase · Line 70-73
Review Details
  • Files reviewed - 21 · Commit Range: f3c8482..087ab15
    • superset-frontend/playwright/tests/home/welcome.spec.ts
    • superset-frontend/packages/superset-core/src/theme/GlobalStyles.tsx
    • superset-frontend/packages/superset-ui-core/src/components/CronPicker/index.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx
    • superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.tsx
    • superset-frontend/src/SqlLab/components/App/index.tsx
    • superset-frontend/src/SqlLab/components/SouthPane/index.tsx
    • superset-frontend/src/SqlLab/components/SqlEditor/index.tsx
    • superset-frontend/src/components/Datasource/components/DatasourceEditor/DatasourceEditor.tsx
    • superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx
    • superset-frontend/src/dashboard/components/DashboardBuilder/DashboardContainer.tsx
    • superset-frontend/src/dashboard/styles.ts
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx
    • superset-frontend/src/explore/components/DataTablesPane/components/ResultsPaneOnDashboard.tsx
    • superset-frontend/src/features/databases/DatabaseModal/index.tsx
    • superset-frontend/src/features/databases/DatabaseModal/styles.ts
    • superset-frontend/packages/superset-ui-core/src/components/DropdownContainer/DropdownContainer.tsx
    • superset-frontend/plugins/plugin-chart-ag-grid-table/src/styles/index.tsx
    • superset-frontend/src/pages/ChartCreation/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review

bito-code-review Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #43c082

Actionable Suggestions - 0
Review Details
  • Files reviewed - 16 · Commit Range: 087ab15..aaf62f8
    • superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts
    • superset-frontend/cypress-base/cypress/support/directories.ts
    • superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/AsyncSelect.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/Select.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Select/constants.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/types.ts
    • superset-frontend/packages/superset-ui-core/src/components/antdDomContract.test.tsx
    • superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
    • superset-frontend/src/components/Modal/StandardModal.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/ConfigModal/SharedStyles.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/ConfigModalSidebar/ConfigModalSidebar.tsx
    • superset-frontend/src/explore/components/ControlPanelsContainer.tsx
    • superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx
    • superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx
    • superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx
  • Files skipped - 3
    • UPDATING.md - Reason: Filter setting
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@rusackas rusackas added the 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR label Jul 4, 2026
@github-actions github-actions Bot added 🎪 aaf62f8 🚦 building 🎪 ⌛ 48h Environment expires after 48 hours (default) and removed 🎪 ⚡ showtime-trigger-start Create new ephemeral environment for this PR labels Jul 4, 2026
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for aaf62f8

Comment thread superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx Outdated
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for 78b83aa

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime deployed environment on GHA for 78b83aa

Environment: http://34.219.246.22:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@bito-code-review

bito-code-review Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #d69f33

Actionable Suggestions - 0
Review Details
  • Files reviewed - 3 · Commit Range: 54f49a1..78b83aa
    • superset-frontend/src/SqlLab/components/ScheduleQueryButton/ScheduleQueryButton.test.tsx
    • superset-frontend/packages/superset-ui-core/src/components/Tabs/Tabs.tsx
    • superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for fc0b90c

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime deployed environment on GHA for fc0b90c

Environment: http://18.236.87.216:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@bito-code-review

bito-code-review Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #fe62eb

Actionable Suggestions - 0
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx - 1
Review Details
  • Files reviewed - 2 · Commit Range: 78b83aa..fc0b90c
    • superset-frontend/packages/superset-core/src/theme/utils/index.ts
    • superset-frontend/packages/superset-ui-core/src/components/Select/styles.tsx
  • Files skipped - 0
  • Tools
    • Eslint (Linter) - ✔︎ Successful
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

rusackas and others added 18 commits July 6, 2026 23:18
Upgrades antd 5.26 -> 6.5 (and @ant-design/icons -> 6) across the frontend.

Theme-safe: the getDesignToken -> allowedAntdTokens -> ConfigProvider/Emotion
bridge works on v6 with no token loss (only cosmetic box-shadow recomputation).
Adds theme characterization tests that lock the full computed token set for
light and dark so any future token rename/removal fails loudly.

Key changes:
- Theme bridge: coerce boolean `cssVar` (removed from v6 ThemeConfig) to the
  object form.
- Wrappers/app: Select (dropdownAlign removed; showSearch/tokenSeparators union
  handling), Tooltip/Popover/DropdownContainer styles.body -> styles.container,
  Steps.Step -> items, Popover/Tooltip/Dropdown visible/onVisibleChange ->
  open/onOpenChange, Dropdown overlay -> menu, Pagination size="default"
  removed, .ant-tooltip-inner -> .ant-tooltip-container and
  .ant-select-selector -> .ant-select-content in styled CSS.
- Fixes a real regression the tests caught: antd v6 Tag overwrites its `icon`
  prop's inline style, dropping Label icon colors; fixed by wrapping the icon.
- Deps: remove unused @rjsf/antd (pinned antd 5); bump @rjsf/core/utils/
  validator-ajv8 to v6; pin jsonforms-antd-renderers to antd 6 via overrides.
- Test env: replace the `MessageChannel = undefined` stub with a polyfill
  (antd v6's scheduler needs the constructor).
- Update test-DOM assertions across suites for v6 class/structure renames.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
E2E specs query antd's internal Select DOM, which v6 renamed. Fixes the
Cypress + Playwright failures on the antd6 upgrade:
- .ant-select-selection-search-input -> .ant-select-input (central Playwright
  Select helper + Cypress directories/utils; drives create-dataset, dataset-list
  modals, sqllab DB selection, and the "Select a dashboard" chart flow)
- .ant-select-selector -> .ant-select-content
- .ant-select-selection-placeholder -> .ant-select-placeholder
- .ant-select-selection-item -> combined .ant-select-content-has-value,
  .ant-select-selection-item (single + multiple modes)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tory

- Add a direct regression test in Label.test.tsx asserting a Label with a
  colored icon keeps its color (guards the shared Label/index.tsx fix for antd
  v6's Tag overwriting the icon's inline style).
- Update the Tooltip story argType onVisibleChange -> onOpenChange so the
  generated docs show the current antd v6 prop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
antd v6 moved the Select `aria-label` onto the combobox <input>, so
getByLabel('Dataset') resolved to the empty input (no text content) instead of
the value container. Scope getDatasetSelectContainer to
`.ant-select-content-has-value` (which wraps the input and holds the selected
value text), fixing the create-dataset wizard assertion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The auth suite only waits for the welcome URL + session cookie, so a
welcome page that routes correctly but renders a blank shell (only the
top nav) would still pass CI. Assert a Home content section ('Recents',
a Collapse panel absent from the nav) is visible, so a blank landing
page fails loudly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…or v6

antd 6 renamed several internal DOM classes; these styled-component and
GlobalStyles overrides silently stopped matching (broken visual overrides
no test catches). Verified each replacement against real antd 6 rendered DOM:

- Popover: .ant-popover-inner -> .ant-popover-container (explore-popover padding)
- Select value container: .ant-select-selector/.ant-select-selection-overflow
  -> .ant-select-content; overflow items .ant-select-selection-overflow-item[-rest|-suffix]
  -> .ant-select-content-item[-rest|-suffix]; placeholder
  .ant-select-selection-placeholder -> .ant-select-placeholder; search wrapper
  .ant-select-selection-search -> .ant-select-input. Multiple-mode tag
  .ant-select-selection-item is unchanged in v6 and kept as-is.

The ColorPicker alpha overrides (#34721) are intentionally left untouched: the
geostyler CSS they counteracted no longer hides those controls, and antd 6
removed the alpha-specific slider class — re-pointing them would wrongly restyle
sliders. Flagged for visual QA instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The antd 5->6 DOM class renames broke several CSS overrides silently — no
test failed when a selector stopped matching. Add a contract test asserting
the antd6 classes our overrides depend on still exist (select value/overflow/
placeholder containers, popover-container, tooltip-container, modal-body), so a
future antd bump that renames one fails loudly here instead of shipping a
visual regression.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…QL Lab editor)

antd 6 restructured the Tabs content DOM, breaking the fullHeight height
chain that SQL Lab, Explore, and several modals rely on. The Ace editor
rendered into a 0-height container and never became visible — every
chromium-sqllab Playwright test timed out at 60s (vs ~8s on master), and
the editor was effectively unusable.

antd 5 -> 6 positional rename (verified against real v6 rendered DOM):
  .ant-tabs-content-holder      -> .ant-tabs-body-holder
  .ant-tabs-content (wrapper)   -> .ant-tabs-body   (new intermediate level)
  .ant-tabs-tabpane   (panel)   -> .ant-tabs-content (now the [role=tabpanel])

The new .ant-tabs-body level had no height rule, collapsing the chain.
Applied the rename across the core Tabs wrapper and all app overrides that
walk this DOM (SQL Lab App/SouthPane/SqlEditor, Explore ControlPanels/
DataTablesPane, DatabaseModal, DatasourceEditor, dashboard). Extended the
antd DOM contract test to pin the body-holder -> body -> content chain so a
future antd bump fails loudly instead of silently collapsing it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…act test

Test-driven audit (rendering each antd6 component and dumping its real
classes) surfaced more silently-broken overrides the earlier passes missed:

- ChartCreation: `.ant-steps-item-tail` -> `.ant-steps-item-rail` (antd6 renamed
  the Steps connector line; the 'hide connector' rule had stopped matching).
- DropdownContainer + plugin-chart-ag-grid-table: `.ant-popover-inner` ->
  `.ant-popover-container` (two sites missed when GlobalStyles was fixed).

Verified via real v6 DOM that `.ant-modal-close-x`, `.ant-steps`/`-item-icon`/
`-item-title`/`-item-content` are NOT renamed and were correctly left alone.

Extended antdDomContract.test.tsx with Steps (incl. the tail->rail rename that
SQL Lab loading detection also depends on via `.ant-steps`) and the Select
suffix/arrow class, so this whole class of silent breakage is guarded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
An antd major bump is breaking for downstream plugin/extension authors:
renamed .ant-* internal DOM classes (custom CSS silently stops matching),
changed/removed component props, and CSS variables on by default. Log the
notable renames and point at the upstream migration guide.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deep review of the branch surfaced ten verified defects; fixes:

- Restore the #36963 dropdown-positioning fix: antd 6 removed Select's
  `dropdownAlign`, and the migration deleted DROPDOWN_ALIGN_BOTTOM without
  a replacement. Re-expressed via the supported `builtinPlacements` prop
  (antd 6's own defaults with adjustX disabled).
- Bump react-js-cron 5.2 -> 6.0.2 (antd >=6 peer): its vendor stylesheet
  was written against antd 5 Select classes, silently killing the cron
  error styling and layout. v6 ships antd6-native selectors.
- Migrate the Collapse content family (.ant-collapse-content -> -panel,
  .ant-collapse-content-box -> -body) across Collapse.tsx, VizTypeGallery,
  ControlPanelsContainer, StandardModal, config-modal styles, and the
  Cypress selectors — same silent-override breakage as the Tabs chain.
- DateFunctionTooltip: rules were nested inside a stale .ant-tooltip-content
  ancestor antd 6 never renders; apply them to .ant-tooltip-container.
- Cypress advanced-time-range helper: .ant-popover-inner-content ->
  .ant-popover-content (v6 body element).
- Narrow the Select wrapper's `showSearch` to boolean and
  `tokenSeparators` to string[]: antd 6 widened both (SearchConfig object,
  function form) but the wrapper silently discards those forms — make the
  unsupported forms a compile error instead.
- AsyncSelect: suffix icon now reflects the effective searchability
  (allowNewOptions || showSearch), matching Select and the actual antd prop.
- Add an rjsf v6 smoke test for ScheduleQueryButton (sole @rjsf consumer;
  form is config-driven so a breaking rjsf change is invisible to tsc).
- Expand the antd DOM contract test: select input/suffix-item, tabs
  content-active, popover container>title+content structure, and the
  Collapse panel/body family.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… name)

- Format ScheduleQueryButton.test.tsx (long import line).
- FiltersConfigModal restore/undo tests (new on master, first exercised
  against antd6 by the merge): query the filter delete button by its
  intended accessible name. @ant-design/icons 6 fixes label precedence —
  the developer-provided aria-label ('Remove filter') now correctly wins
  over the icon-name default ('delete') that the icons 5 render exposed
  and the tests had matched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
antd 6 removed the Tag's default margin-inline-end: 8px in favor of
parents spacing tags via flex/Space gaps. App layouts predate that and
rely on the v5 default — most visibly the dashboard header, where the
Published tag sat flush against the metadata bar. Restore the margin in
GlobalStyles (to be removed once Tag-adjacent layouts declare their own
gaps) and pin it with a computed-style regression test that exercises
the provider -> GlobalStyles -> Tag chain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… rjsf6 array-button classes

Convert the remaining high-risk manual-QA watch items into tests, and fix
one more real bug the hardening surfaced:

- ScheduleQueryButton (fix): rjsf 6 renamed the array-item button classes
  (array-item-* -> rjsf-array-item-*), so StyledJsonSchema's up/down/remove
  glyphs targeted dead classes and the buttons rendered completely empty
  (their glyphicon <i> is hidden by design). Update the selectors and pin
  the v6 class names with a test that adds array items and asserts all
  three buttons render.
- jsonforms-antd-renderers (new real-render smoke test): the package has no
  antd 6 release and is forced onto antd 6 via overrides; the modal tests
  mock <JsonForms /> away. Render the real renderers exactly as
  SemanticLayerModal does (same renderers/cells/uischema) and exercise
  string/enum/boolean/number controls plus typing and dropdown selection.
- CronPicker (new error-state test): the invalid-cron error styling was
  silently dead pre-react-js-cron-6; pin that an invalid value fires
  onError and applies the vendor's error class.
- DROPDOWN_BUILTIN_PLACEMENTS (new characterization test): pin the #36963
  contract — all four antd placements present with antd's points/offsets
  and horizontal viewport adjustment disabled.

geostyler remains manual-QA only: it depends on OpenLayers + monaco, which
are not meaningfully renderable in jsdom.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…object

The Explore Results-grid page object arrived from master using
.ant-tabs-tabpane-active; antd 6 renders the active panel as
.ant-tabs-content-active, so the locator would never match and any spec
using getResultsGrid() would time out.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…stion)

The move-button assertions ran outside the waitFor guarding the remove
buttons; same render pass so unlikely to flake, but consistent retry
wrapping removes the risk entirely.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the `any` in the theme algorithm map with antd's `MappingAlgorithm`
type, and apply `&&` specificity boosting to all three selectors in the
Select max-height rule instead of just the first (bito suggestions).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime is building environment on GHA for cd88821

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🎪 Showtime deployed environment on GHA for cd88821

Environment: http://35.94.10.57:8080 (admin/admin)
Lifetime: 48h auto-cleanup
Updates: New commits create fresh environments automatically

@EnxDev

EnxDev commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

EnxDev's Review Agent — #41636 · HEAD cd88821

comment — the parity upgrade is verified-complete and unusually well-tested; the only thing between this PR and green CI is two stale test selectors.

Verification notes: I grepped the PR head for every class this PR renames (ant-select-selector, ant-select-selection-search, ant-tabs-content-holder, ant-tabs-tabpane, ant-popover-inner, ant-collapse-content-box, ant-steps-item-tail, ant-spin-blur, …) — outside comments and the contract test's negative assertions, only the two occurrences below survive, so the earlier "~15 components still on v5 selectors" thread is resolved at this HEAD. The remapped-meaning classes (.ant-tabs-content, which now matches the panel) are all correct-direction renames, including the behavioral one in DashboardContainer.tsx:335 (handleFocus). SemanticLayerModal's deleted inline dropdownAlign is covered by the wrapper's new DROPDOWN_BUILTIN_PLACEMENTS default (same points/offset/adjustX). Steps→items and Dropdown overlaymenu conversions preserve status conditionals, handlers, and style slots.

🟡 Should-fix

  • superset-frontend/packages/superset-ui-core/src/components/Select/Select.test.tsx:395 and .../Select/AsyncSelect.test.tsx:415 — both still query .ant-select-selection-search-input (gone in antd 6), so trims whitespace from pasted comma-separated values throws Unable to fire a "paste" event and keeps sharded-jest-tests (1) and (6) red on this HEAD. These two tests exist on master (Select.test.tsx:381 / AsyncSelect.test.tsx:401) and were presumably picked up after the selector sweep → change both to .ant-select-input like the sibling paste tests. The PR body's "full Jest suite green" predates them.

🔵 Nits

  • Codecov patch coverage is 67.6% (12 lines). Flagged files include Select.tsx / AsyncSelect.tsx — likely the Array.isArray(tokenSeparators) ? … : [] fallback (Select.tsx:726, AsyncSelect.tsx:699), which the narrowed tokenSeparators?: string[] in types.ts makes unreachable for type-checked callers. Could drop the guard or leave it as documented defense; either way not blocking.

🙌 Praise

  • packages/superset-ui-core/src/components/antdDomContract.test.tsx — pinning the .ant-* DOM contract with positive and negative assertions is exactly the safety net this class of upgrade needs; the next antd bump fails loudly instead of shipping silent CSS rot. The theme characterization snapshots and the DROPDOWN_BUILTIN_PLACEMENTS test pinning fix(dashboard): resolve dropdown popup positioning #36963 follow the same discipline.
  • spec/helpers/jsDomWithFetchAPI.ts:65 — the MessageChannel polyfill is carefully engineered (bidirectional port pairing, macrotask delivery that can't resurrect the rc-overflow hang) and its rationale is documented in place.

Reviewed by EnxDev's Review Agent — @EnxDev · HEAD cd88821.

@bito-code-review

Copy link
Copy Markdown
Contributor

AI Code Review is in progress (usually takes 3 to 15 minutes unless it's a very large PR).

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎪 cd88821 🚦 running Environment cd88821 status: running 🎪 cd88821 🤡 rusackas Environment cd88821 requested by rusackas 🎪 cd88821 🌐 35.94.10.57:8080 Environment cd88821 URL: http://35.94.10.57:8080 (click to visit) 🎪 cd88821 📅 2026-07-07T06-28 Environment cd88821 created at 2026-07-07T06-28 change:frontend Requires changing the frontend dependencies:npm packages plugins risk:breaking-change Issues or PRs that will introduce breaking changes size/XXL 🎪 ⌛ 48h Environment expires after 48 hours (default)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants