diff --git a/packages/sync/src/manager.ts b/packages/sync/src/manager.ts index df3af8a26fee90..cedf49bd79adf0 100644 --- a/packages/sync/src/manager.ts +++ b/packages/sync/src/manager.ts @@ -426,7 +426,10 @@ export function createSyncManager( debug = false ): SyncManager { // via its pre-persist hook.) targetDoc.transact( () => { applyChangesToCRDTDoc( targetDoc, record ); - handlers.saveRecord(); + + if ( 'auto-draft' !== record.status ) { + handlers.saveRecord(); + } }, LOCAL_SYNC_MANAGER_ORIGIN ); return; } diff --git a/test/e2e/specs/editor/various/change-detection.spec.js b/test/e2e/specs/editor/various/change-detection.spec.js index 5a3c241eba8ccd..7db7c7e3fa47e4 100644 --- a/test/e2e/specs/editor/various/change-detection.spec.js +++ b/test/e2e/specs/editor/various/change-detection.spec.js @@ -65,8 +65,13 @@ test.describe( 'Change detection', () => { ).toBeDisabled(), ] ); - // Autosave draft as same user should do full save, i.e. not dirty. - expect( await changeDetectionUtils.getIsDirty() ).toBe( false ); + // With RTC enabled, all autosaves target an autosave revision. Vary our + // expectation accordingly. + const isRTCEnabled = Boolean( + await page.evaluate( () => window._wpCollaborationEnabled ) + ); + + expect( await changeDetectionUtils.getIsDirty() ).toBe( isRTCEnabled ); } ); test( 'Should prompt to confirm unsaved changes for autosaved draft for non-content fields', async ( { @@ -247,15 +252,16 @@ test.describe( 'Change detection', () => { 'Updating failed because you were offline. Please verify your connection and try again.' ) ).toBeVisible(); + + // Need to disable offline to allow reload and allow reconnect to sync provider. + await context.setOffline( false ); + await expect( page .getByRole( 'region', { name: 'Editor top bar' } ) .getByRole( 'button', { name: 'Save draft' } ) ).toBeEnabled(); - // Need to disable offline to allow reload. - await context.setOffline( false ); - expect( await changeDetectionUtils.getIsDirty() ).toBe( true ); } );