diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
index 3d76c82..9313739 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
@@ -1921,9 +1921,6 @@
   }
 
   isFixSuggestionChanged(): boolean {
-    // Check to not change fix suggestion when draft is not being edited only
-    // when user quickly disable generating suggestions and click save
-    if (!this.editing && this.generateSuggestion) return false;
     return !deepEqual(this.comment?.fix_suggestions, this.getFixSuggestions());
   }
 
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
index 444a43f..5273439 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
@@ -40,7 +40,7 @@
 import {GrConfirmDeleteCommentDialog} from '../gr-confirm-delete-comment-dialog/gr-confirm-delete-comment-dialog';
 import {assertIsDefined} from '../../../utils/common-util';
 import {Key, Modifier} from '../../../utils/dom-util';
-import {SinonStubbedMember} from 'sinon';
+import {SinonStub, SinonStubbedMember} from 'sinon';
 import {fixture, html, assert} from '@open-wc/testing';
 import {GrButton} from '../gr-button/gr-button';
 import {testResolver} from '../../../test/common-test-setup';
@@ -49,6 +49,7 @@
   commentsModelToken,
 } from '../../../models/comments/comments-model';
 import {KnownExperimentId} from '../../../services/flags/flags';
+import {GrSuggestionDiffPreview} from '../gr-suggestion-diff-preview/gr-suggestion-diff-preview';
 
 suite('gr-comment tests', () => {
   let element: GrComment;
@@ -1123,5 +1124,72 @@
         /* HTML */ '<gr-suggestion-diff-preview id="suggestionDiffPreview"> </gr-suggestion-diff-preview>'
       );
     });
+
+    suite('save', () => {
+      const savePromise = mockPromise<DraftInfo>();
+      let saveDraftStub: SinonStub;
+      const textToSave = 'something, not important';
+      setup(async () => {
+        const comment = createDraft();
+        element = await fixture(
+          html`<gr-comment
+            .account=${account}
+            .showPatchset=${true}
+            .comment=${comment}
+            .initiallyCollapsed=${false}
+          ></gr-comment>`
+        );
+        saveDraftStub = sinon
+          .stub(commentsModel, 'saveDraft')
+          .returns(savePromise);
+        sinon.stub(element, 'showGeneratedSuggestion').returns(true);
+        element.editing = true;
+        await element.updateComplete;
+        element.messageText = textToSave;
+        element.unresolved = true;
+        element.generateSuggestion = true;
+        element.generatedFixSuggestion = generatedFixSuggestion;
+        await element.updateComplete;
+      });
+
+      test('save fix suggestion when previewed', async () => {
+        const suggestionDiffPreview = queryAndAssert<GrSuggestionDiffPreview>(
+          element,
+          '#suggestionDiffPreview'
+        );
+        suggestionDiffPreview.previewed = true;
+        await element.updateComplete;
+        element.save();
+        await element.updateComplete;
+        waitUntilCalled(saveDraftStub, 'saveDraft()');
+        assert.equal(
+          saveDraftStub.lastCall.firstArg.fix_suggestions[0]?.fix_id,
+          generatedFixSuggestion.fix_id
+        );
+        assert.isFalse(element.editing);
+
+        savePromise.resolve();
+      });
+
+      test("don't save fix suggestion when not previewed", async () => {
+        const suggestionDiffPreview = queryAndAssert<GrSuggestionDiffPreview>(
+          element,
+          '#suggestionDiffPreview'
+        );
+        suggestionDiffPreview.previewed = false;
+        await element.updateComplete;
+        element.save();
+        await element.updateComplete;
+        waitUntilCalled(saveDraftStub, 'saveDraft()');
+        assert.equal(saveDraftStub.lastCall.firstArg.message, textToSave);
+        assert.equal(
+          saveDraftStub.lastCall.firstArg.fix_suggestions,
+          undefined
+        );
+        assert.isFalse(element.editing);
+
+        savePromise.resolve();
+      });
+    });
   });
 });
