Skip to content

feat(Reports&Alerts): remove Selenium support, require Playwright - #43028

Merged
villebro merged 13 commits into
apache:masterfrom
madhushreeag:feat-remove-selenium
Aug 11, 2026
Merged

villebro merged 13 commits into
apache:masterfrom
madhushreeag:feat-remove-selenium

Conversation

@madhushreeag

@madhushreeag madhushreeag commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

SUMMARY

Removes all Selenium support from Superset's screenshot, thumbnail, and report pipeline. Playwright is now the sole WebDriver backend.

Why

Selenium has no official support for arm64 (Apple Silicon, AWS Graviton, etc.) which is an increasingly common deployment target. Playwright provides arm64 support.

The codebase has been incrementally migrating toward Playwright via the PLAYWRIGHT_REPORTS_AND_THUMBNAILS feature flag. That migration is complete. This PR removes the old Selenium code path entirely, eliminating a dual-code maintenance burden and enabling Playwright's superior WebGL/DeckGL screenshot support unconditionally.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

N/A — internal infrastructure change, no UI impact.

TESTING INSTRUCTIONS

  1. Install Playwright: pip install playwright && playwright install chromium
  2. Start Celery worker: celery --app=superset.tasks.celery_app:app worker --pool=solo
  3. Create an Alert or Report targeting a dashboard
  4. Click Run — execution should succeed, screenshot captured via Playwright, notification delivered
  5. Confirm old config keys (WEBDRIVER_TYPE, SCREENSHOT_SELENIUM_RETRIES) are no longer referenced and cause no errors if left in a local config

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

@dosubot dosubot Bot added alert-reports Namespace | Anything related to the Alert & Reports feature risk:breaking-change Issues or PRs that will introduce breaking changes labels Aug 10, 2026
@bito-code-review

bito-code-review Bot commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #8decf2

Actionable Suggestions - 0
Additional Suggestions - 4
  • superset/utils/webdriver.py - 1
    • Behavior change: None return to RuntimeError · Line 518-522
      `get_screenshot` behavior changed: when Playwright is unavailable, it previously returned `None` (graceful degradation) but now raises `RuntimeError`. Callers in `screenshots.py` catch all exceptions via `except Exception` so they handle this, but any direct callers outside that pattern would break.
  • superset/mcp_service/screenshot/webdriver_pool.py - 1
    • Duplicate docstring content · Line 19-25
      The module docstring (lines 19-25) and WebDriverPool class docstring (lines 35-38) contain overlapping information about Playwright managing browser lifecycle. Consider consolidating to avoid docstring duplication.
  • superset/utils/screenshots.py - 1
    • Dead parameters in driver() method · Line 205-212
      `driver()` accepts `user` and `log_context` parameters but ignores them. The original implementation used `app.config["WEBDRIVER_TYPE"]` and passed `user` to `WebDriverSelenium`. The new code passes an empty string `""` for driver_type. These parameters should be documented or removed to avoid misleading callers.
  • tests/integration_tests/utils/machine_auth_tests.py - 1
    • Tests removed with method deprecation · Line 30-56
      The removed tests (`test_auth_driver_user`, `test_auth_driver_request`) tested the now-removed `authenticate_webdriver()` method (documented removal in `UPDATING.md:47`). The new `authenticate_browser_context()` method uses `playwright.sync_api.BrowserContext` instead of webdriver. Consider adding new tests to cover the browser context authentication flow.
Filtered by Review Rules

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

  • tests/unit_tests/utils/test_playwright_migration_working.py - 2
    • Assertion contradicts production behavior · Line 76-80
    • Missing type annotations on test methods and mock variables · Line 35-37
  • superset/utils/webdriver.py - 1
