From f36995e694bf1859e5945becfbd89c831430b000 Mon Sep 17 00:00:00 2001 From: Piyush Patel Date: Tue, 5 Dec 2023 17:30:27 +0530 Subject: [PATCH] Documents Tests Added_5Dec --- frontend/tests/constants/DocumentConstants.ts | 15 ++ .../tests/pages/Community/DocumentsPage.ts | 36 ++- frontend/tests/test/DocumentsTests.Spec.ts | 215 ++++++++++-------- frontend/tests/test/SettingsTests.Spec.ts | 5 +- frontend/tests/testData/gifSample.gif | Bin 0 -> 40316 bytes 5 files changed, 171 insertions(+), 100 deletions(-) create mode 100644 frontend/tests/constants/DocumentConstants.ts create mode 100644 frontend/tests/testData/gifSample.gif diff --git a/frontend/tests/constants/DocumentConstants.ts b/frontend/tests/constants/DocumentConstants.ts new file mode 100644 index 00000000..1ac5fef3 --- /dev/null +++ b/frontend/tests/constants/DocumentConstants.ts @@ -0,0 +1,15 @@ +import path from 'path'; + +// Define the base directory for test data +const baseTestDataDirectory = + 'D:/Etenlabs/Repos/Latest/crowd.rocks/frontend/tests/testData/'; + +// Define the constants +const constants = { + filePath: (documentName: string) => + path.join(baseTestDataDirectory, documentName), + invalidFile: path.join(baseTestDataDirectory, 'gifSample.gif'), + fileContent: 'Hello, this is the content of the file.', +}; + +export default constants; diff --git a/frontend/tests/pages/Community/DocumentsPage.ts b/frontend/tests/pages/Community/DocumentsPage.ts index fd367dfc..f8fad94f 100644 --- a/frontend/tests/pages/Community/DocumentsPage.ts +++ b/frontend/tests/pages/Community/DocumentsPage.ts @@ -5,11 +5,19 @@ const selectedLanguage = (languageName: string) => `//h4[text()='${languageName}']`; const languageName = (language: string) => `//h5[text()='${language}']//..//input`; +const documents = (documentName: string) => `//p[text()='${documentName}']`; +const meatBallsMenuButton = (documentName: string) => + `//p[text()='${documentName}']//..//..//button`; class DocumentsPage extends BasePage { async isPageTitleVisible() { return await this.page.locator(`//h2[text()='Documents']`).isVisible(); } + async isDocumentDetailsPageVisible() { + return await this.page + .getByRole('heading', { name: 'Details' }) + .isVisible(); + } async clickOnSelectYourLanguageDropdown() { await this.page .getByRole('heading', { name: 'Select your language' }) @@ -58,10 +66,34 @@ class DocumentsPage extends BasePage { async clickOnCancelButton() { await this.page.getByRole('button', { name: 'Cancel' }).click(); } - async uploadTextFile() { - const filePath = 'C:/Users/Piyush Patel/Desktop/sample3.txt'; + async uploadTextFile(filePath: string) { await this.page.setInputFiles('input[type="file"]', filePath); } + async clickOnUploadButton() { + await this.page.getByRole('button', { name: 'Upload' }).click(); + } + async searchDocuments(documentName: string) { + await this.page + .getByPlaceholder(`Search by document...`) + .fill(documentName); + await this.page.waitForTimeout(1000); + } + async clickOnDocument(documentName: string) { + await this.page.locator(documents(documentName)).click(); + } + async isCreatedDocumentVisible(documentName: string) { + return await this.page.locator(documents(documentName)).isVisible(); + } + async clickOnMeatBallsMenuButton(documentName: string) { + await this.page.locator(meatBallsMenuButton(documentName)).click(); + } + async clickOnGoToDocumentsButton() { + await this.page.getByRole('button', { name: 'Go to Documents' }).click(); + } + async downloadDocument(documentName: string) { + await this.clickOnMeatBallsMenuButton(documentName); + await this.page.getByRole('button', { name: 'Download' }).click(); + } } export default DocumentsPage; diff --git a/frontend/tests/test/DocumentsTests.Spec.ts b/frontend/tests/test/DocumentsTests.Spec.ts index 8e166fa5..75e706d4 100644 --- a/frontend/tests/test/DocumentsTests.Spec.ts +++ b/frontend/tests/test/DocumentsTests.Spec.ts @@ -8,14 +8,11 @@ import LoginPage from '../pages/LoginPage'; import { language, settings } from '../enums/Enums'; import SettingsPage from '../pages/SettingsPage'; import CommonPage from '../pages/Community/CommonPage'; +import constants from '../constants/DocumentConstants'; import { writeFileSync } from 'fs'; const registerData = RegisterData.validRegisterData(); const documentName = await generateUniqueFileName('txt'); -const filePath = - `D:/Etenlabs/Repos/Latest/crowd.rocks/frontend/tests/testData/` + - documentName; -const fileContent = 'Hello, this is the content of the file.'; test.beforeAll(async () => { const browser = await chromium.launch({ headless: true }); @@ -23,7 +20,7 @@ test.beforeAll(async () => { const page = await context.newPage(); const registerPage = new RegistrationPage(page); - writeFileSync(filePath, fileContent); + writeFileSync(constants.filePath(documentName), constants.fileContent); //Navigate to the URL await page.goto(PageUrls.RegisterPage); @@ -35,11 +32,13 @@ test.beforeAll(async () => { await registerPage.clickOnRegisterButton(); await page.waitForTimeout(3000); }); + async function generateUniqueFileName(extension: string): Promise { const timestamp = new Date().toISOString().replace(/[-:.]/g, ''); const randomString = Math.random().toString(36).substring(7); return `${timestamp}_${randomString}.${extension}`; } + async function turnOnBetaTools(page: Page) { const settingsPage = new SettingsPage(page); const homePage = new HomePage(page); @@ -52,12 +51,13 @@ async function turnOnBetaTools(page: Page) { await homePage.clickOnCrowdRocks(); } -test('1: Verify that user can select & cancel language successfully', async ({ +test('1: Verify that user can upload document successfully', async ({ page, }) => { const loginPage = new LoginPage(page); const documentsPage = new DocumentsPage(page); const homePage = new HomePage(page); + const commonPage = new CommonPage(page); //Login with valid credentials and turn on the beta tools await page.goto(PageUrls.LoginPage); @@ -70,13 +70,27 @@ test('1: Verify that user can select & cancel language successfully', async ({ await documentsPage.clickOnSelectYourLanguageDropdown(); await documentsPage.selectLanguage(language.English); + await documentsPage.clickOnAddNewDocumentsButton(); + expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeTruthy(); + //Verify that language is selected expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); - await documentsPage.clickOnCrossButton(); - expect(await documentsPage.isLanguageSelected(language.English)).toBeFalsy(); + const [uploadFile] = await Promise.all([ + page.waitForEvent('filechooser'), + await documentsPage.clickOnUploadButton(), + ]); + uploadFile.setFiles(constants.filePath(documentName)); + expect(await commonPage.getValidationMessage()).toEqual( + 'Success at uploading new document!', + ); + await documentsPage.clickOnGoToDocumentsButton(); + await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); + expect( + await documentsPage.isCreatedDocumentVisible(documentName), + ).toBeTruthy(); }); -test('2: Verify that select your language popup is closed when user clicks on the cancel button', async ({ +test('2: Verify user can download the document successfully', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -88,20 +102,21 @@ test('2: Verify that select your language popup is closed when user clicks on th await loginPage.loginToApp(registerData); await turnOnBetaTools(page); - //Navigate to documents page and click on the select your language dropdown + //Navigate to documents page and select language await homePage.clickOnTheDocumentsSection(); - expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); await documentsPage.clickOnSelectYourLanguageDropdown(); - expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeTruthy(); - - // Click on the cancel button - await documentsPage.clickOnCancelButton(); + await documentsPage.selectLanguage(language.English); + await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); - // Verify that select your language popup is closed - expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeFalsy(); + const [download] = await Promise.all([ + page.waitForEvent('download'), + documentsPage.downloadDocument(documentName), + ]); + expect(download).not.toBeNull(); + expect(download.url()).toContain(documentName); }); -test('3: Verify that language is selected on the Add new document popup is the same as selected on the Documents page', async ({ +test('3: Verify user can redirected on document details page successfully', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -113,49 +128,25 @@ test('3: Verify that language is selected on the Add new document popup is the s await loginPage.loginToApp(registerData); await turnOnBetaTools(page); - //Navigate to documents page and click on the select your language dropdown + //Navigate to documents page and select language await homePage.clickOnTheDocumentsSection(); - expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); await documentsPage.clickOnSelectYourLanguageDropdown(); - expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeTruthy(); - - // Click on the cancel button await documentsPage.selectLanguage(language.English); - await documentsPage.clickOnAddNewDocumentsButton(); - // Verify that selected language is displayed - expect(await documentsPage.isLanguageSelected(language.English)); + //search the create document and click on document name + await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); + await documentsPage.clickOnDocument(documentName); + + //verify that document details page is open + expect(await documentsPage.isDocumentDetailsPageVisible()).toBeTruthy(); }); -test('4: Verify that user is able to select & cancel the language from the dropdown list successfully', async ({ +test('4: Verify that user is not allowed to upload documents with the name which already exists', async ({ page, }) => { const loginPage = new LoginPage(page); const documentsPage = new DocumentsPage(page); const homePage = new HomePage(page); - - //Login with valid credentials and turn on the beta tools - await page.goto(PageUrls.LoginPage); - await loginPage.loginToApp(registerData); - await turnOnBetaTools(page); - - //Navigate to documents page and select language - await homePage.clickOnTheDocumentsSection(); - expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); - - await documentsPage.clickOnAddNewDocumentsButton(); - await documentsPage.clickOnSelectDocumentLanguageDropdown(); - await documentsPage.selectLanguage(language.English); - expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); - - await documentsPage.clickOnAddNewDocumentPopupCrossButton(); - expect(await documentsPage.isLanguageSelected(language.English)).toBeFalsy(); -}); - -test('5: Verify that user can upload documents successfully', async ({ page }) => { - const loginPage = new LoginPage(page); - const documentsPage = new DocumentsPage(page); - const homePage = new HomePage(page); const commonPage = new CommonPage(page); //Login with valid credentials and turn on the beta tools @@ -174,21 +165,13 @@ test('5: Verify that user can upload documents successfully', async ({ page }) = //Verify that language is selected expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); - //await documentsPage.clickOnUploadButton(); - await documentsPage.uploadTextFile(filePath); + await documentsPage.uploadTextFile(constants.filePath(documentName)); expect(await commonPage.getValidationMessage()).toEqual( - 'Success at uploading new document!', + 'File with this name already exists', ); - await documentsPage.clickOnCancelButton(); - await page.reload(); - //await documentsPage.clickOnGoToDocumentsButton(); - await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); - expect( - await documentsPage.isCreatedDocumentVisible(documentName), - ).toBeTruthy(); }); -test('6: Verify that user can not allowed upload documents with the same name successfully', async ({ +test.skip('5: Verify that validation message is appeared when user uploads the invalid file', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -212,13 +195,17 @@ test('6: Verify that user can not allowed upload documents with the same name su //Verify that language is selected expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); - await documentsPage.uploadTextFile(filePath); + const [uploadFile] = await Promise.all([ + page.waitForEvent('filechooser'), + await documentsPage.clickOnUploadButton(), + ]); + uploadFile.setFiles(constants.invalidFile); expect(await commonPage.getValidationMessage()).toEqual( - 'File with this name already exists', + 'Failed at uploading new Document! [UnknownError]', ); }); -test('7: Verify that validation message is appeared when user uploads the file without selecting the languages', async ({ +test('6: Verify that validation message is appeared when user uploads the file without selecting the language', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -237,13 +224,13 @@ test('7: Verify that validation message is appeared when user uploads the file w //Upload text file without selecting the language await documentsPage.clickOnAddNewDocumentsButton(); expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeTruthy(); - await documentsPage.uploadTextFile(filePath); + await documentsPage.uploadTextFile(constants.filePath(documentName)); expect(await commonPage.getValidationMessage()).toEqual( 'Please select document language first.', ); }); -test('8: Verify that add new document popup is closed when user click on the cancel button', async ({ +test('7: Verify that user can select & cancel language successfully', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -257,15 +244,19 @@ test('8: Verify that add new document popup is closed when user click on the can //Navigate to documents page and select language await homePage.clickOnTheDocumentsSection(); - await documentsPage.clickOnAddNewDocumentsButton(); - expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeTruthy(); - await documentsPage.clickOnCancelButton(); + expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); + await documentsPage.clickOnSelectYourLanguageDropdown(); + await documentsPage.selectLanguage(language.English); - //Verify that Add new popup is closed - expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeFalsy(); + //Verify that language is selected + expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); + + //Deselect the language + await documentsPage.clickOnCrossButton(); + expect(await documentsPage.isLanguageSelected(language.English)).toBeFalsy(); }); -test('9: Verify user can download the documents successfully', async ({ +test('8: Verify that select your language popup is closed when user clicks on the cancel button', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -277,25 +268,46 @@ test('9: Verify user can download the documents successfully', async ({ await loginPage.loginToApp(registerData); await turnOnBetaTools(page); - //Navigate to documents page and select language + //Navigate to documents page and click on the select your language dropdown await homePage.clickOnTheDocumentsSection(); + expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); await documentsPage.clickOnSelectYourLanguageDropdown(); - await documentsPage.selectLanguage(language.English); - - await documentsPage.clickOnAddNewDocumentsButton(); - expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeTruthy(); + expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeTruthy(); - await documentsPage.uploadTextFile(filePath); + // Click on the cancel button await documentsPage.clickOnCancelButton(); - await page.reload(); - await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); + // Verify that select your language popup is closed + expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeFalsy(); +}); + +test('9: Verify that language is selected on the Add new document popup is the same as selected on the Documents page', async ({ + page, +}) => { + const loginPage = new LoginPage(page); + const documentsPage = new DocumentsPage(page); + const homePage = new HomePage(page); + + //Login with valid credentials and turn on the beta tools + await page.goto(PageUrls.LoginPage); + await loginPage.loginToApp(registerData); + await turnOnBetaTools(page); + + //Navigate to documents page and click on the select your language dropdown + await homePage.clickOnTheDocumentsSection(); + expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); + await documentsPage.clickOnSelectYourLanguageDropdown(); + expect(await documentsPage.isSelectYourLanguagePopupVisible()).toBeTruthy(); + + // Select your language + await documentsPage.selectLanguage(language.English); + await documentsPage.clickOnAddNewDocumentsButton(); - await documentsPage.clickOnDownloadDocumentButton(documentName); - //need to assertion + // Verify that selected language is displayed + expect(await documentsPage.isLanguageSelected(language.English)); }); -test('10: Verify user can redirected on document details page', async ({ +test('10: Verify that user is able to select & cancel the language from the dropdown list successfully', async ({ page, }) => { const loginPage = new LoginPage(page); @@ -309,22 +321,35 @@ test('10: Verify user can redirected on document details page', async ({ //Navigate to documents page and select language await homePage.clickOnTheDocumentsSection(); - await documentsPage.clickOnSelectYourLanguageDropdown(); + expect(await documentsPage.isPageTitleVisible()).toBeTruthy(); + await documentsPage.clickOnAddNewDocumentsButton(); + await documentsPage.clickOnSelectDocumentLanguageDropdown(); await documentsPage.selectLanguage(language.English); + expect(await documentsPage.isLanguageSelected(language.English)).toBeTruthy(); - //Click on add document button + //Deselect the language + await documentsPage.clickOnAddNewDocumentPopupCrossButton(); + expect(await documentsPage.isLanguageSelected(language.English)).toBeFalsy(); +}); + +test('11: Verify that add new document popup is closed when user click on the cancel button', async ({ + page, +}) => { + const loginPage = new LoginPage(page); + const documentsPage = new DocumentsPage(page); + const homePage = new HomePage(page); + + //Login with valid credentials and turn on the beta tools + await page.goto(PageUrls.LoginPage); + await loginPage.loginToApp(registerData); + await turnOnBetaTools(page); + + //Navigate to documents page and select language + await homePage.clickOnTheDocumentsSection(); await documentsPage.clickOnAddNewDocumentsButton(); expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeTruthy(); - - //Upload text file - await documentsPage.uploadTextFile(filePath); await documentsPage.clickOnCancelButton(); - await page.reload(); - //search the create document and click on document name - await documentsPage.searchDocuments(documentName.toLocaleLowerCase()); - await documentsPage.clickOnDocument(documentName); - - //verify that document details page is open - expect(await documentsPage.goToThedocumentDetailsPage()).toBeTruthy(); + //Verify that Add new popup is closed + expect(await documentsPage.isAddNewDocumentPopupVisible()).toBeFalsy(); }); diff --git a/frontend/tests/test/SettingsTests.Spec.ts b/frontend/tests/test/SettingsTests.Spec.ts index cd8fe2c1..a32901ad 100644 --- a/frontend/tests/test/SettingsTests.Spec.ts +++ b/frontend/tests/test/SettingsTests.Spec.ts @@ -33,7 +33,6 @@ test('Verify that all the Beta tools are displayed when user enable beta tools t page, }) => { const homePage = new HomePage(page); - const leftMenuPage = new MenuPage(page); const settingsPage = new SettingsPage(page); const getSettingsList = SettingsData.allSettingsList(); @@ -48,7 +47,7 @@ test('Verify that all the Beta tools are displayed when user enable beta tools t await settingsPage.clickOnToggleButton(settings.BetaTools, true); //Go to the home page and verify the language text is displayed - await leftMenuPage.clickOnCrowdRocks(); + await homePage.clickOnCrowdRocks(); expect(await homePage.isLanguageTextVisible()).toBeTruthy(); //Expand the menu and click on settings @@ -58,7 +57,7 @@ test('Verify that all the Beta tools are displayed when user enable beta tools t await settingsPage.clickOnToggleButton(settings.BetaTools, false); //Go to the home page and verify the language text is hide - await leftMenuPage.clickOnCrowdRocks(); + await homePage.clickOnCrowdRocks(); expect(await homePage.isLanguageTextVisible(false)); }); diff --git a/frontend/tests/testData/gifSample.gif b/frontend/tests/testData/gifSample.gif new file mode 100644 index 0000000000000000000000000000000000000000..d41b6a1579eeeee5dda70b40d02c4b0f2a56971f GIT binary patch literal 40316 zcmY(q2T)T{*YAB&34{`Q=poe5B=o8Y(m@PC>1qhQSLtf#T|<$MhTb*wB4_|XL{X3; zMHEy}!GaxZd_3=S?|kN@5C~USR}>0?LZKq94}XY3p;6u4-P7aaXcUS{ zrQ&cHG#Z6Qqpk7ywzjsMoScM&1ZzAlhfKtvQHS4cZEayNXbcA9>Pp6AFhn8|hek(6 zM&fZ8eSQ7u>1iSk)7{;M!{Nrq#{mE!;&FHkI)Q9WCX=bIuIR(h0aPkcKOrH~m8k!5 zYb(W?cxWXWg;Zg#2b(KX4MEyu>>xJ=g zG9F)9S$Symp_4hThhE|jW8tc=-`&>cs*gFG%=$m}50mjYvMYJGyA6*LNVO(XsR2c<)?^~ll}tvV&_zX+b^i%o3e}aG z6G=^pq;^;41h^6p-A=I94T!}Uez zV^D`Vkz#FqxY_`K&?oAX4{wbpVla3r5&e8&dc3W!($(4(kE%ReL4EXLn2T}}>WXrv zrx%Ea0k=NPIus6rJB$hykDeaxPI1*ApB|@L;}^yc)2#b2l&)0Q?zZj(YYa8u&;&eH zU*FoAJbY+YWzoX)!pE(TCErMz)`zy>sIKJk@#({yBI*+( zBLgBM6Ap9iznAm@($4IZ!*L?XOhZi_0y-R({&z&t6Q`lBj>ix~{DVEB{6j-9<{q9= zp%HNyRZL7wjGD*cxX*t_)I39j0qK1xlm|EfRQ_|*|2$a$;s6jvh+8rlBPj@eCHF~Y z^;iZ<#=6q7qh>q@tr_ravZMCi70mH$ajVX{`-O@QE$;U_>mQV;drnnabu~;^=tXWn zyWiFL_&OnlL&CbdX|~p~Q0dH6ck^5$sn)v6x~FBK)wwHRZK|jB=}pR5wuDV@+j5uR zT+5jUz3r=gVXvmDZ2E4j-HQFXz4oB*=8HQt2vX9vpSdxX$*+9&VSmS~dvqC_YqkTO zn-5Ag1D`(}=z8;*aXd%z#9;Tkxh99!v(tk;J5QOO53ZfK)%#(!KXT{!^sT;6FIXu^ zDZ8Qm&#xv6mCrpI8uXu~%&GHsJq2a1xREO0=(mxE z_G#Kk7mtp;CaRE$p(9k77%*7KSv@HOnMEP;Vl&l8kUU0Avpj7_^%1CqGZT~p8Sft# z(s+{jDqmal9Sst|R0Q*?427j4EL8RZh_fVPvzSw*d6Sot-6V~~1+i${V(#?K;-Jpu z%>wSIeK1laglWRT_I8F)kr?r=0pe<~3r@$;!$v>~;@jTWb0sOXVovcHAnTa5q6s@* zZ@zzW&S`wRrv-7w&CTkrM`g#E74 z4)e-HKjwz)`*>M6+KUeA;<2O=VO68-euw`VsIgwzCRgQTwHaqnPdgPgI`EK6tGl}R zrCAlUI&mu)0=FYU5z>U6*6xSo){i%@_u`a?cBgKsa)PtfCpcuZ-tQtF8B~P8{`^Dk zHsnjvKZBqGLA$+Ie<&mi+tC9ept89$AI7+BREXWeUzNf*B`%2{=fXNw(>Rn&)sr9d z#3X>Gc=swJ?()e>XjTSIxOEN16su1*|G4iAX;$K#)|iqNnC_{rYj~ys|MPE~z;qK` z55FgQ$@aWSZ+RozmOs(ttcp_}?o|3RXZs@{f$=tbJg?84n>BBDDk`BrC$p$WV4JPWk- zD2tg~op|XQaV+W8nZ&!ix`{~~vZfE)o@j*PfSoS|yRjx>DjZ53D^s_KxoVghBHL64 zYZo?s?03ZYv_{UK-;-BRKR)x_Z2k2u%a;Wj

5^m|ZWQAcYo^_=hNnc@tJxo4Qfv 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 mHUkcDvvNHk{je?0ZxG+