diff --git a/build/nightly-E2E-test-pipelines.yml b/build/nightly-E2E-test-pipelines.yml index 629b7ac841..405eb51aa4 100644 --- a/build/nightly-E2E-test-pipelines.yml +++ b/build/nightly-E2E-test-pipelines.yml @@ -9,7 +9,6 @@ schedules: branches: include: - v15/dev - - release/16.0 - main parameters: @@ -483,4 +482,4 @@ stages: testResultsFormat: 'JUnit' testResultsFiles: '*.xml' searchFolder: "tests/Umbraco.Tests.AcceptanceTest/results" - testRunTitle: "$(Agent.JobName)" + testRunTitle: "$(Agent.JobName)" \ No newline at end of file diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 28a3acbf03..d337791026 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json @@ -61,6 +61,7 @@ "version": "2.0.37", "resolved": "https://registry.npmjs.org/@umbraco/json-models-builders/-/json-models-builders-2.0.37.tgz", "integrity": "sha512-97cRUrD+oeEno9I+qFjq7lWVS0+aDEK44lQQYWmVPAkCuAG1HMpBTEblS45CflrmLtgrDuZx68WIVVGpk9JzgQ==", + "license": "MIT", "dependencies": { "camelize": "^1.0.1" } diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/BlockGridArea.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/BlockGridArea.spec.ts index d92169baf2..c74f5cd821 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/BlockGridArea.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/BlockGridArea.spec.ts @@ -155,8 +155,7 @@ test('can create content with block grid area with row span', async ({umbracoApi await umbracoUi.content.doesBlockAreaContainRowSpan(firstElementTypeName, firstAreaName, rowSpan, 0); }); -// Remove fixme when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18639 -test.fixme('can create content with block grid area with min allowed', async ({umbracoApi, umbracoUi}) => { +test('can create content with block grid area with min allowed', async ({umbracoApi, umbracoUi}) => { // Arrange firstElementTypeId = await umbracoApi.documentType.createEmptyElementType(firstElementTypeName); const secondElementTypeId = await umbracoApi.documentType.createEmptyElementType(secondElementTypeName); @@ -169,7 +168,7 @@ test.fixme('can create content with block grid area with min allowed', async ({u await umbracoUi.content.goToContentWithName(contentName); // Act - await umbracoUi.content.clickAddBlockGridElementWithName(firstElementTypeName); + await umbracoUi.content.clickAddBlockGridElementWithName('content'); await umbracoUi.content.clickSelectBlockElementWithName(firstElementTypeName); await umbracoUi.content.clickLinkWithName(areaCreateLabel); await umbracoUi.content.clickSelectBlockElementInAreaWithName(secondElementTypeName); @@ -187,8 +186,7 @@ test.fixme('can create content with block grid area with min allowed', async ({u await umbracoApi.documentType.ensureNameNotExists(secondElementTypeName); }); -// Remove fixme when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18639 -test.fixme('can create content with block grid area with max allowed', async ({umbracoApi, umbracoUi}) => { +test('can create content with block grid area with max allowed', async ({umbracoApi, umbracoUi}) => { // Arrange firstElementTypeId = await umbracoApi.documentType.createEmptyElementType(firstElementTypeName); const secondElementTypeId = await umbracoApi.documentType.createEmptyElementType(secondElementTypeName); @@ -201,11 +199,11 @@ test.fixme('can create content with block grid area with max allowed', async ({u await umbracoUi.content.goToContentWithName(contentName); // Act - await umbracoUi.content.clickAddBlockGridElementWithName(firstElementTypeName); + await umbracoUi.content.clickAddBlockGridElementWithName('content'); await umbracoUi.content.clickSelectBlockElementWithName(firstElementTypeName); await umbracoUi.content.clickLinkWithName(areaCreateLabel); await umbracoUi.content.clickSelectBlockElementInAreaWithName(secondElementTypeName); - await umbracoUi.content.isTextWithExactNameVisible('Maximum 0 entries, 1 too many.'); + await umbracoUi.content.isTextWithExactNameVisible('Maximum 0 entries, you have entered 1 too many.'); await umbracoUi.content.clickSaveAndPublishButton(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); await umbracoUi.content.removeBlockFromArea(firstElementTypeName, firstAreaName, secondElementTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ComplexBlockGridTest.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ComplexBlockGridTest.spec.ts index 910c19994a..4154aaf519 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ComplexBlockGridTest.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ComplexBlockGridTest.spec.ts @@ -95,7 +95,7 @@ test('can update property value nested in a block grid area with an RTE with a b await umbracoUi.content.clickAddBlockGridElementWithName(richTextEditorElementTypeName); await umbracoUi.content.clickExactLinkWithName(richTextEditorElementTypeName); await umbracoUi.content.clickInsertBlockButton(); - await umbracoUi.content.clickExactLinkWithName(blockListElementTypeName); + await umbracoUi.content.clickExactLinkWithName(blockListElementTypeName, true); await umbracoUi.content.clickAddBlockGridElementWithName(textStringElementTypeName); await umbracoUi.content.clickExactLinkWithName(textStringElementTypeName); // Enter text in the textstring block that won't match regex diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ContentWithBlockGrid.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ContentWithBlockGrid.spec.ts index f3b3ed50fa..0bf8876761 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ContentWithBlockGrid.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/ContentWithBlockGrid.spec.ts @@ -227,8 +227,7 @@ test('can set the number of columns for the layout in the content', async ({umbr expect(layoutValue[0].columnSpan).toBe(gridColumns); }); -// TODO: Remove skip when front-end is ready. Currently, it is impossible to create content with blockgrid that has a setting model -test.skip('can add settings model for the block in the content', async ({umbracoApi, umbracoUi}) => { +test('can add settings model for the block in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const contentBlockInputText = 'This is textstring'; const settingBlockInputText = 'This is textarea'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/VariantBlockGrid.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/VariantBlockGrid.spec.ts index d1eb3ce3d7..57c0d11346 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/VariantBlockGrid.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockGrid/VariantBlockGrid.spec.ts @@ -80,7 +80,6 @@ test('can not create unsupported invariant document type with invariant block gr // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); @@ -101,7 +100,6 @@ test('can not create unsupported invariant document type with invariant block gr // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/ContentWithBlockList.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/ContentWithBlockList.spec.ts index 2c253a1b00..49ba06fed3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/ContentWithBlockList.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/ContentWithBlockList.spec.ts @@ -178,8 +178,7 @@ test('can set the label of block element in the content', async ({umbracoApi, um await umbracoUi.content.doesBlockElementHaveName(blockLabel); }); -// TODO: Remove skip when front-end is ready. Currently, it is impossible to create content with blocklist that has a setting model -test.skip('can add settings model for the block in the content', async ({umbracoApi, umbracoUi}) => { +test('can add settings model for the block in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const contentBlockInputText = 'This is textstring'; const settingBlockInputText = 'This is textarea'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/VariantBlockList.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/VariantBlockList.spec.ts index a6f7c78730..63ff826e6b 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/VariantBlockList.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/BlockList/VariantBlockList.spec.ts @@ -80,7 +80,6 @@ test('can not create unsupported invariant document type with invariant block li // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); @@ -100,7 +99,6 @@ test('can not create unsupported invariant document type with invariant block li // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithContentPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithContentPicker.spec.ts index 3eae342652..927e2cded4 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithContentPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithContentPicker.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const contentName = 'TestContent'; @@ -92,7 +92,7 @@ test('can open content picker in the content', async ({umbracoApi, umbracoUi}) = await umbracoApi.dataType.ensureNameNotExists(customDataTypeName); }); -test('can choose start node for the content picker in the content', async ({umbracoApi, umbracoUi}) => { +test('can create content with content picker without ignore start node', async ({umbracoApi, umbracoUi}) => { // Arrange const customDataTypeName = 'CustomContentPicker'; const childContentPickerDocumentTypeName = 'ChildDocumentTypeForContentPicker'; @@ -111,11 +111,11 @@ test('can choose start node for the content picker in the content', async ({umbr // Act await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickChooseButton(); + await umbracoUi.content.addContentPicker(childContentPickerName); + await umbracoUi.content.clickSaveAndPublishButton(); // Assert - await umbracoUi.content.isContentNameVisible(childContentPickerName); - await umbracoUi.content.isContentNameVisible(contentPickerName, false); + await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.published); // Clean await umbracoApi.dataType.ensureNameNotExists(customDataTypeName); @@ -123,7 +123,7 @@ test('can choose start node for the content picker in the content', async ({umbr await umbracoApi.documentType.ensureNameNotExists(childContentPickerDocumentTypeName); }); -test.skip('can ignore user start node for the content picker in the content', async ({umbracoApi, umbracoUi}) => { +test('can create content with content picker with ignore start node', async ({umbracoApi, umbracoUi}) => { // Arrange const customDataTypeName = 'CustomContentPicker'; const childContentPickerDocumentTypeName = 'ChildDocumentTypeForContentPicker'; @@ -142,11 +142,11 @@ test.skip('can ignore user start node for the content picker in the content', as // Act await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickChooseButton(); + await umbracoUi.content.addContentPicker(childContentPickerName); + await umbracoUi.content.clickSaveAndPublishButton(); // Assert - await umbracoUi.content.isContentNameVisible(childContentPickerName); - await umbracoUi.content.isContentNameVisible(contentPickerName); + await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.published); // Clean await umbracoApi.dataType.ensureNameNotExists(customDataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCustomDataType.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCustomDataType.spec.ts index 896f3eff04..6323370e94 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCustomDataType.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithCustomDataType.spec.ts @@ -107,8 +107,7 @@ test('can add decimal number to the decimal in the content section', async ({umb expect(contentData.values[0].value).toEqual(decimal); }); -// Skip this test as currently there is no code editor property editor available. -test.skip('can create content with the custom data type with code editor property editor', async ({umbracoApi, umbracoUi}) => { +test('can create content with the custom data type with code editor property editor', async ({umbracoApi, umbracoUi}) => { // Arrange customDataTypeName = 'Code Editor'; const customDataTypeId = await umbracoApi.dataType.createCodeEditorDataType(customDataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithImageMediaPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithImageMediaPicker.spec.ts index e55fb00f3e..b4bdc32674 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithImageMediaPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithImageMediaPicker.spec.ts @@ -142,7 +142,8 @@ test.skip('image count can not be more than max amount set in image media picker // Act await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickChooseButtonAndSelectMediaWithName(mediaName); + await umbracoUi.content.clickChooseButton(); + await umbracoUi.content.clickMediaWithName(mediaName); await umbracoUi.content.clickSubmitButton(); await umbracoUi.content.clickSaveButton(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithMultiURLPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithMultiURLPicker.spec.ts index 7f18baf83c..33d71b8531 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithMultiURLPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithMultiURLPicker.spec.ts @@ -82,6 +82,7 @@ test('can publish content with the document link', async ({umbracoApi, umbracoUi await umbracoUi.content.clickAddMultiURLPickerButton(); await umbracoUi.content.clickDocumentLinkButton(); await umbracoUi.content.selectLinkByName(linkedDocumentName); + await umbracoUi.waitForTimeout(500); // Wait for the document link to be selected await umbracoUi.content.clickButtonWithName('Choose'); await umbracoUi.content.clickAddButton(); await umbracoUi.content.clickSaveAndPublishButton(); @@ -350,9 +351,7 @@ test.skip('cannot submit an empty link using spacebar', async ({umbracoApi, umbr await umbracoUi.content.isTextWithMessageVisible(ConstantHelper.validationMessages.emptyLinkPicker); }); -// TODO: Remove skip when the front-end ready. Currently it is impossible to link to unpublished document -// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/17974 -test.skip('can create content with the link to an unpublished document', async ({umbracoApi, umbracoUi}) => { +test('can create content with the link to an unpublished document', async ({umbracoApi, umbracoUi}) => { // Arrange const expectedState = 'Draft'; const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithPropertyEditors.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithPropertyEditors.spec.ts deleted file mode 100644 index 46181dd242..0000000000 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithPropertyEditors.spec.ts +++ /dev/null @@ -1,92 +0,0 @@ -import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; -import {expect} from "@playwright/test"; - -const contentName = 'TestContent'; -const documentTypeName = 'TestDocumentTypeForContent'; - -test.beforeEach(async ({umbracoApi}) => { - await umbracoApi.documentType.ensureNameNotExists(documentTypeName); - await umbracoApi.document.ensureNameNotExists(contentName); -}); - -test.afterEach(async ({umbracoApi}) => { - await umbracoApi.document.ensureNameNotExists(contentName); - await umbracoApi.documentType.ensureNameNotExists(documentTypeName); -}); - -// TODO: Skip this test as TinyMCE is replaced by Tiptap. This test should be updated. -test.skip('can create content with the Rich Text Editor datatype', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { - // Arrange - const dataTypeName = 'Richtext editor'; - const contentText = 'This is Rich Text Editor content!'; - const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); - await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.clickActionsMenuAtRoot(); - await umbracoUi.content.clickCreateActionMenuOption(); - await umbracoUi.content.chooseDocumentType(documentTypeName); - await umbracoUi.content.enterContentName(contentName); - await umbracoUi.content.enterRichTextArea(contentText); - await umbracoUi.content.clickSaveAndPublishButton(); - - // Assert - await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); - expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy(); - const contentData = await umbracoApi.document.getByName(contentName); - expect(contentData.values[0].value.markup).toEqual('

' + contentText + '

'); -}); - -// TODO: Remove skip when the front-end is ready. Currently it returns error when publishing a content -test.skip('can create content with the upload file datatype', async ({umbracoApi, umbracoUi}) => { - // Arrange - const dataTypeName = 'Upload File'; - const uploadFilePath = 'Umbraco.png'; - const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); - await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.clickActionsMenuAtRoot(); - await umbracoUi.content.clickCreateActionMenuOption(); - await umbracoUi.content.chooseDocumentType(documentTypeName); - await umbracoUi.content.enterContentName(contentName); - await umbracoUi.content.uploadFile('./fixtures/mediaLibrary/' + uploadFilePath); - await umbracoUi.content.clickSaveAndPublishButton(); - - // Assert - await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); - expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy(); - const contentData = await umbracoApi.document.getByName(contentName); - expect(contentData.values[0].value.src).toContainEqual(uploadFilePath); -}); - -// TODO: Remove skip and update the test when the front-end is ready. Currently the list of content is not displayed. -test.skip('can create content with the list view - content datatype', async ({umbracoApi, umbracoUi}) => { - // Arrange - const dataTypeName = 'List View - Content'; - const contentListViewName = 'TestListViewContent'; - const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id); - const contentPickerId = await umbracoApi.document.createDefaultDocument(contentListViewName, documentTypeId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.clickActionsMenuAtRoot(); - await umbracoUi.content.clickCreateActionMenuOption(); - await umbracoUi.content.chooseDocumentType(documentTypeName); - await umbracoUi.content.enterContentName(contentName); - // TODO: add step to interact with the list - await umbracoUi.content.clickSaveAndPublishButton(); - - // Assert - await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); - expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy(); - - // Clean - await umbracoApi.document.delete(contentPickerId); -}); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadArticle.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadArticle.spec.ts index 45ccef76cd..182d3ee83d 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadArticle.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadArticle.spec.ts @@ -88,8 +88,7 @@ for (const uploadFile of uploadFiles) { }); } -// TODO: Remove skip when the front-end is ready. Currently the uploaded file still displays after removing. -test.skip('can remove an article file in the content', async ({umbracoApi, umbracoUi}) => { +test('can remove an article file in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const uploadFileName = 'Article.pdf'; const mimeType = 'application/pdf'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadAudio.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadAudio.spec.ts index 22774235e1..a8180c09e3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadAudio.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadAudio.spec.ts @@ -89,8 +89,7 @@ for (const uploadFile of uploadFiles) { }); } -// TODO: Remove skip when the front-end is ready. Currently the uploaded file still displays after removing. -test.skip('can remove an audio file in the content', async ({umbracoApi, umbracoUi}) => { +test('can remove an audio file in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const uploadFileName = 'Audio.mp3'; const mineType = 'audio/mpeg'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadFile.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadFile.spec.ts index fc619145e2..0a19ba7ff8 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadFile.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadFile.spec.ts @@ -87,8 +87,7 @@ for (const uploadFile of uploadFiles) { }); } -// TODO: Remove skip when the front-end is ready. Currently the uploaded file still displays after removing. -test.skip('can remove a text file in the content', async ({umbracoApi, umbracoUi}) => { +test('can remove a text file in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const uploadFileName = 'File.txt'; const mineType = 'text/plain'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadVideo.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadVideo.spec.ts index 5caafc4356..8824220a4f 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadVideo.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/ContentWithUploadVideo.spec.ts @@ -77,6 +77,7 @@ for (const uploadVideo of uploadVideos) { // Act await umbracoUi.content.goToContentWithName(contentName); await umbracoUi.content.uploadFile(uploadVideoPath + uploadVideo.fileName); + await umbracoUi.waitForTimeout(500); await umbracoUi.content.clickSaveButton(); // Assert @@ -88,8 +89,7 @@ for (const uploadVideo of uploadVideos) { }); } -// TODO: Remove skip when the front-end is ready. Currently the uploaded video still displays after removing. -test.skip('can remove a mp4 file in the content', async ({umbracoApi, umbracoUi}) => { +test('can remove a mp4 file in the content', async ({umbracoApi, umbracoUi}) => { // Arrange const uploadFileName = 'Video.mp4'; const mineType = 'video/mp4'; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/CultureAndHostnames.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/CultureAndHostnames.spec.ts index 80b302f3e2..cbeb2def15 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/CultureAndHostnames.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/CultureAndHostnames.spec.ts @@ -46,7 +46,7 @@ test('can add a culture', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { }); // Really flaky tests, only occurs on pipeline -test('can add a domain', async ({umbracoApi, umbracoUi}) => { +test.skip('can add a domain', async ({umbracoApi, umbracoUi}) => { // Act await umbracoUi.content.clickActionsMenuForContent(contentName); await umbracoUi.content.clickCultureAndHostnamesActionMenuOption(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/IssueWithScheduledPublishing.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/IssueWithScheduledPublishing.spec.ts index c2845760e5..b29250dd89 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/IssueWithScheduledPublishing.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/IssueWithScheduledPublishing.spec.ts @@ -18,8 +18,7 @@ test.afterEach(async ({umbracoApi}) => { await umbracoApi.language.ensureNameNotExists(languageName); }); -// https://github.com/umbraco/Umbraco-CMS/issues/18555 -test.skip('Can schedule publish after unselecting all languages', async ({umbracoUi}) => { +test('can schedule publish after unselecting all languages', async ({umbracoUi}) => { // Arrange await umbracoUi.goToBackOffice(); await umbracoUi.content.goToSection(ConstantHelper.sections.content); @@ -30,12 +29,12 @@ test.skip('Can schedule publish after unselecting all languages', async ({umbrac await umbracoUi.content.goToContentWithName('(' + contentName + ')'); await umbracoUi.content.enterContentName('Tester'); await umbracoUi.content.clickViewMoreOptionsButton(); - await umbracoUi.content.clickScheduleButton(); + await umbracoUi.content.clickSchedulePublishButton(); await umbracoUi.waitForTimeout(500); await umbracoUi.content.clickSelectAllCheckbox(); await umbracoUi.waitForTimeout(500); await umbracoUi.content.clickSelectAllCheckbox(); - await umbracoUi.content.clickButtonWithName(contentName); + await umbracoUi.content.clickSchedulePublishLanguageButton(languageName); // Assert await umbracoUi.content.doesSchedulePublishModalButtonContainDisabledTag(false); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RedirectManagement.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RedirectManagement.spec.ts index 197a882e4f..a840fd03ff 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RedirectManagement.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RedirectManagement.spec.ts @@ -5,27 +5,28 @@ const disableStatus = 'Disabled'; const enableStatus = 'Enabled'; let documentTypeId = ''; let contentId = ''; -const contentName = 'TestContent'; +const contentName = 'TestContentRedirectURL'; const documentTypeName = 'TestDocumentType'; const updatedContentName = 'UpdatedContentName'; +const rootDocumentName = 'RootDocument'; test.beforeEach(async ({umbracoApi, umbracoUi}) => { await umbracoApi.redirectManagement.setStatus(enableStatus); - await umbracoUi.goToBackOffice(); - // Create a content await umbracoApi.documentType.ensureNameNotExists(documentTypeName); documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName); + await umbracoUi.goToBackOffice(); + // Create a published root document + const rootDocumentId = await umbracoApi.document.createDefaultDocument(rootDocumentName, documentTypeId); + await umbracoApi.document.publish(rootDocumentId); + // Create a published content contentId = await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - // Publish the content - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - await umbracoUi.content.clickActionsMenuForContent(contentName); - await umbracoUi.content.clickPublishActionMenuOption(); - await umbracoUi.content.clickConfirmToPublishButton(); + await umbracoApi.document.publish(contentId); }); test.afterEach(async ({umbracoApi}) => { await umbracoApi.redirectManagement.setStatus(enableStatus); await umbracoApi.document.ensureNameNotExists(contentName); + await umbracoApi.document.ensureNameNotExists(rootDocumentName); await umbracoApi.documentType.ensureNameNotExists(documentTypeName); }); @@ -35,15 +36,15 @@ test('can disable URL tracker', async ({umbracoApi, umbracoUi}) => { await umbracoUi.redirectManagement.clickRedirectManagementTab(); await umbracoUi.redirectManagement.clickDisableURLTrackerButton(); await umbracoUi.redirectManagement.clickDisableButton(); - - // Assert - // Verify that if renaming a published page, there are no redirects have been made - // rename the published content + // Rename the published content await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.content.goToContentWithName(contentName); await umbracoUi.content.enterContentName(updatedContentName); await umbracoUi.content.clickSaveAndPublishButton(); - // verify that there is no redirects have been made + + // Assert + await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); + // Verify that there is no redirects have been made const contentUrl = await umbracoApi.document.getDocumentUrl(contentId); await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.redirectManagement.clickRedirectManagementTab(); @@ -53,8 +54,7 @@ test('can disable URL tracker', async ({umbracoApi, umbracoUi}) => { expect(statusData.status).toBe(disableStatus); }); -// TODO: Remove skip when the frond-end is ready. Currently there is no redirect have been made after renaming a published page -test.skip('can re-enable URL tracker', async ({umbracoApi, umbracoUi}) => { +test('can re-enable URL tracker', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.redirectManagement.setStatus(disableStatus); @@ -62,15 +62,15 @@ test.skip('can re-enable URL tracker', async ({umbracoApi, umbracoUi}) => { await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.redirectManagement.clickRedirectManagementTab(); await umbracoUi.redirectManagement.clickEnableURLTrackerButton(); - - // Assert - // Verify that if renaming a published page, there are one redirects have been made - // rename the published content + // Rename the published content await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.content.goToContentWithName(contentName); await umbracoUi.content.enterContentName(updatedContentName); await umbracoUi.content.clickSaveAndPublishButton(); - // verify that there is one redirects have been made + + // Assert + await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); + // Verify that there is one redirects have been made const contentUrl = await umbracoApi.document.getDocumentUrl(contentId); await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.redirectManagement.clickRedirectManagementTab(); @@ -80,11 +80,15 @@ test.skip('can re-enable URL tracker', async ({umbracoApi, umbracoUi}) => { expect(statusData.status).toBe(enableStatus); }); -// TODO: Remove skip and update this when the front-end is ready. Currently it always return "No redirects matching this search criteria" when searching. -test.skip('can search for original URL', async ({umbracoUi}) => { +test('can search for original URL', async ({umbracoApi, umbracoUi}) => { // Arrange - const searchKeyword = '/test-content/'; - // TODO: rename content to add an item in the redirect url management + const searchKeyword = 'redirect'; + // Rename the published content + await umbracoUi.content.goToSection(ConstantHelper.sections.content); + await umbracoUi.content.goToContentWithName(contentName); + await umbracoUi.content.enterContentName(updatedContentName); + await umbracoUi.content.clickSaveAndPublishButton(); + await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); // Act await umbracoUi.content.goToSection(ConstantHelper.sections.content); @@ -93,24 +97,27 @@ test.skip('can search for original URL', async ({umbracoUi}) => { await umbracoUi.redirectManagement.clickSearchButton(); // Assert - // TODO: verify the search result + await umbracoUi.redirectManagement.doesRedirectManagementRowsHaveCount(1); + const contentUrl = await umbracoApi.document.getDocumentUrl(contentId); + await umbracoUi.redirectManagement.isTextWithExactNameVisible(contentUrl); }); -// TODO: Remove skip when the frond-end is ready. Currently there is no redirect have been made after renaming a published page -test.skip('can delete a redirect', async ({umbracoApi, umbracoUi}) => { +test('can delete a redirect', async ({umbracoApi, umbracoUi}) => { // Arrange // Rename the published content await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.content.goToContentWithName(contentName); await umbracoUi.content.enterContentName(updatedContentName); await umbracoUi.content.clickSaveAndPublishButton(); + await umbracoUi.content.isSuccessStateVisibleForSaveAndPublishButton(); + const contentUrl = await umbracoApi.document.getDocumentUrl(contentId); // Act await umbracoUi.content.goToSection(ConstantHelper.sections.content); await umbracoUi.redirectManagement.clickRedirectManagementTab(); + await umbracoUi.redirectManagement.isTextWithExactNameVisible(contentUrl); await umbracoUi.redirectManagement.deleteFirstRedirectURL(); // Assert - const contentUrl = await umbracoApi.document.getDocumentUrl(contentId); await umbracoUi.redirectManagement.isTextWithExactNameVisible(contentUrl, false); }); 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 5feb94ba38..1b83e2a2f6 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, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const contentName = 'TestContent'; @@ -85,131 +85,3 @@ 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 + '

