From c53965b4e8fd4ec6db5b00edb4c9bfe211363902 Mon Sep 17 00:00:00 2001 From: Micheal Date: Fri, 13 Sep 2024 14:25:14 +0530 Subject: [PATCH] Second commit --- Biriyani.jpg | Bin 0 -> 47698 bytes pages/AppConfig.js | 53 ++++++++++ pages/CatlogPage.js | 56 ++++++++++ pages/LoginPage.js | 18 +++- pages/MerchantAppConf.js | 32 ------ pages/MerchantOrder.js | 18 ---- pages/OrderPage.js | 49 +++++++++ pages/ProductPage.js | 102 ++++++++++++++++++ tests/AppConfig.spec.js | 28 +++++ tests/CatlogPage.spec.js | 17 +++ tests/LoginPage.spec.js | 62 ++++++++++- tests/Merchant_AppConf.spec.js | 183 --------------------------------- tests/Merchant_Order.spec.js | 70 ------------- tests/OrderPage.spec.js | 70 +++++++++++++ tests/ProductPage.spec.js | 85 +++++++++++++++ 15 files changed, 533 insertions(+), 310 deletions(-) create mode 100644 Biriyani.jpg create mode 100644 pages/AppConfig.js create mode 100644 pages/CatlogPage.js delete mode 100644 pages/MerchantAppConf.js delete mode 100644 pages/MerchantOrder.js create mode 100644 pages/OrderPage.js create mode 100644 pages/ProductPage.js create mode 100644 tests/AppConfig.spec.js create mode 100644 tests/CatlogPage.spec.js delete mode 100644 tests/Merchant_AppConf.spec.js delete mode 100644 tests/Merchant_Order.spec.js create mode 100644 tests/OrderPage.spec.js create mode 100644 tests/ProductPage.spec.js diff --git a/Biriyani.jpg b/Biriyani.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08a50db205ef9895277525b2daa773b01a570b3a GIT binary patch literal 47698 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 NfV|*h^um9u{|7&^ { + const codeMirrorElement = document.querySelector('.CodeMirror'); + codeMirrorElement.CodeMirror.setValue('Yummy! Delicious Biriyani Taste the Beauty of Kanyakumari'); + }); + + await this.page.locator(this.productImage).click(); + await this.page.locator(this.uploadImage).setInputFiles("C:/Automate Testing/OBA Automation/Biriyani.jpg"); + await this.page.locator(this.saveButton).click(); + } + + async addProductFunctionalityUnmanaged(productName, productPrize, orderLimitvalue, taxin, shortDescription){ + await this.page.locator(this.productsButton).click(); + await this.page.locator(this.addProductButton).click(); + await this.page.locator(this.productName).fill(productName); + await this.page.locator(this.productPrize).fill(productPrize); + await this.page.locator(this.unmanagedRadioButton).check(); + await this.page.locator(this.orderLimit).fill(orderLimitvalue); + await this.page.locator(this.taxIn).fill(taxin); + await this.page.locator(this.productAvailableCheck).check(); + await this.page.locator(this.isLiveCheck).check(); + await this.page.locator(this.shortDescription).fill(shortDescription); + await this.page.waitForSelector('.CodeMirror'); + await this.page.evaluate(() => { + const codeMirrorElement = document.querySelector('.CodeMirror'); + codeMirrorElement.CodeMirror.setValue('Yummy! Delicious Biriyani Taste the Beauty of Kanyakumari'); + }); + + await this.page.locator(this.productImage).click(); + await this.page.locator(this.uploadImage).setInputFiles("C:/Automate Testing/OBA Automation/Biriyani.jpg"); + await this.page.locator(this.saveButton).click(); + } + + + + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/tests/AppConfig.spec.js b/tests/AppConfig.spec.js new file mode 100644 index 0000000..5c9c15e --- /dev/null +++ b/tests/AppConfig.spec.js @@ -0,0 +1,28 @@ +const {test, expect} =require('@playwright/test') +import { LoginPage } from '../pages/LoginPage'; +import { AppConfig } from '../pages/AppConfig'; + + + +test('AppConfig 1',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const config = new AppConfig(page); + await config.openAppConf(); + await page.waitForTimeout(3000) + await expect(await page.locator("//select[@id='oba_appconfig_select_currency']n")).toBeVisible(); +}) + + +test('AppConfig 2',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const config = new AppConfig(page); + await config.functionalityAppConfig('UAE dirham (د.إ;)', '400', '35', '9565456737', 'State', 'Tamil Nadu'); + await page.waitForTimeout(3000) + +}) \ No newline at end of file diff --git a/tests/CatlogPage.spec.js b/tests/CatlogPage.spec.js new file mode 100644 index 0000000..ddf51b1 --- /dev/null +++ b/tests/CatlogPage.spec.js @@ -0,0 +1,17 @@ +const {test, expect} =require('@playwright/test') +import { LoginPage } from '../pages/LoginPage'; +import { CatlogPage } from '../pages/CatlogPage'; + + + +test('Catlog 1',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const catlog = new CatlogPage(page); + //await catlog.clickCatalogButton(); + await catlog.imageUpload('BUDS_LIST', 'PRODUCTS_LEFT'); + await page.waitForTimeout(3000) + +}) \ No newline at end of file diff --git a/tests/LoginPage.spec.js b/tests/LoginPage.spec.js index 8a09d86..3c7dab0 100644 --- a/tests/LoginPage.spec.js +++ b/tests/LoginPage.spec.js @@ -1,12 +1,64 @@ const {test, expect} =require('@playwright/test') import { LoginPage } from '../pages/LoginPage'; + + test('Login Page1',async ({page})=>{ const login = new LoginPage(page); await login.gotoLoginPage(); await login.login('rabisundaram@gmail.com','#12345678A') - await page.waitForTimeout(3000) - console.log('Password is Logged in Successfully'); - // await login.gotoLoginPage(); - // await login.loginWithCrtPassword() + await expect(page).toHaveURL('https://jaicrm1.orderbookings.com/merchant/index/index') + await expect(page).toHaveTitle('OBA') + await expect(await page.locator("//p[contains(text(),'Micheal Rabi')]")).toBeVisible(); await page.close(); -}) \ No newline at end of file +}) +test('Login Page2',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.login('rabisundaram@gmail.com','') + const msg=await page.locator("//input[@placeholder='Password']").getAttribute("ariaHasPopup"); + console.log(msg); + await page.close(); +}) + +test('Login Page3',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.login('','#12345678A') + await expect(page).toHaveURL('https://jaicrm1.orderbookings.com/merchant/index/index') + await expect(page).toHaveTitle('OBA') + await expect(await page.locator("//p[contains(text(),'Micheal Rabi')]")).toBeVisible(); + //document.querySelector('input').value = 'New Value'; + // await page.waitForTimeout(3000) +// await expect(await this.page.getByLabel('rabisundaram@gmail.com')).toBeVisible(); + await page.close(); +}) + +test('ForgotPassword',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await page.waitForTimeout(3000) + await login.forgetPasswordLink() + await page.waitForTimeout(3000) + await expect(await page.locator("//button[normalize-space()='RESET']")).toBeVisible(); +}) +test('BacktoLogin',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await page.waitForTimeout(3000) + await login.forgetPasswordLink() + await page.waitForTimeout(3000) + await login.backToLoginLink() + await page.waitForTimeout(3000) + await expect(await page.locator("//button[normalize-space()='SIGN IN']")).toBeVisible(); +}) + +test('Login Page1',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.login('midhaja','#12345678A') + await page.waitForTimeout(3000) + const errorMessage = await page.locator("//div[@role='alert']").textContent() + console.log(errorMessage); + await expect(await page.locator("//div[@role='alert']")).toBeVisible(); +}) + diff --git a/tests/Merchant_AppConf.spec.js b/tests/Merchant_AppConf.spec.js deleted file mode 100644 index bebfb51..0000000 --- a/tests/Merchant_AppConf.spec.js +++ /dev/null @@ -1,183 +0,0 @@ -const {test, expect} =require('@playwright/test') -import { LoginPage } from '../pages/LoginPage'; -import { MerchantAppConf } from '../pages/MerchantAppConf'; - - - - -test.describe('AppConfButton',()=>{ -test('AppConfButton1',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - // await appConf.selectCurrency(); - await page.waitForTimeout(5000); - console.log('AppConfiguration button is working'); - await page.close(); -}) -}) -test.describe('TC_Currency',()=>{ - test('Currency1',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.selectCurrency('UAE dirham (د.إ;)'); - await page.waitForTimeout(5000); - console.log('Each option in the currency is selected'); - await page.close(); - }) - test('Currency2',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - // await page. - - - // const value=await appConf.selectCurrency(); - // await expect(value).toBeVisible(); - // if(value=='Indian rupee (₹)') - // { - //await page.waitForTimeout(5000); - console.log('Default option Indian rupee is selected'); - // }else - // { - // console.log('Given Currency is not default'); - // } - await page.close(); - }) - test('Currency3',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.selectCurrency('Bangladeshi taka (৳)'); - await page.waitForTimeout(5000); - console.log('Selected currency symbol is selected correctlty'); - await page.close(); - }) - test('Currency4',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.selectCurrency('Azerbaijani manat (AZN)'); - await page.waitForTimeout(5000); - await appConf.selectCurrency('Burundi franc (FBu)'); - await page.waitForTimeout(5000); - await appConf.selectCurrency('Brunei dollar (B$)'); - console.log('Currency codes are visible and correctly associated'); - await page.close(); - }) -}) -test.describe('TC_callToAction',()=>{ - test('CTA1',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('DATAANALYS'); - console.log('Characters not allowed'); - await page.close(); - }) - test('CTA2',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('@#$%%^^&*&*'); - console.log('Special Characters not allowed'); - await page.close(); - }) - test('CTA3',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('Asdfghjk'); - console.log('Alphabets not allowed'); - await page.close(); - }) - test('CTA4',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('98745612332'); - console.log('11digits not allowed'); - await page.close(); - }) - test('CTA5',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('987456123'); - console.log('9digits not allowed'); - await page.close(); - }) - test('CTA6',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction(' 987456123'); - console.log('space at the start of the number is not allowed'); - await page.close(); - }) - test('CTA7',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction(''); - console.log('Blank number is not allowed'); - await page.close(); - }) - test('CTA8',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('+1 82645289918'); - console.log('International number is not allowed'); - await page.close(); - }) - test('CTA9',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('8870596481'); - console.log('10 digit numbers are allowed'); - await page.close(); - }) - test('CTA10',async ({page})=>{ - const login = new LoginPage(page); - await login.gotoLoginPage(); - await login.loginWithCrtPassword(); - const appConf = new MerchantAppConf(page); - await appConf.openAppConf(); - await appConf.callToAction('8870596481'); - console.log('Number Starts with 6,7,8,9 are allowed'); - await page.close(); - }) - - -}) \ No newline at end of file diff --git a/tests/Merchant_Order.spec.js b/tests/Merchant_Order.spec.js deleted file mode 100644 index f82a417..0000000 --- a/tests/Merchant_Order.spec.js +++ /dev/null @@ -1,70 +0,0 @@ -const {test, expect} =require('@playwright/test'); -const { clear } = require('console'); - -test.describe('MerchantOrder',()=>{ - - test('OrderTest1',async ({page})=>{ - await page.goto('https://jaicrm1.orderbookings.com/login/'); - await page.fill("//input[@name='oba_login_emailid']",'rabisundaram@gmail.com') - await page.fill("//input[@placeholder='Password']",'#12345678A') - await page.click("//button[normalize-space()='SIGN IN']") - await page.click("//li[@id='app-menu-list-orders']//a[@class='app-menu__item']") - // await page.click("//li[@id='app-menu-list-orders']//a[@class='app-menu__item']") - const orderlistlink = await page.locator("//a[normalize-space()='Order List']") - await expect(orderlistlink).toBeVisible(); - console.log('Order Button is working'); - // await page.close(); - }) - - test('OrderTest2',async ({page})=>{ - await page.goto('https://jaicrm1.orderbookings.com/login/'); - await page.fill("//input[@name='oba_login_emailid']",'rabisundaram@gmail.com') - await page.fill("//input[@placeholder='Password']",'#12345678A') - await page.click("//button[normalize-space()='SIGN IN']") - await page.click("//li[@id='app-menu-list-orders']//a[@class='app-menu__item']") - await page.click("//a[normalize-space()='Order List']") - console.log('OrderList Button is working'); - // await page.click("//select[@id='oba_edit_order_status_filter']") - await page.close(); - }) - - test('OrderTest3',async ({page})=>{ - await page.goto('https://jaicrm1.orderbookings.com/login/'); - await page.fill("//input[@name='oba_login_emailid']",'rabisundaram@gmail.com') - await page.fill("//input[@placeholder='Password']",'#12345678A') - await page.click("//button[normalize-space()='SIGN IN']") - await page.click("//li[@id='app-menu-list-orders']//a[@class='app-menu__item']") - await page.click("//a[normalize-space()='Order List']") - await page.click("//select[@id='oba_edit_order_status_filter']") - console.log('order status dropdown is working') - await page.close(); - }) - test('OrderTest4',async ({page})=>{ - await page.goto('https://jaicrm1.orderbookings.com/login/'); - await page.fill("//input[@name='oba_login_emailid']",'rabisundaram@gmail.com') - await page.fill("//input[@placeholder='Password']",'#12345678A') - await page.click("//button[normalize-space()='SIGN IN']") - await page.click("//li[@id='app-menu-list-orders']//a[@class='app-menu__item']") - await page.click("//a[normalize-space()='Order List']") - await page.locator("//select[@id='oba_edit_order_status_filter']").selectOption({label:'ORDER_STATUS_DECLINED'}); - await page.waitForTimeout(5000); - console.log('Order status declined is selected'); - await page.locator("//select[@id='oba_edit_order_status_filter']").selectOption({label:'ORDER_STATUS_REQUESTED'}); - await page.waitForTimeout(5000); - console.log('Order status requested is selected'); - await page.locator("//select[@id='oba_edit_order_status_filter']").selectOption({label:'ORDER_STATUS_PENDING'}); - await page.waitForTimeout(5000); - console.log('Order status Pending is selected'); - await page.locator("//select[@id='oba_edit_order_status_filter']").selectOption({label:'ORDER_STATUS_CANCELLED'}); - await page.waitForTimeout(5000); - console.log('Order status cancelled is selected'); - await page.locator("//select[@id='oba_edit_order_status_filter']").selectOption({label:'ORDER_STATUS_COMPLETE'}); - console.log('Order status complete is selected'); - await page.close(); - }) -}) - - - - - diff --git a/tests/OrderPage.spec.js b/tests/OrderPage.spec.js new file mode 100644 index 0000000..6ab1f05 --- /dev/null +++ b/tests/OrderPage.spec.js @@ -0,0 +1,70 @@ +const {test, expect} =require('@playwright/test') +import { LoginPage } from '../pages/LoginPage'; +import { OrderPage } from '../pages/OrderPage'; + + +test('Order Page1',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.clickOrdersButton(); + await page.waitForTimeout(5000); + await expect(await page.locator("//a[normalize-space()='Order List']")).toBeVisible(); +}) +test('Order Page2',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.clickOrdersListButton(); + // await page.waitForTimeout(5000); + await expect(await page.locator("//select[@id='oba_edit_order_status_filter']")).toBeVisible(); +}) +test('Order Page3',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.clickOrdersListButton(); + await page.waitForTimeout(5000); + //await order.orderStatusCheck('ORDER_STATUS_REQUESTED'); + // const value= await page.locator("//select[@id='oba_edit_order_status_filter']").textContent() + // console.log('value' +value); + //await expect(await page.locator("//select[@id='oba_edit_order_status_filter']")).textContent() + const options = await page.locator('#oba_edit_order_status_filter option') + await expect(options).toHaveCount(5); +}) +test('Order Page4',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + // await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.clickOrdersListButton(); + // await page.waitForTimeout(5000); + const value= await page.locator("//select[@id='oba_edit_order_status_filter']").textContent() + console.log(value); +}) + +test('Order Page5',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + //await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.orderStatusCheck('ORDER_STATUS_DECLINED'); +}) + +test('Order Page6',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const order = new OrderPage(page); + await order.textBoxSearch('ORDER_STATUS_DECLINED', 'Tomato Rice and Chicken Biriyani'); +}) + diff --git a/tests/ProductPage.spec.js b/tests/ProductPage.spec.js new file mode 100644 index 0000000..5a2c82d --- /dev/null +++ b/tests/ProductPage.spec.js @@ -0,0 +1,85 @@ +const {test, expect} =require('@playwright/test') +import { LoginPage } from '../pages/LoginPage'; +import { ProductPage } from '../pages/ProductPage'; +/* +test('Product Page1',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.clickProductsButton(); + await page.waitForTimeout(5000); + await expect(await page.locator("//a[normalize-space()='Product List']")).toBeVisible(); +}) +test('Product Page2',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.clickProductlistButton(); + await page.waitForTimeout(5000); + await expect(await page.locator("//input[@id='oba_product_search']")).toBeVisible(); +}) +test('Product Page3',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.clickAddProductButton(); + await page.waitForTimeout(5000); + await expect(await page.locator("//input[@id='oba_product_name']")).toBeVisible(); +}) +test('Product Page4',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.addProductFunctionality('Biriyani', '250', '10', '5', '20','Dum Dum KK Biriyani'); + await page.waitForTimeout(5000); + await expect(await page.locator("//td[normalize-space()='Biriyani']")).toBeVisible(); + +}) +test('Product Page5',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.addProductFunctionalityUnmanaged('Biriyani', '250', '5', '20','Dum Dum KK Biriyani'); + + await page.waitForTimeout(5000); + await expect(await page.locator("//td[normalize-space()='Biriyani']")).toBeVisible(); +}) +test('Product Page6',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.addProductFunctionalityUnmanaged('Biriyani', '250', '5', '20','Dum Dum KK Biriyani'); + + await page.waitForTimeout(5000); + await expect(await page.locator("//td[normalize-space()='Un-managed']")).toBeVisible(); +})*/ +test('Product Page7',async ({page})=>{ + const login = new LoginPage(page); + await login.gotoLoginPage(); + await login.loginWithCrtPassword(); + await page.waitForTimeout(5000); + const product = new ProductPage(page); + await product.addProductFunctionality('Biriyani', '250', '10', '5', '20','Dum Dum KK Biriyani'); + + await page.waitForTimeout(5000); + const options = await page.locator('//tbody/tr[1]/td[4]') + await expect(options).toHaveCount(10); + //await expect(await page.locator("//tbody/tr[1]/td[4]")).toBeVisible(); +}) + + + + +