Open oscep opened 1 month ago
Hello @oscep! I'm here to help you with any bugs, questions, or contributions you have for the repository. Let's work together to solve any issues you're facing.
To address the issue of generating reports for dashboards without chart elements, you can use the force_screenshot
option. This option ensures that a screenshot is taken even if the dashboard does not contain any chart elements. Here is the relevant code snippet:
const shouldEnableForceScreenshot = contentType === 'chart' && !isReport;
const data: any = {
...currentAlert,
type: isReport ? 'Report' : 'Alert',
force_screenshot: shouldEnableForceScreenshot || forceScreenshot,
validator_type: conditionNotNull ? 'not null' : 'operator',
validator_config_json: conditionNotNull
? {}
: currentAlert?.validator_config_json,
chart: contentType === 'chart' ? currentAlert?.chart?.value : null,
dashboard:
contentType === 'dashboard' ? currentAlert?.dashboard?.value : null,
custom_width: isScreenshot ? currentAlert?.custom_width : undefined,
database: currentAlert?.database?.value,
owners: (currentAlert?.owners || []).map(
owner => (owner as MetaObject).value || owner.id,
),
recipients,
report_format: reportFormat || DEFAULT_NOTIFICATION_FORMAT,
};
This approach ensures that the alert or report will still function correctly even if the dashboard lacks chart elements by forcing a screenshot [1].
Additionally, to provide more meaningful error messages, you can customize the error handling in the report scheduling system. For example, you can modify the string passed to the custom exceptions to include more context, such as the report name:
raise ReportScheduleScreenshotFailedError(
f"Failed taking a screenshot for report {self._report_schedule.name}: {str(ex)}"
) from ex
This would make the error messages more informative and helpful for debugging [2][3].
To continue talking to Dosu, mention @dosu.
Bug description
Superset cannot create a report for a dashboard without a chart element because the Selenium code involved waits for at least one chart element to render. A timeout occurs without a chart element present (see stack trace below).
This leads to an error message in the execution log which doesn't provide any meaningful information:
We would suggest to either take a screenshot without chart elements present or to include a meaningful hint in the error message. Feel free to propose different solutions :-)
How to reproduce the bug
Screenshots/recordings
No response
Superset version
4.0.2
Python version
3.10
Node version
18 or greater
Browser
Chrome
Additional context
Checklist