Review Details
  • Files reviewed - 16 · Commit Range: b80bec0..b80bec0
    • pyproject.toml
    • requirements/base.txt
    • requirements/development.txt
    • superset/config.py
    • superset/mcp_service/screenshot/pooled_screenshot.py
    • superset/mcp_service/screenshot/webdriver_pool.py
    • superset/tasks/cache.py
    • superset/utils/machine_auth.py
    • superset/utils/screenshots.py
    • superset/utils/webdriver.py
    • tests/integration_tests/thumbnails_tests.py
    • tests/integration_tests/utils/machine_auth_tests.py
    • tests/unit_tests/tasks/test_cache.py
    • tests/unit_tests/utils/screenshot_test.py
    • tests/unit_tests/utils/test_playwright_migration_working.py
    • tests/unit_tests/utils/webdriver_test.py
  • Files skipped - 2
    • UPDATING.md - Reason: Filter setting
    • docs/static/feature-flags.json - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ 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

@github-actions github-actions Bot added the doc Namespace | Anything related to documentation label Aug 10, 2026
@netlify

netlify Bot commented Aug 10, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit bd47178
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a7aab9b1a89e50008541965
😎 Deploy Preview https://deploy-preview-43028--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 Aug 10, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 15.38462% with 22 lines in your changes missing coverage. Please review.
✅ Project coverage is 66.77%. Comparing base (34b2d3a) to head (304da02).
⚠️ Report is 37 commits behind head on master.

Files with missing lines Patch % Lines
superset/tasks/cache.py 12.50% 14 Missing ⚠️
superset/utils/webdriver.py 16.66% 5 Missing ⚠️
superset/utils/screenshots.py 25.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #43028      +/-   ##
==========================================
+ Coverage   66.55%   66.77%   +0.22%     
==========================================
  Files        2864     2862       -2     
  Lines      161891   161614     -277     
  Branches    37304    37278      -26     
==========================================
+ Hits       107743   107919     +176     
+ Misses      52102    51652     -450     
+ Partials     2046     2043       -3     
Flag Coverage Δ
hive 38.44% <15.38%> (+0.28%) ⬆️
mysql 58.10% <15.38%> (+0.42%) ⬆️
postgres 58.14% <15.38%> (+0.40%) ⬆️
presto 40.42% <15.38%> (+0.30%) ⬆️
python 59.55% <15.38%> (+0.42%) ⬆️
sqlite 57.76% <15.38%> (+0.40%) ⬆️
unit 100.00% <ø> (ø)

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.

@villebro
villebro self-requested a review August 10, 2026 23:25
@villebro villebro self-assigned this Aug 10, 2026
@villebro villebro moved this to Work in Progress in Apache Superset 7.0 Aug 10, 2026
@rusackas

rusackas commented Aug 11, 2026 •

Copy link
Copy Markdown
Member

Can you fill out the PR description please, when you have a chance? Thanks for the PR, and happy to see this go!

@madhushreeag madhushreeag changed the title feat(Reports&Alerts):remove Selenium support, require Playwright feat(Reports&Alerts): remove Selenium support, require Playwright Aug 11, 2026
@bito-code-review

bito-code-review Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #ecced6

Actionable Suggestions - 0
Additional Suggestions - 4
  • superset/mcp_service/screenshot/pooled_screenshot.py - 1
    • Semantic duplication with ChartScreenshot constructor · Line 61-84
      PooledChartScreenshot (lines 61-84) and ChartScreenshot (screenshots.py lines 432-446) implement nearly identical constructors: same url modification with ChartStandaloneMode.HIDE_NAV, same window_size default (800, 600). This semantic duplication creates divergence risk.
  • superset/utils/screenshots.py - 2
    • WebDriverSelenium class may be dead code · Line 28-57
      The diff removes WebDriverSelenium from the screenshot workflow. Verify if the WebDriverSelenium class definition itself is now dead code that should be removed, or if it's still used elsewhere in the codebase.
    • Empty driver_type passed to Playwright · Line 210-210
      The `driver_type` property was removed but empty string `''` is passed to `WebDriverPlaywright`. Verify this is intentional — if `_driver_type` is truly unused in the Playwright path, passing an empty string is safe but should be documented.
  • tests/unit_tests/utils/webdriver_test.py - 1
    • Test assertion mismatch · Line 115-121
      Test `test_check_playwright_availability_ignores_runtime_errors` has misleading comment 'Even if the mock raises' but mock is not configured to raise. Since the implementation at line 83 only checks `sync_playwright is not None` (no function invocation), this test passes vacuously without validating the stated error-handling behavior.
