diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 309845da229e..a7a1c674346d 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json @@ -8,7 +8,7 @@ "hasInstallScript": true, "dependencies": { "@umbraco/json-models-builders": "^1.0.2", - "@umbraco/playwright-testhelpers": "^1.0.19", + "@umbraco/playwright-testhelpers": "^1.0.20", "camelize": "^1.0.0", "dotenv": "^16.0.2", "faker": "^4.1.0", @@ -138,9 +138,9 @@ } }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-1.0.19.tgz", - "integrity": "sha512-NLZHRrWkfjzLoBc6RagQkbggT1awYARlmHNw50Aih566o+BnzkZ3usW0J8bvU4rW+8BbkClvOqUDCOP5vSYbVA==", + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-1.0.20.tgz", + "integrity": "sha512-V+0ZmaFmvWicHaZFkGako8FjDA6UvwOkKpHwCIy0xLAEuhLLTEb6yCH61WydAn2BqY7Ft0xUPMvbKMURYddkjA==", "dependencies": { "@umbraco/json-models-builders": "^1.0.2", "camelize": "^1.0.0", @@ -1064,9 +1064,9 @@ } }, "@umbraco/playwright-testhelpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-1.0.19.tgz", - "integrity": "sha512-NLZHRrWkfjzLoBc6RagQkbggT1awYARlmHNw50Aih566o+BnzkZ3usW0J8bvU4rW+8BbkClvOqUDCOP5vSYbVA==", + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-1.0.20.tgz", + "integrity": "sha512-V+0ZmaFmvWicHaZFkGako8FjDA6UvwOkKpHwCIy0xLAEuhLLTEb6yCH61WydAn2BqY7Ft0xUPMvbKMURYddkjA==", "requires": { "@umbraco/json-models-builders": "^1.0.2", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index 4b5fd80ae8da..6589bea5b913 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^1.0.2", - "@umbraco/playwright-testhelpers": "^1.0.19", + "@umbraco/playwright-testhelpers": "^1.0.20", "camelize": "^1.0.0", "faker": "^4.1.0", "form-data": "^4.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/BlockListEditor/blockListEditorContent.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/BlockListEditor/blockListEditorContent.spec.ts index 242f93d6cee8..e44a5cc87db6 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/BlockListEditor/blockListEditorContent.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/BlockListEditor/blockListEditorContent.spec.ts @@ -128,8 +128,6 @@ test.describe('BlockListEditorContent', () => { }); test('can update content with a block list editor', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - await createContentWithOneBlockListEditor(umbracoApi, null); await umbracoUi.goToSection(ConstantHelper.sections.content); @@ -150,14 +148,9 @@ test.describe('BlockListEditorContent', () => { // Assert await umbracoUi.isSuccessNotificationVisible(); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can delete a block list editor in content', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - await createContentWithOneBlockListEditor(umbracoApi, null); await umbracoUi.goToSection(ConstantHelper.sections.content); @@ -179,14 +172,9 @@ test.describe('BlockListEditorContent', () => { // Checks if the content is actually deleted await expect(page.locator('[ui-sortable="vm.sortableOptions"]').nth(0)).not.toBeVisible(); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can copy block list content and paste it', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - await createContentWithOneBlockListEditor(umbracoApi, null); await umbracoUi.goToSection(ConstantHelper.sections.content); @@ -210,14 +198,9 @@ test.describe('BlockListEditorContent', () => { await expect(page.locator('.umb-block-list__block--view')).toHaveCount(2); await page.locator('.umb-block-list__block--view').nth(1).click(); await expect(page.locator('[id="sub-view-0"] >> [name="textbox"]')).toHaveValue('aliasTest'); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can copy block list content and paste it into another group with the same block list editor', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - const element = await umbracoApi.documentTypes.createDefaultElementType(elementName, elementAlias); const dataType = await createDefaultBlockList(umbracoApi, blockListName, element); @@ -268,14 +251,9 @@ test.describe('BlockListEditorContent', () => { await expect(page.locator('[data-element="group-aTheBlockListGroupTheSecond"] >> .umb-block-list__block--view')).toHaveCount(1); await page.locator('[data-element="group-aTheBlockListGroupTheSecond"] >> .umb-block-list__block--view').click(); await expect(page.locator('[id="sub-view-0"] >> [name="textbox"]')).toHaveValue('aliasTest'); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can set a minimum of required blocks in content with a block list editor', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - const element = await umbracoApi.documentTypes.createDefaultElementType(elementName, elementAlias); const dataTypeBlockList = new BlockListDataTypeBuilder() @@ -310,14 +288,9 @@ test.describe('BlockListEditorContent', () => { // Assert await umbracoUi.getSuccessNotification(); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can set a maximum of required blocks in content with a block list editor', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - const element = await umbracoApi.documentTypes.createDefaultElementType(elementName, elementAlias); const dataTypeBlockList = new BlockListDataTypeBuilder() @@ -378,14 +351,9 @@ test.describe('BlockListEditorContent', () => { // Assert await umbracoUi.getSuccessNotification(); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can use inline editing mode in content with a block list editor', async ({page, umbracoApi, umbracoUi}) => { - await umbracoApi.content.deleteAllContent(); - const element = await umbracoApi.documentTypes.createDefaultElementType(elementName, elementAlias); const dataTypeBlockList = new BlockListDataTypeBuilder() @@ -412,15 +380,11 @@ test.describe('BlockListEditorContent', () => { // Assert await expect(page.locator('[ui-sortable="vm.sortableOptions"]').nth(0).locator('[data-element="property-title"]')).toBeVisible(); - - // Clean - await umbracoApi.content.deleteAllContent(); }); test('can see rendered content with a block list editor', async ({page, umbracoApi, umbracoUi}) => { await umbracoApi.templates.ensureNameNotExists(documentName); await umbracoApi.partialViews.ensureNameNotExists(elementName + '.cshtml'); - await umbracoApi.content.deleteAllContent(); const element = new DocumentTypeBuilder() .withName(elementName) @@ -516,6 +480,5 @@ test.describe('BlockListEditorContent', () => { // Clean await umbracoApi.templates.ensureNameNotExists(documentName); await umbracoApi.partialViews.ensureNameNotExists(elementAlias + '.cshtml'); - await umbracoApi.content.deleteAllContent(); }); }); \ No newline at end of file diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/dataTypes.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/dataTypes.spec.ts index 208f2b270859..bc9b64482045 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/dataTypes.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/dataTypes.spec.ts @@ -54,7 +54,7 @@ test.describe('DataTypes', () => { // Assert const expected = `

