E2E: QA cherry picked acceptance tests updates from 17 (#20714)

* Updated tests

* Bumped version

* Added v16 to nightly e2e run
This commit is contained in:
Andreas Zerbst
2025-11-04 08:23:04 +01:00
committed by GitHub
parent 43ac32282c
commit 76fed82e91
12 changed files with 28 additions and 24 deletions

View File

@@ -9,6 +9,7 @@ schedules:
branches:
include:
- v15/dev
- v16/dev
- main
parameters:

View File

@@ -8,7 +8,7 @@
"hasInstallScript": true,
"dependencies": {
"@umbraco/json-models-builders": "^2.0.40",
"@umbraco/playwright-testhelpers": "^16.0.55",
"@umbraco/playwright-testhelpers": "^16.0.58",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"node-fetch": "^2.6.7"
@@ -67,9 +67,9 @@
}
},
"node_modules/@umbraco/playwright-testhelpers": {
"version": "16.0.55",
"resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-16.0.55.tgz",
"integrity": "sha512-715l112FHB7snWq0sY7e0fUD2ppWSSysBKHFhcQkGGw+3Gbo68Z6iXfeAketzKohWji19un4KC3mvZU0IICr9g==",
"version": "16.0.58",
"resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-16.0.58.tgz",
"integrity": "sha512-8NWupbb526Ni3eDF/0dVGDSuIYGPP+4lGxtcpTtA0/0p3Ud/9vTYym/k+KgBElDdlY278yXaWez0IpKhShdLOw==",
"license": "MIT",
"dependencies": {
"@umbraco/json-models-builders": "2.0.40",

View File

@@ -22,7 +22,7 @@
},
"dependencies": {
"@umbraco/json-models-builders": "^2.0.40",
"@umbraco/playwright-testhelpers": "^16.0.55",
"@umbraco/playwright-testhelpers": "^16.0.58",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"node-fetch": "^2.6.7"

View File

@@ -106,7 +106,8 @@ test('can copy and paste a single block into the same document but different gro
await umbracoUi.content.doesBlockEditorBlockWithNameContainValue(elementGroupName, elementPropertyName, ConstantHelper.inputTypes.tipTap, blockPropertyValue);
});
test('can copy and paste a single block into another document', async ({umbracoApi, umbracoUi}) => {
// Remove skip after this issue is resolved: https://github.com/umbraco/Umbraco-CMS/issues/20680
test.skip('can copy and paste a single block into another document', async ({umbracoApi, umbracoUi}) => {
// Arrange
await umbracoApi.document.ensureNameNotExists(secondContentName);
await umbracoApi.document.createDefaultDocumentWithABlockGridEditorAndBlockWithValue(contentName, documentTypeName, blockGridDataTypeName, elementTypeId, AliasHelper.toAlias(elementPropertyName), blockPropertyValue, richTextDataTypeUiAlias);

View File

@@ -106,7 +106,8 @@ test('can copy and paste a single block into the same document but different gro
await umbracoUi.content.doesBlockEditorBlockWithNameContainValue(elementGroupName, elementPropertyName, ConstantHelper.inputTypes.tipTap, blockPropertyValue);
});
test('can copy and paste a single block into another document', async ({umbracoApi, umbracoUi}) => {
// Remove skip after this issue is resolved: https://github.com/umbraco/Umbraco-CMS/issues/20680
test.skip('can copy and paste a single block into another document', async ({umbracoApi, umbracoUi}) => {
// Arrange
await umbracoApi.document.ensureNameNotExists(secondContentName);
await umbracoApi.document.createDefaultDocumentWithABlockListEditorAndBlockWithValue(contentName, documentTypeName, blockListDataTypeName, elementTypeId, AliasHelper.toAlias(elementPropertyName), blockPropertyValue, elementDataTypeUiAlias, groupName);

View File

@@ -234,8 +234,8 @@ test('can duplicate a content node to other parent', async ({umbracoApi, umbraco
await umbracoUi.content.doesSuccessNotificationHaveText(NotificationConstantHelper.success.duplicated);
await umbracoUi.content.isContentInTreeVisible(contentName);
await umbracoUi.content.isContentInTreeVisible(parentContentName);
await umbracoUi.content.openContentCaretButtonForName(parentContentName);
await umbracoUi.content.isChildContentInTreeVisible(parentContentName, contentName);
await umbracoUi.content.goToContentWithName(parentContentName);
await umbracoUi.content.isContentWithNameVisibleInList(contentName);
// Clean
await umbracoApi.document.ensureNameNotExists(parentContentName);

View File

@@ -58,7 +58,7 @@ test('can publish content with the true/false data type', async ({umbracoApi, um
expect(await umbracoApi.document.doesNameExist(contentName)).toBeTruthy();
const contentData = await umbracoApi.document.getByName(contentName);
expect(contentData.variants[0].state).toBe(expectedState);
expect(contentData.values).toEqual([]);
expect(contentData.values[0].value).toEqual(false);
});
test('can toggle the true/false value in the content', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {

View File

@@ -51,7 +51,7 @@ test('can create content using an invariant document blueprint', async ({umbraco
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.clickSaveButtonForContent();
// Assert
@@ -75,7 +75,7 @@ test('can create content using a variant document blueprint', async ({umbracoApi
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.clickSaveButtonForContent();
await umbracoUi.content.clickSaveButton();
@@ -104,7 +104,7 @@ test('can create content with different name using an invariant document bluepri
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.enterContentName(contentName);
await umbracoUi.content.clickSaveButtonForContent();
@@ -130,7 +130,7 @@ test('can create content with different name using a variant document blueprint'
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.enterContentName(contentName);
await umbracoUi.content.clickSaveButtonForContent();
await umbracoUi.content.clickSaveButton();
@@ -161,7 +161,7 @@ test('can create content using a document blueprint with block list', async ({um
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.clickSaveButtonForContent();
// Assert
@@ -187,7 +187,7 @@ test('can create content using a document blueprint with block grid', async ({um
await umbracoUi.content.clickActionsMenuAtRoot();
await umbracoUi.content.clickCreateActionMenuOption();
await umbracoUi.content.chooseDocumentType(documentTypeName);
await umbracoUi.content.clickModalMenuItemWithName(documentBlueprintName);
await umbracoUi.content.selectDocumentBlueprintWithName(documentBlueprintName);
await umbracoUi.content.clickSaveButtonForContent();
// Assert

View File

@@ -275,7 +275,7 @@ test('max can not be less than min in a block grid editor', async ({umbracoApi,
// Assert
await umbracoUi.dataType.isFailedStateButtonVisible();
await umbracoUi.dataType.doesAmountContainErrorMessageWithText('The low value must not be exceed the high value');
await umbracoUi.dataType.doesAmountContainErrorMessageWithText('The low value must not exceed the high value.');
const dataTypeData = await umbracoApi.dataType.getByName(blockGridEditorName);
expect(dataTypeData.values[0].value.min).toBe(minAmount);
// The max value should not be updated

View File

@@ -173,7 +173,7 @@ test('max can not be less than min', async ({umbracoApi, umbracoUi}) => {
// Assert
await umbracoUi.dataType.isFailedStateButtonVisible();
const dataTypeData = await umbracoApi.dataType.getByName(blockListEditorName);
await umbracoUi.dataType.doesAmountContainErrorMessageWithText('The low value must not be exceed the high value');
await umbracoUi.dataType.doesAmountContainErrorMessageWithText('The low value must not exceed the high value.');
expect(dataTypeData.values[0].value.min).toBe(minAmount);
// The max value should not be updated
expect(dataTypeData.values[0].value.max).toBe(oldMaxAmount);

View File

@@ -73,6 +73,7 @@ for (const mediaFileType of mediaFileTypes) {
// Assert
await umbracoUi.media.waitForMediaItemToBeCreated();
await umbracoUi.media.goToSection(ConstantHelper.sections.media);
const mediaData = await umbracoApi.media.getByName(mediaFileType.fileName);
const mediaUrl = await umbracoApi.media.getFullMediaUrl(mediaData.id);
await umbracoUi.media.doesMediaHaveThumbnail(mediaData.id, mediaFileType.thumbnail, mediaUrl);

View File

@@ -14,7 +14,7 @@ test.afterEach(async ({umbracoApi}) => {
await umbracoApi.webhook.ensureNameNotExists(webhookName);
});
test('can create a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
test('can create a webhook', async ({umbracoApi, umbracoUi}) => {
// Arrange
const event = 'Content Deleted';
const webhookSiteUrl = umbracoApi.webhook.webhookSiteUrl + webhookSiteToken;
@@ -122,7 +122,7 @@ test('can disable a webhook', async ({umbracoApi, umbracoUi}) => {
await umbracoApi.webhook.isWebhookEnabled(webhookName, false);
});
test('cannot remove all events from a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
test('cannot remove all events from a webhook', async ({umbracoApi, umbracoUi}) => {
// Arrange
const event = 'Content Deleted';
await umbracoApi.webhook.createDefaultWebhook(webhookName, webhookSiteToken, event);
@@ -173,7 +173,7 @@ test('can remove a header from a webhook', async ({umbracoApi, umbracoUi}) => {
expect(await umbracoApi.webhook.doesWebhookHaveHeader(webhookName, headerName, headerValue)).toBeFalsy();
});
test('cannot add both content event and media event for a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
test('cannot add both content event and media event for a webhook', async ({umbracoApi, umbracoUi}) => {
// Arrange
const event = 'Content Published';
await umbracoApi.webhook.createDefaultWebhook(webhookName, webhookSiteToken, event);