diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Language/Language.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Language/Language.spec.ts index dd485b7a97..71f4d595af 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Language/Language.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Language/Language.spec.ts @@ -6,14 +6,15 @@ test.describe('Language tests', () => { const isoCodeDanish = 'da-DK'; test.beforeEach(async ({umbracoApi}) => { - await umbracoApi.language.delete(isoCodeDanish); + await umbracoApi.language.ensureNameNotExists(languageNameDanish); }); test.afterEach(async ({umbracoApi}) => { - await umbracoApi.language.delete(isoCodeDanish); + await umbracoApi.language.ensureNameNotExists(languageNameDanish); }); test('can create a language', async ({umbracoApi}) => { + // Act await umbracoApi.language.create(languageNameDanish, false, false, isoCodeDanish); // Assert @@ -21,13 +22,12 @@ test.describe('Language tests', () => { }); test('can update a language', async ({umbracoApi}) => { + // Arrange const wrongLanguageName = 'densk'; - await umbracoApi.language.create(wrongLanguageName, false, false, isoCodeDanish); - const language = await umbracoApi.language.get(isoCodeDanish); - // Updates language + // Act language.name = languageNameDanish; await umbracoApi.language.update(isoCodeDanish, language); @@ -39,10 +39,11 @@ test.describe('Language tests', () => { }); test('can delete a language', async ({umbracoApi}) => { + // Arrange await umbracoApi.language.create(languageNameDanish, false, false, isoCodeDanish); - expect(await umbracoApi.language.doesExist(isoCodeDanish)).toBeTruthy(); + //Act await umbracoApi.language.delete(isoCodeDanish); // Assert diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Stylesheet/Stylesheet.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Stylesheet/Stylesheet.spec.ts index f9d4016413..72874f7e34 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Stylesheet/Stylesheet.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/Stylesheet/Stylesheet.spec.ts @@ -58,7 +58,7 @@ test.describe('Stylesheet tests', () => { expect(await umbracoApi.stylesheet.doesExist(stylesheetPath)).toBeTruthy(); // Act - await umbracoApi.stylesheet.delete(stylesheetPath); + await umbracoApi.stylesheet.delete(stylesheetName); // Assert expect(await umbracoApi.stylesheet.doesExist(stylesheetPath)).toBeFalsy(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Language/Language.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Language/Language.spec.ts new file mode 100644 index 0000000000..ce06589d65 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Language/Language.spec.ts @@ -0,0 +1,124 @@ +import {test} from '@umbraco/playwright-testhelpers'; +import {expect} from "@playwright/test"; + +test.describe('Language tests', () => { + const languageName = 'Arabic'; + const isoCode = 'ar'; + const defaultLanguageName = 'English (United States)'; + const defaultLanguageIsoCode = 'en-US'; + + test.beforeEach(async ({umbracoApi, umbracoUi}) => { + await umbracoUi.goToBackOffice(); + await umbracoApi.language.ensureNameNotExists(languageName); + }); + + test.afterEach(async ({umbracoApi}) => { + await umbracoApi.language.ensureNameNotExists(languageName); + }); + + test('can add language @smoke', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.clickCreateLink(); + await umbracoUi.language.chooseLanguageByName(languageName); + await umbracoUi.language.clickSaveButton(); + + // Assert + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + // Verify the created language displays in the list + await umbracoUi.language.clickLanguageRoot(); + await umbracoUi.language.isLanguageNameVisible(languageName, true); + }); + + test('can update default language option @smoke', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.language.create(languageName, false, false, isoCode); + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.clickLanguageByName(languageName); + await umbracoUi.language.switchDefaultLanguageOption(); + await umbracoUi.language.clickSaveButton(); + + // Assert + const languageData = await umbracoApi.language.get(isoCode); + expect(languageData.isDefault).toBe(true); + + // Clean + // To delete this language, you need to change en-US to be default language + const defaultLanguageData = await umbracoApi.language.get(defaultLanguageIsoCode); + defaultLanguageData.isDefault = true; + await umbracoApi.language.update(defaultLanguageIsoCode, defaultLanguageData); + }); + + test('can update mandatory language option', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.language.create(languageName, false, false, isoCode); + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.clickLanguageByName(languageName); + await umbracoUi.language.switchMandatoryLanguageOption(); + await umbracoUi.language.clickSaveButton(); + + // Assert + const languageData = await umbracoApi.language.get(isoCode); + expect(languageData.isMandatory).toBe(true); + }); + + test('can delete language @smoke', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.language.create(languageName, false, false, isoCode); + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.removeLanguageByName(languageName); + + // Assert + await umbracoUi.language.isSuccessNotificationVisible(); + expect(await umbracoApi.language.doesExist(isoCode)).toBeFalsy(); + // TODO: uncomment this when the front-end is ready. Currently the deleted language is not disappeared after deleting. + //await umbracoUi.language.isLanguageNameVisible(languageName, false); + }); + + // TODO: Remove skip when the add fallback language function works + test.skip('can remove fallback language', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.language.create(languageName, false, false, isoCode); + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.clickLanguageByName(languageName); + await umbracoUi.language.removeFallbackLanguageByName(defaultLanguageName); + await umbracoUi.language.clickSaveButton(); + + // Act + const languageData = await umbracoApi.language.get(isoCode); + expect(languageData.fallbackIsoCode).toBeFalsy(); + }); + + // TODO: Remove skip when the add fallback language function works + test.skip('can add fallback language', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.language.create(languageName, false, false, isoCode, null); + expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy(); + await umbracoUi.language.goToSettingsTreeItem('Language'); + + // Act + await umbracoUi.language.clickLanguageByName(languageName); + await umbracoUi.language.clickAddFallbackLanguageButton(); + await umbracoUi.language.selectFallbackLanguageByName(defaultLanguageName); + await umbracoUi.language.clickSaveButton(); + + // Act + const languageData = await umbracoApi.language.get(isoCode); + expect(languageData.fallbackIsoCode).toBe(defaultLanguageIsoCode); + }); +}); +