diff --git a/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts b/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts
deleted file mode 100644
index 123109816482..000000000000
--- a/src/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-///
-context('Languages', () => {
-
- beforeEach(() => {
- cy.umbracoLogin(Cypress.env('username'), Cypress.env('password'), false);
- });
-
- it('Deletes language', () => {
- // Setup
- const language1 = 'da';
- const language2 = 'en-GB';
- cy.umbracoEnsureLanguageNotExists(language1);
- cy.umbracoEnsureLanguageNotExists(language2);
- cy.umbracoCreateLanguage(language1, true, '1');
- cy.umbracoCreateLanguage(language2, true, '1');
- cy.umbracoSection('settings');
-
- // Enter language tree and select the language we just created
- cy.umbracoTreeItem('settings', ['Languages']).click();
-
- // Assert there are 3 languages
- cy.get('tbody > tr').should('have.length', 3);
-
- // Delete the Danish language
- cy.get('tr').contains('Danish').parents('tr').within(() => {
- cy.get('umb-button[label-key="general_delete"]').click()
- });
- cy.umbracoButtonByLabelKey('contentTypeEditor_yesDelete').click();
-
- // Assert there is only 2 language
- cy.get('tbody > tr').should('have.length', 3);
-
- // Cleanup
- cy.umbracoEnsureLanguageNotExists(language1);
- cy.umbracoEnsureLanguageNotExists(language2);
- });
-
-});
\ No newline at end of file
diff --git a/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts
index 123109816482..9a7342b7f2d8 100644
--- a/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts
+++ b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts
@@ -1,16 +1,38 @@
///
+
context('Languages', () => {
beforeEach(() => {
cy.umbracoLogin(Cypress.env('username'), Cypress.env('password'), false);
});
+ it('Creates language', () => {
+ // Setup
+ const language = 'Danish';
+ const culture = 'da';
+ cy.umbracoEnsureLanguageCultureNotExists(culture);
+ cy.umbracoSection('settings');
+
+ // Enter language tree and create new language
+ cy.umbracoTreeItem('settings', ['Languages']).click();
+ cy.umbracoButtonByLabelKey('languages_addLanguage').click();
+ cy.get('select[name="newLang"]').select(language);
+
+ // Save and assert success
+ cy.umbracoButtonByLabelKey('buttons_save').click();
+ cy.umbracoSuccessNotification().should('be.visible');
+
+ // Cleanup
+ cy.umbracoEnsureLanguageCultureNotExists(culture);
+ });
+
it('Deletes language', () => {
// Setup
const language1 = 'da';
const language2 = 'en-GB';
- cy.umbracoEnsureLanguageNotExists(language1);
- cy.umbracoEnsureLanguageNotExists(language2);
+ cy.umbracoEnsureLanguageCultureNotExists(language1);
+ cy.umbracoEnsureLanguageCultureNotExists(language2);
+
cy.umbracoCreateLanguage(language1, true, '1');
cy.umbracoCreateLanguage(language2, true, '1');
cy.umbracoSection('settings');
@@ -28,11 +50,11 @@ context('Languages', () => {
cy.umbracoButtonByLabelKey('contentTypeEditor_yesDelete').click();
// Assert there is only 2 language
- cy.get('tbody > tr').should('have.length', 3);
+ cy.get('tbody > tr').should('have.length', 2);
// Cleanup
- cy.umbracoEnsureLanguageNotExists(language1);
- cy.umbracoEnsureLanguageNotExists(language2);
+ cy.umbracoEnsureLanguageCultureNotExists(language1);
+ cy.umbracoEnsureLanguageCultureNotExists(language2);
});
-});
\ No newline at end of file
+});
diff --git a/tests/Umbraco.Tests.AcceptanceTest/cypress/support/commands.js b/tests/Umbraco.Tests.AcceptanceTest/cypress/support/commands.js
index 34da26d04e5f..4a2a6d31a299 100644
--- a/tests/Umbraco.Tests.AcceptanceTest/cypress/support/commands.js
+++ b/tests/Umbraco.Tests.AcceptanceTest/cypress/support/commands.js
@@ -57,9 +57,8 @@ Cypress.Commands.add('umbracoCreateLanguage', (culture, isMandatory = false, fal
});
});
-Cypress.Commands.add('umbracoEnsureLanguageNotExists', (culture) => {
+Cypress.Commands.add('umbracoEnsureLanguageCultureNotExists', (culture) => {
cy.getCookie('UMB-XSRF-TOKEN', { log: false }).then((token) => {
- console.log('hit commands')
cy.request({
method: 'GET',
url: '/umbraco/backoffice/umbracoapi/language/GetAllLanguages',
diff --git a/tests/Umbraco.Tests.AcceptanceTest/cypress/typings.d.ts b/tests/Umbraco.Tests.AcceptanceTest/cypress/typings.d.ts
index 3b7cf0b3e9d2..88626d5f0f3f 100644
--- a/tests/Umbraco.Tests.AcceptanceTest/cypress/typings.d.ts
+++ b/tests/Umbraco.Tests.AcceptanceTest/cypress/typings.d.ts
@@ -3,3 +3,28 @@
// type definitions for custom commands like "createDefaultTodos"
//
+
+export {};
+
+declare global {
+ // eslint-disable-next-line @typescript-eslint/no-namespace
+ namespace Cypress {
+ interface Chainable {
+ /**
+ * Checks to see if the language with specified culture does not exist
+ * If it does it will automatically delete it
+ * @param {string} culture Culture of language to delete
+ * @example cy.umbracoEnsureLanguageCultureNotExists('da-DK');
+ */
+ umbracoEnsureLanguageCultureNotExists: (culture: string) => Chainable;
+ /**
+ * Creates a language from a culture
+ * @param {string} culture Culture of the language - fx "da_DK"
+ * @param {boolean} isMandatory Set whether the language is mandatory or not. Defaults to false
+ * @param {string} fallbackLanguageId of the language to fallback to. Defaults to 1 which is en_US
+ * @example cy.umbracoCreateLanguage('da', true, '1');
+ */
+ umbracoCreateLanguage: (culture: string, isMandatory: boolean, fallbackLanguageId: string) => Chainable;
+ }
+ }
+}
\ No newline at end of file