diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 8afe81c537..940e5ca79c 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.6", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.59", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.60", "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.59", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.59.tgz", - "integrity": "sha512-/RugczuhuvzepvT7be6qHkP50ThKOxfHnpYeQc0/PMZM8fk/DX6GpPUC050oI0NqW/QRXAL4Ue9EUK6iTV/+DQ==", + "version": "2.0.0-beta.60", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.60.tgz", + "integrity": "sha512-5KJkn1GtfCXqbwYP8RnDyjWUNqSQ/62UYFARuXhUzQoz4xvv3Fme8rPeiOBxqJRWWoj3MQCaP7nyPPs3FDe8vQ==", "dependencies": { "@umbraco/json-models-builders": "2.0.6", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index 437c718382..c7261b06f3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^2.0.6", - "@umbraco/playwright-testhelpers": "^2.0.0-beta.59", + "@umbraco/playwright-testhelpers": "^2.0.0-beta.60", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/MemberGroups.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/MemberGroups.spec.ts index d3e3dc2c87..472b0ebc3a 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/MemberGroups.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/MemberGroups.spec.ts @@ -27,6 +27,32 @@ test('can create a member group', {tag: '@smoke'}, async ({umbracoApi, umbracoUi expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeTruthy(); }); +test('cannot create member group with empty name', async ({umbracoApi, umbracoUi}) => { + // Act + await umbracoUi.memberGroup.clickMemberGroupsTab(); + await umbracoUi.memberGroup.clickCreateButton(); + await umbracoUi.memberGroup.clickSaveButton(); + + // Assert + await umbracoUi.memberGroup.isErrorNotificationVisible(); + expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeFalsy(); +}); + +test('cannot create member group with duplicate name', async ({umbracoApi, umbracoUi}) => { + // Arrange + await umbracoApi.memberGroup.create(memberGroupName); + expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeTruthy(); + + // Act + await umbracoUi.memberGroup.clickMemberGroupsTab(); + await umbracoUi.memberGroup.clickCreateButton(); + await umbracoUi.memberGroup.enterMemberGroupName(memberGroupName); + await umbracoUi.memberGroup.clickSaveButton(); + + // Assert + await umbracoUi.memberGroup.isErrorNotificationVisible(); +}); + // TODO: Remove skip when the front-end is ready. Currently it is impossible to delete a member group. test.skip('can delete a member group', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { // Arrange diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts index b8189e1d14..9070c5b659 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/DefaultConfig/Members/Members.spec.ts @@ -211,3 +211,43 @@ test('can delete member', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => { await umbracoUi.member.isSuccessNotificationVisible(); expect(await umbracoApi.member.doesNameExist(memberName)).toBeFalsy(); }); + +test('cannot create member with invalid email', async ({umbracoApi, umbracoUi}) => { + // Arrange + const invalidEmail = 'invalidemail'; + await umbracoUi.member.goToSection(ConstantHelper.sections.members); + + // Act + await umbracoUi.member.clickCreateButton(); + await umbracoUi.member.enterMemberName(memberName); + await umbracoUi.member.enterUsername(username); + await umbracoUi.member.enterEmail(invalidEmail); + await umbracoUi.member.enterPassword(password); + await umbracoUi.member.enterConfirmPassword(password); + await umbracoUi.member.clickDetailsTab(); + await umbracoUi.member.enterComments(comment); + await umbracoUi.member.clickSaveButton(); + + // Assert + await umbracoUi.member.isErrorNotificationVisible(); + expect(await umbracoApi.member.doesNameExist(memberName)).toBeFalsy(); +}); + +// TODO: Remove skip when the front-end is ready. Currently it is possible to update member with invalid email. +test.skip('cannot update email to an invalid email', async ({umbracoApi, umbracoUi}) => { + // Arrange + const invalidEmail = 'invalidemail'; + memberTypeId = await umbracoApi.memberType.createDefaultMemberType(memberTypeName); + memberId = await umbracoApi.member.createDefaultMember(memberName, memberTypeId, email, username, password); + await umbracoUi.member.goToSection(ConstantHelper.sections.members); + + // Act + await umbracoUi.member.clickMemberLinkByName(memberName); + await umbracoUi.member.enterEmail(invalidEmail); + await umbracoUi.member.clickSaveButton(); + + // Assert + await umbracoUi.member.isErrorNotificationVisible(); + const memberData = await umbracoApi.member.get(memberId); + expect(memberData.email).toBe(email); +});