'); }); - -test('can add a media in RTE Tiptap property editor', async ({umbracoApi, umbracoUi}) => { - // Arrange - const iconTitle = 'Media Picker'; - const imageName = 'Test Image For Content'; - await umbracoApi.media.ensureNameNotExists(imageName); - await umbracoApi.media.createDefaultMediaWithImage(imageName); - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId); - await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickTipTapToolbarIconWithTitle(iconTitle); - // fix this - await umbracoUi.content.selectMediaWithName(imageName); - await umbracoUi.content.clickChooseModalButton(); - await umbracoUi.content.clickMediaCaptionAltTextModalSubmitButton(); - await umbracoUi.content.clickSaveButton(); - - // Assert - await umbracoUi.content.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy(); - const contentData = await umbracoApi.document.getByName(contentName); - expect(contentData.values[0].value.markup).toContain(' { - // Arrange - const iconTitle = 'Embed'; - const videoURL = 'https://www.youtube.com/watch?v=Yu29dE-0OoI'; - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId); - await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickTipTapToolbarIconWithTitle(iconTitle); - await umbracoUi.content.enterEmbeddedURL(videoURL); - await umbracoUi.content.clickEmbeddedRetrieveButton(); - await umbracoUi.content.waitForEmbeddedPreviewVisible(); - await umbracoUi.content.clickEmbeddedMediaModalConfirmButton(); - await umbracoUi.content.clickSaveButton(); - - // Assert - await umbracoUi.content.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy(); - const contentData = await umbracoApi.document.getByName(contentName); - expect(contentData.values[0].value.markup).toContain('data-embed-url'); - expect(contentData.values[0].value.markup).toContain(videoURL); -}); - -test('cannot submit an empty link in RTE Tiptap property editor', async ({umbracoApi, umbracoUi}) => { - // Arrange - const iconTitle = 'Link'; - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId); - await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickTipTapToolbarIconWithTitle(iconTitle); - await umbracoUi.content.clickManualLinkButton(); - await umbracoUi.content.enterLink(''); - await umbracoUi.content.enterAnchorOrQuerystring(''); - await umbracoUi.content.enterLinkTitle(''); - await umbracoUi.content.clickAddButton(); - - // Assert - await umbracoUi.content.isTextWithMessageVisible(ConstantHelper.validationMessages.emptyLinkPicker); -}); - -test('cannot submit an empty URL with an anchor or querystring in RTE Tiptap property editor', async ({umbracoApi, umbracoUi}) => { - // Arrange - const iconTitle = 'Link'; - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId); - await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickTipTapToolbarIconWithTitle(iconTitle); - await umbracoUi.content.clickManualLinkButton(); - await umbracoUi.content.enterLink(''); - await umbracoUi.content.enterAnchorOrQuerystring('#value'); - await umbracoUi.content.clickAddButton(); - - // Assert - await umbracoUi.content.isTextWithMessageVisible(ConstantHelper.validationMessages.emptyLinkPicker); -}); - -test('can insert a link to an unpublished document in RTE Tiptap property editor', async ({umbracoApi, umbracoUi}) => { - // Arrange - const iconTitle = 'Link'; - const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId); - await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - // Create a document to link - const documentTypeForLinkedDocumentName = 'TestDocumentType'; - const documentTypeForLinkedDocumentId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeForLinkedDocumentName); - const linkedDocumentName = 'LinkedDocument'; - await umbracoApi.document.createDefaultDocument(linkedDocumentName, documentTypeForLinkedDocumentId); - await umbracoUi.goToBackOffice(); - await umbracoUi.content.goToSection(ConstantHelper.sections.content); - - // Act - await umbracoUi.content.goToContentWithName(contentName); - await umbracoUi.content.clickTipTapToolbarIconWithTitle(iconTitle); - await umbracoUi.content.clickDocumentLinkButton(); - await umbracoUi.content.selectLinkByName(linkedDocumentName); - await umbracoUi.content.clickButtonWithName('Choose'); - await umbracoUi.content.clickAddButton(); - await umbracoUi.content.clickSaveButton(); - - // Assert - await umbracoUi.content.waitForContentToBeCreated(); - - // Clean - await umbracoApi.documentType.ensureNameNotExists(documentTypeForLinkedDocumentName); - await umbracoApi.document.ensureNameNotExists(linkedDocumentName); -}); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/TiptapToolbar.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/TiptapToolbar.spec.ts index dc4a77ffe9..9c61a24955 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/TiptapToolbar.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/TiptapToolbar.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const contentName = 'TestContent'; @@ -137,6 +137,7 @@ test('can insert a link to an unpublished document in RTE Tiptap property editor await umbracoUi.content.clickDocumentLinkButton(); await umbracoUi.content.selectLinkByName(linkedDocumentName); await umbracoUi.content.clickButtonWithName('Choose'); + await umbracoUi.waitForTimeout(500); // Wait for the link to be inserted await umbracoUi.content.clickAddButton(); await umbracoUi.content.clickSaveButton(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/VariantTipTapBlocks.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/VariantTipTapBlocks.spec.ts index a15238c55e..84dc1ed91c 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/VariantTipTapBlocks.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Content/RichTextEditor/VariantTipTapBlocks.spec.ts @@ -80,7 +80,6 @@ test('can not create unsupported invariant document type with invariant tiptap R // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); @@ -101,7 +100,6 @@ test('can not create unsupported invariant document type with invariant tiptap R // Assert await umbracoUi.content.isFailedStateButtonVisible(); - await umbracoUi.content.isErrorNotificationVisible(); await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.documentCouldNotBePublished); expect(await umbracoApi.document.isDocumentPublished(contentId)).toBeFalsy(); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/Block/BlockGridBlockAdvanced.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/Block/BlockGridBlockAdvanced.spec.ts index d05b35237c..be267b18ff 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/Block/BlockGridBlockAdvanced.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/Block/BlockGridBlockAdvanced.spec.ts @@ -42,7 +42,7 @@ test.skip('can remove a custom view from a block', async ({umbracoApi, umbracoUi await umbracoUi.dataType.goToBlockAdvancedTab(); }); -// TODO: Remove skip and update test when the front-end is ready. Currently stylesheets are saved as arrays +// TODO: Remove skip and update test when the front-end is ready. Currently it is not possible to add a custom stylesheet to a block test.skip('can remove a custom stylesheet from a block', async ({umbracoApi, umbracoUi}) => { // Arrange const stylesheetName = 'TestStylesheet.css' diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/BlockGridEditor.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/BlockGridEditor.spec.ts index e1c0b28fb3..f255bdc861 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/BlockGridEditor.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockGrid/BlockGridEditor.spec.ts @@ -392,5 +392,22 @@ test('can update grid columns in a block grid editor', async ({umbracoApi, umbra test.skip('can add a stylesheet a block grid editor', async ({umbracoApi, umbracoUi}) => { }); -test.skip('can remove a stylesheet in a block grid editor', async ({umbracoApi, umbracoUi}) => { +test('can remove a stylesheet in a block grid editor', async ({umbracoApi, umbracoUi}) => { + // Arrange + const stylesheetName = 'TestStylesheet.css'; + await umbracoApi.stylesheet.createDefaultStylesheet(stylesheetName); + await umbracoApi.dataType.createBlockGridWithLayoutStylesheet(blockGridEditorName, stylesheetName); + + // Act + await umbracoUi.dataType.goToDataType(blockGridEditorName); + await umbracoUi.dataType.clickRemoveStylesheetButton(stylesheetName); + await umbracoUi.dataType.clickConfirmRemoveButton(); + await umbracoUi.dataType.clickSaveButton(); + + // Assert + await umbracoUi.dataType.isSuccessStateVisibleForSaveButton(); + expect(await umbracoApi.dataType.doesBlockGridContainLayoutStylesheet(blockGridEditorName, stylesheetName)).toBeFalsy(); + + // Clean + await umbracoApi.stylesheet.ensureNameNotExists(stylesheetName); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockListEditor/BlockListBlocks.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockListEditor/BlockListBlocks.spec.ts index e2f5be0f5e..49f502c462 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockListEditor/BlockListBlocks.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/BlockListEditor/BlockListBlocks.spec.ts @@ -111,7 +111,7 @@ test('can open content model in a block', async ({umbracoApi, umbracoUi}) => { await umbracoUi.dataType.isElementWorkspaceOpenInBlock(elementTypeName); }); -// TODO: Skip this test as it is impossible to remove a content model +// Skip this test as it is impossible to remove a content model in front-end test.skip('can remove a content model from a block', async ({umbracoApi, umbracoUi}) => { // Arrange const textStringData = await umbracoApi.dataType.getByName(dataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/ImageCropper.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/ImageCropper.spec.ts index a801abc0df..5583ac494d 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/ImageCropper.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/ImageCropper.spec.ts @@ -18,57 +18,64 @@ test.afterEach(async ({umbracoApi}) => { test('can add crop', async ({umbracoApi, umbracoUi}) => { // Arrange - const cropData = ['Test Label', 'Test Alias', 100, 50]; + const cropObject = {label: 'Test Label', alias: AliasHelper.toAlias('Test Label'), width: 100, height: 50}; await umbracoApi.dataType.createDefaultImageCropperDataType(customDataTypeName); await umbracoUi.dataType.goToDataType(customDataTypeName); // Act + await umbracoUi.dataType.clickCreateCropButton(); await umbracoUi.dataType.enterCropValues( - cropData[0].toString(), - cropData[1].toString(), - cropData[2].toString(), - cropData[3].toString() + cropObject.label, + cropObject.alias, + cropObject.width.toString(), + cropObject.height.toString() ); - await umbracoUi.dataType.clickAddCropButton(); + await umbracoUi.dataType.clickCreateCropButton(); await umbracoUi.dataType.clickSaveButton(); // Assert await umbracoUi.dataType.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropData[0], cropData[1], cropData[2], cropData[3])).toBeTruthy(); + expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropObject.label, cropObject.alias, cropObject.width, cropObject.height)).toBeTruthy(); }); test('can edit crop', async ({umbracoApi, umbracoUi}) => { // Arrange - const cropData = ['Test Label', AliasHelper.toAlias('Test Label'), 100, 50]; - const updatedCropData = ['Updated Label', AliasHelper.toAlias('Updated Label'), 80, 30]; - await umbracoApi.dataType.createImageCropperDataTypeWithOneCrop(customDataTypeName, cropData[0], cropData[2], cropData[3]); + const cropObject = {label: 'Test Label', alias: AliasHelper.toAlias('Test Label'), width: 100, height: 50}; + const updatedCropObject = {label: 'Updated Label', alias: AliasHelper.toAlias('Updated Label'), width: 80, height: 30}; + + await umbracoApi.dataType.createImageCropperDataTypeWithOneCrop(customDataTypeName, cropObject.label, cropObject.width, cropObject.height); await umbracoUi.dataType.goToDataType(customDataTypeName); // Act - await umbracoUi.dataType.editCropByAlias(cropData[0]); - await umbracoUi.dataType.enterCropValues(updatedCropData[0], updatedCropData[1], updatedCropData[2].toString(), updatedCropData[3].toString()); - await umbracoUi.dataType.clickSaveCropButton(); + await umbracoUi.dataType.editCropByAlias(cropObject.alias); + await umbracoUi.dataType.enterCropValues( + updatedCropObject.label, + updatedCropObject.alias, + updatedCropObject.width.toString(), + updatedCropObject.height.toString() + ); + await umbracoUi.dataType.clickEditCropButton(); await umbracoUi.dataType.clickSaveButton(); // Assert await umbracoUi.dataType.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, updatedCropData[0], updatedCropData[1], updatedCropData[2], updatedCropData[3])).toBeTruthy(); - expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropData[0], cropData[1], cropData[2], cropData[3])).toBeFalsy(); + expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, updatedCropObject.label, updatedCropObject.alias, updatedCropObject.width, updatedCropObject.height)).toBeTruthy(); + expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropObject.label, cropObject.alias, cropObject.width, cropObject.height)).toBeFalsy(); }); test('can delete crop', async ({umbracoApi, umbracoUi}) => { // Arrange - const cropData = ['Deleted Alias', AliasHelper.toAlias('Deleted Alias'), 50, 100]; - await umbracoApi.dataType.createImageCropperDataTypeWithOneCrop(customDataTypeName, cropData[0], cropData[2], cropData[3]); + const cropObject = {label: 'Deleted Label', alias: AliasHelper.toAlias('Deleted Label'), width: 50, height: 100}; + await umbracoApi.dataType.createImageCropperDataTypeWithOneCrop(customDataTypeName, cropObject.label, cropObject.width, cropObject.height); await umbracoUi.dataType.goToDataType(customDataTypeName); // Act - await umbracoUi.dataType.removeCropByAlias(cropData[0].toString()); + await umbracoUi.dataType.removeCropByAlias(cropObject.alias); await umbracoUi.dataType.clickSaveButton(); // Assert await umbracoUi.dataType.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropData[0], cropData[1], cropData[2], cropData[3])).toBeFalsy(); + expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropObject.label, cropObject.alias, cropObject.width, cropObject.height)).toBeFalsy(); }); test('the default configuration is correct', async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MediaPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MediaPicker.spec.ts index 747751d49d..b15983c854 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MediaPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MediaPicker.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {AliasHelper, ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const mediaPickerTypes = [ @@ -67,23 +67,25 @@ test('can update enable focal point', async ({umbracoApi, umbracoUi}) => { test('can add image crop', async ({umbracoApi, umbracoUi}) => { // Arrange - const cropData = ['Test Label', 'testAlias', 100, 50]; + const cropObject = {label: 'Test Label', alias: AliasHelper.toAlias('Test Label'), width: 100, height: 50}; await umbracoApi.dataType.createDefaultMediaPickerDataType(customDataTypeName); await umbracoUi.dataType.goToDataType(customDataTypeName); // Act + await umbracoUi.dataType.clickCreateCropButton(); + await umbracoUi.dataType.enterCropValues( - cropData[0].toString(), - cropData[1].toString(), - cropData[2].toString(), - cropData[3].toString() + cropObject.label, + cropObject.alias, + cropObject.width.toString(), + cropObject.height.toString() ); - await umbracoUi.dataType.clickAddCropButton(); + await umbracoUi.dataType.clickCreateCropButton(); await umbracoUi.dataType.clickSaveButton(); // Assert await umbracoUi.dataType.isSuccessStateVisibleForSaveButton(); - expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropData[0], cropData[1], cropData[2], cropData[3])).toBeTruthy(); + expect(await umbracoApi.dataType.doesDataTypeHaveCrops(customDataTypeName, cropObject.label, cropObject.alias, cropObject.width, cropObject.height)).toBeTruthy(); }); test('can update ignore user start nodes', async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MultiUrlPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MultiUrlPicker.spec.ts index 599c94b185..ac0661264a 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MultiUrlPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/MultiUrlPicker.spec.ts @@ -90,6 +90,7 @@ test('can update hide anchor/query string input', async ({umbracoApi, umbracoUi} }); // TODO: Remove skip when the front-end is ready. Currently you still can update the minimum greater than the maximum. +// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/17509 test.skip('cannot update the minimum number of items greater than the maximum', async ({umbracoApi, umbracoUi}) => { // Arrange const minimumValue = 5; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Numeric.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Numeric.spec.ts index 5ca6b71eb8..93a9837faf 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Numeric.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Numeric.spec.ts @@ -77,6 +77,7 @@ test.skip('can allow decimals', async ({umbracoApi, umbracoUi}) => { }); // TODO: Remove skip when the front-end is ready. Currently you still can update the minimum greater than the maximum. +// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/17509 test.skip('cannot update the minimum greater than the maximum', async ({umbracoApi, umbracoUi}) => { // Arrange const minimumValue = 5; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Textstring.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Textstring.spec.ts index 02821b3d50..2123e8a631 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Textstring.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataType/Textstring.spec.ts @@ -31,8 +31,9 @@ test('can update maximum allowed characters value', async ({umbracoApi, umbracoU expect(await umbracoApi.dataType.doesDataTypeHaveValue(customDataTypeName, 'maxChars', maxCharsValue)).toBeTruthy(); }); -// Remove fixme when the front-end is ready. The "Input type" should be removed. -test.fixme('the default configuration is correct', async ({umbracoApi, umbracoUi}) => { +// Remove .skip when the front-end is ready. The "Input type" should be removed. +// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19340 +test.skip('the default configuration is correct', async ({umbracoApi, umbracoUi}) => { // Act await umbracoUi.dataType.goToDataType(dataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Dictionary/Dictionary.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Dictionary/Dictionary.spec.ts index c8155e889c..f77000d4e9 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Dictionary/Dictionary.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Dictionary/Dictionary.spec.ts @@ -169,7 +169,7 @@ test('can import a dictionary item with descendants', {tag: '@smoke'}, async ({u }); // Skip this test as the search function is removed -test.skip('can search a dictionary item in list when have results', async ({umbracoApi, umbracoUi}) => { +test('can search a dictionary item in list when have results', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); await umbracoApi.dictionary.create(dictionaryName); @@ -182,10 +182,9 @@ test.skip('can search a dictionary item in list when have results', async ({umbr expect(await umbracoUi.dictionary.doesDictionaryListHaveText(dictionaryName)).toBeTruthy(); }); -// Skip this test as the search function is removed -test.skip('can search a dictionary item in list when have no results', async ({umbracoApi, umbracoUi}) => { +test('can search a dictionary item in list when have no results', async ({umbracoApi, umbracoUi}) => { // Arrange - const emptySearchResultMessage = 'No Dictionary items to choose from'; + const emptySearchResultMessage = 'No items'; await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); await umbracoApi.dictionary.create(dictionaryName); await umbracoUi.dictionary.goToSection(ConstantHelper.sections.dictionary); @@ -195,4 +194,4 @@ test.skip('can search a dictionary item in list when have no results', async ({u // Assert await umbracoUi.dictionary.isSearchResultMessageDisplayEmpty(emptySearchResultMessage); -}); +}); \ No newline at end of file diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/ListViewMedia.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/ListViewMedia.spec.ts index f33a608668..9ec4658c46 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/ListViewMedia.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/ListViewMedia.spec.ts @@ -114,8 +114,7 @@ test('can allow bulk trash in the media section', async ({umbracoApi, umbracoUi} await umbracoUi.media.isItemVisibleInRecycleBin(secondMediaFileName, true, false); }); -// TODO: Remove fixme when update code to select media successfully. -test.fixme('can allow bulk move in the media section', async ({umbracoApi, umbracoUi}) => { +test('can allow bulk move in the media section', async ({umbracoApi, umbracoUi}) => { // Arrange const mediaFolderName = 'Test Folder Name'; await umbracoApi.media.ensureNameNotExists(mediaFolderName); @@ -125,10 +124,12 @@ test.fixme('can allow bulk move in the media section', async ({umbracoApi, umbra await umbracoUi.media.goToSection(ConstantHelper.sections.media); await umbracoUi.media.selectMediaWithName(firstMediaFileName); await umbracoUi.media.selectMediaWithName(secondMediaFileName); + await umbracoUi.waitForTimeout(200); await umbracoUi.media.clickBulkMoveToButton(); await umbracoUi.media.clickCaretButtonForName('Media'); await umbracoUi.media.clickModalTextByName(mediaFolderName); await umbracoUi.media.clickChooseModalButton(); + await umbracoUi.waitForTimeout(500); // Assert await umbracoUi.media.waitForMediaToBeMoved(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/Media.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/Media.spec.ts index ada2e6f149..14ec1d0fe5 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/Media.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Media/Media.spec.ts @@ -67,6 +67,7 @@ for (const mediaFileType of mediaFileTypes) { await umbracoUi.media.clickCreateMediaWithType(mediaFileType.fileName); await umbracoUi.media.enterMediaItemName(mediaFileType.fileName); await umbracoUi.media.uploadFile('./fixtures/mediaLibrary/' + mediaFileType.filePath); + await umbracoUi.waitForTimeout(500); // Wait for the file to be uploaded await umbracoUi.media.clickSaveButton(); // Assert @@ -219,7 +220,7 @@ test('can delete a media item from the recycle bin', async ({umbracoApi, umbraco await umbracoUi.media.goToSection(ConstantHelper.sections.media); // Act - await umbracoUi.media.isItemVisibleInRecycleBin(mediaFileName); + await umbracoUi.media.isItemVisibleInRecycleBin(mediaFileName, true, true); await umbracoUi.media.deleteMediaItem(mediaFileName); // Assert @@ -237,13 +238,13 @@ test('can empty the recycle bin', async ({umbracoApi, umbracoUi}) => { await umbracoUi.media.goToSection(ConstantHelper.sections.media); // Act - await umbracoUi.media.isItemVisibleInRecycleBin(mediaFileName); + await umbracoUi.media.isItemVisibleInRecycleBin(mediaFileName, true, true); await umbracoUi.media.clickEmptyRecycleBinButton(); await umbracoUi.media.clickConfirmEmptyRecycleBinButton(); // Assert + await umbracoUi.media.waitForRecycleBinToBeEmptied(); await umbracoUi.media.isItemVisibleInRecycleBin(mediaFileName, false, false); - await umbracoUi.media.doesSuccessNotificationHaveText(NotificationConstantHelper.success.emptiedRecycleBin); expect(await umbracoApi.media.doesNameExist(mediaFileName)).toBeFalsy(); expect(await umbracoApi.media.doesMediaItemExistInRecycleBin(mediaFileName)).toBeFalsy(); }); @@ -260,7 +261,7 @@ test('can trash a media node with a relation', async ({umbracoApi, umbracoUi}) = // Act await umbracoUi.media.clickActionsMenuForName(mediaFileName); - await umbracoUi.media.clickTrashButton(); + await umbracoUi.media.clickTrashActionMenuOption(); // Verify the references list await umbracoUi.media.doesReferenceHeadlineHaveText(ConstantHelper.trashDeleteDialogMessage.referenceHeadline); await umbracoUi.media.doesReferenceItemsHaveCount(1); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts index 6bbc40f1dd..c959d876c3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; let memberId = ''; @@ -39,6 +39,7 @@ test('can create a member', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => // Assert await umbracoUi.member.waitForMemberToBeCreated(); + await umbracoUi.member.isSuccessStateIconVisible() await umbracoUi.member.clickMembersSidebarButton(); await umbracoUi.member.isMemberWithNameVisible(memberName, true); expect(await umbracoApi.member.doesNameExist(memberName)).toBeTruthy(); @@ -244,8 +245,7 @@ test('cannot create member with invalid email', async ({umbracoApi, umbracoUi}) expect(await umbracoApi.member.doesNameExist(memberName)).toBeFalsy(); }); -// TODO: Remove skip when the front-end is ready. Currently it is possible to update member with invalid email. -test.skip('cannot update email to an invalid email', async ({umbracoApi, umbracoUi}) => { +test('cannot update email to an invalid email', async ({umbracoApi, umbracoUi}) => { // Arrange const invalidEmail = 'invalidemail'; memberTypeId = await umbracoApi.memberType.createDefaultMemberType(memberTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/InstalledPackages.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/InstalledPackages.spec.ts index fbd11c8cfd..9164b496f5 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/InstalledPackages.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/InstalledPackages.spec.ts @@ -1,6 +1,6 @@ import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; -test.skip('can see the umbraco package is installed', async ({umbracoUi}) => { +test('can see the umbraco package is installed', async ({umbracoUi}) => { // Arrange await umbracoUi.goToBackOffice(); await umbracoUi.package.goToSection(ConstantHelper.sections.packages); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/PackagesPackages.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/PackagesPackages.spec.ts index 19b4f74a99..ac91cf55d6 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/PackagesPackages.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Packages/PackagesPackages.spec.ts @@ -1,14 +1,12 @@ import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; -// TODO: There is currently an issue with playwright and the Iframe in the marketplace, look into this. // The MarketPlace is a iFrame we are using from the DXP team, so it is not something we should test. This test is just checking if we have the IFrame -test.skip('can see the marketplace', async ({umbracoUi}) => { +test('can see the marketplace', async ({umbracoUi}) => { // Arrange await umbracoUi.goToBackOffice(); - await umbracoUi.package.goToSection(ConstantHelper.sections.packages); // Act - await umbracoUi.package.clickPackagesTab(); + await umbracoUi.package.goToSection(ConstantHelper.sections.packages); // Assert await umbracoUi.package.isMarketPlaceIFrameVisible(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RelationTypes/RelationTypes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RelationTypes/RelationTypes.spec.ts index f831ca285e..536cf77f5d 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RelationTypes/RelationTypes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RelationTypes/RelationTypes.spec.ts @@ -1,7 +1,6 @@ import {test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; -// Skip all tests as this feature is removed const relationTypeName = 'Test Relation Type'; const objectTypeName = 'Document'; let relationTypeId = ''; @@ -18,6 +17,7 @@ test.afterEach(async ({umbracoApi}) => { await umbracoApi.relationType.ensureNameNotExists(relationTypeName); }); +// Skip all tests as this feature is removed test.skip('can create a relation type', async ({umbracoApi, umbracoUi}) => { // Act await umbracoUi.relationType.clickActionsMenuAtRoot(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RenderingContent/RenderingContentWithMultipleMediaPicker.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RenderingContent/RenderingContentWithMultipleMediaPicker.spec.ts index 6b516df736..0d231bd569 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RenderingContent/RenderingContentWithMultipleMediaPicker.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/RenderingContent/RenderingContentWithMultipleMediaPicker.spec.ts @@ -40,8 +40,7 @@ test('can render content with multiple media picker value', async ({umbracoApi, await umbracoUi.contentRender.doesContentRenderValueContainText(secondMediaFileName); }); -// Remove .fixme when the issue is fixed: https://github.com/umbraco/Umbraco-CMS/issues/18531 -test.fixme('can render content with multiple image media picker value', async ({umbracoApi, umbracoUi}) => { +test('can render content with multiple image media picker value', async ({umbracoApi, umbracoUi}) => { // Arrange const dataTypeName = 'Multiple Image Media Picker'; const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/ExamineManagement.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/ExamineManagement.spec.ts index b5b61a5faf..c8fdd1fb24 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/ExamineManagement.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/ExamineManagement.spec.ts @@ -7,7 +7,7 @@ test.beforeEach(async ({umbracoUi}) => { await umbracoUi.examineManagement.clickExamineManagementTab(); }); -test.skip('can view indexers information', async ({umbracoApi, umbracoUi}) => { +test('can view indexers information', async ({umbracoApi, umbracoUi}) => { // Arrange const allIndexersData = await umbracoApi.indexer.getAll(); const indexerCount = allIndexersData.total; diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Profiling.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Profiling.spec.ts index be7ae4e21d..7f5d864ba4 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Profiling.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Profiling.spec.ts @@ -1,12 +1,11 @@ import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; -test.beforeEach(async ({umbracoUi}) => { +test('can update value of activate the profiler by default', async ({umbracoUi}) => { + // Arrange await umbracoUi.goToBackOffice(); await umbracoUi.profiling.goToSection(ConstantHelper.sections.settings); await umbracoUi.profiling.clickProfilingTab(); -}); -test('can update value of activate the profiler by default', async ({umbracoUi}) => { // Act await umbracoUi.profiling.clickActivateProfilerByDefaultToggle(); await umbracoUi.reloadPage(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Telemetry.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Telemetry.spec.ts index 09595139c2..dc116934d7 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Telemetry.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Dashboard/Telemetry.spec.ts @@ -16,7 +16,9 @@ test('can change telemetry level', async ({page, umbracoApi, umbracoUi}) => { const expectedLevel = "Minimal"; const levelValue = "1"; await umbracoUi.telemetryData.clickTelemetryDataTab(); + await umbracoUi.waitForTimeout(500); await umbracoUi.telemetryData.changeTelemetryDataLevelValue(levelValue); + await umbracoUi.waitForTimeout(500); // We wait until we are sure that the Telemetry level has been saved before we continue. await Promise.all([ @@ -27,8 +29,7 @@ test('can change telemetry level', async ({page, umbracoApi, umbracoUi}) => { // Assert // UI await umbracoUi.reloadPage(); - await expect(page.locator('[name="telemetryLevel"] >> input[id=input]')).toHaveValue(levelValue, {timeout: 20000}); - // await umbracoUi.telemetryData.doesTelemetryDataLevelHaveValue(levelValue); + await umbracoUi.telemetryData.doesTelemetryDataLevelHaveValue(levelValue); // API expect(await umbracoApi.telemetry.getLevel() == expectedLevel).toBeTruthy(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeCollectionWorkspace.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeCollectionWorkspace.spec.ts index 3001fe9c99..85edfa5c21 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeCollectionWorkspace.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeCollectionWorkspace.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from '@playwright/test'; const documentTypeName = 'TestDocumentType'; @@ -93,8 +93,6 @@ test('can create a document type folder using create options', async ({umbracoAp // Assert await umbracoUi.documentType.waitForDocumentTypeToBeCreated(); - const folder = await umbracoApi.documentType.getByName(documentFolderName); - expect(folder.name).toBe(documentFolderName); // Check if the created document type folder is displayed in the collection view and has correct icon await umbracoUi.documentType.clickDocumentTypesMenu(); await umbracoUi.documentType.doesCollectionTreeItemTableRowHaveName(documentFolderName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeDesignTab.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeDesignTab.spec.ts index c4c317d3e2..6f085a9bd5 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeDesignTab.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeDesignTab.spec.ts @@ -258,7 +258,8 @@ test('can remove a composition from a document type', async ({umbracoApi, umbrac await umbracoApi.documentType.ensureNameNotExists(compositionDocumentTypeName); }); -test('can reorder groups in a document type', async ({umbracoApi, umbracoUi}) => { +// Skip this flaky tests as sometimes the properties are not dragged correctly. +test.skip('can reorder groups in a document type', async ({umbracoApi, umbracoUi}) => { // Arrange const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName); const secondGroupName = 'SecondGroup'; @@ -268,7 +269,9 @@ test('can reorder groups in a document type', async ({umbracoApi, umbracoUi}) => // Act await umbracoUi.documentType.clickReorderButton(); - const groupValues = await umbracoUi.documentType.reorderTwoGroups(); + + // Drag and Drop + const groupValues = await umbracoUi.documentType.reorderTwoGroups(groupName, secondGroupName); const firstGroupValue = groupValues.firstGroupValue; const secondGroupValue = groupValues.secondGroupValue; await umbracoUi.documentType.clickIAmDoneReorderingButton(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeTemplatesTab.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeTemplatesTab.spec.ts index 8d0aeb57b7..2fb5eb9f9a 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeTemplatesTab.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/DocumentType/DocumentTypeTemplatesTab.spec.ts @@ -60,8 +60,7 @@ test('can set an allowed template as default for document type', async ({umbraco await umbracoApi.template.ensureNameNotExists(secondTemplateName); }); -// TODO: Remove skip when the front-end is ready. Currently the error displays when remove an allowed template -test.skip('can remove an allowed template from a document type', async ({umbracoApi, umbracoUi}) => { +test('can remove an allowed template from a document type', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.documentType.createDocumentTypeWithAllowedTemplate(documentTypeName, templateId); await umbracoUi.documentType.goToSection(ConstantHelper.sections.settings); @@ -69,7 +68,7 @@ test.skip('can remove an allowed template from a document type', async ({umbraco // Act await umbracoUi.documentType.goToDocumentType(documentTypeName); await umbracoUi.documentType.clickDocumentTypeTemplatesTab(); - await umbracoUi.documentType.clickRemoveWithName(templateName, true); + await umbracoUi.documentType.clickRemoveWithName(templateName); await umbracoUi.documentType.clickSaveButton(); // Assert diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/PartialView/PartialView.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/PartialView/PartialView.spec.ts index fb975529e6..8c77f463f4 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/PartialView/PartialView.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/PartialView/PartialView.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; import {expect} from "@playwright/test"; const partialViewName = 'TestPartialView'; @@ -111,8 +111,7 @@ test('can update a partial view content', {tag: '@smoke'}, async ({umbracoApi, u expect(updatedPartialView.content).toBe(updatedPartialViewContent); }); -// Remove .fixme when the issue is fixed: https://github.com/umbraco/Umbraco-CMS/issues/18536 -test.fixme('can use query builder with Order By statement for a partial view', async ({umbracoApi, umbracoUi}) => { +test('can use query builder with Order By statement for a partial view', async ({umbracoApi, umbracoUi}) => { //Arrange const propertyAliasValue = 'UpdateDate'; const isAscending = true; @@ -151,8 +150,7 @@ test.fixme('can use query builder with Order By statement for a partial view', a expect(updatedPartialView.content).toBe(expectedTemplateContent); }); -// Remove .fixme when the issue is fixed: https://github.com/umbraco/Umbraco-CMS/issues/18536 -test.fixme('can use query builder with Where statement for a partial view', async ({umbracoApi, umbracoUi}) => { +test('can use query builder with Where statement for a partial view', async ({umbracoApi, umbracoUi}) => { //Arrange const propertyAliasValue = 'Name'; const operatorValue = 'is'; @@ -194,17 +192,16 @@ test.fixme('can use query builder with Where statement for a partial view', asyn test('can insert dictionary item into a partial view', async ({umbracoApi, umbracoUi}) => { // Arrange + const partialViewContent = '@Umbraco.GetDictionaryValue("' + dictionaryName + '")' + defaultPartialViewContent; await umbracoApi.partialView.create(partialViewFileName, defaultPartialViewContent, '/'); expect(await umbracoApi.partialView.doesExist(partialViewFileName)).toBeTruthy(); - await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); await umbracoApi.dictionary.create(dictionaryName); - const partialViewContent = '@Umbraco.GetDictionaryValue("' + dictionaryName + '")' + defaultPartialViewContent; - // Act await umbracoUi.partialView.openPartialViewAtRoot(partialViewFileName); await umbracoUi.partialView.insertDictionaryItem(dictionaryName); + await umbracoUi.waitForTimeout(500); // Wait for the dictionary item to be inserted await umbracoUi.partialView.clickSaveButton(); // Assert @@ -250,8 +247,7 @@ test('can delete a partial view', {tag: '@smoke'}, async ({umbracoApi, umbracoUi await umbracoUi.partialView.isPartialViewRootTreeItemVisible(partialViewFileName, false, false); }); -// TODO: Remove skip when the front-end is ready. Currently the returned items count is not updated after choosing the root content. -test.skip('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { +test('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { //Arrange // Create content at root with a child const documentTypeName = 'ParentDocumentType'; @@ -261,12 +257,14 @@ test.skip('can show returned items in query builder ', async ({umbracoApi, umbra const childDocumentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(childDocumentTypeName); const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithAllowedChildNode(documentTypeName, childDocumentTypeId); const contentId = await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); + const childContentId = await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); + await umbracoApi.document.publish(contentId); + await umbracoApi.document.publish(childContentId); // Create partial view await umbracoApi.partialView.create(partialViewFileName, partialViewFileName, '/'); expect(await umbracoApi.partialView.doesExist(partialViewFileName)).toBeTruthy(); - //Act + // Act await umbracoUi.partialView.openPartialViewAtRoot(partialViewFileName); await umbracoUi.partialView.clickQueryBuilderButton(); await umbracoUi.partialView.chooseRootContentInQueryBuilder(contentName); @@ -277,6 +275,9 @@ test.skip('can show returned items in query builder ', async ({umbracoApi, umbra // Clean await umbracoApi.documentType.ensureNameNotExists(documentTypeName); + await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeName); + await umbracoApi.document.ensureNameNotExists(contentName); + await umbracoApi.document.ensureNameNotExists(childContentName); }); test('cannot create a partial view with an empty name', async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Stylesheet/Stylesheet.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Stylesheet/Stylesheet.spec.ts index be9657a16e..0667fdce87 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Stylesheet/Stylesheet.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Stylesheet/Stylesheet.spec.ts @@ -2,9 +2,7 @@ import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwri import {expect} from '@playwright/test'; const stylesheetName = 'TestStyleSheetFile.css'; -const styleName = 'TestStyleName'; -const styleSelector = 'h1'; -const styleStyles = 'color:red'; +const stylesheetContent = 'TestContent'; test.beforeEach(async ({umbracoUi,umbracoApi}) => { await umbracoUi.goToBackOffice(); @@ -34,7 +32,6 @@ test('can create a empty stylesheet', {tag: '@smoke'}, async ({umbracoApi, umbra test('can create a stylesheet with content', async ({umbracoApi, umbracoUi}) => { // Arrange - const stylesheetContent = 'TestContent'; await umbracoUi.stylesheet.goToSection(ConstantHelper.sections.settings); //Act @@ -53,21 +50,22 @@ test('can create a stylesheet with content', async ({umbracoApi, umbracoUi}) => await umbracoUi.stylesheet.isStylesheetRootTreeItemVisible(stylesheetName); }); -test.skip('can update a stylesheet', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { +test('can update a stylesheet', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { // Arrange - const stylesheetContent = '/**umb_name:' + styleName + '*/\n' + styleSelector + ' {\n\t' + styleStyles + '\n}'; - await umbracoApi.stylesheet.create(stylesheetName, '', '/'); + const updatedContent = 'UpdatedTestContent'; + await umbracoApi.stylesheet.create(stylesheetName, stylesheetContent, '/'); expect(await umbracoApi.stylesheet.doesExist(stylesheetName)).toBeTruthy(); await umbracoUi.stylesheet.goToSection(ConstantHelper.sections.settings); //Act await umbracoUi.stylesheet.openStylesheetByNameAtRoot(stylesheetName); + await umbracoUi.stylesheet.enterStylesheetContent(updatedContent); await umbracoUi.stylesheet.clickSaveButton(); // Assert await umbracoUi.stylesheet.isSuccessStateVisibleForSaveButton(); const stylesheetData = await umbracoApi.stylesheet.getByName(stylesheetName); - expect(stylesheetData.content).toEqual(stylesheetContent); + expect(stylesheetData.content).toEqual(updatedContent); }); test('can delete a stylesheet', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index bdca513e24..17d89c475a 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -136,8 +136,7 @@ test('can remove a master template', async ({umbracoApi, umbracoUi}) => { await umbracoApi.template.ensureNameNotExists(childTemplateName); }); -// Remove skip when the front-end is ready. Currently this function is not stable, sometimes the shown code is not updated after choosing Order By -test.skip('can use query builder with Order By statement for a template', async ({umbracoApi, umbracoUi}) => { +test('can use query builder with Order By statement for a template', async ({umbracoApi, umbracoUi}) => { // Arrange const propertyAliasValue = 'UpdateDate'; const isAscending = true; @@ -175,8 +174,7 @@ test.skip('can use query builder with Order By statement for a template', async expect(templateData.content).toBe(expectedTemplateContent); }); -// Remove .fixme when the issue is fixed: https://github.com/umbraco/Umbraco-CMS/issues/18536 -test.fixme('can use query builder with Where statement for a template', async ({umbracoApi, umbracoUi}) => { +test('can use query builder with Where statement for a template', async ({umbracoApi, umbracoUi}) => { // Arrange const propertyAliasValue = 'Name'; const operatorValue = 'is'; @@ -330,25 +328,26 @@ test('can insert value into a template', async ({umbracoApi, umbracoUi}) => { expect(templateData.content).toBe(templateContent); }); -// TODO: Remove skip when the front-end is ready. Currently the returned items count is not updated after choosing the root content. -test.skip('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { +test('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { // Arrange // Create content at root with a child const documentTypeName = 'ParentDocumentType'; const childDocumentTypeName = 'ChildDocumentType'; - const contentName = 'ContentName'; - const childContentName = 'ChildContentName'; + const contentName = 'ContentNameTemplate'; + const childContentName = 'ChildContentNameTemplate'; const childDocumentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(childDocumentTypeName); const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithAllowedChildNode(documentTypeName, childDocumentTypeId); const contentId = await umbracoApi.document.createDefaultDocument(contentName, documentTypeId); - await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); + const childContentId = await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); + await umbracoApi.document.publish(contentId); + await umbracoApi.document.publish(childContentId); // Create template await umbracoApi.template.createDefaultTemplate(templateName); // Act await umbracoUi.template.goToTemplate(templateName); await umbracoUi.template.clickQueryBuilderButton(); - await umbracoUi.template.chooseRootContentInQueryBuilder('(' + contentName + ')'); + await umbracoUi.template.chooseRootContentInQueryBuilder(contentName); // Assert await umbracoUi.template.doesReturnedItemsHaveCount(1); @@ -356,6 +355,9 @@ test.skip('can show returned items in query builder ', async ({umbracoApi, umbra // Clean await umbracoApi.documentType.ensureNameNotExists(documentTypeName); + await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeName); + await umbracoApi.document.ensureNameNotExists(contentName); + await umbracoApi.document.ensureNameNotExists(childContentName); }); test('cannot create a template with an empty name', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/ContentStartNodes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/ContentStartNodes.spec.ts index 70bd76fcca..ea84ad5161 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/ContentStartNodes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/ContentStartNodes.spec.ts @@ -69,9 +69,7 @@ test('can see parent of start node but not access it', async ({umbracoApi, umbra // Assert await umbracoUi.content.isContentInTreeVisible(rootDocumentName); await umbracoUi.content.goToContentWithName(rootDocumentName); - await umbracoUi.content.isErrorNotificationVisible(); - // TODO: Uncomment this when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18533 - //await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource); + await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied'); await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName); await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName); await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName, false); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/MediaStartNodes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/MediaStartNodes.spec.ts index bc9637b05a..c8720a7a41 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/MediaStartNodes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/User/MediaStartNodes.spec.ts @@ -61,11 +61,8 @@ test('can see parent of start node but not access it', async ({umbracoApi, umbra // Assert await umbracoUi.media.isMediaTreeItemVisible(rootFolderName); - await umbracoUi.waitForTimeout(500); await umbracoUi.media.goToMediaWithName(rootFolderName); - await umbracoUi.content.isErrorNotificationVisible(); - // TODO: Uncomment this when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18533 - //await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource); + await umbracoUi.media.doesMediaWorkspaceHaveText('Access denied'); await umbracoUi.media.clickCaretButtonForMediaName(rootFolderName); await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderOneName); await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderTwoName, false); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/ContentStartNodes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/ContentStartNodes.spec.ts index 09c8ed8e39..1648b0e6ff 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/ContentStartNodes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/ContentStartNodes.spec.ts @@ -1,4 +1,4 @@ -import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers'; +import {ConstantHelper, test} from '@umbraco/playwright-testhelpers'; const testUser = ConstantHelper.testUserCredentials; let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""}; @@ -71,9 +71,7 @@ test('can see parent of start node but not access it', async ({umbracoApi, umbra // Assert await umbracoUi.content.isContentInTreeVisible(rootDocumentName); await umbracoUi.content.goToContentWithName(rootDocumentName); - await umbracoUi.content.isErrorNotificationVisible(); - // TODO: Uncomment this when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18533 - //await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource); + await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied'); await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName); await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName); await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName, false); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DefaultPermissionsInContent.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DefaultPermissionsInContent.spec.ts index 4778d60401..11aad82ae3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DefaultPermissionsInContent.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DefaultPermissionsInContent.spec.ts @@ -76,9 +76,7 @@ test('can not browse content node with permission disabled', async ({umbracoApi, await umbracoUi.content.goToContentWithName(rootDocumentName); // Assert - await umbracoUi.content.isErrorNotificationVisible(); - // TODO: Uncomment this when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18533 - //await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource); + await umbracoUi.content.doesDocumentWorkspaceHaveText('Not found'); }); test('can create document blueprint with permission enabled', async ({umbracoApi, umbracoUi}) => { @@ -127,7 +125,8 @@ test('can delete content with delete permission enabled', async ({umbracoApi, um await umbracoUi.content.clickConfirmTrashButton(); // Assert - await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.movedToRecycleBin); + await umbracoUi.content.waitForContentToBeTrashed(); + await umbracoUi.content.isItemVisibleInRecycleBin(rootDocumentName); }); test('can not delete content with delete permission disabled', async ({umbracoApi, umbracoUi}) => { @@ -159,7 +158,8 @@ test('can empty recycle bin with delete permission enabled', async ({umbracoApi, await umbracoUi.content.clickConfirmEmptyRecycleBinButton(); // Assert - await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.emptiedRecycleBin); + await umbracoUi.content.waitForRecycleBinToBeEmptied(); + await umbracoUi.content.isItemVisibleInRecycleBin(rootDocumentName, false, false); }); test('can not empty recycle bin with delete permission disabled', async ({umbracoApi, umbracoUi}) => { @@ -270,7 +270,8 @@ test('can not publish content with publish permission disabled', async ({umbraco await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false); }); -// Bug, does nothing in the frontend. +// Remove .skip when the front-end is ready. Currently there is no "Permissions" menu item displays +// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19339 test.skip('can set permissions with set permissions permission enabled', async ({umbracoApi, umbracoUi}) => { // Arrange userGroupId = await umbracoApi.userGroup.createUserGroupWithSetPermissionsPermission(userGroupName); @@ -539,8 +540,7 @@ test('can not set culture and hostnames with culture and hostnames permission di await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false); }); -// TODO: Notification is not correct 'Public access setting created' should be 'access' -test.skip('can set public access with public access permission enabled', async ({umbracoApi, umbracoUi}) => { +test('can set public access with public access permission enabled', async ({umbracoApi, umbracoUi}) => { // Arrange userGroupId = await umbracoApi.userGroup.createUserGroupWithPublicAccessPermission(userGroupName); const testMemberGroup = 'TestMemberGroup'; @@ -593,6 +593,7 @@ test('can rollback content with rollback permission enabled', async ({umbracoApi await umbracoUi.content.doesDocumentPropertyHaveValue(dataTypeName, updatedTextStringText); await umbracoUi.content.clickInfoTab(); await umbracoUi.content.clickRollbackButton(); + await umbracoUi.waitForTimeout(700); // Wait for the rollback items to load await umbracoUi.content.clickLatestRollBackItem(); await umbracoUi.content.clickRollbackContainerButton(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValueGranularPermission.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValueGranularPermission.spec.ts index 8541d8d9d1..dd7ef6ebdc 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValueGranularPermission.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValueGranularPermission.spec.ts @@ -50,7 +50,7 @@ test('can only see property values for specific document with read UI enabled', await umbracoUi.content.isPropertyEditorUiWithNameReadOnly(firstPropertyName[1]); await umbracoUi.content.isPropertyEditorUiWithNameReadOnly(secondPropertyName[1]); await umbracoUi.content.goToContentWithName(secondDocumentName); - await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.permissionDenied); + await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied'); }); test('cannot see specific property value without UI read permission enabled', async ({umbracoApi, umbracoUi}) => { @@ -101,7 +101,7 @@ test('can see property with UI read enabled but not another property with UI rea await umbracoUi.content.isPropertyEditorUiWithNameVisible(secondPropertyName[1], false); }); -// Remove .skip when the front-end is ready. +// Remove .skip when the front-end is ready. // Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19395 test.skip('can edit specific property values with UI read and write permission enabled', async ({umbracoApi, umbracoUi}) => { // Arrange diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValuePermission.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValuePermission.spec.ts index 4b558f8397..47a1703c9c 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValuePermission.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/DocumentPropertyValuePermission.spec.ts @@ -70,7 +70,7 @@ test('cannot open content without document read permission even with UI read per await umbracoUi.content.goToContentWithName(documentName); // Assert - await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.permissionDenied); + await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied'); }); test('cannot edit property values without UI write permission', async ({umbracoApi, umbracoUi}) => { @@ -122,4 +122,4 @@ test('cannot see property values with only UI write but no UI read permission', // Assert await umbracoUi.content.isPropertyEditorUiWithNameVisible('text-box', false); -}); \ No newline at end of file +}); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/GranularPermissionsInContent.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/GranularPermissionsInContent.spec.ts index 450d94b528..e2cb5eedef 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/GranularPermissionsInContent.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/GranularPermissionsInContent.spec.ts @@ -269,6 +269,7 @@ test('can set culture and hostnames for a specific content with culture and host // Assert await umbracoUi.content.waitForDomainToBeCreated(); + await umbracoUi.waitForTimeout(500); // Wait for the domain to be set const document = await umbracoApi.document.getByName(firstDocumentName); const domains = await umbracoApi.document.getDomains(document.id); expect(domains.domains[0].domainName).toEqual(domainName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/Languages.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/Languages.spec.ts index e27f43c25e..29dd874a10 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/Languages.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/Languages.spec.ts @@ -62,7 +62,8 @@ test.afterEach(async ({umbracoApi}) => { await umbracoApi.documentType.ensureNameNotExists(documentTypeName); }); -test.fixme('can rename content with language set in userGroup', async ({umbracoApi, umbracoUi}) => { +// Remove .skip when the front-end is ready. Currently the content name is read-only so cannot remane it. +test.skip('can rename content with language set in userGroup', async ({umbracoApi, umbracoUi}) => { // Arrange const updatedContentName = 'UpdatedContentName'; userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode); @@ -75,7 +76,6 @@ test.fixme('can rename content with language set in userGroup', async ({umbracoA // Act await umbracoUi.content.isDocumentReadOnly(false); await umbracoUi.content.enterContentName(updatedContentName); - // Fix this later. Currently the "Save" button changed to "Save..." button await umbracoUi.content.clickSaveButton(); await umbracoUi.content.clickSaveAndCloseButton(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MediaStartNodes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MediaStartNodes.spec.ts index 1a72772e3b..ac284c12ba 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MediaStartNodes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MediaStartNodes.spec.ts @@ -62,11 +62,8 @@ test('can see parent of start node but not access it', async ({umbracoApi, umbra // Assert await umbracoUi.media.isMediaTreeItemVisible(rootFolderName); - await umbracoUi.waitForTimeout(500); await umbracoUi.media.goToMediaWithName(rootFolderName); - await umbracoUi.content.isErrorNotificationVisible(); - // TODO: Uncomment this when this issue is fixed https://github.com/umbraco/Umbraco-CMS/issues/18533 - //await umbracoUi.content.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource); + await umbracoUi.media.doesMediaWorkspaceHaveText('Access denied'); await umbracoUi.media.clickCaretButtonForMediaName(rootFolderName); await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderOneName); await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderTwoName, false); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MemberSection.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MemberSection.spec.ts index 47d0b2d1ea..f0233c05bc 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MemberSection.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/Permissions/UserGroup/MemberSection.spec.ts @@ -46,8 +46,7 @@ test('can access members section with section enabled', async ({umbracoApi, umbr await umbracoUi.member.doesErrorNotificationHaveText(NotificationConstantHelper.error.noAccessToResource, false); }); -// TODO: unskip when member creation is fixed -test.skip('can create member with members section set', async ({umbracoApi, umbracoUi}) => { +test('can create member with members section set', async ({umbracoApi, umbracoUi}) => { // Arrange userGroupId = await umbracoApi.userGroup.createUserGroupWithMemberSection(userGroupName); await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], true, [], false, 'en-us'); @@ -57,7 +56,7 @@ test.skip('can create member with members section set', async ({umbracoApi, umbr await umbracoUi.member.clickMembersMenu(); // Act - await umbracoUi.member.clickCreateButton(); + await umbracoUi.member.clickCreateMembersButton(); await umbracoUi.member.enterMemberName(memberName); await umbracoUi.member.clickInfoTab(); await umbracoUi.member.enterUsername(username); @@ -74,8 +73,7 @@ test.skip('can create member with members section set', async ({umbracoApi, umbr expect(await umbracoApi.member.doesNameExist(memberName)).toBeTruthy(); }); -// TODO: unskip when member creation is fixed -test.skip('can update member with members section set', async ({umbracoApi, umbracoUi}) => { +test('can update member with members section set', async ({umbracoApi, umbracoUi}) => { // Arrange userGroupId = await umbracoApi.userGroup.createUserGroupWithMemberSection(userGroupName); memberTypeId = await umbracoApi.memberType.createDefaultMemberType(memberTypeName); @@ -85,6 +83,7 @@ test.skip('can update member with members section set', async ({umbracoApi, umbr testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password); await umbracoUi.goToBackOffice(); await umbracoUi.member.goToSection(ConstantHelper.sections.members, false); + await umbracoUi.member.clickMembersMenu(); // Act await umbracoUi.member.clickMemberLinkByName(memberName); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/User.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/User.spec.ts index 32c7d55344..6feac90525 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/User.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/User.spec.ts @@ -113,14 +113,14 @@ test('can remove a user group from a user', {tag: '@smoke'}, async ({umbracoApi, test('can update culture for a user', async ({umbracoApi, umbracoUi}) => { // Arrange - const danishIsoCode = 'da-dk'; + const danishIsoCode = 'da'; const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName); await umbracoApi.user.createDefaultUser(nameOfTheUser, userEmail, [userGroup.id]); await umbracoUi.user.goToUsers(); // Act await umbracoUi.user.clickUserWithName(nameOfTheUser); - await umbracoUi.user.selectUserLanguage('Dansk (Danmark)'); + await umbracoUi.user.selectUserLanguage(danishIsoCode); await umbracoUi.user.clickSaveButton(); // Assert diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/UserGroups.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/UserGroups.spec.ts index 1d54792e0c..c1aba1e0a4 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/UserGroups.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Users/UserGroups.spec.ts @@ -3,7 +3,7 @@ import {expect} from "@playwright/test"; const allPermissions = { uiPermission: - ['Browse', + ['Read', 'Create Document Blueprint', 'Delete', 'Create', diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Webhook/WebhookTrigger.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Webhook/WebhookTrigger.spec.ts index 5b9f22d45a..9d4f1c68a2 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Webhook/WebhookTrigger.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Webhook/WebhookTrigger.spec.ts @@ -63,7 +63,7 @@ test('can trigger when content is deleted', async ({umbracoApi, umbracoUi}) => { await umbracoUi.content.clickConfirmEmptyRecycleBinButton(); // Assert - await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.emptiedRecycleBin); + await umbracoUi.content.waitForRecycleBinToBeEmptied(); const webhookSiteData = await umbracoApi.webhook.getWebhookSiteRequestResponse(webhookSiteToken); expect(webhookSiteData[0].content).toContain(contentId); }); @@ -123,7 +123,7 @@ test('can trigger when media is deleted', async ({umbracoApi, umbracoUi}) => { await umbracoUi.webhook.goToSection(ConstantHelper.sections.media); // Act - await umbracoUi.media.isItemVisibleInRecycleBin(mediaName); + await umbracoUi.media.isItemVisibleInRecycleBin(mediaName, true, true); await umbracoUi.media.deleteMediaItem(mediaName); await umbracoUi.media.waitForMediaToBeTrashed(); @@ -147,7 +147,7 @@ test('can trigger the webhook for a specific media type', async ({umbracoApi, um await umbracoUi.webhook.goToSection(ConstantHelper.sections.media); // Act - await umbracoUi.media.isItemVisibleInRecycleBin(mediaName); + await umbracoUi.media.isItemVisibleInRecycleBin(mediaName, true, true); await umbracoUi.media.deleteMediaItem(mediaName); await umbracoUi.media.deleteMediaItem(secondMediaName); @@ -239,4 +239,4 @@ test('can custom header for the webhook request', async ({umbracoApi, umbracoUi} // Assert const webhookSiteData = await umbracoApi.webhook.getWebhookSiteRequestResponse(webhookSiteToken); expect(webhookSiteData[0].headers[headerName]).toEqual([headerValue]); -}); \ No newline at end of file +});