diff --git a/playwright/rendering-modes.spec.ts b/playwright/rendering-modes.spec.ts index a992894..2335e4d 100644 --- a/playwright/rendering-modes.spec.ts +++ b/playwright/rendering-modes.spec.ts @@ -595,10 +595,14 @@ test('auto render implicitly wraps source with App in dom and react modes', asyn ) await page.getByRole('combobox', { name: 'Render mode' }).selectOption('react') + await expect(page.getByRole('combobox', { name: 'Render mode' })).toHaveValue('react') await setComponentEditorSource( page, 'const Button = () => ', ) + await expect( + page.locator('.editor-panel[data-editor-kind="component"] .cm-content').first(), + ).toContainText('implicit app react') await expect(page.getByRole('status', { name: 'App status' })).toHaveText('Rendered') await expect(getPreviewFrame(page).getByRole('button')).toContainText( @@ -720,13 +724,13 @@ test('persists style mode across reload', async ({ page }) => { await ensurePanelToolsVisible(page, 'styles') await page.getByRole('combobox', { name: 'Style mode' }).selectOption('sass') + await expect(page.locator('#style-mode')).toHaveValue('sass') await expect(page.getByRole('status', { name: 'App status' })).toHaveText('Rendered') await page.reload() await waitForInitialRender(page) - await ensurePanelToolsVisible(page, 'styles') - await expect(page.getByRole('combobox', { name: 'Style mode' })).toHaveValue('sass') + await expect(page.locator('#style-mode')).toHaveValue('sass') }) test('renders with less style mode', async ({ page }) => { diff --git a/src/modules/app-core/workspace-controllers-setup.js b/src/modules/app-core/workspace-controllers-setup.js index 1c42c1a..2fb691f 100644 --- a/src/modules/app-core/workspace-controllers-setup.js +++ b/src/modules/app-core/workspace-controllers-setup.js @@ -128,6 +128,7 @@ const createWorkspaceControllersSetup = ({ getDirtyStateForTabChange, syncHeaderLabels, queueWorkspaceSave, + flushWorkspaceSave, maybeRender: () => maybeRender(), setWorkspaceTabAddMenuOpen, confirmAction, diff --git a/src/modules/app-core/workspace-tab-mutations-controller.js b/src/modules/app-core/workspace-tab-mutations-controller.js index 15659ea..66e1e76 100644 --- a/src/modules/app-core/workspace-tab-mutations-controller.js +++ b/src/modules/app-core/workspace-tab-mutations-controller.js @@ -12,6 +12,7 @@ const createWorkspaceTabMutationsController = ({ getDirtyStateForTabChange, syncHeaderLabels, queueWorkspaceSave, + flushWorkspaceSave, maybeRender, setWorkspaceTabAddMenuOpen, confirmAction, @@ -143,7 +144,13 @@ const createWorkspaceTabMutationsController = ({ } renderWorkspaceTabs() - queueWorkspaceSave() + if (typeof flushWorkspaceSave === 'function') { + void flushWorkspaceSave().catch(() => { + /* Save failures are surfaced through workspace saver onError. */ + }) + } else { + queueWorkspaceSave() + } maybeRender() }, })