Filtered by Review Rules

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

  • tests/unit_tests/utils/webdriver_test.py - 5
  • superset/tasks/cache.py - 1
  • tests/unit_tests/mcp_service/test_pooled_screenshot.py - 1
  • superset/mcp_service/screenshot/pooled_screenshot.py - 1
  • tests/unit_tests/utils/test_playwright_migration_working.py - 1
    • Semantic inconsistency in unavailable path · Line 35-86
Review Details
  • Files reviewed - 17 · Commit Range: a941b24..b49ee64
    • pyproject.toml
    • requirements/base.txt
    • requirements/development.txt
    • superset/config.py
    • superset/mcp_service/screenshot/pooled_screenshot.py
    • superset/mcp_service/screenshot/webdriver_pool.py
    • superset/tasks/cache.py
    • superset/utils/machine_auth.py
    • superset/utils/screenshots.py
    • superset/utils/webdriver.py
    • tests/integration_tests/thumbnails_tests.py
    • tests/integration_tests/utils/machine_auth_tests.py
    • tests/unit_tests/mcp_service/test_pooled_screenshot.py
    • tests/unit_tests/tasks/test_cache.py
    • tests/unit_tests/utils/screenshot_test.py
    • tests/unit_tests/utils/test_playwright_migration_working.py
    • tests/unit_tests/utils/webdriver_test.py
  • Files skipped - 2
    • UPDATING.md - Reason: Filter setting
    • docs/static/feature-flags.json - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ 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

Comment thread tests/unit_tests/mcp_service/test_pooled_screenshot.py Outdated
@madhushreeag

Copy link
Copy Markdown
Contributor Author

Code Review Agent Run #ecced6

Actionable Suggestions - 0
Additional Suggestions - 4

  • superset/mcp_service/screenshot/pooled_screenshot.py - 1

    • Semantic duplication with ChartScreenshot constructor · Line 61-84
      PooledChartScreenshot (lines 61-84) and ChartScreenshot (screenshots.py lines 432-446) implement nearly identical constructors: same url modification with ChartStandaloneMode.HIDE_NAV, same window_size default (800, 600). This semantic duplication creates divergence risk.
  • superset/utils/screenshots.py - 2

    • WebDriverSelenium class may be dead code · Line 28-57
      The diff removes WebDriverSelenium from the screenshot workflow. Verify if the WebDriverSelenium class definition itself is now dead code that should be removed, or if it's still used elsewhere in the codebase.
    • Empty driver_type passed to Playwright · Line 210-210
      The driver_type property was removed but empty string '' is passed to WebDriverPlaywright. Verify this is intentional — if _driver_type is truly unused in the Playwright path, passing an empty string is safe but should be documented.
  • tests/unit_tests/utils/webdriver_test.py - 1

    • Test assertion mismatch · Line 115-121
      Test test_check_playwright_availability_ignores_runtime_errors has misleading comment 'Even if the mock raises' but mock is not configured to raise. Since the implementation at line 83 only checks sync_playwright is not None (no function invocation), this test passes vacuously without validating the stated error-handling behavior.

Filtered by Review Rules
Review Details
Bito Usage Guide
AI Code Review powered by Bito Logo

WebDriverSelenium dead code suggestion is a false alarm, we deleted that class in this PR
Addressed the other suggestions.

@bito-code-review

Copy link
Copy Markdown
Contributor

The flagged issue is correct. The test currently mocks the super lookup to force an error, which bypasses the actual PLAYWRIGHT_AVAILABLE check in PooledBaseScreenshot. To properly test this, you should patch the availability state itself (e.g., by mocking the module-level constant or the configuration check) to ensure the code path that handles missing Playwright is actually exercised.