Lorem ipsum dolor sit amet

`; await expect(umbracoApi.content.verifyRenderedContent('/', expected, true)).toBeTruthy(); - await expect(await page.locator('.umb-button__overlay')).not.toBeVisible(); + await expect(await page.locator('.umb-button__overlay')).not.toBeVisible({timeout: 10000}); // Pick another colour to verify both work await page.locator('.btn-FF0000').click(); @@ -62,7 +62,7 @@ test.describe('DataTypes', () => { // Save await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.saveAndPublish)); await umbracoUi.isSuccessNotificationVisible(); - await expect(await page.locator('.umb-button__overlay')).not.toBeVisible(); + await expect(await page.locator('.umb-button__overlay')).not.toBeVisible({timeout: 10000}); // Assert const expected2 = '

Lorem ipsum dolor sit amet

'; @@ -174,7 +174,7 @@ test.describe('DataTypes', () => { // Assert await expect(await umbracoUi.getErrorNotification()).not.toBeVisible(); - + // Testing if the edits match the expected results const expected = 'UrlPickerContent'; await expect(await umbracoApi.content.verifyRenderedContent('/', expected, true)).toBeTruthy(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/textBoxVariation.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/textBoxVariation.spec.ts index cbdd445e20fd..b746eb99d35e 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/textBoxVariation.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/DataTypes/textBoxVariation.spec.ts @@ -98,7 +98,7 @@ test.describe('Vary by culture for TextBox', () => { // Assert await page.locator('.umb-variant-switcher__toggle').click(); await page.locator('.umb-variant-switcher__name-wrapper', {hasText: "English (United States)"}).hover(); - await page.locator('[role="button"]', {hasText: "Open in split view"}).click(); + await page.locator('[role="menuitem"]', {hasText:'English'}).locator('[role="button"]', {hasText: "Open in split view"}).click(); await expect(page.locator('[name="textbox"]').first()).toHaveValue(daValue); await expect(page.locator('[name="textbox"]').nth(1)).toHaveValue(enValue); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Languages/languages.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Languages/languages.spec.ts index d12ca7367804..e28b0ee34187 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Languages/languages.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Languages/languages.spec.ts @@ -24,7 +24,11 @@ test.describe('Languages', () => { // Save and assert success await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); await umbracoUi.isSuccessNotificationVisible(); + // await expect(umbracoApi.languages.exists(culture)).toBe(true); + const doesExistDA = await umbracoApi.languages.exists(culture); + await expect(doesExistDA).toBe(true); + // Cleanup await umbracoApi.languages.ensureCultureNotExists(culture); }); @@ -45,17 +49,27 @@ test.describe('Languages', () => { // Enter language tree and select the language we just created await umbracoUi.clickElement(umbracoUi.getTreeItem('settings', ['languages'])); - - // Assert there are 3 languages - await expect(await page.locator('tbody > tr')).toHaveCount(3); + + // Assert that the 2 languages exists + // DA + let doesExistDA = await umbracoApi.languages.exists(language1); + await expect(doesExistDA).toBe(true); + // EN + let doesExistEN = await umbracoApi.languages.exists(language2); + await expect(doesExistEN).toBe(true); // Delete UK Language await page.locator('umb-button[label-key="general_delete"]').last().click(); await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey('contentTypeEditor_yesDelete')); - // Assert there is only 2 languages - await expect(await page.locator('tbody > tr')).toHaveCount(2); - + // Assert the da language still exists and that the uk is deleted + // DA + doesExistDA = await umbracoApi.languages.exists(language1); + await expect(doesExistDA).toBe(true); + // EN + doesExistEN = await umbracoApi.languages.exists(language2); + await expect(doesExistEN).toBe(false); + // Cleanup await umbracoApi.languages.ensureCultureNotExists(language1); await umbracoApi.languages.ensureCultureNotExists(language2); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/languages.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/languages.spec.ts deleted file mode 100644 index 41b4f4d0a797..000000000000 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/languages.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import {test, ApiHelpers, UiHelpers, ConstantHelper} from '@umbraco/playwright-testhelpers'; -import {expect} from "@playwright/test"; - -test.describe('Languages', () => { - test.beforeEach(async ({ page, umbracoApi }, testInfo) => { - await umbracoApi.report.report(testInfo); - await umbracoApi.login(); - }); - - test('Can add language', async ({ page, umbracoApi, umbracoUi }) => { - // For some reason the languages to chose from seems to be translated differently than normal, as an example: - // My system is set to EN (US), but most languages are translated into Danish for some reason - // Aghem seems untranslated though? - const name = "Aghem"; // Must be an option in the select box - - await umbracoApi.languages.ensureNameNotExists(name); - - await umbracoUi.goToSection(ConstantHelper.sections.settings); - await umbracoUi.waitForTreeLoad(ConstantHelper.sections.settings); - - await umbracoUi.clickElement(umbracoUi.getTreeItem("settings", ["Languages"])); - await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey("languages_addLanguage")); - - await page.locator('select[name="newLang"]').selectOption({label: name}); - await page.locator('.btn-success').click(); - - await umbracoUi.isSuccessNotificationVisible(); - - await umbracoApi.languages.ensureNameNotExists(name); - }); - - test('Deletes language', async ({ page, umbracoApi, umbracoUi }) => { - - // Setup - const language1 = 'da'; - const language2 = 'en-GB'; - await umbracoApi.languages.ensureCultureNotExists(language1); - await umbracoApi.languages.ensureCultureNotExists(language2); - - await umbracoApi.languages.createLanguage(language1, true, 1); - await umbracoApi.languages.createLanguage(language2, true, 1); - - //Enter settings section and wait for everything to load - await umbracoUi.goToSection(ConstantHelper.sections.settings); - await umbracoUi.waitForTreeLoad(ConstantHelper.sections.settings); - - // Enter language tree and select the language we just created - await umbracoUi.clickElement(umbracoUi.getTreeItem('settings', ['Languages'])); - - // Assert there are 3 languages - let languages = page.locator('tbody > tr'); - await expect(languages).toHaveCount(3); - - // Delete UK Language - await page.locator('umb-button[label-key="general_delete"]').last().click(); - await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey('contentTypeEditor_yesDelete')); - - // Assert there is only 2 languages - await expect(page.locator('tbody > tr')).toHaveCount(2); - - // Cleanup - await umbracoApi.languages.ensureCultureNotExists(language1); - await umbracoApi.languages.ensureCultureNotExists(language2); - }); -}); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViewMacroFiles.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViewMacroFiles.spec.ts index 15b9202e28f7..d4d9d42997c1 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViewMacroFiles.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViewMacroFiles.spec.ts @@ -35,10 +35,10 @@ test.describe('Partial View Macro Files', () => { await umbracoUi.setEditorHeaderName(name); //Save - await page.locator('.btn-success').click(); + await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); //Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); //Clean up await cleanup(umbracoApi, name); @@ -55,12 +55,12 @@ test.describe('Partial View Macro Files', () => { // Type name await umbracoUi.setEditorHeaderName(name); - + // Save - await page.locator('.btn-success').click(); + await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); // Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); // Clean await cleanup(umbracoApi, name); @@ -82,10 +82,10 @@ test.describe('Partial View Macro Files', () => { await umbracoUi.setEditorHeaderName(name); // Save - await page.locator('.btn-success').click(); + await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); // Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); // Clean await cleanup(umbracoApi, name); @@ -145,7 +145,7 @@ test.describe('Partial View Macro Files', () => { await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); // Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); await cleanup(umbracoApi, name); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViews.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViews.spec.ts index 56fbe936a91f..12343a66de9d 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViews.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/partialViews.spec.ts @@ -37,7 +37,7 @@ test.describe('Partial Views', () => { await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); //Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); //Clean up await umbracoApi.partialViews.ensureNameNotExists(fileName); @@ -63,7 +63,7 @@ test.describe('Partial Views', () => { await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); // Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); // Clean up await umbracoApi.partialViews.ensureNameNotExists(fileName); @@ -135,7 +135,8 @@ test.describe('Partial Views', () => { await umbracoUi.clickElement(umbracoUi.getButtonByLabelKey(ConstantHelper.buttons.save)); // Assert - await umbracoUi.isSuccessNotificationVisible(); + await umbracoUi.isSuccessNotificationVisible({timeout:10000}); + // Clean await umbracoApi.partialViews.ensureNameNotExists(fileName); });