Tableau Cloud Web Authoring two-step viewer→authoring transition
Tableau Cloud Web Authoring is a TWO-STEP transition — canvas DOM at TOP-LEVEL, not iframe
Confirmed live 2026-04-25 against Tableau Cloud 2026.1.1, Runwal site.
The actual flow (NOT what the docs / pattern-extrapolation suggests):
- Navigate to
/views/<contentUrl>/<sheet>?:edit=y— page loads with a viewer iframeiframe[title='Data Visualization']containing the VIEWER toolbar - Inside that iframe, click
[data-tb-test-id='viz-viewer-toolbar-button-edit'] - The TOP-LEVEL page transitions to
/authoring/<contentUrl>/<sheet>— the iframe goes blank (about:blank) - The actual authoring DOM is at TOP-LEVEL of the page (
VisualizationContainer,*-ToolbarButton,tab*ZoneObject,authMenuBarPublishButtonMainPart-Button,tabAuthMenuBarExit-Button)
Two URL gotchas
/views/<contentUrl>/sheets?:edit=yis invalid — Tableau rejects generic “sheets” path. URL must point to a real sheet/dashboard. Resolve first view viatableauserverclient.Workbooks.populate_views(wb)thenwb.views[0].content_url(last segment after/sheets/).- Tableau Cloud routes use
/workbooks/<NUMERIC_ID>— NOT the LUID. Extract fromwb.webpage_url. LUID is for REST API only.
tableauserverclient API correction
server.workbooks.get_revisions(wb) does NOT exist. Use server.workbooks.populate_revisions(wb) then access wb.revisions.
Calc dialog requires worksheet context
The “right-click data pane → Create Calculated Field” path only works on WORKSHEETS, not dashboards. If a workbook’s first view is a dashboard, navigate to a worksheet sheet tab first OR use Analysis menu (worksheet-only).
Reference implementation
/opt/clis/cli-anything/tableau-cloud-author/agent-harness/cli_anything/tableau_cloud_author/core/page.py:enter_authoring_frame() — verified live 2026-04-25; 7/7 critical authoring selectors resolve at top-level after the click-Edit transition.