Skip to content

test(dashboard): migrate dashboard load smoke test to Playwright - #41432

Merged
sadpandajoe merged 12 commits into
masterfrom
dashboard-pw-load-modes
Jul 22, 2026
Merged

test(dashboard): migrate dashboard load smoke test to Playwright#41432
sadpandajoe merged 12 commits into
masterfrom
dashboard-pw-load-modes

Conversation

@sadpandajoe

@sadpandajoe sadpandajoe commented Jun 25, 2026

Copy link
Copy Markdown
Member

SUMMARY

Migrates the genuine end-to-end case from the legacy Cypress Dashboard load suite (dashboard/load.test.ts) to the existing Playwright framework, as part of the dashboard Cypress→Playwright migration.

The original suite had five cases. Only "should load dashboard" is a true E2E test — it loads a multi-chart dashboard and proves the charts render via real backend queries. The other four (should load in edit mode, should load in standalone mode, should load in edit/standalone mode, should send log data) only assert DOM/URL state from URL params (?edit=true&standalone=true) or intercept a log request — there is no data round-trip to make them E2E. They belong in component/RTL coverage and are intentionally not migrated here.

Design decisions:

  • The dashboard is built from scratch via the API (testWithAssets fixture) rather than relying on a seeded example, so the test is hermetic, self-cleaning, and deterministic.
  • It asserts terminal output for every visualization (big-number text, table rows, and time-series pixels in the configured series color).
  • It records each chart's real POST /api/v1/chart/data response and accepts 200 or 202; 202 is valid when asynchronous queries are enabled.
  • Adds reusable buildSingleRowDashboardLayout() and DashboardPage.getChart() helpers, and replaces duplicated inline layout fixtures in related Playwright specs.

TESTING INSTRUCTIONS

cd superset-frontend
PLAYWRIGHT_BASE_URL=http://localhost:8088 npx playwright test --project=chromium dashboard/dashboard-load.spec.ts

ADDITIONAL INFORMATION

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

@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.39%. Comparing base (ab8e23d) to head (c44f4ad).
⚠️ Report is 11 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #41432      +/-   ##
==========================================
+ Coverage   65.15%   65.39%   +0.24%     
==========================================
  Files        2789     2754      -35     
  Lines      157546   154213    -3333     
  Branches    35864    35403     -461     
==========================================
- Hits       102648   100849    -1799     
+ Misses      52929    51455    -1474     
+ Partials     1969     1909      -60     
Flag Coverage Δ
javascript 71.06% <ø> (-0.01%) ⬇️

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.

@netlify

netlify Bot commented Jul 1, 2026

Copy link
Copy Markdown

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 0e8200c
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a5fe9fb1eab4400081029fc
😎 Deploy Preview https://deploy-preview-41432--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.

@sadpandajoe
sadpandajoe force-pushed the dashboard-pw-load-modes branch 2 times, most recently from c4d54af to af20b73 Compare July 7, 2026 14:11
sadpandajoe and others added 4 commits July 14, 2026 14:15
Migrates the genuine end-to-end case from the legacy Cypress "Dashboard
load" suite. Builds a multi-chart dashboard via the API, loads it, and
asserts every chart renders by issuing real /api/v1/chart/data queries
that all return 200.

The remaining legacy cases (edit/standalone URL-param rendering,
send-log-data) only assert DOM/URL state with no backend round-trip and
are better served by component/RTL coverage, so they are not migrated here.

Adds DashboardPage.waitForAllChartsRendered(), which derives the chart set
from the dashboard and waits on each chart's render marker (the same signal
the legacy Cypress waitForChartLoad relied on).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the local findDatasetIdByName(page: any) with the existing typed
getDatasetByName(page: Page) helper, which routes through the retry-wrapped
apiGet path and avoids a new any. Addresses review feedback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Use typed apiPostChart/apiPutChart instead of raw apiPost/apiPut
- Collapse the special-cased chart-association loop into one loop
- Guard chart id (result?.id ?? id) and the data-test-chart-id
  attribute against undefined for a clear failure instead of a
  #chart-id-undefined timeout
- Match meta.sliceName to each chart's real slice_name
- Parallel-safe chart/dashboard names via Date.now()_parallelIndex

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… in load spec

Address round-2 review feedback on the dashboard-load Playwright migration:

- Render proof: wait on each expected `#chart-id-<id>` (the ChartRenderer
  render marker) instead of snapshotting holder count after the first holder
  attaches. A chart that never renders now times out and fails the test
  rather than passing on a partial count.
