mirror of
https://github.com/apache/superset.git
synced 2026-09-09 08:44:32 +00:00
feat(reports): structured chart-holder diagnostics parity for capture logging
Enriches the report readiness/capture log lines with the per-state holder breakdown proven out in production: - ChartHolderDiagnostics (report_execution.py): structured counts separating capture readiness from semantic success, with TERMINAL_CHART_HOLDER_STATES and the explicit CHART_HOLDER_SEMANTIC_POLICY=deliver_terminal_errors_with_warning. - report_readiness_poll/_ready/_terminal now carry rendered/empty/ error/virtualized/unready counts and semantic_success on both the Playwright and Selenium paths. - report_readiness_tile: per-tile readiness diagnostics during tiled capture, with each holder's strongest observed terminal state aggregated across tiles for the final ready line. - report_semantic_status: a WARNING whenever capture readiness is satisfied but the artifact contains terminal chart errors — delivery is not semantic completeness, and this makes the distinction operator-visible (and alertable) per tile and per capture. - Restores the explicit zero-holder thumbnail diagnostic on the no-context path. Logging-only: no readiness predicate, budget, or delivery behavior changes. Unit tests pin the diagnostics counts and the enriched line formats. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
21ae918656
commit
9bbf97b60d
@@ -398,9 +398,9 @@ class TestWebDriverPlaywrightErrorHandling:
|
||||
assert "terminal_reason=readiness_timeout" in warning_call.args[0]
|
||||
assert warning_call.args[1] == "http://example.com"
|
||||
assert warning_call.args[3] == 1 # mounted holders
|
||||
assert warning_call.args[4] == 0 # ready holders
|
||||
assert warning_call.args[7] == 60
|
||||
assert warning_call.args[9] == [{"chartId": "42", "state": "nothing_mounted"}]
|
||||
assert warning_call.args[9] == 1 # unready holders
|
||||
assert warning_call.args[16] == [{"chartId": "42", "state": "nothing_mounted"}]
|
||||
assert warning_call.args[17] == [{"chartId": "42", "state": "nothing_mounted"}]
|
||||
|
||||
@patch("superset.utils.webdriver.PLAYWRIGHT_AVAILABLE", True)
|
||||
@patch("superset.utils.webdriver._browser_manager")
|
||||
@@ -1058,7 +1058,7 @@ class TestWebDriverPlaywrightChartReadiness:
|
||||
log_context="execution_id=abc-123",
|
||||
)
|
||||
|
||||
assert mock_logger.warning.call_args.args[8] == " [execution_id=abc-123]"
|
||||
assert mock_logger.warning.call_args.args[15] == " [execution_id=abc-123]"
|
||||
|
||||
@patch("superset.utils.webdriver.PLAYWRIGHT_AVAILABLE", True)
|
||||
@patch("superset.utils.webdriver._browser_manager")
|
||||
@@ -1327,8 +1327,8 @@ class TestWebDriverPlaywrightChartReadiness:
|
||||
diagnostics,
|
||||
)
|
||||
failure_args = mock_logger.warning.call_args.args
|
||||
assert failure_args[9] == diagnostics
|
||||
assert failure_args[10] == diagnostics
|
||||
assert failure_args[16] == diagnostics
|
||||
assert failure_args[17] == diagnostics
|
||||
mock_page.locator.return_value.screenshot.assert_not_called()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user