diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/ContentWithTiptap.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/ContentWithTiptap.spec.ts index 1b83e2a2f65e..fc39dacff658 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/ContentWithTiptap.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/ContentWithTiptap.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {AliasHelper, ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const contentName = 'TestContent'; @@ -85,3 +85,54 @@ test('can publish content with RTE Tiptap property editor', async ({umbracoApi, expect(contentData.variants[0].state).toBe(expectedState); expect(contentData.values[0].value.markup).toEqual('

' + inputText + '

'); }); + +// This is a test for the regression issue #19763 +test('can save a variant content node after removing embedded block in RTE', async ({umbracoApi, umbracoUi}) => { + // Arrange + // Language + const danishIsoCode = 'da'; + await umbracoApi.language.createDanishLanguage(); + // Content Names + const englishContentName = 'English Content'; + const danishContentName = 'Danish Content'; + // Element Type + const elementTypeName = 'Default Element Type'; + const elementTypeGroupName = 'Content'; + const elementTypeDataTypeName = 'Textstring'; + const elementTypeDataType = await umbracoApi.dataType.getByName(elementTypeDataTypeName); + // Rich Text Editor + const richTextEditorDataTypeName = 'Rich Text Editor with a block'; + const textStringValue = 'Block Content'; + const elementTypeId = await umbracoApi.documentType.createDefaultElementTypeWithVaryByCulture(elementTypeName, elementTypeGroupName, elementTypeDataTypeName, elementTypeDataType.id, true, false); + const richTextEditorId = await umbracoApi.dataType.createRichTextEditorWithABlock(richTextEditorDataTypeName, elementTypeId); + const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, richTextEditorDataTypeName, richTextEditorId, 'TestGroup', true, false); + const cultures = [{isoCode: 'en-US', name: englishContentName}, {isoCode: 'da', name: danishContentName}]; + await umbracoApi.document.createDocumentWithMultipleVariantsWithSharedProperty(contentName, documentTypeId, AliasHelper.toAlias(richTextEditorDataTypeName), 'Umbraco.RichText', cultures, ''); + await umbracoUi.goToBackOffice(); + await umbracoUi.content.goToSection(ConstantHelper.sections.content); + await umbracoUi.content.goToContentWithName(englishContentName); + + // Act + await umbracoUi.content.clickInsertBlockButton(); + await umbracoUi.content.clickLinkWithName(elementTypeName); + await umbracoUi.content.enterTextstring(textStringValue); + await umbracoUi.content.clickCreateModalButton(); + await umbracoUi.content.clickSaveButtonForContent(); + await umbracoUi.content.clickSaveButton(); + const contentData = await umbracoApi.document.getByName(englishContentName); + expect(contentData.values[0].value.blocks.contentData[0].values[0].value).toBe(textStringValue); + await umbracoUi.content.clearTipTapEditor(); + await umbracoUi.content.clickSaveButtonForContent(); + await umbracoUi.content.clickSaveButton(); + + // Assert + await umbracoUi.content.isErrorNotificationVisible(false); + await umbracoUi.content.waitForContentToBeCreated(); + expect(await umbracoApi.document.doesNameExist(englishContentName)).toBeTruthy(); + + // Clean + await umbracoApi.documentType.ensureNameNotExists(documentTypeName); + await umbracoApi.documentType.ensureNameNotExists(elementTypeName); + await umbracoApi.dataType.ensureNameNotExists(richTextEditorDataTypeName); + await umbracoApi.language.ensureIsoCodeNotExists(danishIsoCode); +});