Commit Graph

5 Commits

Author SHA1 Message Date
Joe Li
6e3b668735 fix(embedded-e2e): address round-2 review findings
- Gate chromium-embedded project on INCLUDE_EMBEDDED env var; set only in
  superset-playwright.yml (shadow mode) so it never runs in required E2E
- Add embedded test step to experimental workflow alongside experimental step
- Remove SUPERSET_FEATURE_EMBEDDED_SUPERSET from required workflow (no longer needed)
- Remove dead CORS_OPTIONS from superset_test_config (helpers bypass CORS via page.request)
- Log teardown errors in afterAll instead of swallowing with bare catch {}
- Wrap allowed_domains restore in its own try/catch so it can't mask assertion failures
- Gate TALISMAN_ENABLED + PUBLIC_ROLE_LIKE in docker_light behind SUPERSET_FEATURE_EMBEDDED_SUPERSET
- Add failOnStatusCode:true to guest_token request so silent 4xx surfaces immediately
- Remove dead window.__guestToken fallback branch from embedded test app

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:10:30 -07:00
Joe Li
12d2d67a65 fix(embedded-e2e): strengthen assertion signal-to-noise from review
Address /review-code findings — the previous round's hardening fixed
flake but a few assertions still gave weak signals:

- The chart-rendered selector matched a still-loading chart cell, since
  Superset's `Loading` spinner itself renders an SVG. Exclude the spinner
  via `:not(:has([data-test="loading-indicator"]))` and centralize the
  selector as `EmbeddedPage.RENDERED_CHART_SELECTOR`.
- The "dashboard renders" test only proved iframe/header chrome, not the
  dashboard. Add `waitForChartRendered()` so the test name matches what
  it asserts.
- The `hideTitle` test passed for the wrong reason if the locator
  drifted (`toBeHidden()` succeeds for absent elements). Add an explicit
  `toHaveCount(0)` so the contrast against the baseline visibility check
  in test 1 is load-bearing.
- `tokenCallCount` was a `>=1` check that any rendered dashboard would
  satisfy. Tighten to `=== 1` to actually exercise the SDK's caching
  contract.
- Drop the redundant `appUrl` shadow of `appServer.url`.
- Move `import os` to module top in the docker-light config; document
  the strict `"true"`-only env-var truthiness convention.

Pre-commit clean (type-check, prettier, oxlint, ruff, mypy). Local
re-verification blocked by an unrelated worktree env issue (semantic
layers feature has incomplete state — the docker-compose-light stack
doesn't bind-mount superset-core/, so the image's stale copy lacks the
new submodule); CI on the chromium-embedded project will validate.
Changes are strictly stronger assertions and refactors so they cannot
turn a previously-passing test into a false positive.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:10:30 -07:00
Joe Li
1b0f106d08 feat(docker-light): enable embedded-dashboard support in local stack
Three additions to the lightweight local config so the embedded-dashboard
flow works against docker-compose-light without manually patching state:

- Read SUPERSET_FEATURE_<NAME> env vars into FEATURE_FLAGS so a docker
  .env-local can toggle features without editing tracked config.
- Disable Talisman so /embedded/<uuid> doesn't serve X-Frame-Options:
  SAMEORIGIN, which otherwise blocks cross-origin iframe embedding.
- Mirror Public to Gamma via PUBLIC_ROLE_LIKE so guest tokens can hit
  /api/v1/me/roles/ (CI does this implicitly via load_test_users; the
  light stack does not).

Required for the chromium-embedded Playwright project to run locally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:10:30 -07:00
Michael S. Molina
b12f5f8394 fix: CI failures caused by a ruff version mismatch (#36358) 2025-12-01 15:35:22 -05:00
Maxime Beauchemin
604d72cc98 feat: introducing a docker-compose-light.yml for lighter development (#34324) 2025-07-28 09:27:07 -07:00