fix(reports): commit permalink before Playwright navigates to tab URL CreateDashboardPermalinkCommand only flushes the INSERT when invoked inside an outer @transaction() (the nesting guard skips the commit). The row is therefore not visible to Playwright's separate DB connection, causing dashboard_permalink to return a 404, the <body class="standalone"> element to never appear, and the screenshot to time out after 600s. Commit immediately after CreateDashboardPermalinkCommand.run() returns, matching the pattern already used by create_log() in the same class. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
diff --git a/superset/commands/report/execute.py b/superset/commands/report/execute.py index fa5fb94..64372f4 100644 --- a/superset/commands/report/execute.py +++ b/superset/commands/report/execute.py
@@ -358,6 +358,11 @@ dashboard_id=str(self._report_schedule.dashboard.uuid), state=dashboard_state, ).run() + # Commit the permalink immediately so Playwright's separate DB connection + # can resolve the URL. CreateDashboardPermalinkCommand only flushes when + # called inside an outer @transaction(), leaving the row invisible to + # other connections until we explicitly commit here. + db.session.commit() # pylint: disable=consider-using-transaction return get_url_path( "Superset.dashboard_permalink",