Would you like me to fetch all other comments on this PR to validate and implement fixes for them as well?

Comment thread superset/tasks/cache.py Outdated
Comment thread superset/utils/webdriver.py
@madhushreeag

Copy link
Copy Markdown
Contributor Author

The flagged issue is correct. The test currently mocks the super lookup to force an error, which bypasses the actual PLAYWRIGHT_AVAILABLE check in PooledBaseScreenshot. To properly test this, you should patch the availability state itself (e.g., by mocking the module-level constant or the configuration check) to ensure the code path that handles missing Playwright is actually exercised.

Would you like me to fetch all other comments on this PR to validate and implement fixes for them as well?

the super patch was replaced with @patch("superset.utils.webdriver.PLAYWRIGHT_AVAILABLE", False) so the test now exercises the real availability check in WebDriverPlaywright.get_screenshot()

@madhushreeag

Copy link
Copy Markdown
Contributor Author

/review

@bito-code-review

bito-code-review Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #a7eb20

Actionable Suggestions - 0
Additional Suggestions - 5
  • superset/tasks/cache.py - 1
    • Unreachable dead code · Line 427-427
      Dead code: line 427 is an unreachable `return results` after the function already returned on line 425. No code path can reach it.
  • superset/mcp_service/screenshot/webdriver_pool.py - 1
    • Unused import/dead code · Line 30-30
      The `logger` variable on line 30 is defined but never referenced in the current stub implementation. This dead code should be removed to avoid maintenance confusion.
  • tests/unit_tests/utils/screenshot_test.py - 1
    • Inconsistent docstring after import removal · Line 26-31
      The import statement removed `DashboardScreenshot` from the import but the class docstring at line 314 still states `'Test ChartScreenshot and DashboardScreenshot inherit driver behavior.'` while only testing `ChartScreenshot`. Either restore the import or update the docstring to avoid misleading future maintainers.
  • tests/unit_tests/utils/webdriver_test.py - 1
    • Dead config keys in test mock dictionaries · Line 118-131
      The mock config dictionaries include `SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE` and `SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE` (22 total occurrences), which are now dead references — these keys are documented in UPDATING.md as Selenium-only and removed. Keeping them pollutes test configs with inactive values.
  • superset/config.py - 1
    • Contradictory comment · Line 2594-2595
      Comment at line 2595 states "'--headless' is typically not needed for Playwright (headless is the default)" but the default value `WEBDRIVER_OPTION_ARGS = ["--headless"]` includes it. This contradiction misleads operators who may remove the flag unnecessarily.
Filtered by Review Rules

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

  • tests/unit_tests/utils/webdriver_test.py - 1
    • Stale Selenium tests referencing deleted code · Line 250-410
Review Details
  • Files reviewed - 17 · Commit Range: a941b24..71fb141
    • pyproject.toml
    • requirements/base.txt
    • requirements/development.txt
    • superset/config.py
    • superset/mcp_service/screenshot/pooled_screenshot.py
    • superset/mcp_service/screenshot/webdriver_pool.py
    • superset/tasks/cache.py
    • superset/utils/machine_auth.py
    • superset/utils/screenshots.py
    • superset/utils/webdriver.py
    • tests/integration_tests/thumbnails_tests.py
    • tests/integration_tests/utils/machine_auth_tests.py
    • tests/unit_tests/mcp_service/test_pooled_screenshot.py
    • tests/unit_tests/tasks/test_cache.py
    • tests/unit_tests/utils/screenshot_test.py
    • tests/unit_tests/utils/test_playwright_migration_working.py
    • tests/unit_tests/utils/webdriver_test.py
  • Files skipped - 2
    • UPDATING.md - Reason: Filter setting
    • docs/static/feature-flags.json - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ 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

@madhushreeag

Copy link
Copy Markdown
Contributor Author

Code Review Agent Run #a7eb20

