From 7510879147a3d5960e747cdb22e23486f5d15993 Mon Sep 17 00:00:00 2001
From: Alex Velichko <nestor_007@mail.ru>
Date: Wed, 7 Feb 2024 08:21:29 +0300
Subject: [PATCH] feat(tests): TESTS-171 done Check validation steps test
 (#4558)

Signed-off-by: Alex Velichko <nestor_007@mail.ru>
---
 tests/sanity/tests/model/common-page.ts       | 12 +++++++
 .../tests/model/select-workspace-page.ts      |  4 ++-
 tests/sanity/tests/model/signup-page.ts       |  4 ++-
 tests/sanity/tests/workspace/create.spec.ts   | 34 +++++++++++++++++++
 4 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/tests/sanity/tests/model/common-page.ts b/tests/sanity/tests/model/common-page.ts
index f6938a05d3..507996c24f 100644
--- a/tests/sanity/tests/model/common-page.ts
+++ b/tests/sanity/tests/model/common-page.ts
@@ -79,4 +79,16 @@ export class CommonPage {
   async closeNotification (page: Page): Promise<void> {
     await page.locator('div.notify-container button[type="button"].small').nth(0).click()
   }
+
+  async checkError (page: Page, errorMessage: string): Promise<void> {
+    await expect(page.locator('div.ERROR span')).toHaveText(errorMessage)
+  }
+
+  async checkInfo (page: Page, errorMessage: string): Promise<void> {
+    await expect(page.locator('div.INFO span')).toHaveText(errorMessage)
+  }
+
+  async checkInfoSectionNotExist (page: Page): Promise<void> {
+    await expect(page.locator('div.INFO span')).not.toBeAttached()
+  }
 }
diff --git a/tests/sanity/tests/model/select-workspace-page.ts b/tests/sanity/tests/model/select-workspace-page.ts
index ce6a7cd92e..51aaab4303 100644
--- a/tests/sanity/tests/model/select-workspace-page.ts
+++ b/tests/sanity/tests/model/select-workspace-page.ts
@@ -1,6 +1,7 @@
 import { expect, type Locator, type Page } from '@playwright/test'
+import { CommonPage } from './common-page'
 
-export class SelectWorkspacePage {
+export class SelectWorkspacePage extends CommonPage {
   readonly page: Page
   readonly buttonWorkspace: Locator
   readonly buttonCreateWorkspace: Locator
@@ -8,6 +9,7 @@ export class SelectWorkspacePage {
   readonly buttonCreateNewWorkspace: Locator
 
   constructor (page: Page) {
+    super()
     this.page = page
     this.buttonWorkspace = page.locator('div[class*="workspace"]')
     this.buttonCreateWorkspace = page.locator('button > span', { hasText: 'Create workspace' })
diff --git a/tests/sanity/tests/model/signup-page.ts b/tests/sanity/tests/model/signup-page.ts
index a9f3e55d86..fb1fb98af5 100644
--- a/tests/sanity/tests/model/signup-page.ts
+++ b/tests/sanity/tests/model/signup-page.ts
@@ -1,7 +1,8 @@
 import { expect, type Locator, type Page } from '@playwright/test'
 import { SignUpData } from './common-types'
+import { CommonPage } from './common-page'
 
-export class SignUpPage {
+export class SignUpPage extends CommonPage {
   readonly page: Page
   readonly inputFirstName: Locator
   readonly inputLastName: Locator
@@ -11,6 +12,7 @@ export class SignUpPage {
   readonly buttonSignUp: Locator
 
   constructor (page: Page) {
+    super()
     this.page = page
     this.inputFirstName = page.locator('input[name="given-name"]')
     this.inputLastName = page.locator('input[name="family-name"]')
diff --git a/tests/sanity/tests/workspace/create.spec.ts b/tests/sanity/tests/workspace/create.spec.ts
index a3d495e46e..b14c8bc56a 100644
--- a/tests/sanity/tests/workspace/create.spec.ts
+++ b/tests/sanity/tests/workspace/create.spec.ts
@@ -93,4 +93,38 @@ test.describe('Workspace tests', () => {
       estimation: '2h'
     })
   })
+
+  test('Check validation steps description for the create flow', async ({ page }) => {
+    const newUser: SignUpData = {
+      firstName: `FirstName-${generateId()}`,
+      lastName: `LastName-${generateId()}`,
+      email: `email+${generateId()}@gmail.com`,
+      password: '1234'
+    }
+    const newWorkspaceName = `New Workspace Name - ${generateId(2)}`
+
+    const loginPage = new LoginPage(page)
+    await loginPage.goto()
+    await loginPage.linkSignUp.click()
+
+    const signUpPage = new SignUpPage(page)
+    await signUpPage.checkInfo(page, 'Required field First name')
+    await signUpPage.inputFirstName.fill(newUser.firstName)
+    await signUpPage.checkInfo(page, 'Required field Last name')
+    await signUpPage.inputLastName.fill(newUser.lastName)
+    await signUpPage.checkInfo(page, 'Required field Email')
+    await signUpPage.inputEmail.fill(newUser.email)
+    await signUpPage.checkInfo(page, 'Required field Password')
+    await signUpPage.inputNewPassword.fill(newUser.password)
+    await signUpPage.checkInfo(page, "Repeat password don't match Password")
+    await signUpPage.inputRepeatPassword.fill(newUser.password)
+    await signUpPage.checkInfoSectionNotExist(page)
+    await signUpPage.buttonSignUp.click()
+
+    const selectWorkspacePage = new SelectWorkspacePage(page)
+    await selectWorkspacePage.buttonCreateWorkspace.click()
+    await selectWorkspacePage.checkInfo(page, 'Required field Workspace name')
+    await selectWorkspacePage.buttonWorkspaceName.fill(newWorkspaceName)
+    await selectWorkspacePage.checkInfoSectionNotExist(page)
+  })
 })