- Query proof: collect chart-data POSTs keyed by the slice_id encoded in the
  `form_data` query param, then assert every expected chart issued a 200 —
  not just that one chart-data request succeeded.
- Reuse `extractIdFromResponse` for both chart and dashboard creation instead
  of re-implementing the `result?.id ?? id` normalization twice.
- Extract the ROOT/GRID/ROW/CHART position_json scaffold into a typed
  `buildDashboardPositionJson` helper in dashboard-test-helpers.ts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sadpandajoe
sadpandajoe force-pushed the dashboard-pw-load-modes branch from 4062c95 to e9e489b Compare July 14, 2026 14:22
sadpandajoe and others added 3 commits July 14, 2026 22:28
Address review feedback on the dashboard load spec:

- Replace the #chart-id-<id> visibility wait, which false-passes when a
  plugin fails to load (SuperChartCore emits the id container up front and
  mounts the viz lazily inside it) and false-fails valid no-results charts
  (SuperChart renders EmptyState as a fragment that never receives the id).
  DashboardPage.getChartRenderState now resolves rendered/no-results/failed
  from each outcome's actual markup, ruling out the failed and empty markers
  before testing #chart-id-<id> for content — EmptyState's svg is inlined by
  @svgr/webpack, so an empty chart would otherwise read as rendered. The
  check is viz-type agnostic: big_number_total paints text, not a canvas.

- Accept 200 or 202 for /api/v1/chart/data: with GLOBAL_ASYNC_QUERIES a
  cold-cache query legitimately returns 202 and delivers its result out of
  band, so the render assertion is what proves the data arrived.

- Keep the single-row position_json builder local to the spec and make it
  throw on grid overflow instead of hoisting a parallel layout helper;
  restores dashboard-test-helpers.ts to its prior state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sadpandajoe
sadpandajoe marked this pull request as ready for review July 21, 2026 23:35
@dosubot dosubot Bot added the dashboard Namespace | Anything related to the Dashboard label Jul 21, 2026
Comment on lines +100 to +120
const chartKeys = charts.map(chart => `CHART-${chart.id}`);
const positionJson: DashboardPositionJson = {
...emptyLayout,
[DASHBOARD_GRID_ID]: {
...emptyLayout[DASHBOARD_GRID_ID],
children: [DASHBOARD_ROW_ID],
},
[DASHBOARD_ROW_ID]: {
type: ROW_TYPE,
id: DASHBOARD_ROW_ID,
children: chartKeys,
parents: [DASHBOARD_ROOT_ID, DASHBOARD_GRID_ID],
meta: { background: BACKGROUND_TRANSPARENT },
},
};

