From 748ab24bb752123eea98e7ed2a7ff8a327f06fb8 Mon Sep 17 00:00:00 2001 From: Alex Velichko Date: Tue, 27 Feb 2024 06:20:23 +0300 Subject: [PATCH] TESTS-196: feat(test): done Remove relation be editing issue details test (#4755) Signed-off-by: Alex Velichko --- .../model/tracker/issues-details-page.ts | 2 + tests/sanity/tests/tracker/relations.spec.ts | 48 ++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/tests/sanity/tests/model/tracker/issues-details-page.ts b/tests/sanity/tests/model/tracker/issues-details-page.ts index 777beb1b85..832dc88aeb 100644 --- a/tests/sanity/tests/model/tracker/issues-details-page.ts +++ b/tests/sanity/tests/model/tracker/issues-details-page.ts @@ -25,6 +25,7 @@ export class IssuesDetailsPage extends CommonTrackerPage { readonly inputSearchOnSearchForIssueModal: Locator readonly textBlockedBy: Locator readonly textBlocks: Locator + readonly buttonRemoveBlockedBy: Locator constructor (page: Page) { super(page) @@ -50,6 +51,7 @@ export class IssuesDetailsPage extends CommonTrackerPage { this.inputSearchOnSearchForIssueModal = page.locator('div.popup input[type="text"]') this.textBlockedBy = page.locator('//span[text()="Blocked by"]/following-sibling::div[1]/div/div/button/span') this.textBlocks = page.locator('//span[text()="Blocks"]/following-sibling::div[1]/div/div/button/span') + this.buttonRemoveBlockedBy = page.locator('//span[text()="Blocked by"]/following-sibling::div[1]/div/button') } async editIssue (data: Issue): Promise { diff --git a/tests/sanity/tests/tracker/relations.spec.ts b/tests/sanity/tests/tracker/relations.spec.ts index a4c641ae42..24f816a891 100644 --- a/tests/sanity/tests/tracker/relations.spec.ts +++ b/tests/sanity/tests/tracker/relations.spec.ts @@ -1,4 +1,4 @@ -import { test } from '@playwright/test' +import { expect, test } from '@playwright/test' import { IssuesPage } from '../model/tracker/issues-page' import { generateId, PlatformSetting, PlatformURI } from '../utils' import { NewIssue } from '../model/tracker/types' @@ -154,4 +154,50 @@ test.describe('Relations', () => { }) }) }) + + test('Remove relation be editing issue details', async ({ page }) => { + const firstIssue: NewIssue = { + title: `First. Remove relation be editing issue details-${generateId()}`, + description: 'First. Remove relation be editing issue details' + } + const secondIssue: NewIssue = { + title: `Second. Remove relation be editing issue details-${generateId()}`, + description: 'Second. Remove relation be editing issue details' + } + const leftSideMenuPage = new LeftSideMenuPage(page) + await leftSideMenuPage.buttonTracker.click() + + const secondIssueId = await prepareNewIssueStep(page, secondIssue) + await prepareNewIssueStep(page, firstIssue) + + const issuesPage = new IssuesPage(page) + await issuesPage.openIssueByName(firstIssue.title) + + const issuesDetailsPage = new IssuesDetailsPage(page) + await test.step('Reference another issue... and check issue description', async () => { + await issuesDetailsPage.waitDetailsOpened(firstIssue.title) + await issuesDetailsPage.moreActionOnIssueWithSecondLevel('Relations', 'Mark as blocked by...') + await issuesDetailsPage.fillSearchForIssueModal(secondIssue.title) + + await issuesDetailsPage.waitDetailsOpened(firstIssue.title) + await issuesDetailsPage.checkIssue({ + ...firstIssue, + blockedBy: secondIssueId + }) + + // delete here + await issuesDetailsPage.buttonRemoveBlockedBy.click() + await expect(issuesDetailsPage.textBlockedBy).toBeVisible({ visible: false }) + }) + + await test.step('Check the second issue description', async () => { + const trackerNavigationMenuPage = new TrackerNavigationMenuPage(page) + await trackerNavigationMenuPage.openIssuesForProject('Default') + + await issuesPage.searchIssueByName(secondIssue.title) + await issuesPage.openIssueByName(secondIssue.title) + await issuesDetailsPage.waitDetailsOpened(secondIssue.title) + await expect(issuesDetailsPage.textBlocks).toBeVisible({ visible: false }) + }) + }) })