Actionable Suggestions - 0
Additional Suggestions - 5
Filtered by Review Rules
Review Details
Bito Usage Guide
AI Code Review powered by Bito Logo

  1. Removed the duplicate return results on line 427.
  2. logger was never referenced in the stub implementation. Removed the import.
  3. Updated the docstring to reference only ChartScreenshot since DashboardScreenshot is no longer tested in that class.
  4. Removed SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE and SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE from all test mock config dictionaries. These are Selenium-only keys documented as removed in UPDATING.md and no longer referenced in production code.
  5. Removed "--headless" from the default value entirely since Playwright runs headless by default and passing it explicitly adds no value. WEBDRIVER_OPTION_ARGS now defaults to [].

@rusackas

Copy link
Copy Markdown
Member

Thanks for this! Happy to see it go :D

@villebro

Copy link
Copy Markdown
Member

@madhushreeag for the PR description we could also add a note that Selenium isn't supported on arm64, which is increasingly popular nowadays.

@villebro villebro 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.

First pass comments. Basically as we're now able to do breaking changes, we should remove any code that becomes dead/a stub after the removal.

Comment thread superset/mcp_service/screenshot/webdriver_pool.py Outdated
Comment thread superset/mcp_service/screenshot/webdriver_pool.py Outdated
@bito-code-review

bito-code-review Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Agent Run #91380b

Actionable Suggestions - 0
Additional Suggestions - 3
  • superset/tasks/cache.py - 1
    • Missing finally cleanup for browser resources · Line 330-347
      `_warmup_urls` lacks a `finally` cleanup for the browser context. If an uncaught exception escapes the `except` handler (e.g., `KeyboardInterrupt` or a non-`Exception` subclass thrown by `get_screenshot`), the `WebDriverPlaywright` context will not be closed, leaking browser resources in long-running Celery workers.
  • superset/mcp_service/screenshot/webdriver_pool.py - 1
    • Singleton behavior lost in migration · Line 39-41
      The new `get_webdriver_pool()` returns a fresh `WebDriverPool()` instance on every call, whereas the deleted implementation (lines 407-425) used double-checked locking to return a singleton. Callers expecting singleton identity (e.g., `pool1 is pool2`) will now get different objects.
  • tests/integration_tests/utils/machine_auth_tests.py - 1
    • Inline import should be module-level · Line 53-53
      Inline import on line 53 violates the rule that imports should be placed at module-level. Move `from superset.utils.machine_auth import MachineAuthProvider` to the top of the file.
Filtered by Review Rules

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

  • tests/unit_tests/tasks/test_cache.py - 2
    • Assertive mismatch with actual call signature · Line 104-104
    • Test regression: lost assertion on driver cleanup · Line 136-136
  • superset/utils/machine_auth.py - 1
    • Misleading param name post-Selenium removal · Line 45-45
Review Details
  • Files reviewed - 17 · Commit Range: a941b24..c1683bc
    • pyproject.toml
    • requirements/base.txt
    • requirements/development.txt
    • superset/config.py
    • superset/mcp_service/screenshot/pooled_screenshot.py
    • superset/mcp_service/screenshot/webdriver_pool.py
    • superset/tasks/cache.py
    • superset/utils/machine_auth.py
    • superset/utils/screenshots.py
    • superset/utils/webdriver.py
    • tests/integration_tests/thumbnails_tests.py
    • tests/integration_tests/utils/machine_auth_tests.py
    • tests/unit_tests/mcp_service/test_pooled_screenshot.py
    • tests/unit_tests/tasks/test_cache.py
    • tests/unit_tests/utils/screenshot_test.py
    • tests/unit_tests/utils/test_playwright_migration_working.py
    • tests/unit_tests/utils/webdriver_test.py
  • Files skipped - 2
    • UPDATING.md - Reason: Filter setting
    • docs/static/feature-flags.json - Reason: Filter setting
  • Tools
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ 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

@madhushreeag

Copy link
Copy Markdown
Contributor Author

Code Review Agent Run #91380b

