This is an automated email from the ASF dual-hosted git repository.
hainenber pushed a change to branch
feat/migrate-to-vitest-for-superset-websocket
in repository https://gitbox.apache.org/repos/asf/superset.git
from e9a0367bb4 fix: ensure the mocked redis.xrange is not called for test
assertion
add d31a2f96c9 chore(deps-dev): bump webpack from 5.105.2 to 5.105.3 in
/superset-frontend (#38294)
add ac2914486f fix(Select): select all buttons to inherit font (#38313)
add 985c3d12a1 fix(screenshots): downgrade screenshot timeout logs from
ERROR to WARNING (#38130)
add e80311a795 chore(deps-dev): bump @swc/core from 1.15.17 to 1.15.18 in
/superset-frontend (#38335)
add ec33d6a421 chore(deps-dev): bump @types/node from 25.3.1 to 25.3.3 in
/superset-frontend (#38331)
add b57c864e98 chore(deps): bump react-syntax-highlighter from 16.1.0 to
16.1.1 in /superset-frontend (#38330)
add 1025e3729b chore(deps-dev): bump globals from 17.3.0 to 17.4.0 in
/docs (#38325)
add 00c62cf820 chore(deps-dev): bump yeoman-test from 11.2.0 to 11.3.1 in
/superset-frontend (#38326)
add d738431e73 chore(deps): bump swagger-ui-react from 5.31.2 to 5.32.0 in
/docs (#38324)
add 23200e8ce9 chore(deps): bump caniuse-lite from 1.0.30001774 to
1.0.30001775 in /docs (#38322)
add adc5a2cbdb chore(deps-dev): bump globals from 17.3.0 to 17.4.0 in
/superset-websocket (#38321)
add 00a1487705 chore(deps): bump hot-shots from 14.0.0 to 14.1.1 in
/superset-websocket (#38320)
add 01d5245cd2 fix: silence deprecation warnings causing noisy production
logs (#38128)
add a74d32ab44 feat(extensions): code-first frontend contributions (#38346)
add 3e10ab7dd0 refactor(Filter components): migrate from react-dnd to
dnd-kit (#37445)
add fc5fda3d1a fix(db-modal): update doc refs for DB connection modal
(#38091)
add 6e84d29707 fix(build): disable `moby` in dev container based on Debian
13 Trixie distro for usability (#37227)
add 0681df3d02 feat(theme): enable generalized ECharts theme overrides for
array properties (#37965)
add 1bd054684e chore(lint): remove unused ESLint plugins after migrating
rules to Oxlint (#38110)
add f2f55591ec chore: remove redundant service-worker.js placeholder
(#38348)
add 016417f793 fix(explore): prevent TypeError when chart dimension
returns empty string (#38276)
add c35bf344a9 chore(extensions): clean up backend entrypoints and file
globs (#38360)
add 2ab9d37a00 fix(templates): restore css_bundle calls in spa.html for
production builds (#38350)
add fa34609952 feat: Support OAuth2 single-use refresh tokens (#38364)
add 1136e86cf7 chore(deps): bump ioredis from 5.9.3 to 5.10.0 in
/superset-websocket (#38318)
add f10cb14d92 chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in
/superset-websocket (#38319)
add 983b633972 feat(bar-chart): add option to color bars by primary axis
when no dimensions are set (#37531)
add ef4b1d674b feat(docs): add filterable UI Components table and improve
build performance (#38253)
add 7815afb24d fix(charts): improve minor gridline visibility in dark
themes (#38371)
add 51ac758b80 fix(tags): expire tag relationship after deleting all
tagged objects (#38163)
add 80a29cd6fe chore(deps-dev): bump terser-webpack-plugin from 5.3.16 to
5.3.17 in /superset-frontend (#38386)
add 35d0aad854 feat(explore): Add Echarts option editor (#37868)
add 69732d9dca fix(superset-ui-core): achieve 100% coverage for npm run
core:cover (#38397)
add 832fee3ff8 refactor(mcp): move superset_core MCP module from mcp to
api/mcp (#38394)
add 19f949276c refactor(config): SIGNAL_CACHE_CONFIG →
DISTRIBUTED_COORDINATION_CONFIG (#38395)
add aff6e26089 build(deps): replace monolithic `googleapis` with
lightweight `@googleapis/sheet` sub-package (#38124)
add 3d5694ee0f chore: regular `npm audit fix` (#38248)
add 3b656f9cc2 fix(dashboard): restore filterState prop for cross-filter
functionality (#38349)
add c25adbc395 test(DashboardList): migrate Cypress E2E tests to RTL
(#38368)
add e2ebc135e4 test(playwright): add dashboard list E2E tests (#38377)
add 27d54f8421 fix(build/backend): migrate to deps-free `pygeohash` with
pre-built wheels at runtime (#37524)
add 796c206ee7 fix(charts): apply resample before rolling window in
post-processing pipeline (#37987)
add 63e7ee70bf fix(echarts): adaptive formatting labels (#38017)
add 8c9efe5659 feat: support for import/export masked_encrypted_extra
(backend) (#38077)
add dc995328a8 chore(deps): bump cryptography from 44.0.3 to 46.0.5
(#37912)
add 8f28a8734a chore(deps): bump flask from 2.3.3 to 3.1.3 (#38168)
add 1bfd41df0c chore(deps): bump aquasecurity/trivy-action from 0.34.1 to
0.34.2 (#38352)
add 88241d3e71 chore(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in
/superset-frontend (#38353)
add a79dcbbb66 chore(deps): update d3-cloud requirement from ^1.2.8 to
^1.2.9 in /superset-frontend/plugins/plugin-chart-word-cloud (#38381)
add 939e4194c6 fix(alerts): fix error toast when editing report with saved
tab selection (#38198)
add 0d5827ac42 chore(extensions): unified contribution api and automatic
prefixing (#38412)
add 5a2a72cf31 chore(deps): bump svgo from 3.3.2 to 3.3.3 in /docs (#38422)
add fdf19db5e6 chore(deps): bump svgo from 3.3.2 to 3.3.3 in
/superset-frontend (#38421)
add 4dfb0e66cb chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in
/superset-frontend (#38385)
add 5f582b2f01 Merge branch 'master' into
feat/migrate-to-vitest-for-superset-websocket
No new revisions were added by this update.
Summary of changes:
.devcontainer/devcontainer.json | 2 +-
.github/workflows/docker.yml | 2 +-
.gitignore | 2 +-
UPDATING.md | 8 +-
docs/.gitignore | 8 +-
docs/admin_docs/configuration/cache.mdx | 16 +-
docs/babel.config.js | 32 -
docs/developer_docs/api.mdx | 36 +-
docs/developer_docs/extensions/architecture.md | 5 +-
.../extensions/contribution-types.md | 192 +-
docs/developer_docs/extensions/development.md | 174 +-
docs/developer_docs/extensions/mcp.md | 6 +-
docs/developer_docs/extensions/overview.md | 6 +-
docs/developer_docs/extensions/quick-start.md | 107 +-
docs/developer_docs/extensions/tasks.md | 4 +-
docs/docusaurus.config.ts | 28 +
docs/package.json | 17 +-
docs/scripts/generate-database-docs.mjs | 8 +-
docs/scripts/generate-extension-components.mjs | 676 ------
docs/scripts/generate-if-changed.mjs | 307 +++
docs/scripts/generate-superset-components.mjs | 241 +-
docs/sidebarTutorials.js | 11 -
docs/src/components/databases/DatabaseIndex.tsx | 1 +
.../components/ui-components/ComponentIndex.tsx | 262 +++
.../src/components/ui-components/index.ts | 3 +-
.../src/components/ui-components}/types.ts | 43 +-
docs/src/data/databases.json | 12 +-
docs/src/shims/superset-ui-core.ts | 57 +
docs/src/types/apache-superset-core/index.d.ts | 4 +-
docs/src/webpack.extend.ts | 15 +-
docs/tsconfig.json | 5 +-
docs/yarn.lock | 1288 +++++++---
pyproject.toml | 8 +-
requirements/base.txt | 4 +-
requirements/development.txt | 8 +-
.../superset_core/{mcp/__init__.py => api/mcp.py} | 2 +-
superset-core/src/superset_core/api/rest_api.py | 97 +-
.../src/superset_core/extensions/types.py | 109 +-
.../src/superset_extensions_cli/cli.py | 131 +-
.../templates/backend/pyproject.toml.j2 | 7 +
.../templates/extension.json.j2 | 20 -
.../templates/frontend/src/index.tsx.j2 | 17 +-
.../templates/frontend/webpack.config.js.j2 | 3 +-
superset-extensions-cli/tests/test_cli_build.py | 306 ++-
superset-extensions-cli/tests/test_cli_init.py | 32 +-
superset-extensions-cli/tests/test_cli_validate.py | 14 +-
superset-extensions-cli/tests/test_templates.py | 39 +-
superset-frontend/.eslintrc.js | 41 -
.../e2e/dashboard/_skip.nativeFilters.test.ts | 4 +-
.../cypress/e2e/dashboard_list/filter.test.ts | 47 -
.../cypress/e2e/dashboard_list/list.test.ts | 279 ---
superset-frontend/oxlint.json | 4 +-
superset-frontend/package-lock.json | 2477 ++++++++------------
superset-frontend/package.json | 20 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/src/api/commands.ts | 49 +-
.../superset-core/src/api/contributions.ts | 92 +-
.../packages/superset-core/src/api/core.ts | 74 +-
.../packages/superset-core/src/api/editors.ts | 63 +-
.../packages/superset-core/src/api/index.ts | 2 +
.../packages/superset-core/src/api/menus.ts | 102 +
.../packages/superset-core/src/api/views.ts | 88 +
.../superset-core/src/ui/theme/Theme.test.tsx | 73 +
.../packages/superset-core/src/ui/theme/Theme.tsx | 14 +
.../src/shared-controls/sharedControls.tsx | 15 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/metricColumnFilter.test.ts | 8 +
.../test/utils/getColorFormatters.test.ts | 41 +
.../packages/superset-ui-core/package.json | 2 +-
.../Matrixify/MatrixifyGridGenerator.test.ts | 120 +
.../components/Matrixify/MatrixifyGridGenerator.ts | 8 +-
.../src/chart/types/matrixify.mocks.test.ts | 11 +-
.../src/chart/types/matrixify.test.ts | 82 +
.../superset-ui-core/src/chart/types/matrixify.ts | 36 +-
.../src/components/AsyncAceEditor/index.tsx | 6 +
.../AsyncAceEditor/useJsonValidation.test.ts | 25 +
.../src/components/List/List.test.tsx | 10 +
.../src/components/Select/constants.test.ts | 49 +
.../src/components/Select/styles.tsx | 3 +
.../Table/utils/InteractiveTableUtils.test.ts | 574 +++++
.../superset-ui-core/src/components/index.ts | 1 +
.../src/types/react-syntax-highlighter.d.ts | 7 -
.../src/utils/rankedSearchCompare.test.ts | 20 +
.../index.ts => utils/withLabel.test.ts} | 24 +-
.../test/connection/SupersetClient.test.ts | 6 +
.../test/connection/SupersetClientClass.test.ts | 33 +
.../test/currency-format/CurrencyFormatter.test.ts | 78 +
.../test/currency-format/utils.test.ts | 193 ++
.../test/query/types/Column.test.ts | 14 +
.../test/query/types/Dashboard.test.ts | 33 +
.../playwright/helpers/api/dashboard.ts | 170 ++
.../playwright/helpers/fixtures/testAssets.ts | 24 +-
.../{ChartListPage.ts => DashboardListPage.ts} | 67 +-
.../experimental/dashboard/dashboard-list.spec.ts | 403 ++++
.../dashboard-test-helpers.ts} | 47 +-
.../plugins/plugin-chart-echarts/package.json | 4 +-
.../BigNumberWithTrendline/buildQuery.test.ts | 4 +-
.../BigNumber/BigNumberWithTrendline/buildQuery.ts | 2 +-
.../src/MixedTimeseries/buildQuery.ts | 2 +-
.../src/MixedTimeseries/controlPanel.tsx | 1 +
.../src/MixedTimeseries/transformProps.ts | 20 +-
.../src/Timeseries/Area/controlPanel.tsx | 1 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 3 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 1 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 1 +
.../src/Timeseries/buildQuery.ts | 6 +-
.../src/Timeseries/transformProps.ts | 148 +-
.../src/Timeseries/transformers.ts | 49 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugin-chart-echarts/src/components/Echart.tsx | 10 +-
.../plugins/plugin-chart-echarts/src/controls.tsx | 28 +
.../plugins/plugin-chart-echarts/src/index.ts | 3 +
.../src/utils/eChartOptionsSchema.ts | 827 +++++++
.../plugin-chart-echarts/src/utils/formatters.ts | 91 +-
.../src/utils/mergeCustomEChartOptions.test.ts | 163 ++
.../src/utils/mergeCustomEChartOptions.ts | 79 +
.../src/utils/safeEChartOptionsParser.test.ts | 525 +++++
.../src/utils/safeEChartOptionsParser.ts | 477 ++++
.../src/utils/themeOverrides.test.ts | 623 +++--
.../src/utils/themeOverrides.ts | 89 +
.../test/MixedTimeseries/transformProps.test.ts | 2 +-
.../test/Timeseries/Bar/transformProps.test.ts | 283 +++
.../test/Timeseries/Scatter/transformProps.test.ts | 8 +-
.../test/Timeseries/transformProps.test.ts | 6 +-
.../test/utils/formatters.test.ts | 174 +-
.../plugins/plugin-chart-word-cloud/package.json | 2 +-
.../scripts/eslint-metrics-uploader.js | 144 --
.../scripts/oxlint-metrics-uploader.js | 7 +-
superset-frontend/spec/helpers/testing-library.tsx | 5 +-
.../SqlLab/components/AppLayout/AppLayout.test.tsx | 79 +-
.../src/SqlLab/components/AppLayout/index.tsx | 9 +-
.../src/SqlLab/components/SouthPane/index.tsx | 20 +-
.../SqlLab/components/StatusBar/StatusBar.test.tsx | 14 +-
.../src/SqlLab/components/StatusBar/index.tsx | 9 +-
superset-frontend/src/components/Chart/Chart.tsx | 2 +
.../src/components/PanelToolbar/index.tsx | 40 +-
.../ViewListExtension/ViewListExtension.test.tsx | 228 +-
.../src/components/ViewListExtension/index.tsx | 24 +-
superset-frontend/src/core/commands/index.ts | 42 +-
.../src/core/editors/AceEditorProvider.tsx | 3 +
superset-frontend/src/core/editors/EditorHost.tsx | 8 +-
.../src/core/editors/EditorProviders.test.ts | 85 +-
.../src/core/editors/EditorProviders.ts | 20 +-
superset-frontend/src/core/editors/index.ts | 36 +-
superset-frontend/src/core/extensions/index.ts | 6 +-
superset-frontend/src/core/index.ts | 14 +-
superset-frontend/src/core/menus/index.test.ts | 124 +
superset-frontend/src/core/menus/index.ts | 83 +
superset-frontend/src/core/models.ts | 4 -
superset-frontend/src/core/views/index.test.ts | 112 +
superset-frontend/src/core/views/index.ts | 83 +
.../components/gridComponents/Chart/Chart.test.tsx | 30 +
.../components/gridComponents/Chart/Chart.tsx | 1 +
.../ConfigModalSidebar/ConfigModalSidebar.tsx | 236 +-
.../FiltersConfigModal/DraggableFilter.test.tsx | 109 +-
.../FiltersConfigModal/DraggableFilter.tsx | 120 +-
.../FiltersConfigModal/FilterConfigPane.test.tsx | 26 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 102 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 180 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 13 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 67 +-
.../explore/components/DataTableControl/index.tsx | 2 +-
.../components/controls/JSEditorControl.test.tsx | 125 +
.../components/controls/JSEditorControl.tsx | 105 +
.../src/explore/components/controls/index.ts | 2 +
.../src/extensions/ExtensionsContext.test.tsx | 150 --
.../src/extensions/ExtensionsContext.tsx | 93 -
.../src/extensions/ExtensionsContextUtils.test.ts | 74 -
.../src/extensions/ExtensionsContextUtils.ts | 32 -
.../src/extensions/ExtensionsList.test.tsx | 17 -
.../src/extensions/ExtensionsList.tsx | 29 -
.../src/extensions/ExtensionsLoader.test.ts | 113 +
.../src/extensions/ExtensionsLoader.ts | 161 ++
.../src/extensions/ExtensionsManager.test.ts | 572 -----
.../src/extensions/ExtensionsManager.ts | 355 ---
.../src/extensions/ExtensionsStartup.test.tsx | 72 +-
.../src/extensions/ExtensionsStartup.tsx | 51 +-
.../src/features/alerts/AlertReportModal.test.tsx | 467 +++-
.../src/features/alerts/AlertReportModal.tsx | 40 +-
superset-frontend/src/features/alerts/types.ts | 7 +
.../databases/DatabaseModal/ModalHeader.tsx | 8 +-
.../DashboardList/DashboardList.behavior.test.tsx | 394 ++++
.../DashboardList/DashboardList.cardview.test.tsx | 417 ++++
.../DashboardList/DashboardList.listview.test.tsx | 402 ++++
.../DashboardList.permissions.test.tsx | 340 +++
.../src/pages/DashboardList/DashboardList.test.tsx | 391 +--
.../DashboardList/DashboardList.testHelpers.tsx | 360 +++
superset-frontend/src/views/App.tsx | 45 +-
.../src/views/RootContextProviders.tsx | 17 +-
superset-frontend/webpack.config.js | 7 +-
superset-websocket/package-lock.json | 28 +-
superset-websocket/package.json | 8 +-
superset/charts/schemas.py | 12 +-
superset/commands/database/export.py | 9 +
superset/commands/database/importers/v1/utils.py | 26 +-
superset/commands/distributed_lock/acquire.py | 2 +-
superset/commands/distributed_lock/base.py | 6 +-
superset/commands/distributed_lock/release.py | 2 +-
superset/commands/importers/v1/__init__.py | 4 +
superset/commands/importers/v1/assets.py | 4 +
superset/commands/importers/v1/utils.py | 19 +
superset/config.py | 20 +-
superset/core/api/core_api_injection.py | 64 +-
superset/core/mcp/core_mcp_injection.py | 74 +-
superset/daos/tag.py | 7 +
superset/dashboards/api.py | 34 +-
superset/databases/api.py | 14 +
superset/databases/schemas.py | 62 +
superset/db_engine_specs/base.py | 6 +
superset/db_engine_specs/databend.py | 21 +-
superset/distributed_lock/__init__.py | 2 +-
superset/extensions/context.py | 90 +
superset/extensions/contributions.py | 94 +
superset/extensions/utils.py | 5 +-
superset/importexport/api.py | 13 +
superset/initialization/__init__.py | 16 +-
superset/mcp_service/CLAUDE.md | 16 +-
superset/mcp_service/app.py | 2 +-
.../chart/prompts/create_chart_guided.py | 2 +-
superset/mcp_service/chart/tool/generate_chart.py | 2 +-
superset/mcp_service/chart/tool/get_chart_data.py | 2 +-
superset/mcp_service/chart/tool/get_chart_info.py | 2 +-
.../mcp_service/chart/tool/get_chart_preview.py | 2 +-
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/chart/tool/update_chart.py | 2 +-
.../mcp_service/chart/tool/update_chart_preview.py | 2 +-
.../tool/add_chart_to_existing_dashboard.py | 2 +-
.../dashboard/tool/generate_dashboard.py | 2 +-
.../dashboard/tool/get_dashboard_info.py | 2 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 2 +-
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
.../explore/tool/generate_explore_link.py | 2 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 2 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 2 +-
superset/mcp_service/system/prompts/quickstart.py | 2 +-
.../mcp_service/system/tool/get_instance_info.py | 2 +-
superset/mcp_service/system/tool/get_schema.py | 2 +-
superset/mcp_service/system/tool/health_check.py | 2 +-
superset/models/core.py | 5 +-
superset/models/helpers.py | 2 +-
superset/tasks/decorators.py | 15 +-
superset/tasks/locks.py | 4 +-
superset/tasks/manager.py | 8 +-
superset/templates/superset/spa.html | 5 +
superset/utils/cache_manager.py | 34 +-
superset/utils/json.py | 43 +
superset/utils/logging_configurator.py | 7 +
superset/utils/oauth2.py | 4 +
superset/utils/pandas_postprocessing/geography.py | 6 +-
superset/utils/pandas_postprocessing/resample.py | 2 +-
superset/utils/webdriver.py | 32 +-
superset/viz.py | 36 +-
tests/integration_tests/databases/api_tests.py | 91 +
tests/integration_tests/fixtures/importexport.py | 26 +
.../integration_tests/tasks/test_sync_join_wait.py | 4 +-
tests/unit_tests/databases/api_test.py | 70 +
.../databases/commands/importers/v1/import_test.py | 123 +
tests/unit_tests/databases/schema_tests.py | 106 +
tests/unit_tests/db_engine_specs/test_base.py | 91 +
tests/unit_tests/extension_tests.py | 21 +-
tests/unit_tests/extensions/test_types.py | 93 +-
tests/unit_tests/importexport/api_test.py | 52 +
tests/unit_tests/tags/commands/update_test.py | 60 +
tests/unit_tests/tasks/test_handlers.py | 4 +-
tests/unit_tests/tasks/test_manager.py | 34 +-
tests/unit_tests/tasks/test_timeout.py | 32 +-
tests/unit_tests/utils/json_tests.py | 139 ++
tests/unit_tests/utils/oauth2_tests.py | 56 +
269 files changed, 15444 insertions(+), 6946 deletions(-)
delete mode 100644 docs/babel.config.js
delete mode 100644 docs/scripts/generate-extension-components.mjs
create mode 100644 docs/scripts/generate-if-changed.mjs
create mode 100644 docs/src/components/ui-components/ComponentIndex.tsx
copy superset-frontend/packages/superset-ui-core/src/ui-overrides/index.tsx =>
docs/src/components/ui-components/index.ts (92%)
copy {superset-frontend/src/explore/components/controls/VizTypeControl =>
docs/src/components/ui-components}/types.ts (57%)
create mode 100644 docs/src/shims/superset-ui-core.ts
rename superset-core/src/superset_core/{mcp/__init__.py => api/mcp.py} (99%)
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/filter.test.ts
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts
create mode 100644 superset-frontend/packages/superset-core/src/api/menus.ts
create mode 100644 superset-frontend/packages/superset-core/src/api/views.ts
rename superset/static/service-worker.js =>
superset-frontend/packages/superset-ui-core/src/chart/types/matrixify.mocks.test.ts
(73%)
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Table/utils/InteractiveTableUtils.test.ts
copy
superset-frontend/packages/superset-ui-core/src/{color/colorSchemes/index.ts =>
utils/withLabel.test.ts} (53%)
create mode 100644 superset-frontend/playwright/helpers/api/dashboard.ts
copy superset-frontend/playwright/pages/{ChartListPage.ts =>
DashboardListPage.ts} (56%)
create mode 100644
superset-frontend/playwright/tests/experimental/dashboard/dashboard-list.spec.ts
copy
superset-frontend/playwright/tests/experimental/{dataset/dataset-test-helpers.ts
=> dashboard/dashboard-test-helpers.ts} (53%)
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/eChartOptionsSchema.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/themeOverrides.ts
delete mode 100644 superset-frontend/scripts/eslint-metrics-uploader.js
create mode 100644 superset-frontend/src/core/menus/index.test.ts
create mode 100644 superset-frontend/src/core/menus/index.ts
create mode 100644 superset-frontend/src/core/views/index.test.ts
create mode 100644 superset-frontend/src/core/views/index.ts
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.tsx
delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.test.tsx
delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.tsx
delete mode 100644
superset-frontend/src/extensions/ExtensionsContextUtils.test.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.ts
create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.test.ts
create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.test.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.ts
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.behavior.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.cardview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.listview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.permissions.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.testHelpers.tsx
create mode 100644 superset/extensions/context.py
create mode 100644 superset/extensions/contributions.py