@ -0,0 +1,606 @@ | |||
const {test, expect} =require('@playwright/test') | |||
import { LoginPage } from '../pages/LoginPage'; | |||
import { OrderPage } from '../pages/OrderPage'; | |||
import { AppConfig } from '../pages/AppConfig'; | |||
import { CouponPage } from '../pages/Couponpage'; | |||
import { UserPage } from '../pages/UserPage'; | |||
import { CatlogPage } from '../pages/CatlogPage'; | |||
import { ProductPage } from '../pages/ProductPage'; | |||
/*----------------------------------------OrderID Complete Check-------------------------------------------*/ | |||
test('Get Orders-Order by ID API',async ({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/order/syncOrders?user_id=670766e4272db54e96e423e0&phone=919480111222&lastupdatetime=0&merchantCode=919480707707&role=ROLE_TYPE_MERCHANT') | |||
console.log(await response.json()) | |||
//expect(response.status()).toBe(200) | |||
// const text = await response.text(); | |||
// expect(text).toContain('Manju') | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const order = new OrderPage(page); | |||
const result = await order.textBoxSearch('ORDER_STATUS_COMPLETE', 'Shubya'); | |||
// await page.waitForTimeout(5000); | |||
//const username= result.OrderId; | |||
//expect.soft("//td[normalize-space()='Shubya']").toContain(res.data[0].ordered_by_name); | |||
expect.soft(order.orderName).toContain(res.data[0].ordered_by_name); | |||
expect.soft(order.orderEmail).toContain(res.data[0].ordered_by_email); | |||
expect.soft(order.orderPhone).toContain((res.data[0].ordered_by_address.phone).toString()); | |||
expect.soft(order.orderCost).toContain((res.data[0].order_cost).toString()); | |||
expect.soft(order.orderQty).toContain((res.data[0].ordered_items_qty[0]).toString()); | |||
}) | |||
/*---------------------------------------------App Config----------------------------------------------------*/ | |||
test('complete AppConfig page to check API',async ({page,request})=>{ | |||
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 (د.إ;)','7','5', '400', '35', '9565456737', 'City','Tamil Nadu'); | |||
// await page.close(); | |||
const response = await request.get('https://dev.orderbookings.com/api/config/919480707707?merchantCode=919480707707') | |||
console.log(await response.json()) | |||
const res = await response.json(); | |||
//await page.close(); | |||
//await login.gotoLoginPage(); | |||
// await login.loginWithCrtPassword(); | |||
// await config.openAppConf(); | |||
expect.soft(config.merchantCode).toContain(res.data.merchantCode); | |||
// const textBoxValue=await page.locator(config.calltoactionAPI).inputValue(); | |||
// expect.soft(textBoxValue).toContain(res.data.call_to_action).toString(); | |||
//const currencyValue=await page.locator(config.currencyAPI).inputValue(); | |||
// expect.soft(currencyValue).toContain(res.data.currency_code); | |||
const notificationLoop = await page.locator(config.notificationSoundLoopAPI).inputValue(); | |||
expect.soft(notificationLoop).toContain((res.data.notification_sound_loop).toString()); | |||
const cancellationTillResponse = await page.locator(config.cancellationTillAPI).inputValue(); | |||
expect.soft(cancellationTillResponse).toContain((res.data.cancellation_till).toString()); | |||
const minimumCartPrizeResponse = await page.locator(config.minimumCartPrizeAPI).inputValue(); | |||
expect.soft( minimumCartPrizeResponse).toContain((res.data.minimum_cart_price).toString()); | |||
const deliveryChargeResponse = await page.locator(config.deliveryChargeAPI).inputValue(); | |||
expect.soft( deliveryChargeResponse).toContain((res.data.delivery_charge).toString()); | |||
// expect.soft(config.areaSelection).toContain((res.data.area_type).toString()); | |||
}) | |||
/*----------------------------------------------Coupon---------------------------------------------------*/ | |||
test('APITesting_Coupon Get Details as User',async ({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/available-coupon/670e14cf14f563f755f3e2a1/919480707707') | |||
console.log(await response.json()) | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const coupon = new CouponPage(page); | |||
await coupon.viewCoupon(); | |||
expect.soft(coupon.shortDescription).toContain(res.data[1].name); | |||
expect.soft(coupon.descriptionCheck).toContain(res.data[1].description); | |||
expect.soft(coupon.internalCouponValue).toContain(res.data[1].code); | |||
expect.soft(coupon.couponCode).toContain(res.data[1].campaign_code); | |||
// expect.soft(coupon.forUsers).toContain(res.data[0].for); | |||
}) | |||
test('APITesting_Coupon Get Details as Guest',async ({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/available-coupon-guest/919480707707') | |||
console.log(await response.json()) | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const coupon = new CouponPage(page); | |||
await coupon.viewCoupon(); | |||
expect.soft(coupon.shortDescriptionGuest).toContain(res.data[0].name); | |||
expect.soft(coupon.descriptionCheckGuest).toContain(res.data[0].description); | |||
expect.soft(coupon.internalCouponValueGuest).toContain(res.data[0].code); | |||
expect.soft(coupon.couponCodeGuest).toContain(res.data[0].campaign_code); | |||
// expect.soft(coupon.forUsersGuest).toContain(res.data[0].for); | |||
}) | |||
/*----------------------------------------------OrderId Pending---------------------------------------------*/ | |||
//get order by order id and compare with web ui in the order list. | |||
test('GET ORDER BY ORDER_ID',async ({request,page})=>{ | |||
const response1 = await request.get('https://dev.orderbookings.com/api/order/getorder/670e249314f563f755f3e2a5') | |||
console.log(await response1.json()) | |||
const res = await response1.json(); | |||
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_PENDING', 'DAYA'); | |||
expect.soft(order.userid).toContain(res.data.id); //id | |||
expect.soft(order.username).toContain(res.data.ordered_by_name); //name | |||
expect.soft(order.useremail).toContain(res.data.ordered_by_email); //email | |||
expect.soft(order.userphone).toContain(res.data.ordered_by_phone); //phone | |||
// expect.soft(order.userorderitems).toContain((res.data.ordered_items[0]).toString()); //order items | |||
const element = await page.locator(order.userorderitems); | |||
const text = await element.textContent(); | |||
expect(text).toContain(res.data.ordered_items[0]); | |||
// expect.soft(order.ordercost).toContain((res.data.order_cost).toString()); //order cost is different 604 vs 654 | |||
expect.soft(order.orderqty).toContain((res.data.ordered_items_qty[0]).toString()); // order qty | |||
//expect.soft(order.userorderstatus).toContain(res.data.order_status); // order status is complete | |||
await page.close(); | |||
}) | |||
/*---------------------------------------------------------User Details----------------------------------*/ | |||
//get order by order id and compare with web ui in the order list. | |||
test('GET USER Details',async ({request,page})=>{ | |||
const response2 = await request.get('https://dev.orderbookings.com/api/user/userreg?phone=919480111111&merchantCode=919480707707') | |||
console.log(await response2.json()) | |||
const res = await response2.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const user = new UserPage(page); | |||
await user.userAPI(); | |||
expect.soft(user.userNameAPI).toContain(res.data.name); | |||
expect.soft(user.userPhoneAPI).toContain(res.data.phone); | |||
expect.soft(user.userEmailAPI).toContain(res.data.email); | |||
expect.soft(user.merchantCode).toContain(res.data.merchantCode); | |||
expect.soft(user.addressAPI).toContain(res.data.area[0]); | |||
expect.soft(user.addressAPI).toContain(res.data.area[1]); | |||
expect.soft(user.addressAPI).toContain(res.data.area[2]); | |||
await page.close(); | |||
}) | |||
/*--------------------------------------------------------------Get Categories and Products-----------------------------------------------*/ | |||
test('Get Categories and products',async ({page,request})=>{ | |||
//Main Page Element locating | |||
const response = await request.get('https://dev.orderbookings.com/api/bud/919480707707') | |||
console.log(await response.json()) | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const catlog = new CatlogPage(page); | |||
await catlog.clickCatalogButton(); | |||
const obaBudView = page.locator('//select[@id="oba_bud_view"]'); | |||
const obaProductView = page.locator('//select[@id="oba_product_view"]'); | |||
const budValue = await obaBudView.inputValue(); | |||
const productValue = await obaProductView.inputValue(); | |||
expect.soft(budValue).toContain(res.data.buds[0].childview); | |||
expect.soft(productValue).toContain(res.data.buds[0].product_childview); | |||
// Mens Page | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
await catlog.clickCatalogButton(); | |||
let Category1 = await catlog.NavigateToMens(); | |||
let Name1 = await Category1.catnames; | |||
let catlogViewType1 = await Category1.selecteddcattype; | |||
let Productviewtype1 = await Category1.selecctedprodtype; | |||
let Catislive1 = await Category1.isActive; | |||
let merchantid = await Category1.merchatcode; | |||
let cat1 =res.data.buds[1].name; | |||
let catlog1ViewType1 =res.data.buds[1].childview; | |||
let cat1Productviewtype =res.data.buds[1].product_childview; | |||
let cat1islive = res.data.buds[1].is_live; | |||
let merchantcode =res.data.buds[1].merchantCode; | |||
var cat2 = res.data.buds[2].name; //womens | |||
var cat3 = res.data.buds[3].name; //kids | |||
expect.soft(Name1).toEqual(cat1); | |||
expect.soft(merchantid).toEqual(merchantcode) | |||
expect.soft(catlogViewType1).toEqual(catlog1ViewType1); | |||
expect.soft(Productviewtype1).toEqual(cat1Productviewtype); | |||
expect.soft(Catislive1).toEqual(cat1islive); | |||
// Womens Page | |||
let Category2 = await catlog.NavigateToWomens(); | |||
const Name2 = await Category2.catnames; | |||
const catlogViewType2 = await Category2.selecteddcattype; | |||
const Productviewtype2 = await Category2.selecctedprodtype; | |||
const Catislive2 = Category2.isActive; | |||
console.log('For Womens' +Catislive2); | |||
// const Catproducts2 = await Category2.Productsincluded; | |||
let cat2logViewType =res.data.buds[2].childview; | |||
let cat2Productviewtype =res.data.buds[2].product_childview; | |||
let cat2islive = res.data.buds[2].is_live; | |||
let merchantcode2 =res.data.buds[2].merchantCode; | |||
expect.soft(Name2).toEqual(cat2); | |||
expect.soft(merchantid).toEqual(merchantcode2) | |||
expect.soft(catlogViewType2).toEqual(cat2logViewType); | |||
expect.soft(Productviewtype2).toEqual(cat2Productviewtype); | |||
expect.soft(Catislive2).toEqual(cat2islive); | |||
// expect.soft(Catproducts2).toEqual(res.data.buds[2].products); | |||
//this cat3 is kids | |||
let Category3 = await catlog.NavigateToKids(); | |||
const Name3 = await Category3.catnames; | |||
const catlogViewType3 = await Category3.selecteddcattype; | |||
const Productviewtype3 = await Category3.selecctedprodtype; | |||
const Catislive3 = Category3.isActive; | |||
console.log('for kids:' +Catislive3); | |||
//const Catproducts3 = await Category3.Productsincluded; | |||
//api request response are in object so we need save in the letibale to compare. | |||
let cat3ogViewType =res.data.buds[3].childview; | |||
let cat3Productviewtype =res.data.buds[3].product_childview; | |||
let cat3islive = res.data.buds[3].is_live; | |||
let merchantcode3 =res.data.buds[3].merchantCode; | |||
expect.soft(Name3).toEqual(cat3); | |||
expect.soft(merchantid).toEqual(merchantcode3); | |||
expect.soft(catlogViewType3).toEqual(cat3ogViewType); | |||
expect.soft(Productviewtype3).toEqual(cat3Productviewtype); | |||
expect.soft(Catislive3).toEqual(cat3islive); | |||
}) | |||
test('Get Products',async ({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/bud/919480707707') | |||
console.log(await response.json()) | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const product = new ProductPage(page); | |||
await product.clickProductlistButton(); | |||
const productName = await page.textContent("//td[normalize-space()='T-Shirt']"); | |||
expect.soft(productName.trim()).toContain(res.data.products[0].name.trim()); | |||
// expect.soft(product.nameAPI).toContain(res.data.products[0].name); | |||
expect.soft(product.priceAPI).toContain((res.data.products[0].price).toString()); | |||
expect.soft(product.quantityAPI).toContain((res.data.products[0].quantity).toString()); | |||
const productBoolean = | |||
{ | |||
availableAPI: await page.textContent("//td[normalize-space()='true']") | |||
}; | |||
expect.soft(productBoolean.availableAPI.trim()).toBe(String(res.data.products[0].available)); | |||
expect.soft(product.orderlimitAPI).toContain((res.data.products[0].order_limit).toString()); | |||
}) | |||
/*---------------------------------------------------Address API-----------------------------------------------------------------------------------------------------*/ | |||
test('Complete Address API',async({page,request})=>{ | |||
let resourceId; | |||
// 1. Post Response | |||
const postResponse = await request.post('https://dev.orderbookings.com/api/user/addnewaddress',{ | |||
data: { | |||
"addressLine1": "35", | |||
"addressLine2": "Mount Main Road ", | |||
"city": "Chennai", | |||
"stateOrProvince": "Tamil Nadu", | |||
"postalCode": "123111", | |||
"phone": "919480111111", | |||
"deliveryInstructions": null, | |||
"isDefault": true, | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"title": "test address", | |||
"area": "Chennai" | |||
}, | |||
}); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const user = new UserPage(page); | |||
await user.addressListAPI(); | |||
expect(postResponse.status()).toBe(200); // HTTP 200 indicates a successful creation | |||
const postResponseBody = await postResponse.json(); // Parse the response body | |||
console.log(postResponseBody); | |||
// Validate response body | |||
expect(postResponseBody.data).toHaveProperty('id'); // Assuming the API returns an `id` for the new resource | |||
resourceId = postResponseBody.data.id; | |||
//Assertion for post | |||
expect.soft(user.addressList).toContain(postResponseBody.data.addressLine1); | |||
expect.soft(user.addressList).toContain(postResponseBody.data.addressLine2); | |||
expect.soft(user.addressList).toContain(postResponseBody.data.stateOrProvince); | |||
expect.soft(user.addressList).toContain((postResponseBody.data.postalCode).toString()); | |||
// 2. Get address list | |||
const getResponse = await request.get('https://dev.orderbookings.com/api/user/addresslist?user_id=670e14cf14f563f755f3e2a1') | |||
console.log(await getResponse.json()) | |||
const getResponseBody = await getResponse.json(); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
await user.addressListAPI(); | |||
expect.soft(user.addressList).toContain(getResponseBody.data[1].addressLine1); | |||
expect.soft(user.addressList).toContain(getResponseBody.data[1].addressLine2); | |||
expect.soft(user.addressList).toContain(getResponseBody.data[1].stateOrProvince); | |||
expect.soft(user.addressList).toContain((getResponseBody.data[1].postalCode).toString()); | |||
//3.Patch Request | |||
const patchResponse = await request.patch('https://dev.orderbookings.com/api/user/updateaddress',{ | |||
data: { | |||
"addressLine1": "35", | |||
"addressLine2": "Mount Kitchen Main Road", | |||
"city": "", | |||
"stateOrProvince": "Tamil Nadu", | |||
"postalCode": "123111", | |||
"phone": "91948011111", | |||
"deliveryInstructions": null, | |||
"isDefault": true, | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"title": "test address", | |||
"area": "Chennai", | |||
"address_id": resourceId | |||
}, | |||
}); | |||
console.log(await patchResponse.json()) | |||
const patchResponseBody = await patchResponse.json(); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await user.addressListAPI(); | |||
expect.soft(user.addressPatch).toContain(patchResponseBody.data.addressLine1); | |||
expect.soft(user.addressPatch).toContain(patchResponseBody.data.addressLine2); | |||
expect.soft(user.addressPatch).toContain(patchResponseBody.data.stateOrProvince); | |||
expect.soft(user.addressPatch).toContain((patchResponseBody.data.postalCode).toString()); | |||
// 4. Delete Request | |||
const deleteResponse = await request.delete('https://dev.orderbookings.com/api/user/deleteaddress', { | |||
data:{ | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"address_id": resourceId, | |||
} | |||
}); | |||
// Validate DELETE response | |||
expect(deleteResponse.status()).toBe(200); // Typically, HTTP 200 or 204 is expected for successful deletions | |||
const deleteResponseBody = await deleteResponse.text(); // Some APIs may not return JSON for DELETE | |||
console.log('DELETE response:', deleteResponseBody); | |||
}) | |||
test('Post and Delete Address API',async({page,request})=>{ | |||
// 1. Post Response | |||
const postResponse = await request.post('https://dev.orderbookings.com/api/user/addnewaddress',{ | |||
data: { | |||
"addressLine1": "52", | |||
"addressLine2": "25", | |||
"city": "", | |||
"stateOrProvince": "", | |||
"postalCode": "123123", | |||
"phone": "919480111111", | |||
"deliveryInstructions": null, | |||
"isDefault": false, | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"title": "test address", | |||
"area": "Chennai" | |||
}, | |||
}); | |||
expect(postResponse.status()).toBe(200); // HTTP 201 indicates a successful creation | |||
const postResponseBody = await postResponse.json(); // Parse the response body | |||
console.log(postResponseBody); | |||
// Validate response body | |||
expect(postResponseBody.data).toHaveProperty('id'); // Assuming the API returns an `id` for the new resource | |||
const resourceId = postResponseBody.data.id; | |||
// 2. Delete Request | |||
const deleteResponse = await request.delete('https://dev.orderbookings.com/api/user/deleteaddress', { | |||
data:{ | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"address_id": resourceId, | |||
} | |||
}); | |||
// Validate DELETE response | |||
expect(deleteResponse.status()).toBe(200); // Typically, HTTP 200 or 204 is expected for successful deletions | |||
const deleteResponseBody = await deleteResponse.text(); // Some APIs may not return JSON for DELETE | |||
console.log('DELETE response:', deleteResponseBody); | |||
}) | |||
/*--------------------------------------------------------------------------------------------------------------------*/ | |||
//Order Page cannot be automated, since the API datas are missing, as it is continued from place order, products are missing | |||
/* | |||
test('Cancel Order API',async({page,request})=>{ | |||
const postResponse = await request.post('https://dev.orderbookings.com/api/order/cancelorder',{ | |||
"order_id":"670e240e14f563f755f3e2a4" | |||
}); | |||
// const login = new LoginPage(page); | |||
// await login.gotoLoginPage(); | |||
// await login.loginWithCrtPassword(); | |||
// await page.waitForTimeout(5000); | |||
// const order = new OrderPage(page); | |||
// await order.checkFilterButton('ORDER_STATUS_CANCELLED'); | |||
expect(postResponse.status()).toBe(200); // HTTP 201 indicates a successful creation | |||
const postResponseBody = await postResponse.json(); // Parse the response body | |||
// expect.soft(user.orderIdCancel).toContain(postResponseBody.order_id); | |||
console.log(postResponseBody); | |||
}) | |||
test('Post Rate Order Address API',async({page,request})=>{ | |||
//place an order | |||
//Complete an order | |||
// Post Response | |||
const postResponse = await request.post('https://dev.orderbookings.com/api/order/rateOrder',{ | |||
data: { | |||
"order_id": "67076b44272db54e96e423eb", | |||
"rating":4, | |||
"fcm_token":"kjdfhkdbshigkmadniuaghkk" | |||
}, | |||
}); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const order = new OrderPage(page); | |||
await order.checkFilterButton('ORDER_STATUS_COMPLETE'); | |||
expect(postResponse.status()).toBe(200); // HTTP 201 indicates a successful creation | |||
const postResponseBody = await postResponse.json(); // Parse the response body | |||
console.log(postResponseBody); | |||
expect.soft(order.orderID).toContain(postResponseBody.order_id); //id | |||
expect.soft(order.orderRate).toContain(postResponseBody.rating); //name | |||
await page.close(); | |||
}) | |||
*/ |
@ -1,81 +0,0 @@ | |||
const {test, expect} =require('@playwright/test') | |||
import { LoginPage } from '../pages/LoginPage'; | |||
import { AdddressListAPI } from '../pages/AddressListAPI'; | |||
import { OrderPage } from '../pages/OrderPage'; | |||
test('API Testing',async function ({ request, page }) { | |||
const responsePost=await request.post('https://dev.orderbookings.com/api/user/addresslist?user_id=670e14cf14f563f755f3e2a1',{ | |||
data: { | |||
"addressLine1": "25", | |||
"addressLine2": "ParangiMalai", | |||
"city": "Chennai", | |||
"stateOrProvince": "TN", | |||
"postalCode": "6000025", | |||
"phone": "919480111111", | |||
"deliveryInstructions": null, | |||
"isDefault": false, | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"title": "test address", | |||
"area": "Chennai" | |||
} | |||
}) | |||
const res1 = await responsePost.json(); | |||
useraddressid= res1.data.id; | |||
console.log(res1); | |||
/* | |||
const response = await request.get('https://dev.orderbookings.com/api/user/addresslist?user_id=670e14cf14f563f755f3e2a1'); | |||
console.log(await response.json()); | |||
const res = await response.json(); | |||
const login = new LoginPage(page); | |||
await login.gotoLoginPage(); | |||
await login.loginWithCrtPassword(); | |||
await page.waitForTimeout(5000); | |||
const order = new OrderPage(page); | |||
await order.clickOrdersListButton(); | |||
// await address.openAppConf(); | |||
// await page.waitForTimeout(3000) | |||
// await expect(await page.locator(config.notificationSoundLoop)).toBeVisible(); | |||
// expect.soft("//div[normalize-space()='Address : 37, Thomas Mount, 627109']").toContain(res.data[0].addressLine1); | |||
//expect.soft("//div[normalize-space()='Address : 37, Thomas Mount, 627109']").toContain(res.data[0].addressLine2); | |||
//expect.soft("//div[normalize-space()='Address : 37, Thomas Mount, 627109']").toContain((res.data[0].postalCode).toString()); | |||
//expect.soft("//div[normalize-space()='Phone : 919480111111']").toContain((res.data[0].phone).toString()); | |||
//expect.soft("//div[normalize-space()='order_id : 670e249314f563f755f3e2a5']").toContain(res.data[0].id); | |||
//expect.soft("//div[normalize-space()='Phone : 919480111111']").toContain((res.data[0].phone).toString()); | |||
const responseDelete = await request.delete('https://dev.orderbookings.com/api/user/deleteaddress', { | |||
data: { | |||
"user_id": "670e14cf14f563f755f3e2a1", | |||
"address_id": "670e249314f563f755f3e2a3" | |||
} | |||
}) | |||
console.log(await responseDelete.json()); | |||
await page.reload(); | |||
*/ | |||
}) | |||
@ -1,521 +0,0 @@ | |||
import { test, expect } from '@playwright/test'; | |||
const { chromium } = require('playwright'); | |||
import { OrderDetails } from '../../OBAPages/Orderapipage.spec'; | |||
import { Appconfig } from '../../OBAPages/AppConfig.spec'; | |||
const FormData =require('form-data'); | |||
//order sync to get order details using userid and user phone number and mercchant id. | |||
test ('OrderSync of completed orders',async({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/order/syncOrders?user_id=670766e4272db54e96e423e0&phone=919480111222&lastupdatetime=0&merchantCode=919480707707&role=ROLE_TYPE_USER') | |||
const res=await response.json(); | |||
let OrderedBy = res.data[0].ordered_by_name; //you will get user from this. | |||
let Orderstatus = res.data[0].order_status; //order status i will get from response | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.navigateToOrderDetails(); | |||
const result= await orderdetail.searchOrder(Orderstatus,OrderedBy); | |||
const username = result.OrderId; | |||
const userid =result.OrderId; | |||
const useremail = result.OrderId; | |||
const userphone = result.OrderId; | |||
const userorderitems = result.Order_items; | |||
const userorderstatus = result.OrderStatusis; | |||
let ordercost = result.Order_cost; | |||
let orderqty = result.Order_qty; | |||
expect.soft(userid).toContain(res.data[0].id); //id | |||
expect.soft(username).toContain(res.data[0].ordered_by_name); //name | |||
expect.soft(useremail).toContain(res.data[0].ordered_by_email); //email | |||
expect.soft(userphone).toContain(res.data[0].ordered_by_phone); //phone | |||
expect.soft(userorderitems).toContain((res.data[0].ordered_items[0]).toString()); //order items | |||
expect.soft(ordercost).toContain((res.data[0].order_cost).toString()); //order cost | |||
expect.soft(orderqty).toContain((res.data[0].ordered_items_qty[0]).toString()); // order qty | |||
expect.soft(userorderstatus).toContain(res.data[0].order_status); // order status is complete | |||
await page.close(); | |||
}) | |||
//C:\PlayWright\tests\navigatetomen.spec.js | |||
//unable to automate becasue its contains bug in the orderitems,order qty,order item price. | |||
//locator finds two locators when we run the automated testcode. | |||
test.skip('OrderSync for Pending ',async({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/order/syncOrders?user_id=670766e4272db54e96e423e0&phone=919480111222&lastupdatetime=0&merchantCode=919480707707&role=ROLE_TYPE_USER') | |||
const res=await response.json(); | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.navigateToOrderDetails(); | |||
const result= await orderdetail.searchOrder('ORDER_STATUS_CANCELLED','Shubya'); | |||
const username = result.OrderId; | |||
const userid =result.OrderId; | |||
const useremail = result.OrderId; | |||
const userphone = result.OrderId; | |||
const userorderitems = result.Order_items; | |||
const userorderstatus = result.OrderStatusis; | |||
let ordercost = result.Order_cost; | |||
let orderqty = result.Order_qty; | |||
expect.soft(userid).toContain(res.data[1].id); //id | |||
expect.soft(username).toContain(res.data[1].ordered_by_name); //name | |||
expect.soft(useremail).toContain(res.data[1].ordered_by_email); //email | |||
expect.soft(userphone).toContain(res.data[1].ordered_by_phone); //phone | |||
expect.soft(userorderitems).toContain((res.data[1].ordered_items[1]).toString()); //order items | |||
expect.soft(ordercost).toContain((res.data[1].order_cost).toString()); //order cost | |||
expect.soft(orderqty).toContain((res.data[1].ordered_items_qty[1]).toString()); // order qty | |||
expect.soft(userorderstatus).toContain(res.data[1].order_status); // order status is complete | |||
await page.close(); | |||
}) | |||
test('GetUserDetails',async({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/user/userreg?phone=919480111222&merchantCode=919480707707') | |||
const res=await response.json(); | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.navigateTouser(); | |||
const result = await orderdetail.searchUserDetails('Shubya'); | |||
const userDetails = result.userDetails; | |||
const merchantid = result.merchantid; | |||
const userstatus = result.isActive; | |||
expect.soft(userDetails).toContain(res.data.name); | |||
expect.soft(userDetails).toContain(res.data.email); | |||
expect.soft(userDetails).toContain(res.data.phone); | |||
expect.soft(merchantid).toContain(res.data.merchantCode); | |||
expect.soft(userDetails).toContain(res.data.area[0]); | |||
expect.soft(userDetails).toContain(res.data.multiple_address_list[0].addressLine1); | |||
expect.soft((userstatus).toString()).toContain((res.data.is_user_active).toString()); | |||
await page.close(); | |||
}) | |||
let useraddressid; // USER ADDRESS ID | |||
test('Get Delete Post Patch Address of User',async({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/user/addresslist?user_id=670766e4272db54e96e423e0') | |||
const res=await response.json(); | |||
await console.log('GET ADDRESS OF USER'); | |||
await console.log(res); | |||
const userdetail = new OrderDetails(page); | |||
await userdetail.navigateTouser(); | |||
const result = await userdetail.updateUserAddress('Shubya'); | |||
await page.reload(); | |||
const user_Address_updated = result.user_Address_updated; | |||
const user_area_updated =result.user_area_updated; | |||
expect.soft(user_Address_updated).toContain((res.data[0].addressLine1).toString()); | |||
expect.soft(user_Address_updated).toContain((res.data[0].addressLine2).toString()); | |||
expect.soft(user_Address_updated).toContain((res.data[0].postalCode).toString()); | |||
expect.soft(user_area_updated).toContain(res.data[0].area); | |||
const responseofdelete = await request.delete('https://dev.orderbookings.com/api/user/deleteaddress', { | |||
data: { | |||
"user_id": "670766e4272db54e96e423e0", | |||
"address_id": "67076a2d272db54e96e423e8" | |||
} | |||
}) | |||
await console.log('DELETE ADDRESS OF USER'); | |||
await console.log(responseofdelete.json); | |||
const response1 = await request.post('https://dev.orderbookings.com/api/user/addnewaddress', { | |||
data: { | |||
"addressLine1": "Adding address through the code1", | |||
"addressLine2": "api is my home", | |||
"city": "", | |||
"stateOrProvince": "", | |||
"postalCode": "123456", | |||
"phone": "917777777777", | |||
"deliveryInstructions": null, | |||
"isDefault": true, | |||
"user_id": "670766e4272db54e96e423e0", | |||
"title": "Api test address1", | |||
"area": "Mumbai" | |||
} | |||
}) | |||
const res1 = await response1.json(); | |||
useraddressid = res1.data.id; | |||
await console.log(useraddressid); | |||
await console.log('ADDED NEW ADDRESS OF USER'); | |||
await console.log(res1); | |||
await page.reload(); | |||
const result1 = await userdetail.updateUserAddress('Shubya'); | |||
const user_Address_updated1 = result1.user_Address_updated; | |||
const user_area_updated1 =result1.user_area_updated; | |||
expect.soft(user_Address_updated1).toContain(res1.data.addressLine1); | |||
expect.soft(user_Address_updated1).toContain((res1.data.addressLine2).toString()); | |||
expect.soft(user_Address_updated1).toContain((res1.data.postalCode).toString()); | |||
expect.soft(user_area_updated1).toContain(res1.data.area); | |||
const response2 = await request.patch('https://dev.orderbookings.com/api/user/updateaddress', { | |||
data: { | |||
"addressLine1": "Update address through api request from code", | |||
"addressLine2": "api", | |||
"city": "Bijapur", | |||
"stateOrProvince": "Goa", | |||
"postalCode": "555555", | |||
"phone": "919999999999", | |||
"deliveryInstructions": null, | |||
"isDefault": true, | |||
"title": "test thought patch method address", | |||
"area": "Mumbai", | |||
"address_id": useraddressid | |||
} | |||
}) | |||
const res2 = await response2.json(); | |||
await console.log('UPDATED ADDRESS OF USER'); | |||
await console.log(res2); | |||
const result2 = await userdetail.updateUserAddress('Shubya'); | |||
const user_Address_updated2 = result2.user_Address_updated; | |||
const user_area_updated2 =result2.user_area_updated; | |||
//await page.reload(); | |||
expect.soft(user_Address_updated2).toContain((res2.data.addressLine1).toString()); | |||
expect.soft(user_Address_updated2).toContain((res2.data.addressLine2).toString()); | |||
expect.soft(user_Address_updated2).toContain((res2.data.postalCode).toString()); | |||
expect.soft(user_area_updated2).toContain(res1.data.area); | |||
await page.close(); | |||
}) | |||
//get order by order id and compare with web ui in the order list. | |||
test('GET ORDER BY ORDER_ID',async ({request,page})=>{ | |||
let Orderstatus; | |||
let OrderedBy; | |||
const response1 = await request.get('https://dev.orderbookings.com/api/order/getorder/67076a2f272db54e96e423e9', { | |||
data: { | |||
"order_id": "6710b588b03c253fa86cf9cb", | |||
"note": "note added again" | |||
} | |||
}) | |||
const res = await response1.json(); | |||
OrderedBy = res.data.ordered_by_name; | |||
Orderstatus = res.data.order_status; | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.navigateToOrderDetails(); | |||
const result= await orderdetail.searchOrder(Orderstatus,OrderedBy); | |||
const username = result.OrderId; | |||
const userid =result.OrderId; | |||
const useremail = result.OrderId; | |||
const userphone = result.OrderId; | |||
const userorderitems = result.Order_items; | |||
const userorderstatus = result.OrderStatusis; | |||
let ordercost = result.Order_cost; | |||
let orderqty = result.Order_qty; | |||
expect.soft(userid).toContain(res.data.id); //id | |||
expect.soft(username).toContain(res.data.ordered_by_name); //name | |||
expect.soft(useremail).toContain(res.data.ordered_by_email); //email | |||
expect.soft(userphone).toContain(res.data.ordered_by_phone); //phone | |||
expect.soft(userorderitems).toContain((res.data.ordered_items[0]).toString()); //order items | |||
expect.soft(ordercost).toContain((res.data.order_cost).toString()); //order cost | |||
expect.soft(orderqty).toContain((res.data.ordered_items_qty[0]).toString()); // order qty | |||
expect.soft(userorderstatus).toContain(res.data.order_status); // order status is complete | |||
await page.close(); | |||
}) | |||
//app configuration details are compared with api response. | |||
test('GET APP Config Details',async ({request,page})=>{ | |||
const response = await request.get('https://dev.orderbookings.com/api/config/919480707707?merchantCode=919480707707') | |||
const res = await response.json(); | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.NavigatetoAppconfig(); | |||
await page.reload(); | |||
const appconfig = new Appconfig(page); | |||
const app = await appconfig.GetAppConfigDetailsforApiRequest(); ////Currency,soundloop,canceltime,mincartvalue,deliletycharge,Actioncall,selecttype,Area | |||
let currency = app.selectedCurrency; | |||
let soundloop = app.soundloop; | |||
let canceltime = app.canceltime; | |||
let mincartvalue = app.mincartvalue; | |||
let delivarycharge = app.delivarycharge; | |||
let actioncall = app.Actioncall; | |||
let selecttype = app.selectedtype; | |||
let area = app.Area; | |||
let MerachantCode = app.Merchantcode; | |||
let profileDetails = app.ProfileDetails; | |||
expect.soft(currency).toContain(res.data.currency_code); //currency | |||
expect.soft(soundloop).toContain((res.data.notification_sound_loop).toString()); //soundloop | |||
expect.soft(canceltime).toContain((res.data.cancellation_till).toString()); //canceltime | |||
expect.soft(mincartvalue).toContain((res.data.minimum_cart_price).toString()); //mincartvalue | |||
expect.soft(delivarycharge).toContain((res.data.delivery_charge).toString()); //delivarycharge | |||
expect.soft(actioncall).toContain(res.data.call_to_action); //actioncall | |||
expect.soft(selecttype).toContain(res.data.area_type); | |||
expect.soft(MerachantCode).toContain(res.data.merchantCode); //merchant code | |||
expect.soft(profileDetails).toContain(res.data.merchant_details.name); //Company Name | |||
expect.soft(profileDetails).toContain(res.data.merchant_details.email); //Merchant Email | |||
await page.close(); | |||
//expect.soft(area).toContain(res.data.area); //area | |||
}) | |||
//unable to automate bcoz of the formdata cant be sent properly and unable to handle table data to comparre with response. | |||
//place order -- complete order | |||
//place order --- cancel order | |||
//Place order using api request | |||
let Orderstatus; | |||
let OrderedBy; | |||
let OrderId; | |||
test('Place Order', async ({ request, page }) => { | |||
const formData = new FormData(); | |||
const jsondata = { | |||
"order_id": "", | |||
"amount_received": 0, | |||
"order_status": "ORDER_STATUS_PENDING", | |||
"ordered_by_phone": "919480111222", | |||
"ordered_by_user_id": "670766e4272db54e96e423e0", | |||
"order_cost": 748, | |||
"order_tax": 748, | |||
"order_gross_amount": 1496, | |||
"ordered_items": [ | |||
"Jeans Pant", | |||
"T-Shirt" | |||
], | |||
"ordered_items_sku": [ | |||
"jeans_pant", | |||
"t-shirt_" | |||
], | |||
"ordered_items_qty": [ | |||
1, | |||
2 | |||
], | |||
"ordered_items_tax": [ | |||
4, | |||
9 | |||
], | |||
"ordered_items_price": [ | |||
0, | |||
0 | |||
], | |||
"merchantCode": "919480707707", | |||
"order_validation_pin": 254034, | |||
"note": "", | |||
"ordered_items_notes": [], | |||
"images_arraylist": [], | |||
"image_latitude": 0, | |||
"image_longitude": 0, | |||
"use_amount_from_wallet": false, | |||
"service_request_date": 1729137865273, | |||
"order_rating": 0, | |||
"order_is_approved": true, | |||
"ordered_items_audio": [], | |||
"logs": [], | |||
"ordered_by_name": "Shubya", | |||
"ordered_by_email": "Shubya111@gmail.com", | |||
"ordered_by_area": [ | |||
"Mumbai" | |||
], | |||
"order_time": "40860000", | |||
"order_last_updated_on": "", | |||
"order_complete_time": "", | |||
"order_cancel_time": "", | |||
"order_assigned_to": "", | |||
"ordered_delivered_by": "", | |||
"order_payment_received": false, | |||
"order_has_audio_file": false, | |||
"order_has_admin_audio_file": false, | |||
"order_has_image_file": false, | |||
"ordered_by_address": "67079c7b272db54e96e423f4", | |||
"invoiceid": "", | |||
"amount_from_wallet": 0, | |||
"coupon": "", | |||
"cart": [ | |||
{ | |||
"id": "670767d0272db54e96e423e4", | |||
"available": true, | |||
"sku": "jeans_pant", | |||
"name": "Jeans Pant", | |||
"description": "M.S.Dhoni Special Edition Jeans Pant.", | |||
"quantity": 1, | |||
"price": 300, | |||
"image": "", | |||
"tax_in_percent": 4, | |||
"total": 312, | |||
"actual": 312, | |||
"order_limit": 100, | |||
"short_description": "M.S.Dhoni Special Edition Jeans Pant.", | |||
"is_live": true | |||
}, | |||
{ | |||
"id": "67076794272db54e96e423e3", | |||
"available": true, | |||
"sku": "t-shirt_", | |||
"name": "T-Shirt", | |||
"description": "M.S.Dhoni Special Edition T-Shirts.", | |||
"quantity": 2, | |||
"price": 200, | |||
"image": "", | |||
"tax_in_percent": 9, | |||
"total": 436, | |||
"actual": 218, | |||
"order_limit": 100, | |||
"short_description": "M.S.Dhoni Special Edition T-Shirts.", | |||
"is_live": true | |||
} | |||
], | |||
"cart_total_amount": 748, | |||
"coupon_applied": false, | |||
"products": [], | |||
"total_saving": 0 | |||
}; | |||
// Append JSON data as string to formData | |||
formData.append('order_req', JSON.stringify(jsondata)); | |||
// Send POST request with headers and formData | |||
const response = await request.post('https://dev.orderbookings.com/api/order/placeorder', { | |||
headers: { | |||
'Content-Type': 'multipart/form-data; boundary=<calculated when request is sent>' | |||
}, | |||
body: formData | |||
}); | |||
const res = await response.json(); | |||
console.log(res); | |||
}); | |||
// OrderedBy = res.data.ordered_by_name; //you will get user from this. | |||
// Orderstatus = res.data.order_status; //order status i will get from response | |||
// OrderId = res.data.order_id; // you will get order id | |||
// const orderdetail = new OrderDetails(page); | |||
// await orderdetail.navigateToOrderDetails(); //navigate to order list | |||
// await orderdetail.toFindOrders(Orderstatus,OrderedBy); //calling method to find order by status and user | |||
// const tableValues = await orderdetail.getTablevalues(OrderId); // calling method to get table values | |||
// const flattenedValues = tableValues.flat(); | |||
// expect(flattenedValues.some(value => value.includes(OrderId))).toBe(true); | |||
// await page.close(); | |||
//table values compare with the order id and trying to fetch the the data of that order from order list. | |||
test('get values of table',async({page})=>{ | |||
const userdetail = new OrderDetails(page); | |||
await userdetail.navigateToOrderDetails(); | |||
await userdetail.toFindOrders(); | |||
const tableValues = await userdetail.getTablevalues('670f55a814f563f755f3e2a9'); | |||
const flattenedValues = tableValues.flat(); | |||
expect(flattenedValues.some(value => value.includes('670f55a814f563f755f3e2a9'))).toBe(true); | |||
console.log(flattenedValues); | |||
}) | |||
//cancel order is api request to check whether the order is cancelled or not through the api request and compare with the web ui. | |||
test('cancel Order',async({request,page})=>{ | |||
let Orderstatus; | |||
let OrderedBy; | |||
let Orderphone; | |||
const response1 = await request.post('https://dev.orderbookings.com//api/order/cancelorder', { | |||
data: { | |||
"order_id":"6710bac8b03c253fa86cf9cd" | |||
} | |||
}) | |||
const res = response1.json(); | |||
await console.log(res); | |||
OrderedBy = res.data.ordered_by_name; | |||
Orderstatus = res.data.order_status; | |||
Orderphone = res.data.ordered_by_phone; | |||
const orderdetail = new OrderDetails(page); | |||
await orderdetail.navigateToOrderDetails(); | |||
await orderdetail.toFindOrders(Orderstatus,OrderedBy); //calling method to find order by status and user | |||
const tableValues = await orderdetail.getTablevalues(Orderphone); // calling method to get table values | |||
const flattenedValues = tableValues.flat(); | |||
expect(flattenedValues.some(value => value.includes(Orderphone))).toBe(true); | |||
await page.close(); | |||
} ) | |||
//category and products are unable to fetch from the api request and unable to compare with the web ui. | |||
//from tree unable to click mens and women category and unable to fetch the products from the api request and unable to compare with the web ui | |||
// | |||
test('Category and Products', async ({ request,page }) => { | |||
const catdetails = new OrderDetails(page); | |||
await catdetails.NavigatetoCatlog(); | |||
// await page.reload(); | |||
let Category1 = await catdetails.NavigatetoMens(); | |||
let Name1 = await Category1.catnames; | |||
let catlogViewType1 = await Category1.selecteddcattype; | |||
let Productviewtype1 = await Category1.selecctedprodtype; | |||
let Catislive1 = await Category1.isActive; | |||
let merchantid = await Category1.merchatcode; | |||
// const Catproducts1 = await Category1.Productsincluded; | |||
//await console.log(Catproducts1); | |||
//api request | |||
const response = await request.get('https://dev.orderbookings.com/api/bud/919480707707'); | |||
const res = await response.json(); | |||
// await console.log(res); | |||
let cat1 =res.data.buds[1].name; | |||
let catlog1ViewType1 =res.data.buds[1].childview; | |||
let cat1Productviewtype =res.data.buds[1].product_childview; | |||
let cat1islive = res.data.buds[1].is_live; | |||
let merchantcode =res.data.buds[1].merchantCode; | |||
var cat2 = res.data.buds[2].name; //womens | |||
var cat3 = res.data.buds[3].name; //kids | |||
expect.soft(Name1).toEqual(cat1); | |||
expect.soft(merchantid).toEqual(merchantcode) | |||
expect.soft(catlogViewType1).toEqual(catlog1ViewType1); | |||
expect.soft(Productviewtype1).toEqual(cat1Productviewtype); | |||
expect.soft(Catislive1).toEqual(cat1islive); | |||
//expect.soft(Catproducts1).toContain(); | |||
let Category2 = await catdetails.NavigatetoWomens(); | |||
const Name2 = await Category2.catnames; | |||
const catlogViewType2 = await Category2.selecteddcattype; | |||
const Productviewtype2 = await Category2.selecctedprodtype; | |||
const Catislive2 = Category2.isActive; | |||
console.log('For Womens' +Catislive2); | |||
// const Catproducts2 = await Category2.Productsincluded; | |||
let cat2logViewType =res.data.buds[2].childview; | |||
let cat2Productviewtype =res.data.buds[2].product_childview; | |||
let cat2islive = res.data.buds[2].is_live; | |||
let merchantcode2 =res.data.buds[2].merchantCode; | |||
expect.soft(Name2).toEqual(cat2); | |||
expect.soft(merchantid).toEqual(merchantcode2) | |||
expect.soft(catlogViewType2).toEqual(cat2logViewType); | |||
expect.soft(Productviewtype2).toEqual(cat2Productviewtype); | |||
expect.soft(Catislive2).toEqual(cat2islive); | |||
// expect.soft(Catproducts2).toEqual(res.data.buds[2].products); | |||
//this cat3 is kids | |||
let Category3 = await catdetails.NavigatetoKids(); | |||
const Name3 = await Category3.catnames; | |||
const catlogViewType3 = await Category3.selecteddcattype; | |||
const Productviewtype3 = await Category3.selecctedprodtype; | |||
const Catislive3 = Category3.isActive; | |||
console.log('for kids:' +Catislive3); | |||
//const Catproducts3 = await Category3.Productsincluded; | |||
//api request response are in object so we need save in the letibale to compare. | |||
let cat3ogViewType =res.data.buds[3].childview; | |||
let cat3Productviewtype =res.data.buds[3].product_childview; | |||
let cat3islive = res.data.buds[3].is_live; | |||
let merchantcode3 =res.data.buds[3].merchantCode; | |||
expect.soft(Name3).toEqual(cat3); | |||
expect.soft(merchantid).toEqual(merchantcode3); | |||
expect.soft(catlogViewType3).toEqual(cat3ogViewType); | |||
expect.soft(Productviewtype3).toEqual(cat3Productviewtype); | |||
expect.soft(Catislive3).toEqual(cat3islive); | |||
//expect.soft(Catproducts3).toContain(res.data.buds[3].products); | |||
}) |