V14 QA Added acceptance tests for Language (#15997)

* Fixed failing tests

* Updated tests to use the updated helpers

* Clean up tests

* Enabled our pipeline for E2E testing

* Updated the CMS URl for our E2E tests

* Bumped version of our testHelpers

* Did some fixing, still a bit more to do

* Updated auth tests to use LoginUiHelper

* Updated Telemetry tests to use TelemetryUiHelper

* Updated LogViewer tests to use LogViewerUiHelper

* Updated api tests to apply AAA pattern and fix failed tests

* Removed unused import

* Updated api tests for Language

* Added ui tests for Language

* Updated ui test of Language as test helper is changed

* Bumped version of test helper

* Updated create language tests

* Updated delete language test

* Added Language folder

* Fixed method name

* Bumped version of test helper

* Fix merge conflict

* Fixed typo

* Added more waits

* Fixed locator

* Updated locator

* Added timeout

* Fixed password

* Reversed file

* Bumped version

* Bumped version of test helper

* Added more waits

* Added skip for add language test

* Bumped version of test helper

* Added smoke tags

* Fix conflict

* Added @smoke tag to test all Language tests in the pipeline

* Fixed comment

* Removed smoke tag in describe

---------

Co-authored-by: Andreas Zerbst <andr317c@live.dk>
This commit is contained in:
Nhu Dinh
2024-05-07 11:59:59 +07:00
committed by GitHub
parent 91d81063a3
commit f44fb59b34
3 changed files with 132 additions and 7 deletions

View File

@@ -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

View File

@@ -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();

View File

@@ -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);
});
});