From 658ea2c8199f5f09c98ebe9f61de5e67f2a3d461 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Thu, 18 Apr 2024 13:49:21 +0200 Subject: [PATCH 01/13] Added fixtures --- .../tests/Fixtures/Authentication.ts | 41 +++++++++++++++++++ .../tests/Fixtures/Fixtures.ts | 10 +++++ 2 files changed, 51 insertions(+) create mode 100644 tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts create mode 100644 tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts new file mode 100644 index 000000000000..70e39a54c1b8 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts @@ -0,0 +1,41 @@ +import type { Page, Locator } from '@playwright/test'; + +export class Authentication { + private readonly inputBox: Locator; + private readonly todoItems: Locator; + + constructor(public readonly page: Page) { + this.inputBox = this.page.locator('input.new-todo'); + this.todoItems = this.page.getByTestId('todo-item'); + } + + async goto() { + await this.page.goto('https://demo.playwright.dev/todomvc/'); + } + + async checkAuthenticationAccessToken(){ + + } + + async refreshAccessToken(){ + + } + + async addToDo(text: string) { + await this.inputBox.fill(text); + await this.inputBox.press('Enter'); + } + + async remove(text: string) { + const todo = this.todoItems.filter({ hasText: text }); + await todo.hover(); + await todo.getByLabel('Delete').click(); + } + + async removeAll() { + while ((await this.todoItems.count()) > 0) { + await this.todoItems.first().hover(); + await this.todoItems.getByLabel('Delete').first().click(); + } + } +} diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts new file mode 100644 index 000000000000..80ad9447d999 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts @@ -0,0 +1,10 @@ +import { test as base } from '@playwright/test'; +import {Authentication} from "./Authentication"; + +type Fixtures = { + authentication: Authentication; +} + +export const test = base.extend({ + +}) From 7b2555cee89e2b73d7640291b3e4f45cdd50d589 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Thu, 18 Apr 2024 13:49:33 +0200 Subject: [PATCH 02/13] Fixed existing tests --- .../Settings/Script/Script.spec.ts | 6 +- .../Settings/Script/ScriptFolder.spec.ts | 12 +-- .../Settings/Template/Templates.spec.ts | 90 +++++++++++-------- 3 files changed, 62 insertions(+), 46 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/Script.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/Script.spec.ts index 8142e841bbe4..720a3e66378f 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/Script.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/Script.spec.ts @@ -27,7 +27,7 @@ test.describe('Script tests', () => { await umbracoUi.script.isSuccessNotificationVisible(); expect(await umbracoApi.script.doesNameExist(scriptName)).toBeTruthy(); await umbracoUi.script.clickRootFolderCaretButton(); - await umbracoUi.script.isScriptTreeItemVisibile(scriptName); + await umbracoUi.script.isScriptTreeItemVisible(scriptName); }); test.skip('can create a script with content', async ({umbracoApi, umbracoUi}) => { @@ -48,7 +48,7 @@ test.describe('Script tests', () => { const scriptData = await umbracoApi.script.getByName(scriptName); expect(scriptData.content).toBe(scriptContent); await umbracoUi.script.clickRootFolderCaretButton(); - await umbracoUi.script.isScriptTreeItemVisibile(scriptName); + await umbracoUi.script.isScriptTreeItemVisible(scriptName); }); test.skip('can update a script', async ({umbracoApi, umbracoUi}) => { @@ -79,7 +79,7 @@ test.describe('Script tests', () => { // Assert await umbracoUi.script.isSuccessNotificationVisible(); expect(await umbracoApi.script.doesNameExist(scriptName)).toBeFalsy(); - await umbracoUi.script.isScriptTreeItemVisibile(scriptName, false); + await umbracoUi.script.isScriptTreeItemVisible(scriptName, false); }); test.skip('can rename a script', async ({umbracoApi, umbracoUi}) => { diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/ScriptFolder.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/ScriptFolder.spec.ts index 5130c6f4fb75..ca81e69465d5 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/ScriptFolder.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Script/ScriptFolder.spec.ts @@ -24,7 +24,7 @@ test.describe('Script tests', () => { await umbracoUi.script.isSuccessNotificationVisible(); expect(await umbracoApi.script.doesFolderExist(scriptFolderName)).toBeTruthy(); await umbracoUi.script.clickRootFolderCaretButton(); - await umbracoUi.script.isScriptTreeItemVisibile(scriptFolderName); + await umbracoUi.script.isScriptTreeItemVisible(scriptFolderName); }); test.skip('can delete a folder', async ({umbracoApi, umbracoUi}) => { @@ -39,7 +39,7 @@ test.describe('Script tests', () => { // Assert await umbracoUi.script.isSuccessNotificationVisible(); expect(await umbracoApi.script.doesFolderExist(scriptFolderName)).toBeFalsy(); - await umbracoUi.script.isScriptTreeItemVisibile(scriptFolderName, false); + await umbracoUi.script.isScriptTreeItemVisible(scriptFolderName, false); }); test.skip('can create a script in a folder', async ({umbracoApi, umbracoUi}) => { @@ -64,7 +64,7 @@ test.describe('Script tests', () => { const scriptData = await umbracoApi.script.get(scriptChildren[0].path); expect(scriptData.content).toBe(scriptContent); await umbracoUi.stylesheet.clickCaretButtonForName(scriptFolderName); - await umbracoUi.script.isScriptTreeItemVisibile(scriptName); + await umbracoUi.script.isScriptTreeItemVisible(scriptName); }); test.skip('can create a folder in a folder', async ({umbracoApi, umbracoUi}) => { @@ -83,7 +83,7 @@ test.describe('Script tests', () => { const scriptChildren = await umbracoApi.script.getChildren('/' + scriptFolderName); expect(scriptChildren[0].path).toBe('/' + scriptFolderName + '/' + childFolderName); await umbracoUi.stylesheet.clickCaretButtonForName(scriptFolderName); - await umbracoUi.script.isScriptTreeItemVisibile(childFolderName); + await umbracoUi.script.isScriptTreeItemVisible(childFolderName); }); test.skip('can create a folder in a folder in a folder', async ({umbracoApi, umbracoUi}) => { @@ -105,7 +105,7 @@ test.describe('Script tests', () => { const scriptChildren = await umbracoApi.script.getChildren('/' + scriptFolderName + '/' + childFolderName); expect(scriptChildren[0].path).toBe('/' + scriptFolderName + '/' + childFolderName + '/' + childOfChildFolderName); await umbracoUi.stylesheet.clickCaretButtonForName(childFolderName); - await umbracoUi.script.isScriptTreeItemVisibile(childOfChildFolderName); + await umbracoUi.script.isScriptTreeItemVisible(childOfChildFolderName); }); test.skip('can create a script in a folder in a folder', async ({umbracoApi, umbracoUi}) => { @@ -129,6 +129,6 @@ test.describe('Script tests', () => { const scriptChildren = await umbracoApi.script.getChildren('/' + scriptFolderName + '/' + childFolderName); expect(scriptChildren[0].path).toBe('/' + scriptFolderName + '/' + childFolderName + '/' + scriptName); await umbracoUi.stylesheet.clickCaretButtonForName(childFolderName); - await umbracoUi.script.isScriptTreeItemVisibile(scriptName); + await umbracoUi.script.isScriptTreeItemVisible(scriptName); }); }); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index d50a80545175..933c074682bd 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -8,14 +8,16 @@ test.describe('Template tests', () => { test.beforeEach(async ({umbracoUi, umbracoApi}) => { await umbracoApi.template.ensureNameNotExists(templateName); await umbracoUi.goToBackOffice(); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); }); test.afterEach(async ({umbracoApi}) => { await umbracoApi.template.ensureNameNotExists(templateName); }); - test.skip('can create a template', async ({umbracoApi, umbracoUi}) => { + test('can create a template', async ({page, umbracoApi, umbracoUi}) => { + // Arrange + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); + // Act await umbracoUi.template.clickActionsMenuAtRoot(); await umbracoUi.template.clickCreateButton(); @@ -25,16 +27,16 @@ test.describe('Template tests', () => { // Assert await umbracoUi.template.isSuccessNotificationVisible(); expect(await umbracoApi.template.doesNameExist(templateName)).toBeTruthy(); - await umbracoUi.template.clickRootFolderCaretButton(); - await umbracoUi.template.isTemplateTreeItemVisibile(templateName); + await umbracoUi.template.isTemplateRootTreeItemVisible(templateName); }); - test.skip('can update content of a template', async ({umbracoApi, umbracoUi}) => { + test('can update content of a template', async ({umbracoApi, umbracoUi}) => { // Arrange const updatedTemplateContent = defaultTemplateContent + '\r\n' + '

AcceptanceTests

'; await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -48,13 +50,14 @@ test.describe('Template tests', () => { expect(updatedTemplate.content).toBe(updatedTemplateContent); }); - test.skip('can rename a template', async ({umbracoApi, umbracoUi}) => { + test('can rename a template', async ({umbracoApi, umbracoUi}) => { // Arrange const wrongTemplateName = 'WrongTemplateName'; const templateAlias = AliasHelper.toAlias(wrongTemplateName); await umbracoApi.template.ensureNameNotExists(wrongTemplateName); const templateId = await umbracoApi.template.create(wrongTemplateName, templateAlias, ''); expect(await umbracoApi.template.doesNameExist(wrongTemplateName)).toBeTruthy(); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(wrongTemplateName); @@ -67,27 +70,29 @@ test.describe('Template tests', () => { expect(templateData.name).toBe(templateName); }); - test.skip('can delete a template', async ({umbracoApi, umbracoUi}) => { + test('can delete a template', async ({page, umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act - await umbracoUi.template.clickRootFolderCaretButton(); + await umbracoUi.template.reloadTemplateTree(); await umbracoUi.template.clickActionsMenuForTemplate(templateName); await umbracoUi.template.clickDeleteAndConfirmButton(); // Assert await umbracoUi.template.isSuccessNotificationVisible(); expect(await umbracoApi.template.doesNameExist(templateName)).toBeFalsy(); - await umbracoUi.template.isTemplateTreeItemVisibile(templateName, false); + await umbracoUi.template.isTemplateRootTreeItemVisible(templateName, false); }); - test.skip('can set a template as master template', async ({umbracoApi, umbracoUi}) => { + test('can set a template as master template', async ({umbracoApi, umbracoUi}) => { // Arrange const childTemplateName = 'ChildTemplate'; await umbracoApi.template.ensureNameNotExists(childTemplateName); await umbracoApi.template.createDefaultTemplate(templateName); await umbracoApi.template.createDefaultTemplate(childTemplateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(childTemplateName); @@ -108,7 +113,7 @@ test.describe('Template tests', () => { await umbracoApi.template.ensureNameNotExists(childTemplateName); }); - test.skip('can remove a master template', async ({umbracoApi, umbracoUi}) => { + test('can remove a master template', async ({umbracoApi, umbracoUi}) => { // Arrange const childTemplateName = 'ChildTemplate'; const templateAlias = AliasHelper.toAlias(templateName); @@ -117,6 +122,7 @@ test.describe('Template tests', () => { await umbracoApi.template.ensureNameNotExists(childTemplateName); await umbracoApi.template.create(templateName, templateAlias, ''); await umbracoApi.template.create(childTemplateName, childTemplateAlias, childTemplateContent); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName, childTemplateName); @@ -139,9 +145,9 @@ test.describe('Template tests', () => { const propertyAliasValue = 'UpdateDate'; const isAscending = true; const expectedCode = 'Umbraco.ContentAtRoot().FirstOrDefault()\r\n' + - ' .Children()\r\n' + - ' .Where(x => x.IsVisible())\r\n' + - ' .OrderBy(x => x.' + propertyAliasValue + ')'; + ' .Children()\r\n' + + ' .Where(x => x.IsVisible())\r\n' + + ' .OrderBy(x => x.' + propertyAliasValue + ')'; const expectedTemplateContent = '\r\n' + '@{\r\n' + '\tvar selection = ' + expectedCode + ';\r\n' + @@ -156,7 +162,8 @@ test.describe('Template tests', () => { '\r\n' + '\r\n' + defaultTemplateContent; - await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -173,16 +180,16 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(expectedTemplateContent); }); - test.skip('can use query builder with Where statement for a template', async ({umbracoApi, umbracoUi}) => { + test('can use query builder with Where statement for a template', async ({umbracoApi, umbracoUi}) => { // Arrange //Arrange const propertyAliasValue = 'Name'; const operatorValue = 'is'; const constrainValue = 'Test Content'; const expectedCode = 'Umbraco.ContentAtRoot().FirstOrDefault()\r\n' + - ' .Children()\r\n' + - ' .Where(x => (x.' + propertyAliasValue + ' == "' + constrainValue + '"))\r\n' + - ' .Where(x => x.IsVisible())'; + ' .Children()\r\n' + + ' .Where(x => (x.' + propertyAliasValue + ' == "' + constrainValue + '"))\r\n' + + ' .Where(x => x.IsVisible())'; const expectedTemplateContent = '\r\n' + '@{\r\n' + '\tvar selection = ' + expectedCode + ';\r\n' + @@ -197,7 +204,8 @@ test.describe('Template tests', () => { '\r\n' + '\r\n' + defaultTemplateContent; - await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -214,16 +222,17 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(expectedTemplateContent); }); - test.skip('can insert sections - render child template into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert sections - render child template into a template', async ({umbracoApi, umbracoUi}) => { // Arrange const sectionType = 'Render child template'; const insertedContent = '@RenderBody()'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType); await umbracoUi.template.clickSaveButton(); @@ -233,17 +242,18 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(templateContent); }); - test.skip('can insert sections - render a named section into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert sections - render a named section into a template', async ({umbracoApi, umbracoUi}) => { // Arrange const sectionType = 'Render a named section'; const sectionName = 'TestSectionName'; const insertedContent = '@RenderSection("' + sectionName + '", false)'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -253,17 +263,18 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(templateContent); }); - test.skip('can insert sections - define a named section into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert sections - define a named section into a template', async ({umbracoApi, umbracoUi}) => { // Arrange const sectionType = 'Define a named section'; const sectionName = 'TestSectionName'; const insertedContent = '@section ' + sectionName + '\r\n{\r\n\r\n\r\n\r\n}'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -273,17 +284,18 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(templateContent); }); - test.skip('can insert dictionary item into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert dictionary item into a template', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); const dictionaryName = 'TestDictionary'; await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); await umbracoApi.dictionary.create(dictionaryName); const templateContent = '@Umbraco.GetDictionaryValue("' + dictionaryName + '")' + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertDictionaryItem(dictionaryName); await umbracoUi.template.clickSaveButton(); @@ -296,7 +308,7 @@ test.describe('Template tests', () => { await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); }); - test.skip('can insert partial view into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert partial view into a template', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); const partialViewName = 'TestPartialView'; @@ -304,10 +316,11 @@ test.describe('Template tests', () => { await umbracoApi.partialView.ensureNameNotExists(partialViewFileName); await umbracoApi.partialView.createDefaultPartialView(partialViewFileName); const templateContent = '@await Html.PartialAsync("' + partialViewName + '")' + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertPartialView(partialViewFileName); await umbracoUi.template.clickSaveButton(); @@ -317,15 +330,16 @@ test.describe('Template tests', () => { expect(templateData.content).toBe(templateContent); }); - test.skip('can insert value into a template', async ({umbracoApi, umbracoUi}) => { + test('can insert value into a template', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); const systemFieldValue = 'createDate'; const templateContent = '@Model.Value("' + systemFieldValue + '")' + defaultTemplateContent; + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); - await umbracoUi.waitForTimeout(1000); + // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSystemFieldValue(systemFieldValue); await umbracoUi.template.clickSaveButton(); @@ -337,7 +351,7 @@ test.describe('Template tests', () => { // TODO: Remove skip when the front-end is ready. Currently the returned items count is not updated after choosing the root content. test.skip('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { - // Arrange + //Arrange // Create content at root with a child const documentTypeName = 'ParentDocumentType'; const childDocumentTypeName = 'ChildDocumentType'; @@ -349,17 +363,19 @@ test.describe('Template tests', () => { await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); // Create template await umbracoApi.template.createDefaultTemplate(templateName); - - // Act + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); + + //Act await umbracoUi.template.goToTemplate(templateName); await umbracoUi.template.clickQueryBuilderButton(); await umbracoUi.template.chooseRootContentInQueryBuilder('(' + contentName + ')'); - + // Assert await umbracoUi.template.doesReturnedItemsHaveCount(1); await umbracoUi.template.doesQueryResultHaveContentName(childContentName); - + // Clean await umbracoApi.documentType.ensureNameNotExists(documentTypeName); }); + }); From ab44eec31ac6548bfdd8decc2fdc734d2b6dbe9b Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Thu, 18 Apr 2024 22:34:57 +0200 Subject: [PATCH 03/13] Temporary file path for updating StorageState --- tests/Umbraco.Tests.AcceptanceTest/config.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/config.js b/tests/Umbraco.Tests.AcceptanceTest/config.js index f8b88c9d501d..cab478def5f3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/config.js +++ b/tests/Umbraco.Tests.AcceptanceTest/config.js @@ -1,5 +1,7 @@ const prompt = require('prompt'); const fs = require('fs'); +var path = require('path'); + const properties = [ { @@ -31,7 +33,8 @@ prompt.get(properties, function (error, result) { var fileContent = `UMBRACO_USER_LOGIN=${result.username} UMBRACO_USER_PASSWORD=${result.password} -URL=${result.baseUrl || "https://localhost:44339"}`; +URL=${result.baseUrl || "https://localhost:44339"} +PROJECT_PATH=${__dirname.replace(/\\/g,'/')}/playwright/.auth/user.json`; fs.writeFile(configPath, fileContent, function (error) { if (error) return console.error(error); From 530d36c1f0a68450862f678a7b42e821bd14c223 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Fri, 19 Apr 2024 13:43:12 +0200 Subject: [PATCH 04/13] Fixed indentation --- .../tests/DefaultConfig/Settings/Template/Templates.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index 933c074682bd..de9a36b36d21 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -377,5 +377,4 @@ test.describe('Template tests', () => { // Clean await umbracoApi.documentType.ensureNameNotExists(documentTypeName); }); - }); From 195039dd98dee06a6afc8b562cbd8a63b9a85a83 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Fri, 19 Apr 2024 13:43:23 +0200 Subject: [PATCH 05/13] Bumped version --- tests/Umbraco.Tests.AcceptanceTest/package-lock.json | 8 ++++---- tests/Umbraco.Tests.AcceptanceTest/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 12abdd0b6e70..7236296bfd2e 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": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.33", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.36", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", @@ -146,9 +146,9 @@ "integrity": "sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==" }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "2.0.0-beta.33", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.33.tgz", - "integrity": "sha512-fGG/tSlIzzN4thhtYTTvIoXFsfEcKjtdtSkGVUVx1S/FanvI8EyUTlBzqV/6hIq0/wytsPMEvBsmy3AUunKvUQ==", + "version": "2.0.0-beta.36", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.36.tgz", + "integrity": "sha512-RgIkDHqFMoiTLpU7w1JNGrnBX90dJ4fm/Dpcu9rw6TqANtGa0h3HILcP4UJa+X2i4foN+/NXOnWR8xN484xgZA==", "dependencies": { "@umbraco/json-models-builders": "2.0.5", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index f35723152039..20561abc926c 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.33", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.36", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", From 9c760bcbcb94adc9c3eea1288a6832ae389468b7 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Fri, 19 Apr 2024 13:43:49 +0200 Subject: [PATCH 06/13] Added a storageStatePath --- tests/Umbraco.Tests.AcceptanceTest/config.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/config.js b/tests/Umbraco.Tests.AcceptanceTest/config.js index cab478def5f3..173ecdced861 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/config.js +++ b/tests/Umbraco.Tests.AcceptanceTest/config.js @@ -1,16 +1,14 @@ const prompt = require('prompt'); const fs = require('fs'); -var path = require('path'); - const properties = [ { - description: 'Enter your umbraco superadmin username/email', + description: 'Enter your Umbraco superadmin username/email', name: 'username', required: true }, { - description: 'Enter your umbraco superadmin password', + description: 'Enter your Umbraco superadmin password', name: 'password', hidden: true, required: true @@ -24,7 +22,7 @@ const properties = [ const configPath = './.env' -console.log("Configure your umbraco test environment") +console.log("Configure your Umbraco test environment") prompt.start(); @@ -34,7 +32,7 @@ prompt.get(properties, function (error, result) { var fileContent = `UMBRACO_USER_LOGIN=${result.username} UMBRACO_USER_PASSWORD=${result.password} URL=${result.baseUrl || "https://localhost:44339"} -PROJECT_PATH=${__dirname.replace(/\\/g,'/')}/playwright/.auth/user.json`; +STORAGE_STAGE_PATH=${__dirname.replace(/\\/g,'/')}/playwright/.auth/user.json`; fs.writeFile(configPath, fileContent, function (error) { if (error) return console.error(error); From 32706edc734ed8b2aec99e9ee8761df252da5c7b Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Fri, 19 Apr 2024 13:46:28 +0200 Subject: [PATCH 07/13] Deleted unnecessary fixtures --- .../tests/Fixtures/Authentication.ts | 41 ------------------- .../tests/Fixtures/Fixtures.ts | 10 ----- 2 files changed, 51 deletions(-) delete mode 100644 tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts delete mode 100644 tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts deleted file mode 100644 index 70e39a54c1b8..000000000000 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Authentication.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { Page, Locator } from '@playwright/test'; - -export class Authentication { - private readonly inputBox: Locator; - private readonly todoItems: Locator; - - constructor(public readonly page: Page) { - this.inputBox = this.page.locator('input.new-todo'); - this.todoItems = this.page.getByTestId('todo-item'); - } - - async goto() { - await this.page.goto('https://demo.playwright.dev/todomvc/'); - } - - async checkAuthenticationAccessToken(){ - - } - - async refreshAccessToken(){ - - } - - async addToDo(text: string) { - await this.inputBox.fill(text); - await this.inputBox.press('Enter'); - } - - async remove(text: string) { - const todo = this.todoItems.filter({ hasText: text }); - await todo.hover(); - await todo.getByLabel('Delete').click(); - } - - async removeAll() { - while ((await this.todoItems.count()) > 0) { - await this.todoItems.first().hover(); - await this.todoItems.getByLabel('Delete').first().click(); - } - } -} diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts deleted file mode 100644 index 80ad9447d999..000000000000 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/Fixtures/Fixtures.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { test as base } from '@playwright/test'; -import {Authentication} from "./Authentication"; - -type Fixtures = { - authentication: Authentication; -} - -export const test = base.extend({ - -}) From fde1abb3f1590be928355980f1fca25a5f847f3a Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Fri, 19 Apr 2024 13:48:29 +0200 Subject: [PATCH 08/13] Deleted commented out code --- .../tests/DefaultConfig/Settings/Template/Templates.spec.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index de9a36b36d21..0cd6be865811 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -232,7 +232,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType); await umbracoUi.template.clickSaveButton(); @@ -253,7 +252,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -274,7 +272,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -295,7 +292,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertDictionaryItem(dictionaryName); await umbracoUi.template.clickSaveButton(); @@ -320,7 +316,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertPartialView(partialViewFileName); await umbracoUi.template.clickSaveButton(); @@ -339,7 +334,6 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); - // await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSystemFieldValue(systemFieldValue); await umbracoUi.template.clickSaveButton(); From ee5a782cd2c7b43d1305c746b789dcd136761906 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Sun, 21 Apr 2024 18:54:12 +0200 Subject: [PATCH 09/13] Bumped version of testHelpers --- tests/Umbraco.Tests.AcceptanceTest/package-lock.json | 8 ++++---- tests/Umbraco.Tests.AcceptanceTest/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 7236296bfd2e..e3e5d0957bb0 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": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.36", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.37", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", @@ -146,9 +146,9 @@ "integrity": "sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==" }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "2.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.36.tgz", - "integrity": "sha512-RgIkDHqFMoiTLpU7w1JNGrnBX90dJ4fm/Dpcu9rw6TqANtGa0h3HILcP4UJa+X2i4foN+/NXOnWR8xN484xgZA==", + "version": "2.0.0-beta.37", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.37.tgz", + "integrity": "sha512-lgF54gUsYKjk+42d0Vue78arHdapXlAs/lFW9Nd3M+w7Kzs+M+FFdItryNv/K4A26HarQNijbj8B9vae1d5IHA==", "dependencies": { "@umbraco/json-models-builders": "2.0.5", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index 20561abc926c..d0ee5ce16ba0 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.36", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.37", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", From 5339f4b4bccb2064961f34d45f712ddf8280b4fe Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Sun, 21 Apr 2024 20:55:55 +0200 Subject: [PATCH 10/13] Updated Pipeline --- build/azure-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 314301450ca5..0520b2cb547c 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -466,7 +466,8 @@ stages: - pwsh: | "UMBRACO_USER_LOGIN=$(UMBRACO__CMS__UNATTENDED__UNATTENDEDUSEREMAIL) UMBRACO_USER_PASSWORD=$(UMBRACO__CMS__UNATTENDED__UNATTENDEDUSERPASSWORD) - URL=$(ASPNETCORE_URLS)" | Out-File .env + URL=$(ASPNETCORE_URLS) + STORAGE_STAGE_PATH=$(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest/playwright/.auth/user.json" | Out-File .env displayName: Generate .env workingDirectory: $(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest From 915be84e6f2861d295d8ad237f965ad3d4d149ea Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Sun, 21 Apr 2024 22:09:56 +0200 Subject: [PATCH 11/13] Bumped version --- tests/Umbraco.Tests.AcceptanceTest/package-lock.json | 8 ++++---- tests/Umbraco.Tests.AcceptanceTest/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index e3e5d0957bb0..ff3d87c6c5c5 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": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.37", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.38", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", @@ -146,9 +146,9 @@ "integrity": "sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==" }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "2.0.0-beta.37", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.37.tgz", - "integrity": "sha512-lgF54gUsYKjk+42d0Vue78arHdapXlAs/lFW9Nd3M+w7Kzs+M+FFdItryNv/K4A26HarQNijbj8B9vae1d5IHA==", + "version": "2.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.38.tgz", + "integrity": "sha512-OkPTSmohkC9+6A+qfwkUFYRD4guR5hPXWMHtsPtvLyolm7PXvH5gb3XF5n88Jsv+7YM+IqIxQHkXmPaVmgIyrA==", "dependencies": { "@umbraco/json-models-builders": "2.0.5", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index d0ee5ce16ba0..74bedb0ec9cc 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^2.0.5", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.37", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.38", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", From ccfeb3351812ff4039bd506fc0ab55973ba698f6 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Mon, 22 Apr 2024 07:20:37 +0200 Subject: [PATCH 12/13] Added fixes from review --- .../Settings/Template/Templates.spec.ts | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index 0cd6be865811..a84a47b594b7 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -36,7 +36,6 @@ test.describe('Template tests', () => { defaultTemplateContent + '\r\n' + '

AcceptanceTests

'; await umbracoApi.template.createDefaultTemplate(templateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -57,7 +56,6 @@ test.describe('Template tests', () => { await umbracoApi.template.ensureNameNotExists(wrongTemplateName); const templateId = await umbracoApi.template.create(wrongTemplateName, templateAlias, ''); expect(await umbracoApi.template.doesNameExist(wrongTemplateName)).toBeTruthy(); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(wrongTemplateName); @@ -70,10 +68,9 @@ test.describe('Template tests', () => { expect(templateData.name).toBe(templateName); }); - test('can delete a template', async ({page, umbracoApi, umbracoUi}) => { + test('can delete a template', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.reloadTemplateTree(); @@ -92,7 +89,6 @@ test.describe('Template tests', () => { await umbracoApi.template.ensureNameNotExists(childTemplateName); await umbracoApi.template.createDefaultTemplate(templateName); await umbracoApi.template.createDefaultTemplate(childTemplateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(childTemplateName); @@ -122,7 +118,6 @@ test.describe('Template tests', () => { await umbracoApi.template.ensureNameNotExists(childTemplateName); await umbracoApi.template.create(templateName, templateAlias, ''); await umbracoApi.template.create(childTemplateName, childTemplateAlias, childTemplateContent); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName, childTemplateName); @@ -163,7 +158,6 @@ test.describe('Template tests', () => { '\r\n' + defaultTemplateContent; await umbracoApi.template.createDefaultTemplate(templateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -205,7 +199,6 @@ test.describe('Template tests', () => { '\r\n' + defaultTemplateContent; await umbracoApi.template.createDefaultTemplate(templateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -228,10 +221,11 @@ test.describe('Template tests', () => { const insertedContent = '@RenderBody()'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType); await umbracoUi.template.clickSaveButton(); @@ -248,10 +242,11 @@ test.describe('Template tests', () => { const insertedContent = '@RenderSection("' + sectionName + '", false)'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -268,10 +263,11 @@ test.describe('Template tests', () => { const insertedContent = '@section ' + sectionName + '\r\n{\r\n\r\n\r\n\r\n}'; await umbracoApi.template.createDefaultTemplate(templateName); const templateContent = insertedContent + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSection(sectionType, sectionName); await umbracoUi.template.clickSaveButton(); @@ -288,10 +284,11 @@ test.describe('Template tests', () => { await umbracoApi.dictionary.ensureNameNotExists(dictionaryName); await umbracoApi.dictionary.create(dictionaryName); const templateContent = '@Umbraco.GetDictionaryValue("' + dictionaryName + '")' + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertDictionaryItem(dictionaryName); await umbracoUi.template.clickSaveButton(); @@ -312,7 +309,6 @@ test.describe('Template tests', () => { await umbracoApi.partialView.ensureNameNotExists(partialViewFileName); await umbracoApi.partialView.createDefaultPartialView(partialViewFileName); const templateContent = '@await Html.PartialAsync("' + partialViewName + '")' + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); @@ -330,10 +326,11 @@ test.describe('Template tests', () => { await umbracoApi.template.createDefaultTemplate(templateName); const systemFieldValue = 'createDate'; const templateContent = '@Model.Value("' + systemFieldValue + '")' + defaultTemplateContent; - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertSystemFieldValue(systemFieldValue); await umbracoUi.template.clickSaveButton(); @@ -345,7 +342,7 @@ test.describe('Template tests', () => { // TODO: Remove skip when the front-end is ready. Currently the returned items count is not updated after choosing the root content. test.skip('can show returned items in query builder ', async ({umbracoApi, umbracoUi}) => { - //Arrange + // Arrange // Create content at root with a child const documentTypeName = 'ParentDocumentType'; const childDocumentTypeName = 'ChildDocumentType'; @@ -357,9 +354,8 @@ test.describe('Template tests', () => { await umbracoApi.document.createDefaultDocumentWithParent(childContentName, childDocumentTypeId, contentId); // Create template await umbracoApi.template.createDefaultTemplate(templateName); - await umbracoUi.template.goToSection(ConstantHelper.sections.settings); - //Act + // Act await umbracoUi.template.goToTemplate(templateName); await umbracoUi.template.clickQueryBuilderButton(); await umbracoUi.template.chooseRootContentInQueryBuilder('(' + contentName + ')'); From f392a53f2ddc68b0a7be0d9251c8914f7ff14171 Mon Sep 17 00:00:00 2001 From: Andreas Zerbst Date: Mon, 22 Apr 2024 08:03:37 +0200 Subject: [PATCH 13/13] Added another wait and goToSection --- .../tests/DefaultConfig/Settings/Template/Templates.spec.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts index a84a47b594b7..f6bb6ecae178 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Settings/Template/Templates.spec.ts @@ -71,6 +71,7 @@ test.describe('Template tests', () => { test('can delete a template', async ({umbracoApi, umbracoUi}) => { // Arrange await umbracoApi.template.createDefaultTemplate(templateName); + await umbracoUi.template.goToSection(ConstantHelper.sections.settings); // Act await umbracoUi.template.reloadTemplateTree(); @@ -202,6 +203,7 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later await umbracoUi.waitForTimeout(1000); await umbracoUi.template.addQueryBuilderWithWhereStatement(propertyAliasValue, operatorValue, constrainValue); // Verify that the code is shown @@ -312,6 +314,8 @@ test.describe('Template tests', () => { // Act await umbracoUi.template.goToTemplate(templateName); + // TODO: refactor later + await umbracoUi.waitForTimeout(1000); await umbracoUi.template.insertPartialView(partialViewFileName); await umbracoUi.template.clickSaveButton();