Skip to content

Commit e85b55c

Browse files
converted lead delete script
1 parent 264886a commit e85b55c

File tree

4 files changed

+57
-21
lines changed

4 files changed

+57
-21
lines changed

packages/Webkul/Admin/tests/e2e-pw/.state/Admin-auth.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
"cookies": [
33
{
44
"name": "XSRF-TOKEN",
5-
"value": "eyJpdiI6IkxhRmhGclVMNHpHWjRMWW53R2lxT3c9PSIsInZhbHVlIjoieW5sZGFRRU9pZTFxNExUNjQ1YVQ3dUdDLzRNS0Zpc1dHQjRPNmREakNmMXl6VkE4dldSM2s5WFljeDlEcGcwbWNTTXpFVDBuT0lYT3BPOW94eEJhcUVHTVdqTDByUUpoQVBwZXVxT0V4N0ZrTFdJYkk1R1FQME9RVEQ4bXpJU0IiLCJtYWMiOiJiZjEwYmM0NzFmNDc1ODIwZDIwM2I4NDkwMjE3YWM0NTAyNjY4ZjRkODRhMTllOThjZTk1MDhjNjkwODJjZTJmIiwidGFnIjoiIn0%3D",
5+
"value": "eyJpdiI6Im5uUXVWT1d3clNieE51MTZsNWNWZkE9PSIsInZhbHVlIjoiRjdyVW5jSkowV0ZCWm01YlcrNktYbWx0VmV6VDk0b1VuTnRpdmovb2VCMmYwNURVMS9rL0lTaW9JMHM1WmRWc0w3OXlabTJZNC9UOFAycGQzdnltcTZtZnNsRDNlOWNPa2N5RW5iRjA3QzVPQ21ZWDRtZU5YTGI4OUViaTZXNTEiLCJtYWMiOiIyMDk4MzQ5ZmM1M2VmODE3MzQ0NTJmMTgzZjhmMzAyZGViMzVmYTFhZDRiODNhODM5ZTE2MTIwZmMyMWVmYjlmIiwidGFnIjoiIn0%3D",
66
"domain": "192.168.15.131",
77
"path": "/",
8-
"expires": 1762845906.543286,
8+
"expires": 1762853764.308223,
99
"httpOnly": false,
1010
"secure": false,
1111
"sameSite": "Lax"
1212
},
1313
{
1414
"name": "krayin_crm_session",
15-
"value": "eyJpdiI6IlBFOG8rNytVdDZ4REtmRXJPdGMrZFE9PSIsInZhbHVlIjoibUZtS0IrV3Y1RkhnSGt2SjNUOExCQXhXZWdBT213UnJhQVFPNWhueit5VWdkWnZlT1h4TVpnSTFVenFwdjdXU2FHVnVJWmcyOW96b1FzVXhZNURBeGVtRzhoK255bWVWS1hVdlJDbHRPUjJpUy84ZjE1eTVERDlmUUFKd0E2dWkiLCJtYWMiOiI1MWEyNmZlN2Y2ZDQwYTNlNjUyYjEyN2RmMzk1YTU2MDFlY2ZiYmM5Yjc3ZDZjMmI2YWU3ODk3NWM0NjM0YjVlIiwidGFnIjoiIn0%3D",
15+
"value": "eyJpdiI6IlZBRFBvVTE2S0FOZkpUdGpsUVVTN1E9PSIsInZhbHVlIjoiUGRMTEx2V0w0aWQzVXNPTnpubXY1dVphQkRFaGVJekdNQkxyNGllUTNpcHkvOWJSd21JeXdSMFIzTU44M0QwMjFCdmNlZEhhcXlVaW8xWXhlQmpXenRYKzhJZllIT2tDY1UwK0xqU0Z4YStCdDVOTVNrZlhGdWlBcWR0RmVGY3kiLCJtYWMiOiIyZmYzYTZiMWU2YzZmYTdkOGM5Mjc2NTIwMjdiNTI2YjMzMTA5OTc5OWFhMTBiNTg5NzhhOTkwMjE2ODE1NGY4IiwidGFnIjoiIn0%3D",
1616
"domain": "192.168.15.131",
1717
"path": "/",
18-
"expires": 1762845906.54337,
18+
"expires": 1762853764.308348,
1919
"httpOnly": true,
2020
"secure": false,
2121
"sameSite": "Lax"
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
import { Locator, Page } from "playwright/test";
2+
import { title } from "process";
23

34
export default class CoreLocators {
45
readonly page: Page
5-
readonly searchInput:Locator
6+
67
constructor(page:Page) {
78

8-
this.page= page,
9-
this.searchInput = page.locator('input[name="search"]');
9+
this.page = page;
10+
}
11+
12+
async getSerachLocator(placeholder:string)
13+
{
14+
return this.page.getByRole('textbox', { name: `${placeholder}`, exact: true })
1015
}
16+
1117

1218
}

packages/Webkul/Admin/tests/e2e-pw/pages/leads/LeadPage.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Page, Locator, expect } from "@playwright/test";
2+
import CoreLocators from "../../locator/CoreLocators";
23

3-
export class LeadPage {
4+
export class LeadPage extends CoreLocators {
45
readonly page: Page;
56

67
// ---- Lead Creation Locators ----
@@ -22,9 +23,11 @@ export class LeadPage {
2223

2324
// ---- Lead List Locators ----
2425
readonly leadSuccessToast: Locator;
25-
readonly deleteButton: Locator;
26+
readonly listViewButton: Locator;
2627
readonly agreeButton: Locator;
2728
readonly editLeadButton:Locator;
29+
readonly deleteLeadButton:Locator;
30+
readonly listSearchInput:Locator;
2831

2932
// ---- Lead Tabs Locators ----
3033
readonly mailButton: Locator;
@@ -58,13 +61,13 @@ export class LeadPage {
5861
readonly saveActivityButton: Locator;
5962
readonly createLeadButton: Locator;
6063
readonly searchInput: Locator;
61-
6264
// ------ Validation Message
6365
readonly expectedCloseDateMustBeDateAfter:Locator
6466

6567

6668

6769
constructor(page: Page) {
70+
super(page);
6871
this.page = page;
6972

7073
// Lead create button
@@ -80,6 +83,7 @@ export class LeadPage {
8083
this.userDropdown = page.locator('select[name="user_id"]');
8184
this.leadValueInput = page.locator('input[name="lead_value"]');
8285
this.searchInput = page.getByRole('textbox', { name: 'Search by Title' });
86+
this.listSearchInput=page.getByRole('textbox',{name:'Search'})
8387

8488
// Add person
8589
this.addPersonButton = page.locator('div', { hasText: /^Click to Add$/ }).nth(1);
@@ -97,8 +101,9 @@ export class LeadPage {
97101

98102
this.leadSuccessToast = page.getByText('Success', { exact: true });
99103
this.editLeadButton = page.getByRole('link', { name: '' }).first();
100-
this.deleteButton = page.getByRole('link', { name: '' });
104+
this.listViewButton = page.getByRole('link', { name: '' });
101105
this.agreeButton = page.getByRole('button', { name: 'Agree', exact: true });
106+
this.deleteLeadButton= page.locator('.cursor-pointer.rounded-md.p-1\\.5.text-2xl.transition-all.hover\\:bg-gray-200.dark\\:hover\\:bg-gray-800.max-sm\\:place-self-center.icon-delete').first();
102107

103108

104109
// Tabs
@@ -136,14 +141,16 @@ export class LeadPage {
136141

137142
this.expectedCloseDateMustBeDateAfter=page.getByText('The expected close date must be a date after');
138143
}
139-
140144
async navigateToLeadList() {
141145
await this.page.goto("admin/leads");
142146
}
143147
async getLeadByTitle(title:string)
144148
{
145149
return this.page.getByRole('link', { name: ` ${title}` });
146150
}
151+
async getSearchInput(placeholder:string){
152+
return this.page.getByRole('textbox',{name:`${placeholder}`})
153+
}
147154
async getPersonInput(personName:string)
148155
{
149156
return this.page.locator('div').filter({ hasText: `/^${personName}$/` }).nth(1)

packages/Webkul/Admin/tests/e2e-pw/tests/lead.spec.ts

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ test.describe("lead management", async () => {
1212
email: generateEmail(),
1313
phone: generatePhoneNumber(),
1414
};
15+
const updatedLeadData = {
16+
title: generateName(),
17+
description: generateDescription(),
18+
email: generateEmail(),
19+
phone: generatePhoneNumber(),
20+
};
21+
1522
const date=new Date();
1623

1724

@@ -60,13 +67,7 @@ test.describe("lead management", async () => {
6067

6168

6269
// Now update the lead with new data
63-
const updatedLeadData = {
64-
title: generateName(),
65-
description: generateDescription(),
66-
email: generateEmail(),
67-
phone: generatePhoneNumber(),
68-
};
69-
70+
7071
// Fill updated lead data
7172
await leadPage.navigateToLeadList();
7273
await leadPage.searchInput.fill(leadData.title);
@@ -90,12 +91,34 @@ test.describe("lead management", async () => {
9091
await leadPage.saveLeadButton.click();
9192
await leadPage.searchInput.fill(updatedLeadData.title);
9293
await leadPage.page.keyboard.press('Enter');
93-
await expect((await leadPage.getLeadByTitle(updatedLeadData.title))).toBeVisible();
94-
94+
await expect(((await leadPage.getLeadByTitle(updatedLeadData.title)).first())).toBeVisible();
9595

9696
await expect(leadPage.leadSuccessToast).toBeVisible();
9797

9898
});
99+
test("user should able to delete the lead",async({adminPage})=>{
100+
const leadPage= new LeadPage(adminPage);
101+
102+
103+
await leadPage.navigateToLeadList();
104+
105+
await leadPage.listViewButton.click();
106+
107+
(await leadPage.getSerachLocator('Search')).fill(updatedLeadData.title);
108+
await leadPage.page.keyboard.press('Enter');
109+
await leadPage.deleteLeadButton.click();
110+
await leadPage.agreeButton.click();
111+
112+
(await leadPage.getSerachLocator('Search')).fill(updatedLeadData.title);
113+
await leadPage.page.keyboard.press('Enter');
114+
await expect(leadPage.deleteLeadButton).not.toBeVisible();
115+
116+
117+
118+
119+
120+
121+
})
99122

100123

101124
})

0 commit comments

Comments
 (0)