Actionable Suggestions - 0
Additional Suggestions - 3
Filtered by Review Rules
Review Details
Bito Usage Guide
AI Code Review powered by Bito Logo

  1. Wrapped the URL loop in a try/finally that calls _browser_manager._cleanup() to release the Chromium process even if a BaseException (e.g. KeyboardInterrupt) escapes the inner except Exception handler.

  2. webdriver_pool.py has been deleted entirely as part of removing the Selenium stubs. The singleton concern is moot, Playwright uses _browser_manager which is already a module-level process-scoped singleton in webdriver.py, cleaned up via atexit.

  3. Moved from superset.utils.machine_auth import MachineAuthProvider to the top of the file and removed the inline import from inside test_authenticate_browser_context_uses_override.

@madhushreeag
madhushreeag requested a review from villebro August 11, 2026 22:35

@villebro villebro 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.

Awesome work, thanks @madhushreeag !
Image

@villebro
villebro merged commit bdf8ce6 into apache:master Aug 11, 2026
70 checks passed
@github-project-automation github-project-automation Bot moved this from Work in Progress to Lazy Consensus Reached in Apache Superset 7.0 Aug 11, 2026
@villebro villebro moved this from Lazy Consensus Reached to Work in Progress in Apache Superset 7.0 Aug 11, 2026
@villebro villebro moved this from Work in Progress to Completed in Apache Superset 7.0 Aug 11, 2026
@bito-code-review

Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped – PR Already Merged

Bito scheduled an automatic review for this pull request, but the review was skipped because this PR was merged before the review could be run.
No action is needed if you didn't intend to review it. To get a review, you can type /review in a comment and save it

sfirke added a commit to sfirke/superset that referenced this pull request Sep 15, 2026
Nothing has read SCREENSHOT_LOCATE_WAIT since Selenium support was removed
in apache#43028; Playwright element waits use SCREENSHOT_PLAYWRIGHT_DEFAULT_TIMEOUT
or the report execution deadline. Remove the key, the unused
_screenshot_locate_wait attribute, its test config entries and the docs
example that suggested tuning it.
rusackas pushed a commit to sfirke/superset that referenced this pull request Sep 29, 2026
Selenium support was removed in apache#43028, so Playwright with Chromium is
the only screenshot backend as of 7.0.0. Update the unversioned admin
and developer docs that still described Selenium, Firefox/geckodriver,
WEBDRIVER_TYPE, WEBDRIVER_CONFIGURATION and the removed
PLAYWRIGHT_REPORTS_AND_THUMBNAILS feature flag, and fix the
WEBDRIVER_AUTH_FUNC example to use a Playwright BrowserContext.
rusackas pushed a commit to sfirke/superset that referenced this pull request Sep 29, 2026
…nfig

Screenshots use only Playwright with Chromium since Selenium support was
removed in apache#43028, so the Firefox browser installed by the
INCLUDE_FIREFOX build arg is never used. Remove the arg from the
Dockerfile, both docker-compose files and the docs that describe it.

Also remove two settings nothing reads: EMAIL_PAGE_RENDER_WAIT, unused
since apache#19261, and ENABLE_PLAYWRIGHT in docker/.env, unused since
sfirke added a commit to sfirke/superset that referenced this pull request Oct 2, 2026
…nfig

Screenshots use only Playwright with Chromium since Selenium support was
removed in apache#43028, so the Firefox browser installed by the
INCLUDE_FIREFOX build arg is never used. Remove the arg from the
Dockerfile, both docker-compose files and the docs that describe it.

Also remove two settings nothing reads: EMAIL_PAGE_RENDER_WAIT, unused
since apache#19261, and ENABLE_PLAYWRIGHT in docker/.env, unused since
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

alert-reports Namespace | Anything related to the Alert & Reports feature doc Namespace | Anything related to documentation risk:breaking-change Issues or PRs that will introduce breaking changes size/XXL

Projects

Status: Completed

Development

Successfully merging this pull request may close these issues.

3 participants