charts.forEach(chart => {
const chartKey = `CHART-${chart.id}`;
positionJson[chartKey] = {
type: CHART_TYPE,
id: chartKey,

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.

Suggestion: The layout component key is derived only from the chart ID, so passing the same chart more than once creates duplicate children entries pointing to a single object key that gets overwritten; this produces an inconsistent layout and prevents rendering duplicated chart instances. Generate a unique component ID per placement (for example by index or nonce) while keeping meta.chartId as the actual chart reference. [logic error]

Severity Level: Major ⚠️
- ⚠️ Playwright-created dashboards cannot reuse same chart multiple times.
- ⚠️ Duplicate chart placements share layout config, losing per-instance sizing.
- ⚠️ Future tests using repeated charts see unexpected rendering behavior.
Steps of Reproduction ✅
1. In `superset-frontend/playwright/helpers/api/dashboard.ts:85-133`, call
`buildSingleRowDashboardLayout()` with a `charts` array that includes the same
`DashboardLayoutChart.id` value more than once (e.g., two entries both with `id: 42` but
different `width`).

2. At line 100, `const chartKeys = charts.map(chart => `CHART-${chart.id}`);` produces
duplicate keys, e.g. `["CHART-42", "CHART-42"]`, which are then assigned as the `children`
of `DASHBOARD_ROW_ID` at lines 101-114.

3. In the `charts.forEach` loop at lines 116-130, both placements use the same `chartKey`
(`"CHART-42"`), so `positionJson[chartKey]` is assigned twice, and the first placement’s
layout meta (including `width`, `height`, or `sliceName`) is overwritten by the last.

4. Any caller that uses this `positionJson` as a dashboard `position_json` payload (e.g.,
via `apiPostDashboard` starting at line 141 in the same file) cannot represent multiple
distinct placements of the same chart: all repeated children reference a single layout
node, so per-instance configuration is lost and repeated charts cannot be modeled
correctly.

Fix in Cursor Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset-frontend/playwright/helpers/api/dashboard.ts
**Line:** 100:120
**Comment:**
	*Logic Error: The layout component key is derived only from the chart ID, so passing the same chart more than once creates duplicate `children` entries pointing to a single object key that gets overwritten; this produces an inconsistent layout and prevents rendering duplicated chart instances. Generate a unique component ID per placement (for example by index or nonce) while keeping `meta.chartId` as the actual chart reference.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

@bito-code-review

Copy link
Copy Markdown
Contributor

The flagged issue is correct. Because chartKeys and chartKey are derived solely from chart.id, using the same chart ID multiple times results in duplicate keys, causing subsequent placements to overwrite previous ones in the positionJson object.

To resolve this, you should generate a unique key for each placement by incorporating the index. Here is the corrected implementation for the buildSingleRowDashboardLayout function:

  const chartKeys = charts.map((chart, index) => `CHART-${chart.id}-${index}`);
  const positionJson: DashboardPositionJson = {
    ...emptyLayout,
    [DASHBOARD_GRID_ID]: {
      ...emptyLayout[DASHBOARD_GRID_ID],
      children: [DASHBOARD_ROW_ID],
    },
    [DASHBOARD_ROW_ID]: {
      type: ROW_TYPE,
      id: DASHBOARD_ROW_ID,
      children: chartKeys,
      parents: [DASHBOARD_ROOT_ID, DASHBOARD_GRID_ID],
      meta: { background: BACKGROUND_TRANSPARENT },
    },
  };

  charts.forEach((chart, index) => {
    const chartKey = `CHART-${chart.id}-${index}`;
    positionJson[chartKey] = {
      type: CHART_TYPE,
      id: chartKey,
      children: [],
      parents: [DASHBOARD_ROOT_ID, DASHBOARD_GRID_ID, DASHBOARD_ROW_ID],
      meta: {
        chartId: chart.id,
        width: chart.width ?? GRID_DEFAULT_CHART_WIDTH,
        height: chart.height ?? DEFAULT_CHART_HEIGHT,
        sliceName: chart.sliceName,
      },
    };
  });

Would you like me to check the rest of the comments on this PR and implement fixes for them as well?

superset-frontend/playwright/helpers/api/dashboard.ts

const chartKeys = charts.map((chart, index) => `CHART-${chart.id}-${index}`);
  const positionJson: DashboardPositionJson = {
    ...emptyLayout,
    [DASHBOARD_GRID_ID]: {
      ...emptyLayout[DASHBOARD_GRID_ID],
      children: [DASHBOARD_ROW_ID],
    },
    [DASHBOARD_ROW_ID]: {
      type: ROW_TYPE,
      id: DASHBOARD_ROW_ID,
      children: chartKeys,
      parents: [DASHBOARD_ROOT_ID, DASHBOARD_GRID_ID],
      meta: { background: BACKGROUND_TRANSPARENT },
    },
  };

  charts.forEach((chart, index) => {
    const chartKey = `CHART-${chart.id}-${index}`;
    positionJson[chartKey] = {
      type: CHART_TYPE,
      id: chartKey,
      children: [],
      parents: [DASHBOARD_ROOT_ID, DASHBOARD_GRID_ID, DASHBOARD_ROW_ID],
      meta: {
        chartId: chart.id,
        width: chart.width ?? GRID_DEFAULT_CHART_WIDTH,
        height: chart.height ?? DEFAULT_CHART_HEIGHT,
        sliceName: chart.sliceName,
      },
    };
  });

@bito-code-review

bito-code-review Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #4cfc77

Actionable Suggestions - 0
Review Details
  • Files reviewed - 8 · Commit Range: 0f052f3..07f6cba
    • superset-frontend/playwright/helpers/api/dashboard.ts
    • superset-frontend/playwright/pages/DashboardPage.ts
    • superset-frontend/playwright/tests/dashboard/clear-all-filters.spec.ts
    • superset-frontend/playwright/tests/dashboard/dashboard-load.spec.ts
    • superset-frontend/playwright/tests/dashboard/delete-display-control.spec.ts
    • superset-frontend/playwright/tests/dashboard/gauge-interval-colors.spec.ts
    • superset-frontend/playwright/tests/dashboard/mixed-chart-dashboard-filters.spec.ts
    • superset-frontend/playwright/tests/embedded/pivot-collapse-state.spec.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

@bito-code-review

bito-code-review Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #2d67f4

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: 07f6cba..c44f4ad
    • superset-frontend/playwright/tests/dashboard/dashboard-load.spec.ts
  • 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 rusackas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks @sadpandajoe, LGTM. Nice to see those hand-rolled position_json blobs collapse into one shared helper.

There's a Codeant thread above to assess/address/resolve if you don't mind. Leaving the merge to you whenever you're ready :)

@sadpandajoe
sadpandajoe merged commit 49b4243 into master Jul 22, 2026
70 checks passed
@sadpandajoe
sadpandajoe deleted the dashboard-pw-load-modes branch July 22, 2026 17:32
msyavuz pushed a commit to msyavuz/superset that referenced this pull request Jul 24, 2026
…che#41432)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
niteshpurohit added a commit to HiMamaInc/superset that referenced this pull request Jul 24, 2026
* refactor(mcp): dedupe list-tool schemas and delete dead middleware (apache#41923)

* fix(ag-grid-table): respect row limit with server pagination (apache#41346)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* feat(table/pivot-table): correct non-additive totals/subtotals via DB rollup [SIP-216] (apache#41184)

Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>

* feat(datasets): add RLS filter indicator badge to dataset list and explore view (apache#38807)

Co-authored-by: Evan <evan@preset.io>

* fix(chart): updates counties of kenya map (apache#38019)

Co-authored-by: Zack Adams <zack@Zacks-Laptop.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Evan Rusackas <evan@rusackas.com>

* chore(deps): bump actions/setup-go from 6.5.0 to 7.0.0 (apache#42303)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump nanoid from 5.0.9 to 6.0.0 in /superset-frontend (apache#42230)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan <evan@preset.io>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

* test(dashboard): migrate dashboard load smoke test to Playwright (apache#41432)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(superset_app_root): when used with oauth (apache#38033)

Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* refactor: engine enforce SQLAlchemy 2.0 (apache#42277)

* fix(ag-grid-table): avoid ambiguous build query import (apache#42313)

* fix: Revert "chore(deps): bump echarts from 5.6.0 to 6.1.0 in /superset-frontend" (apache#42314)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* adding circleci config

* fix(plugin-chart-echarts): import the -obj locale build so time axes render (apache#42317)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* fix(pandas_postprocessing): avoid FutureWarning for max/min in boxplot MINMAX (apache#42272)

* fix(heatmap): correct tooltip axis value lookup and percentage calculations and add tests (apache#41864)

Signed-off-by: yousoph <sophieyou12@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(forecast): resolve time grain robustly for Prophet forecasting (apache#42145)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* fix: Added PostgreSQL 17.X to the supported database versions table in (apache#42280)

* fix(helm): add MCP HTTPRoute configuration (apache#42219)

* fix(dashboard): offer Exit edit mode when there is nothing to discard (apache#42208)

Co-authored-by: Claude Code <noreply@anthropic.com>

* chore(deps): bump actions/labeler from 6.2.0 to 7.0.0 (apache#42332)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github/codeql-action/analyze from 4.37.0 to 4.37.1 (apache#42331)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump github/codeql-action/init from 4.37.0 to 4.37.1 (apache#42334)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @formatjs/intl-durationformat from 0.10.17 to 0.10.18 in /superset-frontend (apache#42337)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump caniuse-lite from 1.0.30001805 to 1.0.30001806 in /docs (apache#42333)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump echarts to 6.1.0 with locale and containLabel guards (apache#42315) (apache#42321)

Co-authored-by: Claude Code <noreply@anthropic.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>

* docs: add pattern to the list of organisations using superset (apache#42341)

* chore(deps): bump ag-grid from 36.0.0 to 36.0.1 in /superset-frontend (apache#42338)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>

* fix(mcp): trust dataset is_dttm flag when applying time_grain to VARCHAR temporal columns (apache#42288)

* chore(deps-dev): update taos-ws-py requirement from >=0.6.9 to >=0.7.0 (apache#42344)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump the storybook group in /superset-frontend with 5 updates (apache#42355)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(native-filters): keep filter value input caret at inline start (apache#42323)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* fix(mcp): truncate query-tool responses instead of hard-failing (apache#42244)

* chore(deps): bump nh3 from 0.3.5 to 0.3.6 (apache#42349)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>

* chore(deps): bump pydantic from 2.11.7 to 2.13.4 (apache#42350)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>

* chore(deps): bump sqlalchemy-continuum from 1.6.0 to 1.7.0 (apache#42351)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>

* fix(embedded): stop rejecting guest chart data built from control-specific params keys (apache#42295)

Co-authored-by: Claude Code <noreply@anthropic.com>

* fix(explore): show the beginning date on time-series x-axis line charts (apache#42046)

* fix(api): add example to get_export_ids_schema so Swagger "Try it out" pre-fills a valid array (apache#42265)

* chore: SQLAlchemy User cascade backref warnings are irrelevant (apache#42360)

* fix(charts): handle async (202) chart-data responses in StatefulChart (apache#42157)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Evan Rusackas <evan@preset.io>

* feat(KustoKQL): Add support for NULL / IS NOT NULL operator (apache#37890)

Co-authored-by: ag-ramachandran <ramacg@microsoft.com>
Co-authored-by: Joe Li <joe@preset.io>

* chore(deps): bump pillow from 12.2.0 to 12.3.0 (apache#42348)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>

* chore(deps): bump flask-compress from 1.17 to 1.24 (apache#42346)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>

* chore(deps-dev): bump databricks-sql-connector from 4.2.6 to 4.3.0 (apache#42347)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Evan Rusackas <evan@preset.io>

* fix(native-filters): use FILTER_STATE_CACHE_CONFIG timeout for dynamic filter option queries (apache#38910)

* fix(explore): render Jinja before validating legacy chart filters (apache#41996)

* fix(dataset): disable duplicate button when name is empty (apache#42217)

Co-authored-by: AS-MAC-1123 <as-mac-1123@AS-MAC-1123.local>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* docs(gunicorn): correct dead links in values.yaml (apache#42385)

* chore(deps): bump @deck.gl/mapbox from 9.3.6 to 9.3.7 in /superset-frontend in the deckgl group (apache#42377)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 (apache#42376)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump immer from 11.1.11 to 11.1.15 in /superset-frontend (apache#42378)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs (apache#42370)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump brace-expansion from 1.1.15 to 1.1.16 in /superset-embedded-sdk (apache#42369)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(security): bump pyasn1 from 0.6.3 to 0.6.4 (apache#42363)

* fix(security): bump pillow from 12.2.0 to 12.3.0 (apache#42362)

* docs(map-tiles): add Yandex Maps Tiles API configuration (apache#42375)

* ci: improve conditional checks for lillio tests and build

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: hainenber <dotronghai96@gmail.com>
Signed-off-by: Grégoire Bellon-Gervais <gregoire.bellon-gervais@docaposte.fr>
Signed-off-by: yousoph <sophieyou12@gmail.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Superset Dev <dev@superset.apache.org>
Co-authored-by: SkinnyPigeon <e.blackledge@stuart.com>
Co-authored-by: Zack <adams.z.d@gmail.com>
Co-authored-by: Zack Adams <zack@Zacks-Laptop.local>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
Co-authored-by: Grégoire <greggbg@gmail.com>
Co-authored-by: Hans Yu <hans.yu@outlook.de>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: yousoph <sophieyou12@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Amitesh Gupta <143833521+singlaamitesh@users.noreply.github.com>
Co-authored-by: David <39565245+dmunozv04@users.noreply.github.com>
Co-authored-by: Yash Shrivastava <119301033+alephys26@users.noreply.github.com>
Co-authored-by: JUST.in DO IT <justin.park@airbnb.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: jesperct <jmilecelento@gmail.com>
Co-authored-by: Abdul Rehman <76230556+Abdulrehman-PIAIC80387@users.noreply.github.com>
Co-authored-by: jenwitteng <jenwit.amonpongitsara@agoda.com>
Co-authored-by: Ramachandran A G <106139410+ag-ramachandran@users.noreply.github.com>
Co-authored-by: ag-ramachandran <ramacg@microsoft.com>
Co-authored-by: Ujjwal Jain <jainujjwal1609@gmail.com>
Co-authored-by: Jean Massucatto <massucattoj@gmail.com>
Co-authored-by: suvankardas216 <rohanrohan510@gmail.com>
Co-authored-by: AS-MAC-1123 <as-mac-1123@AS-MAC-1123.local>
Co-authored-by: Alejandro Solares <219859296+ASolarers-Rodriguez@users.noreply.github.com>
Co-authored-by: ViktorGo86 <114023094+ViktorGo86@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dashboard Namespace | Anything related to the Dashboard size/XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants