diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
index b8195f4c..1b929f0b 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
@@ -105,7 +105,7 @@ test('Create Branch Managenment', async () => {
await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
await page.fill("(//input[@aria-label='Moo'])[2]", '1');
- //ส ส่วนบัญชีธนาคาร
+ //ส่วนบัญชีธนาคาร
await page.click("(//input[@id='select-bankbook'])[3]");
await page.click('id=select-bankbook_1');
await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002-1_CreateHeadquarterFailEn.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002-1_CreateHeadquarterFailEn.spec.ts
index 840256d2..0e2f6f74 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002-1_CreateHeadquarterFailEn.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002-1_CreateHeadquarterFailEn.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
index a4488f8f..1cbde9d5 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
@@ -17,7 +17,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
index afdab906..251106d2 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
@@ -13,7 +13,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004-1_CreateSub-branchFailEn.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004-1_CreateSub-branchFailEn.spec.ts
index 79996499..d58339e7 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004-1_CreateSub-branchFailEn.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004-1_CreateSub-branchFailEn.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
index 8546d794..28b6f0ff 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
@@ -13,7 +13,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts
index 89b8f383..48c77d58 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts
@@ -13,7 +13,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006-1_CreateServicePointFail.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006-1_CreateServicePointFail.spec.ts
index 85cb5f38..1accbefe 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006-1_CreateServicePointFail.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006-1_CreateServicePointFail.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts
index 24166694..c68e30b7 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts
index 15f2499e..454ee036 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts
@@ -17,7 +17,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts
index e28548f7..23c9428d 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts
index 1bcdbe42..65f844b9 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts
index 57db9034..826ef8ea 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts
index 75879a78..8ea4bb31 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts
index 750aeca8..1aecec32 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts
index e26cb5f5..d20de24c 100644
--- a/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts
+++ b/tests/01-Manage/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts
@@ -18,7 +18,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
index fb0b4819..12c86cc3 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002-1_CreatePersonnelFailEn.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002-1_CreatePersonnelFailEn.spec.ts
index a3cf071f..c844dd70 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002-1_CreatePersonnelFailEn.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002-1_CreatePersonnelFailEn.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts
index 46073b81..e4cc8530 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts
index ca19a36f..2617c343 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts
index 7f3c01db..85b792c3 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts
@@ -17,7 +17,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts
index 71335ac7..70920f71 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel.spec.ts
index 7b10ae0f..58e61d5a 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
await page.close();
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts
index 8249ae59..b3ff1baa 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts
index 46f8c3b6..6d4a7669 100644
--- a/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts
+++ b/tests/01-Manage/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/Createemployeeinlegal.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/Createemployeeinlegal.spec.ts
index bea51866..9f41750e 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/Createemployeeinlegal.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/Createemployeeinlegal.spec.ts
@@ -1,9 +1,10 @@
import { test, expect, Page } from '@playwright/test';
import { strictEqual } from 'assert';
-import fs from 'fs';
+import fs, { writeFileSync } from 'fs';
import path from 'path';
let page: Page;
+let isLoginSuccessful = false;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
@@ -15,63 +16,76 @@ test.afterAll(async () => {
}
});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('http://192.168.1.62:20101/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+ await page.waitForTimeout(2000);
+
+ isLoginSuccessful = true;
+ console.log('Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ }
+}
+
test('Login', async () => {
- // Login
- await page.goto('http://chamomind.ddns.net:20001/');
- await expect(page).toHaveTitle(/^Sign in to /);
- await page.fill("input[name='username']", 'admin');
- await page.fill("input[name='password']", '1234');
- await page.click('id=kc-login');
- await page.waitForTimeout(2000);
- // await page.click('id=acceptBtn');
+ await login(page);
});
test('สร้างลูกจ้างในสาขา', async () => {
- const names = [
- {
- firstName: 'อริญา',
- lastName: 'จิตรเกียรติ',
- firstNameEn: 'Arinya',
- lastNameEn: 'Jitkiat',
- },
- {
- firstName: 'เกียรติศักดิ์',
- lastName: 'อำนวย',
- firstNameEn: 'Kiatsakd',
- lastNameEn: 'Amnuy',
- },
- {
- firstName: 'ภัทรพล',
- lastName: 'รุ่งโรจน์',
- firstNameEn: 'Phatthapon',
- lastNameEn: 'Rungroj',
- },
- {
- firstName: 'ศิริพร',
- lastName: 'พงษ์รัตน์',
- firstNameEn: 'Siriporn',
- lastNameEn: 'Phongrat',
- },
- {
- firstName: 'กรกมล',
- lastName: 'กิตติสมบัติ',
- firstNameEn: 'Karakamon',
- lastNameEn: 'Kittisombat',
- },
- ];
-
- // เข้าสู่เมนูลูกค้า
- await page.click('id=menu.manage');
- await page.waitForSelector('id=sub-menu-customer');
- await page.click('id=sub-menu-customer');
-
- await page.click(
- "//td[contains(.,'บริษัท เทคโนโลยีอินโนเวต จำกัดInnovative Technology Co., Ltd.')]",
- );
- await page.click("//table[@class='q-table']/tbody[1]/tr[3]/td[6]/button[1]");
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
try {
+ const names = [
+ {
+ firstName: 'เกียรติศักดิ์',
+ lastName: 'อำนวย',
+ firstNameEn: 'Kiatsakd',
+ lastNameEn: 'Amnuy',
+ },
+ {
+ firstName: 'ภัทรพล',
+ lastName: 'รุ่งโรจน์',
+ firstNameEn: 'Phatthapon',
+ lastNameEn: 'Rungroj',
+ },
+ {
+ firstName: 'ศิริพร',
+ lastName: 'พงษ์รัตน์',
+ firstNameEn: 'Siriporn',
+ lastNameEn: 'Phongrat',
+ },
+ {
+ firstName: 'กรกมล',
+ lastName: 'กิตติสมบัติ',
+ firstNameEn: 'Karakamon',
+ lastNameEn: 'Kittisombat',
+ },
+ ];
+
+ await page.click(
+ "//td[contains(.,'บริษัท เอกซ์เซล อินโนเวชั่น จำกัดSiam Energy Solutions Co., Ltd.')]",
+ );
+ await page.click('id=btn-show-employee-บริษัท เอกซ์เซล อินโนเวชั่น จำกัด');
for (const user of names) {
- await page.click("(//th[@class='text-right']//button)[2]");
+ await page.waitForSelector(
+ 'id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee',
+ );
+ await page.click('id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee');
await page.click('id=form-employee-select-prefix-name');
await page.click('id=form-employee-select-prefix-name_0');
await page.fill('id=form-employee-input-first-name', user.firstName);
@@ -82,8 +96,8 @@ test('สร้างลูกจ้างในสาขา', async () => {
// วันเกิด
await page.click('id=form-employee-input-birth-date');
await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2000']");
- await page.click("//div[@id='2000-11-02']/div[1]");
+ await page.click("//div[text()='1999']");
+ await page.click("//div[@id='1999-12-02']/div[1]");
// สัญชาติ
await page.click('id=form-employee-select-nationality');
@@ -98,27 +112,31 @@ test('สร้างลูกจ้างในสาขา', async () => {
});
test('สร้างลูกจ้างในสาขา 2', async () => {
- const namestwo = [
- {
- firstName: 'สุทิน',
- lastName: 'ภาณุวงศ์',
- firstNameEn: 'Suthin',
- lastNameEn: 'Phanuwong',
- },
- ];
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
- // เข้าสู่เมนูลูกค้า
- await page.click('id=menu.manage');
- await page.waitForSelector('id=sub-menu-customer');
- await page.click('id=sub-menu-customer');
-
- await page.click(
- "//td[contains(.,'บริษัท เทคโนโลยีอินโนเวต จำกัดInnovative Technology Co., Ltd.')]",
- );
- await page.click("//table[@class='q-table']/tbody[1]/tr[5]/td[6]/button[1]");
try {
+ const namestwo = [
+ {
+ firstName: 'สุทิน',
+ lastName: 'ภาณุวงศ์',
+ firstNameEn: 'Suthin',
+ lastNameEn: 'Phanuwong',
+ },
+ ];
+
+ await page.click(
+ "//td[contains(.,'บริษัท เอกซ์เซล อินโนเวชั่น จำกัดSiam Energy Solutions Co., Ltd.')]",
+ );
+
+ await page.click('id=btn-show-employee-บริษัท เอกซ์เซล อินโนเวชั่น จำกัด');
+
for (const user of namestwo) {
- await page.click("(//th[@class='text-right']//button)[3]");
+ await page.waitForSelector(
+ 'id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee',
+ );
+ await page.click('id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee');
await page.click('id=form-employee-select-prefix-name');
await page.click('id=form-employee-select-prefix-name_0');
await page.fill('id=form-employee-input-first-name', user.firstName);
@@ -129,8 +147,8 @@ test('สร้างลูกจ้างในสาขา 2', async () => {
// วันเกิด
await page.click('id=form-employee-input-birth-date');
await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2000']");
- await page.click("//div[@id='2000-11-02']/div[1]");
+ await page.click("//div[text()='1999']");
+ await page.click("//div[@id='1999-12-02']/div[1]");
// สัญชาติ
await page.click('id=form-employee-select-nationality');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts
index 11647161..677db918 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002-1_CreateNaturalperosonfailEn.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002-1_CreateNaturalperosonfailEn.spec.ts
index 5a59eb15..bac50342 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002-1_CreateNaturalperosonfailEn.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002-1_CreateNaturalperosonfailEn.spec.ts
@@ -18,7 +18,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts
index f8091850..74742620 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts
@@ -19,7 +19,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
index a0171c00..ffadf150 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts
index f80c9359..4a23ef8d 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts
index c2680f0a..3d37c8bc 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts
index a28f5059..fef3b4b0 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts
index a735bd69..b271b18d 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008-1_CreateLegalentitlyfailEn.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008-1_CreateLegalentitlyfailEn.spec.ts
index 748844d8..9ea7c7a5 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008-1_CreateLegalentitlyfailEn.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008-1_CreateLegalentitlyfailEn.spec.ts
@@ -18,7 +18,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts
index 910b2bc5..d05123e1 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts
@@ -19,7 +19,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
index 3bf3e2d7..2f528311 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts
index 580561c6..070cdcce 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts
index faf3eb9d..b191cc3c 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts
index baf8e6e5..0e1388e3 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
index b03b3766..0472bef8 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts
index 462b1905..c8b506b1 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_015_ManageStatusCustomerType.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_015_ManageStatusCustomerType.spec.ts
index 0edd1c84..f568a17d 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_015_ManageStatusCustomerType.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_015_ManageStatusCustomerType.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts
index 0d7580dd..daa2869e 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017-1_CreateEmployeeFailEn.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017-1_CreateEmployeeFailEn.spec.ts
index 89a247dc..12dff95b 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017-1_CreateEmployeeFailEn.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017-1_CreateEmployeeFailEn.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts
index 3a908bde..9a2fe0ca 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts
index b91051f6..5b2751a0 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_019_StatusEmployeeType.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_019_StatusEmployeeType.spec.ts
index 95938c75..dbcad75e 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_019_StatusEmployeeType.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_019_StatusEmployeeType.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts
index e4891512..0ab9ca69 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts
index 6c20f59c..9f6b3112 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts
index 4af56b3e..e3684be5 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
index 2bf6f2a2..54926235 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts
index cbc00729..6a3b387a 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_025_CreateInNaturalperson.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_025_CreateInNaturalperson.spec.ts
index 18343593..f5f1b76c 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_025_CreateInNaturalperson.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_025_CreateInNaturalperson.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_026_CreateInNaturalpersonFail.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_026_CreateInNaturalpersonFail.spec.ts
index 38338d12..4df9f87e 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_026_CreateInNaturalpersonFail.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_026_CreateInNaturalpersonFail.spec.ts
@@ -18,7 +18,7 @@ test.afterAll(async () => {
});
//สร้าง Function สำหรับ Login
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_027_CreateInLegalentitly.spec.ts b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_027_CreateInLegalentitly.spec.ts
index e1b27b09..0a9381cf 100644
--- a/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_027_CreateInLegalentitly.spec.ts
+++ b/tests/01-Manage/03-Admin-ManageCustomer/JWS_MC_027_CreateInLegalentitly.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts
index 3844bd60..2ac18848 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_002-1_CreateProductandServiceGroupFailEn.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_002-1_CreateProductandServiceGroupFailEn.spec.ts
index 99c100e8..8e0a53c0 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_002-1_CreateProductandServiceGroupFailEn.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_002-1_CreateProductandServiceGroupFailEn.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_002_CreateProductandServiceGroupFail.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_002_CreateProductandServiceGroupFail.spec.ts
index 7d209641..bed6bbb8 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_002_CreateProductandServiceGroupFail.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_002_CreateProductandServiceGroupFail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_003_CreateProductandService.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_003_CreateProductandService.spec.ts
index db417c06..626ef222 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_003_CreateProductandService.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_003_CreateProductandService.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_004-1_CreateProductandServiceFailEn.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_004-1_CreateProductandServiceFailEn.spec.ts
index d17415a4..3a9fe5bd 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_004-1_CreateProductandServiceFailEn.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_004-1_CreateProductandServiceFailEn.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_004_CreateProductandServiceFail.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_004_CreateProductandServiceFail.spec.ts
index 98eb9890..5de6e9e9 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_004_CreateProductandServiceFail.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_004_CreateProductandServiceFail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_005_CreatePackage.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_005_CreatePackage.spec.ts
index 1bb51102..10c65be4 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_005_CreatePackage.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_005_CreatePackage.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_006_CreatePackageFail.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_006_CreatePackageFail.spec.ts
index 19121e5f..8572443e 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_006_CreatePackageFail.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_006_CreatePackageFail.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_007_DetailProductandService.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_007_DetailProductandService.spec.ts
index 6bb2675d..1426c4eb 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_007_DetailProductandService.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_007_DetailProductandService.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_008_EditProductandService.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_008_EditProductandService.spec.ts
index 3a6692e8..347b60da 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_008_EditProductandService.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_008_EditProductandService.spec.ts
@@ -17,7 +17,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_009_StatusProductandServiceType.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_009_StatusProductandServiceType.spec.ts
index 06f65d33..2bd70283 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_009_StatusProductandServiceType.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_009_StatusProductandServiceType.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_010_SelectTypeFields.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_010_SelectTypeFields.spec.ts
index bde51b0c..23c509f7 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_010_SelectTypeFields.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_010_SelectTypeFields.spec.ts
@@ -16,7 +16,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_011_StatusProductandService.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_011_StatusProductandService.spec.ts
index 05d4c6e9..008cc48f 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_011_StatusProductandService.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_011_StatusProductandService.spec.ts
@@ -14,7 +14,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/04-ProductandService/JWS_PD_013_DeleteProductandService.spec.ts b/tests/01-Manage/04-ProductandService/JWS_PD_013_DeleteProductandService.spec.ts
index 84d2cde9..ac7301d3 100644
--- a/tests/01-Manage/04-ProductandService/JWS_PD_013_DeleteProductandService.spec.ts
+++ b/tests/01-Manage/04-ProductandService/JWS_PD_013_DeleteProductandService.spec.ts
@@ -15,7 +15,7 @@ test.afterAll(async () => {
}
});
-async function login(page) {
+async function login(page: Page) {
try {
// Login
await page.goto('/');
diff --git a/tests/01-Manage/MenuAgencies.spec.ts b/tests/01-Manage/MenuAgencies.spec.ts
new file mode 100644
index 00000000..582d213f
--- /dev/null
+++ b/tests/01-Manage/MenuAgencies.spec.ts
@@ -0,0 +1,804 @@
+import { test, expect, Page } from '@playwright/test';
+import { de, fakerEN, fakerTH } from '@faker-js/faker';
+import { isAwaitExpression } from 'typescript';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+ // เข้าสู่หน้าแม่แบบขั้นตอนการทำงาน
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-agencies');
+ await page.click('id=sub-menu-agencies');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_2_0_001', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูหน่วยงาน
+
+ const pageAgencies = page.locator(
+ "//span[contains(@class,'title-gradient text-weight-bold')]",
+ );
+ await expect(pageAgencies).toHaveText('หน่วยงาน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเมนูหน่วยงาน');
+});
+
+test('TC_2_0_002', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector("(//input[@id='input-agencies-code'])[2]");
+ await page.click("(//input[@id='input-agencies-code'])[2]");
+
+ const dropdownAgenciesGroup = page.locator('id=input-agencies-code_lb');
+ await expect(dropdownAgenciesGroup).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงรายการเลือกกลุ่มหน่วยงาน');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_003', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ const pageCreateAgencies = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ await expect(pageCreateAgencies).toHaveText('เพิ่มหน่วยงาน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มหน่วยงาน');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_004', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click("(//input[@id='input-agencies-code'])[2]");
+ await page.waitForSelector('id=input-agencies-code_2');
+ await page.click('id=input-agencies-code_2');
+ await page.fill(
+ "(//input[@id='input-agencies-name'])[2]",
+ 'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of the Republic of Bulgaria in Thailand',
+ );
+
+ // ส่วนข้อมูลที่อยู่
+ await page.fill(
+ "(//input[@id='-input-address-no'])[2]",
+ '100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
+ );
+ await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
+ await page.click("(//input[@id='-select-province'])[2]");
+ await page.waitForSelector('id=-select-province_1');
+ await page.click('id=-select-province_1');
+ // การเลือก Dropdown ที่อยู่ข้างล่าง
+ await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
+ await page.waitForSelector('#-select-district_lb', { state: 'visible' });
+
+ const targetOption = page.locator('[id="-select-district_40"]');
+ for (let i = 0; i < 10 && !(await targetOption.isVisible()); i++) {
+ await page
+ .locator('#-select-district_lb')
+ .evaluate((el) => (el.scrollTop += 150));
+ await page.waitForTimeout(100);
+ }
+
+ if (await targetOption.isVisible()) {
+ await targetOption.click();
+ console.log('✅ เลือกตัวเลือกสำเร็จ');
+ } else {
+ console.error('❌ ไม่พบตัวเลือกที่ต้องการ');
+ }
+ await page.click("(//input[@id='-select-sub-district'])[2]");
+ await page.waitForSelector('id=-select-sub-district_1');
+ await page.click('id=-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='-input-address-en'])[2]",
+ '100/45 Ocean Tower 2, 24th Floor',
+ );
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ const createAgencies = page.locator(
+ "//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
+ );
+ await expect(createAgencies).toContainText(
+ 'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await expect(createAgencies).toContainText(
+ 'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มหน่วยงานได้');
+});
+
+test('TC_2_0_005', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill(
+ "(//input[@id='input-agencies-name'])[2]",
+ 'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of the Republic of Bulgaria in Thailand',
+ );
+
+ // ส่วนที่อยู่
+ await page.fill(
+ "(//input[@id='input-agencies-name'])[2]",
+ 'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of the Republic of Bulgaria in Thailand',
+ );
+
+ // ส่วนข้อมูลที่อยู่
+ await page.fill(
+ "(//input[@id='-input-address-no'])[2]",
+ '100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
+ );
+ await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
+ await page.click("(//input[@id='-select-province'])[2]");
+ await page.waitForSelector('id=-select-province_1');
+ await page.click('id=-select-province_1');
+ // การเลือก Dropdown ที่อยู่ข้างล่าง
+ await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
+ await page.waitForSelector('id=-select-district_2');
+ await page.click('id=-select-district_2');
+ await page.click("(//input[@id='-select-sub-district'])[2]");
+ await page.waitForSelector('id=-select-sub-district_1');
+ await page.click('id=-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='-input-address-en'])[2]",
+ '100/45 Ocean Tower 2, 24th Floor',
+ );
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ //ตรวจสอบข้อผิดพลาดที่ต้องแสดง
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนให้เลือกกลุ่มหน่วยงาน');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_006', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click("(//input[@id='input-agencies-code'])[2]");
+ await page.waitForSelector('id=input-agencies-code_2');
+ await page.click('id=input-agencies-code_2');
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of the Republic of Bulgaria in Thailand',
+ );
+
+ // ส่วนข้อมูลที่อยู่
+ await page.fill(
+ "(//input[@id='-input-address-no'])[2]",
+ '100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
+ );
+ await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
+ await page.click("(//input[@id='-select-province'])[2]");
+ await page.waitForSelector('id=-select-province_1');
+ await page.click('id=-select-province_1');
+ // การเลือก Dropdown ที่อยู่ข้างล่าง
+ await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
+ await page.waitForSelector('id=-select-district_2');
+ await page.click('id=-select-district_2');
+ await page.click("(//input[@id='-select-sub-district'])[2]");
+ await page.waitForSelector('id=-select-sub-district_1');
+ await page.click('id=-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='-input-address-en'])[2]",
+ '100/45 Ocean Tower 2, 24th Floor',
+ );
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ //ตรวจสอบข้อผิดพลาดที่ต้องแสดง
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนให้กรอกชื่อหน่วยงาน');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_007', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click("(//input[@id='input-agencies-code'])[2]");
+ await page.waitForSelector('id=input-agencies-code_2');
+ await page.click('id=input-agencies-code_2');
+ await page.fill(
+ "(//input[@id='input-agencies-name'])[2]",
+ 'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of the Republic of Bulgaria in Thailand',
+ );
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ //ตรวจสอบข้อผิดพลาดที่ต้องแสดง
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนให้กรอกที่อยู่');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_008', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-edit-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-edit-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+
+ // ตรวจสอบหลังแก้ไข
+ const pageEditAgencies = page.locator('id=user-form-content');
+ await expect(pageEditAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขหน่วยงาน');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_009', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-edit-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-edit-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
+ );
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill(
+ 'id=input-agencies-name',
+ 'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-close');
+
+ // ตรวจสอบหลังแก้ไข
+ const editAgencies = page.locator(
+ "//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
+ );
+ await expect(editAgencies).toContainText(
+ 'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขหน่วยงานได้');
+});
+
+test('TC_2_0_010', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-delete-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-delete-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
+ );
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลังลบ
+ const editAgencies = page.locator(
+ "//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
+ );
+ await expect(editAgencies).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบหน่วยงานในกรณีที่ยังไม่มีการใช้งานได้');
+});
+
+test('TC_2_0_011', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มหน่วยงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click("(//input[@id='input-agencies-code'])[2]");
+ await page.waitForSelector('id=input-agencies-code_2');
+ await page.click('id=input-agencies-code_2');
+ await page.fill(
+ "(//input[@id='input-agencies-name'])[2]",
+ 'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.fill(
+ "(//input[@id='input-agencies-name-en'])[2]",
+ 'Embassy of Japan in Thailand',
+ );
+
+ // ส่วนข้อมูลที่อยู่
+ await page.fill(
+ "(//input[@id='-input-address-no'])[2]",
+ '100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
+ );
+ await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
+ await page.click("(//input[@id='-select-province'])[2]");
+ await page.waitForSelector('id=-select-province_1');
+ await page.click('id=-select-province_1');
+ // การเลือก Dropdown ที่อยู่ข้างล่าง
+ await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
+ await page.waitForSelector('id=-select-district_1');
+ await page.click('id=-select-district_1');
+ await page.click("(//input[@id='-select-sub-district'])[2]");
+ await page.waitForSelector('id=-select-sub-district_1');
+ await page.click('id=-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='-input-address-en'])[2]",
+ '100/45 Ocean Tower 2, 24th Floor',
+ );
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ // ปิดสถานะ
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ { force: true },
+ );
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+ // เปิดสถานะ
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ { force: true },
+ );
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // การลบหน่วยงานที่ภูกใช้งานแล้ว
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.waitForSelector(
+ 'id=btn-kebab-delete-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.click(
+ 'id=btn-kebab-delete-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจการแจ้งเตือนการลบหน่วยงานในกรณีที่หน่วยงานถูกใช้งานแล้ว
+ const popUpErrorAgenciesDeleted = page.locator(
+ "//span[normalize-space(text())='หน่วยงานใช้งานอยู่.']",
+ );
+ await expect(popUpErrorAgenciesDeleted).toHaveText('หน่วยงานใช้งานอยู่.');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบไม่สามารถลบหน่วยงานในกรณีที่มีการใช้งานได้');
+ await page.click('id=btn-ok-dialog');
+});
+
+test('TC_2_0_012', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+
+ await page.click(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ {
+ force: true,
+ },
+ );
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//tr[contains(.,'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงทรายกองดินใต้, เขตคลองสามวา, จังหวัดกรุงเทพมหานคร, 10510')]",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgba(0, 0, 0, 0)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการปิดสถานะการใช้งานหน่วยงาน');
+});
+
+test('TC_2_0_013', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click(
+ 'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ );
+
+ await page.click(
+ 'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
+ {
+ force: true,
+ },
+ );
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//tr[contains(.,'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงทรายกองดินใต้, เขตคลองสามวา, จังหวัดกรุงเทพมหานคร, 10510')]",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgb(249, 250, 252)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการเปิดสถานะการใช้งานหน่วยงาน');
+});
+
+test('TC_2_0_014', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูหน่วยงาน
+
+ const tableAgencies = page.locator("//tr[contains(.,'ลำดับชื่อที่อยู่')]");
+ await expect(tableAgencies).toBeVisible();
+
+ await page.waitForSelector("//div[@id='btn-mode']//button[1]");
+ await page.click("//div[@id='btn-mode']//button[1]");
+
+ const cardAgencies = page.locator(
+ "(//section[contains(@class,'column col-12')])[1]",
+ );
+ await expect(cardAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงข้อมูลตารางและการ์ดของหน่วยงานทั้งหมด');
+});
+
+test('TC_2_0_015', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูหน่วยงาน
+
+ const typeListAgencies = page.locator(
+ "//div[contains(@class,'q-table__container q-table--horizontal-separator')]",
+ );
+ await expect(typeListAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงเมนูหน่วยงานในรูปแบบ List');
+});
+
+test('TC_2_0_016', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // คลิก Dropdown ฟิลด์แสดงผล
+ await page.waitForSelector("(//div[@id='select-field'])[1]");
+ await page.click("(//div[@id='select-field'])[1]");
+
+ const dropdownFieldDisplay = page.locator('id=select-field_lb');
+ await expect(dropdownFieldDisplay).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงรายการฟิลด์แสดงผล');
+});
+
+test('TC_2_0_017', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การแสดงหน่วยงานในรูปแบบการ์ด
+ await page.waitForSelector("//div[@id='btn-mode']//button[1]");
+ await page.click("//div[@id='btn-mode']//button[1]");
+
+ const typeCardAgencies = page.locator(
+ "//div[contains(@class,'q-table__grid-content row')]",
+ );
+ await expect(typeCardAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงเมนูหน่วยงานในรูปแบบ Card');
+});
+
+test('TC_2_0_018', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูหน่วยงาน
+
+ const pageAgencies = page.locator(
+ "//div[contains(@class,'stat-card__content row')]",
+ );
+ await expect(pageAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงจำนวนหน่วยงานทั้งหมด');
+});
diff --git a/tests/01-Manage/MenuBranch.spec.ts b/tests/01-Manage/MenuBranch.spec.ts
new file mode 100644
index 00000000..85a997a4
--- /dev/null
+++ b/tests/01-Manage/MenuBranch.spec.ts
@@ -0,0 +1,2120 @@
+import { test, expect, Page } from '@playwright/test';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('http://192.168.1.62:20101/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_2_1_001', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ const pageBranch = page.locator(
+ "//span[normalize-space(text())='จัดการสาขา']",
+ );
+ await expect(pageBranch).toHaveText('จัดการสาขา');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
+
+test('TC_2_1_002', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ const formInformation = page.locator('id=form-information');
+ const formContact = page.locator('id=form-contact');
+ const formAddress = page.locator('id=form-address');
+ const formLocation = page.locator('id=form-location');
+ const formQrCode = page.locator('id=form-qr');
+ const formBank = page.locator('id=form-bank');
+ const formManage = page.locator('id=form-branch-admin-view');
+ const formAttachment = page.locator('id=form-attachment');
+ const formRemark = page.locator('id=form-remark');
+
+ await expect(formInformation).toBeVisible();
+ await expect(formContact).toBeVisible();
+ await expect(formAddress).toBeVisible();
+ await expect(formLocation).toBeVisible();
+ await expect(formQrCode).toBeVisible();
+ await expect(formBank).toBeVisible();
+ await expect(formManage).toBeVisible();
+ await expect(formAttachment).toBeVisible();
+ await expect(formRemark).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
+
+test('TC_2_1_003', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'JWS');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1082262426222');
+ await page.fill(
+ "(//input[@id='input-name'])[2]",
+ 'บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.fill(
+ "(//input[@id='input-name-en'])[2]",
+ 'Jobs Worker Service co.,Ltd',
+ );
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill(
+ "(//input[@id='input-email'])[2]",
+ 'jwssubport@support.com',
+ );
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022202002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณเอ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0862242826');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'JWSChat');
+
+ // ส่วนที่อยู่
+ await page.fill(
+ "(//input[@id='default-input-address-no'])[2]",
+ '53 ถนนสุขสวัสดิ์',
+ );
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click('id=default-select-province_1');
+ await page.waitForTimeout(1000);
+ await page.click("(//label[@for='default-select-district'])[2]");
+ // กำหนดตัวเลือกที่ต้องการ
+ const targetOptionId = 'id=default-select-district_36'; // id ของตัวเลือกที่ต้องการ
+ let isVisible = false;
+ const maxScrollAttempts = 10; // จำนวนครั้งสูงสุดในการเลื่อน
+ let attempt = 0;
+
+ while (!isVisible && attempt < maxScrollAttempts) {
+ // ตรวจสอบว่า dropdown แสดงหรือไม่
+ const dropdown = page.locator('#default-select-district_lb');
+ if ((await dropdown.count()) === 0) {
+ console.error('ไม่พบ dropdown ที่ต้องการ');
+ break;
+ }
+
+ // ใช้ page.locator() เลื่อน dropdown ลงไป
+ await dropdown.evaluate((element) => {
+ element.scrollTop += 150; // เลื่อนลง 150px
+ });
+
+ // รอให้เลื่อนเสร็จ
+ await page.waitForTimeout(100); // รอ 0.1 วินาทีเพื่อให้การเลื่อนเสร็จสิ้น
+
+ // ตรวจสอบว่าตัวเลือกแสดงอยู่ใน viewport หรือไม่
+ isVisible = await page.locator(targetOptionId).isVisible();
+ attempt++;
+ }
+
+ // หากตัวเลือกที่ต้องการอยู่ใน viewport ให้คลิก
+ if (isVisible) {
+ const targetOption = page.locator(targetOptionId);
+ await targetOption.click();
+ } else {
+ console.error('ไม่พบตัวเลือกที่ต้องการ');
+ }
+ await page.waitForTimeout(1000);
+ await page.click("(//label[@for='default-select-sub-district'])[2]");
+ await page.click('id=default-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='default-input-address-en'])[2]",
+ '53 Suk Sawat Rd',
+ );
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัดJWS00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก
ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัดJWS00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
+
+test('TC_2_1_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+ await page.click('id=btn-info-basic-save');
+
+ const exceptError = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[6]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[7]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[8]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[9]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[10]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of exceptError) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ console.log('ระบบตรวจสอบการแจ้งเตือนแล้ว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
+});
+
+test('TC_2_1_005', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+ const exceptError = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+ for (const error of exceptError) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ console.log('ระบบตรวจสอบการแจ้งเตือนแล้ว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
+});
+
+test('TC_2_1_006', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'TES');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220282');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท คนอ จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'chano');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท คนอ จำกัดTES00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท คนอ จำกัดTES00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('สามารถสร้างสำนักงานใหญ่ได้');
+});
+
+test('TC_2_1_007', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'CMM');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท คาโมมายด์ จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'CHAMOMIND');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ const exceptError = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[6]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[7]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[8]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ ];
+ for (const error of exceptError) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ console.log('ระบบตรวจสอบการแจ้งเตือนแล้ว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
+});
+
+test('TC_2_1_008', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'NES');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท คนา จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'chana');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท คนา จำกัดNES00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท คนา จำกัดNES00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('สามารถสร้างสำนักงานใหญ่ได้');
+});
+
+test('TC_2_1_009', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'EES');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท คชา จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'chaca');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท คชา จำกัดEES00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท คชา จำกัดEES00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('สามารถสร้างสำนักงานใหญ่ได้');
+});
+
+test('TC_2_1_010', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'MES');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท นารา จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'nara');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท นารา จำกัดMES00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท นารา จำกัดMES00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('สามารถสร้างสำนักงานใหญ่ได้');
+});
+
+test('TC_2_1_011', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=btn-kebab-action-บริษัท คนอ จำกัด');
+ await page.waitForSelector('id=btn-kebab-edit-บริษัท คนอ จำกัด');
+ await page.click('id=btn-kebab-edit-บริษัท คนอ จำกัด');
+
+ const pageEditBranch = page.locator(
+ "//text[normalize-space(text())='แก้ไข']",
+ );
+
+ await expect(pageEditBranch).toHaveText('แก้ไข');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('ระบบแสดงหน้าแก้ไข');
+});
+
+test('TC_2_1_012', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=btn-kebab-action-บริษัท คนอ จำกัด');
+ await page.waitForSelector('id=btn-kebab-edit-บริษัท คนอ จำกัด');
+ await page.click('id=btn-kebab-edit-บริษัท คนอ จำกัด');
+
+ // แก้ไขสำนักงานใหญ่
+ await page.fill('id=input-name', 'บริษัท ธนา จำกัด');
+ await page.fill('id=input-name-en', 'Thana');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const editOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท ธนา จำกัดTES00000')]",
+ );
+ await editOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await editOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท ธนา จำกัดTES00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('ระบบแก้ไขสำนักงานใหญ่สำเร็จ');
+});
+
+test('TC_2_1_013', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // ลบสำนักงานใหญ่
+ await page.click('id=btn-kebab-action-บริษัท คนา จำกัด');
+ await page.waitForSelector('id=btn-kebab-delete-บริษัท คนา จำกัด');
+ await page.click('id=btn-kebab-delete-บริษัท คนา จำกัด');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบการลบสำนักงานใหญ่
+ const checkBranchDeleted = await page.locator(
+ "//tr[contains(.,'บริษัท คนา จำกัด') and contains (.,'81120')]",
+ );
+
+ await expect(checkBranchDeleted).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('ระบบไม่สามารถลบได้เนื่องจากสำนักงานใหญ่ถูกใช้งานแล้ว');
+});
+
+test('TC_2_1_014', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // เปิดปิดสถานะทดสอบการลบสำนักงานใหญ่ที่ถูกใช้งานแล้ว
+ await page.click('id=btn-kebab-action-บริษัท นารา จำกัด');
+ await page.waitForSelector('id=btn-kebab-status-บริษัท นารา จำกัด');
+ await page.click('id=btn-kebab-status-บริษัท นารา จำกัด', { force: true });
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-kebab-action-บริษัท นารา จำกัด');
+ await page.waitForSelector('id=btn-kebab-status-บริษัท นารา จำกัด');
+ await page.click('id=btn-kebab-status-บริษัท นารา จำกัด', { force: true });
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ลบสำนักงานใหญ่
+ await page.click('id=btn-kebab-action-บริษัท นารา จำกัด');
+ await page.waitForSelector('id=btn-kebab-delete-บริษัท นารา จำกัด');
+ await page.click('id=btn-kebab-delete-บริษัท นารา จำกัด');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบการแจ้งเตือน Pop Up
+ const headPopUpError = await page.locator(
+ "//span[normalize-space(text())='แจ้งเตือน']",
+ );
+ const popupErrorDeletedBranch = await page.locator(
+ "//span[normalize-space(text())='สาขาใช้งานอยู่']",
+ );
+
+ await expect(headPopUpError).toHaveText('แจ้งเตือน');
+ await expect(popupErrorDeletedBranch).toHaveText('สาขาใช้งานอยู่');
+ await page.click('id=btn-ok-dialog');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ console.log('ระบบไม่สามารถลบได้เนื่องจากสำนักงานใหญ่ถูกใช้งานแล้ว');
+});
+
+// test('TC_2_1_015', async () => {});
+
+// test('TC_2_1_016', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// });
+
+test('TC_2_1_017', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'AOS');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1082262426222');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท แอสโอ จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Asso co.,Ltd');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill(
+ "(//input[@id='input-email'])[2]",
+ 'jwssubport@support.com',
+ );
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022202002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณเอ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0862242826');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'JWSChat');
+
+ // ส่วนที่อยู่
+ await page.fill(
+ "(//input[@id='default-input-address-no'])[2]",
+ '53 ถนนสุขสวัสดิ์',
+ );
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click('id=default-select-province_1');
+ await page.waitForTimeout(1000);
+ await page.click("(//label[@for='default-select-district'])[2]");
+ // กำหนดตัวเลือกที่ต้องการ
+ const targetOptionId = 'id=default-select-district_36'; // id ของตัวเลือกที่ต้องการ
+ let isVisible = false;
+ const maxScrollAttempts = 10; // จำนวนครั้งสูงสุดในการเลื่อน
+ let attempt = 0;
+
+ while (!isVisible && attempt < maxScrollAttempts) {
+ // ตรวจสอบว่า dropdown แสดงหรือไม่
+ const dropdown = page.locator('#default-select-district_lb');
+ if ((await dropdown.count()) === 0) {
+ console.error('ไม่พบ dropdown ที่ต้องการ');
+ break;
+ }
+
+ // ใช้ page.locator() เลื่อน dropdown ลงไป
+ await dropdown.evaluate((element) => {
+ element.scrollTop += 150; // เลื่อนลง 150px
+ });
+
+ // รอให้เลื่อนเสร็จ
+ await page.waitForTimeout(100); // รอ 0.1 วินาทีเพื่อให้การเลื่อนเสร็จสิ้น
+
+ // ตรวจสอบว่าตัวเลือกแสดงอยู่ใน viewport หรือไม่
+ isVisible = await page.locator(targetOptionId).isVisible();
+ attempt++;
+ }
+
+ // หากตัวเลือกที่ต้องการอยู่ใน viewport ให้คลิก
+ if (isVisible) {
+ const targetOption = page.locator(targetOptionId);
+ await targetOption.click();
+ } else {
+ console.error('ไม่พบตัวเลือกที่ต้องการ');
+ }
+ await page.waitForTimeout(1000);
+ await page.click("(//label[@for='default-select-sub-district'])[2]");
+ await page.click('id=default-select-sub-district_1');
+ await page.fill(
+ "(//input[@id='default-input-address-en'])[2]",
+ '53 Suk Sawat Rd',
+ );
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+
+ const checkAddressSave = await page.locator(
+ "//tr[contains(.,'บริษัท แอสโอ จำกัด') and contains (.,'10140')]",
+ );
+ await expect(checkAddressSave).toContainText('53 ถนนสุขสวัสดิ์');
+ await expect(checkAddressSave).toContainText('หมู่ 1');
+ await expect(checkAddressSave).toContainText('แขวงราษฎร์บูรณะ');
+ await expect(checkAddressSave).toContainText('เขตราษฎร์บูรณะ');
+ await expect(checkAddressSave).toContainText('จังหวัดกรุงเทพมหานคร');
+ await expect(checkAddressSave).toContainText('10140');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('สามารถบันทึกที่อยู่ได้');
+});
+
+test('TC_2_1_018', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'CMM');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท คาโมมายด์ จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'CHAMOMIND');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ //ส ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ const exceptError = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[6]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[7]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[8]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ ];
+ for (const error of exceptError) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ console.log('ระบบตรวจสอบการแจ้งเตือนแล้ว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-close');
+ console.log('ระบบทำการแจ้งเตือนให้กรอกที่อยู่ให้ครบ');
+});
+
+test('TC_2_1_019', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ await page.click('id=hq-add-btn');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'MOA');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท โมอา จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Moaa');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'cmm@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222262');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณต่อ');
+ await page.fill("(//input[@id='input-contact'])[2]", '0866224228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'local2024');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '1');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/02');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ //ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '1202282262226');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+ await page.click('id=btn-info-basic-save');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('สามารถเพิ่มบัญชีธนาคารได้');
+});
+
+test('TC_2_1_020', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ตรวจสอบหน้าการเพิ่มสาขา
+ const showSubbranchCrate = page.locator(
+ "//form[contains(.,'เพิ่ม สาขา JWS00000') and contains (.,'หมายเหตุหมายเหตุ')]",
+ );
+
+ await expect(showSubbranchCrate).toContainText('เพิ่ม สาขา JWS00000');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มสาขา');
+});
+
+test('TC_2_1_021', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+ for (let i = 0; i < 5; i++) {
+ try {
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill(
+ "(//input[@id='input-tax-no'])[2]",
+ `126084622028${i + 1}`,
+ );
+ await page.fill("(//input[@id='input-name'])[2]", `สีลม${i + 1}`);
+ await page.fill("(//input[@id='input-name-en'])[2]", `Silom${i + 1}`);
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill(
+ "(//input[@id='input-email'])[2]",
+ `host${i + 1}@local.co.th`,
+ );
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill(
+ "(//input[@id='input-contact'])[2]",
+ `08622864${i + 1}`,
+ );
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ await page.fill(
+ "(//input[@id='default-input-address-no'])[2]",
+ `20/0${i + 1}`,
+ );
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill(
+ "(//input[@id='default-input-address-en'])[2]",
+ `20/0${i + 1}`,
+ );
+
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click(`id=select-bankbook_${i + 1}`);
+ await page.fill(
+ "(//input[@aria-label='เลขบัญชี'])[2]",
+ `228202002${i + 1}`,
+ );
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill(
+ "(//input[@aria-label='ชื่อบัญชี'])[2]",
+ 'Pongpon Kuntana',
+ );
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error(`เกิดข้อผิดพลาดในรอบที่ ${i + 1}:`, error);
+ continue;
+ }
+ }
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ // ตรวจสอบข้อมูลที่สร้างขึ้น
+ const branches = ['สีลม1', 'สีลม2', 'สีลม3', 'สีลม4', 'สีลม5'];
+ for (const branch of branches) {
+ const branchLocator = page.locator(
+ `//div[normalize-space(text())='${branch}']`,
+ );
+ await branchLocator.waitFor({ state: 'visible' });
+ const actualText = await branchLocator.textContent();
+ expect(actualText?.trim()).toBe(branch);
+ }
+
+ console.log('การตรวจสอบสำเร็จ : ข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ console.log('ระบบทำการสร้างสาขาและเพิ่มรหัสาขาอัตโนมัติ');
+});
+
+test('TC_2_1_022', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[6]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[7]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[8]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[9]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการบังคับให้กรอกข้อมูลในช่องที่จำเป็นต้องกรอก');
+});
+
+test('TC_2_1_023', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'host@local.co.th');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill("(//input[@id='input-contact'])[2]", '08622864');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/0');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/0');
+
+ // ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '228202002');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนในช่องที่ถูกบังคับให้กรอก');
+});
+
+test('TC_2_1_024', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-tax-no'])[2]", '126084622028');
+ await page.fill("(//input[@id='input-name'])[2]", 'สามย่าน');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/0');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/0');
+
+ // ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '228202002');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถทำการสร้างสาขาได้');
+});
+
+test('TC_2_1_025', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220281');
+ await page.fill("(//input[@id='input-name'])[2]", 'สามย่าน');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1234423123425',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'host@local.co.th');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill("(//input[@id='input-contact'])[2]", '08622864');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ // ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '228202002');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[2]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[3]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[4]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[5]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[6]",
+ message: 'โปรดเลือกจังหวัด',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[7]",
+ message: 'โปรดเลือกเขต/อำเภอ',
+ },
+ {
+ locator: "(//div[@class='q-field__messages col']//div)[8]",
+ message: 'โปรดเลือกแขวง/ตำบล',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบทำการแจ้งเตือนให้เพิ่มที่อยู่');
+});
+
+test('TC_2_1_026', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220220');
+ await page.fill("(//input[@id='input-name'])[2]", 'สยาม');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1234423123425',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'host@local.co.th');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill("(//input[@id='input-contact'])[2]", '08622864');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/0');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/0');
+
+ // ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '228202002');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('สามารถสร้างสาขาในกรณีที่ไม่เลือก Location ได้');
+});
+
+test('TC_2_1_027', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220220');
+ await page.fill("(//input[@id='input-name'])[2]", 'สยาม');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1234423123425',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'host@local.co.th');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill("(//input[@id='input-contact'])[2]", '08622864');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/0');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/0');
+
+ // ส่วนบัญชีธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '228202002');
+ await page.fill("(//input[@aria-label='สาขาธนาคาร'])[2]", 'เชียงใหม่');
+ await page.fill("(//input[@aria-label='ชื่อบัญชี'])[2]", 'Pongpon Kuntana');
+ await page.click("(//input[@aria-label='ประเภทบัญชี'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=select-bankbook_0');
+
+ await page.click('id=btn-info-basic-save');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('สามารถสร้างสาขาในกรณีที่ไม่อัปโหลด QR Code ได้');
+});
+
+test('TC_2_1_028', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสร้างสาขา
+ await page.click(
+ 'id=create-sub-branch-btn-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.waitForSelector("(//button[@type='submit']//div)[1]");
+ await page.click("(//button[@type='submit']//div)[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220240');
+ await page.fill("(//input[@id='input-name'])[2]", 'จตุจักร');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1234423123425',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'host@local.co.th');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022222002');
+ await page.fill("(//input[@id='input-contact-name'])[2]", 'คุณอาท');
+ await page.fill("(//input[@id='input-contact'])[2]", '08622864');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/0');
+ await page.click("(//input[@id='default-select-province'])[2]");
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.click("(//input[@id='default-select-sub-district'])[2]");
+ await page.waitForTimeout(400);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='default-input-address-en'])[2]", '20/0');
+
+ await page.click('id=btn-info-basic-save');
+ await page.click('id=btn-form-close');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('สามารถสร้างสาขาในกรณีที่ไม่เพิ่มบัญชีธนาคารได้');
+});
+
+test('TC_2_1_029', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าแกไขสร้างสาขา
+ await page.waitForSelector(
+ 'id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.click('id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด');
+ await page.waitForSelector('id=btn-kebab-action-สีลม1');
+ await page.click('id=btn-kebab-action-สีลม1');
+ await page.waitForSelector('id=btn-kebab-edit-สีลม1');
+ await page.click('id=btn-kebab-edit-สีลม1');
+
+ const pageEditSubBranch = page.locator(
+ "//text[normalize-space(text())='แก้ไข']",
+ );
+
+ await expect(pageEditSubBranch).toHaveText('แก้ไข');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขสาขา');
+});
+
+test('TC_2_1_030', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าแก้ไขสร้างสาขา
+ await page.waitForSelector(
+ 'id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.click('id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด');
+ await page.waitForSelector('id=btn-kebab-action-สีลม1');
+ await page.click('id=btn-kebab-action-สีลม1', { force: true });
+ await page.waitForSelector('id=btn-kebab-edit-สีลม1');
+ await page.click('id=btn-kebab-edit-สีลม1');
+
+ // ส่วนข้อมูลพื่นฐาน
+ await page.fill('id=input-name', 'เจริญนคร');
+ await page.fill('id=input-name-en', 'charuengnakorn');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ //ตรวจสอบหลังจากแก้ไข
+ const editNameBranchShow = await page.locator(
+ "//div[normalize-space(text())='เจริญนคร']",
+ );
+
+ await expect(editNameBranchShow).toHaveText('เจริญนคร');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขสาขาได้');
+});
+
+test('TC_2_1_031', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ // การเข้าหน้าสาขา
+ await page.waitForSelector(
+ 'id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+ );
+ await page.click('id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด');
+
+ // ลบสาขา
+ // await page.waitForSelector('id=btn-kebab-action-สีลม5');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-kebab-action-สีลม5', { timeout: 2000 });
+ await page.waitForSelector('id=btn-kebab-delete-สีลม5');
+ await page.click('id=btn-kebab-delete-สีลม5');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ //ตรวจสอบหลังจากทำการลบ
+ const checkBranchDeleted = await page.locator(
+ "//div[normalize-space(text())='สีลม5']",
+ );
+
+ await expect(checkBranchDeleted).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถทำการลบสาขาได้');
+});
+
+// test('TC_2_1_032', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // เข้าสู่เมนูสาขา
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-branch');
+// await page.click('id=sub-menu-branch');
+
+// // การเข้าหน้าแก้ไขสร้างสาขา
+// await page.waitForSelector(
+// 'id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+// );
+// await page.click('id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด');
+
+// // ปิดสถานะ
+// await page.waitForSelector('id=btn-kebab-action-สีลม3');
+// await page.click('id=btn-kebab-action-สีลม3');
+// await page.waitForSelector('id=btn-kebab-status-สีลม3');
+// await page.click('id=btn-kebab-status-สีลม3', { force: true });
+// await page.waitForSelector('id=btn-ok-dialog');
+// await page.click('id=btn-ok-dialog');
+
+// // เปิดสถานะ
+// await page.waitForSelector('id=btn-kebab-action-สีลม3');
+// await page.click('id=btn-kebab-action-สีลม3');
+// await page.waitForTimeout(2000);
+// await page.click('id=btn-kebab-status-สีลม3');
+// await page.waitForSelector('id=btn-ok-dialog');
+// await page.click('id=btn-ok-dialog');
+
+// // ลบสาขา
+// await page.waitForSelector('id=btn-kebab-action-สีลม3');
+// await page.click('id=btn-kebab-action-สีลม3', { force: true });
+// await page.waitForSelector('id=btn-kebab-delete-สีลม3');
+// await page.click('idbtn-kebab-delete-สีลม3');
+// await page.waitForSelector('id=btn-ok-dialog');
+// await page.click('id=btn-ok-dialog');
+
+// //ตรวจสอบหลังจากแก้ไข
+// const headPopUpError = await page.locator(
+// "//span[normalize-space(text())='แจ้งเตือน']",
+// );
+// const detailPopupError = await page.locator(
+// "//span[normalize-space(text())='สาขาใช้งานอยู่']",
+// );
+
+// await expect(headPopUpError).toHaveText('แจ้งเตือน');
+// await expect(detailPopupError).toHaveText('สาขาใช้งานอยู่');
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบไม่สามารถทำการลบสาขาได้เนื่องจากสาขาถูกใช้งานไปแล้ว');
+// });
+
+test('TC_2_1_033', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูสาขา
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-branch');
+ await page.click('id=sub-menu-branch');
+
+ const showAmountBranch = page.locator(
+ "(//div[contains(@class,'stat-card__content row')])[1]",
+ );
+ const showAmountSubBranch = page.locator(
+ "(//div[contains(@class,'stat-card__content row')])[2]",
+ );
+ const showAmountServicepoint = page.locator(
+ "(//div[contains(@class,'stat-card__content row')])[3]",
+ );
+
+ // รอ Locator แสดง
+ await showAmountBranch.waitFor({ state: 'visible' });
+ await showAmountSubBranch.waitFor({ state: 'visible' });
+ await showAmountServicepoint.waitFor({ state: 'visible' });
+
+ // ดึงค่าข้อความ
+ const branchText = await showAmountBranch.textContent();
+ const subBranchText = await showAmountSubBranch.textContent();
+ const servicePointText = await showAmountServicepoint.textContent();
+
+ console.log(`สำนักงานใหญ่ : ${branchText?.trim()}`);
+ console.log(`สาขา : ${subBranchText?.trim()}`);
+ console.log(`จุดรับบริการ : ${servicePointText?.trim()}`);
+
+ // ตรวจสอบว่าค่าแสดงตัวเลขหรือไม่
+ expect(branchText).toMatch(/\d+/);
+ expect(subBranchText).toMatch(/\d+/);
+ expect(servicePointText).toMatch(/\d+/);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงจำนวนสำนักงานใหญ่,สาขา,จุดรับบริการ');
+});
+
+// test('TC_2_1_034', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // เข้าสู่เมนูสาขา
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-branch');
+// await page.click('id=sub-menu-branch');
+
+// // การเข้าหน้าสาขา
+// await page.waitForSelector(
+// 'id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด',
+// );
+// await page.click('id=tree-enter-บริษัทจ็อบเวิร์คเกอร์ เซอร์วิส จำกัด');
+
+// const showAmountBranch = page.locator(
+// "(//div[contains(@class,'stat-card__content row')])[1]",
+// );
+// const showAmountSubBranch = page.locator(
+// "(//div[contains(@class,'stat-card__content row')])[2]",
+// );
+// const showAmountServicepoint = page.locator(
+// "(//div[contains(@class,'stat-card__content row')])[3]",
+// );
+
+// // รอ Locator แสดง
+// await showAmountBranch.waitFor({ state: 'visible' });
+// await showAmountSubBranch.waitFor({ state: 'visible' });
+// await showAmountServicepoint.waitFor({ state: 'visible' });
+
+// // ดึงค่าข้อความ
+// const branchText = await showAmountBranch.textContent();
+// const subBranchText = await showAmountSubBranch.textContent();
+// const servicePointText = await showAmountServicepoint.textContent();
+
+// console.log(`สำนักงานใหญ่ : ${branchText?.trim()}`);
+// console.log(`สาขา : ${subBranchText?.trim()}`);
+// console.log(`จุดรับบริการ : ${servicePointText?.trim()}`);
+
+// // ตรวจสอบว่าค่าแสดงตัวเลขหรือไม่
+// expect(branchText).toMatch(/\d+/);
+// expect(subBranchText).toMatch(/\d+/);
+// expect(servicePointText).toMatch(/\d+/);
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบแสดงจำนวนสำนักงานใหญ่,สาขา,จุดรับบริการ');
+// });
diff --git a/tests/01-Manage/MenuCustomer.spec.ts b/tests/01-Manage/MenuCustomer.spec.ts
new file mode 100644
index 00000000..74b4448c
--- /dev/null
+++ b/tests/01-Manage/MenuCustomer.spec.ts
@@ -0,0 +1,2332 @@
+import { test, expect, Page } from '@playwright/test';
+import { fakerEN, fakerTH } from '@faker-js/faker';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_2_4_001', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าจัดการลูกค้า');
+});
+
+test('TC_2_4_002', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเพิ่มนายจ้าง
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ const showAddNaturalPerson = page.locator('id=add-customer-natural-person');
+ const showAddLegalEntry = page.locator('id=add-customer-legal-entity');
+
+ await expect(showAddNaturalPerson).toBeVisible();
+ await expect(showAddLegalEntry).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบแสดงเมนูย่อยเพื่อเพิ่มนายจ้างโดยจะแสดงเพิ่มบุคคธรรมดา,เพิ่มนิติบุคคล',
+ );
+});
+
+test('TC_2_4_003', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเพิ่มนายจ้างนิติบุคคล
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-add');
+
+ await page.waitForSelector('id=add-customer-legal-entity');
+ await page.click('id=add-customer-legal-entity');
+
+ await page.waitForSelector('.dialog-header-container', {
+ state: 'visible',
+ });
+ await expect(page.locator('.dialog-header-container')).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มนายจ้างนิติบุคคล');
+});
+
+test('TC_2_4_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเพิ่มนายจ้างนิติบุคคล
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-add');
+
+ await page.waitForSelector('id=add-customer-legal-entity');
+ await page.click('id=add-customer-legal-entity');
+
+ // ส่วนเกี่ยวกับ
+ await page.fill(
+ 'id=input-register-name',
+ 'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด ',
+ );
+ await page.fill('id=input-register-name-en', 'AsiaTech Systems Co., Ltd.');
+ await page.fill('id=input-legal-person-no', 'อนุชา ศรีสวัสดิ์');
+ await page.fill('id=input-legal-person-code', '2022822642228');
+
+ // จดทะเบียนเมื่อ
+ await page.click("(//input[@id='form-input-register-date'])[1]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2020']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ก.ย.']");
+ await page.click("//div[@id='2020-09-18']/div[1]");
+
+ await page.fill('id=input-authorized-capital', '10000000');
+ await page.fill('id=input-telephone-no', '022202002');
+
+ // ส่วนข้อมูลธุรกิจ
+ await page.click("(//div[@class='q-tab__label'])[2]");
+ await page.click('id=form-select-business-type');
+ await page.waitForSelector('id=form-select-business-type_3');
+ await page.click('id=form-select-business-type_3');
+ await page.click('id=form-select-job-position');
+ await page.waitForSelector('id=form-select-job-position_0');
+ await page.click('id=form-select-job-position_0');
+ await page.fill('id=form-input-job-description', 'รายละเอียดงาน');
+ await page.fill(
+ "(//input[@id='form-input-pay-rate'])[1]",
+ 'วันจ่ายเงินเดือน',
+ );
+ await page.fill("(//input[@id='form-input-pay-rate'])[2]", 'Pay day');
+ await page.fill("(//input[@id='form-input-pay-rate'])[3]", '2000');
+
+ // ส่วนผู้มีอำนาจลงนาม
+ await page.click("(//div[@class='q-tab__label'])[3]");
+ await page.fill(
+ "(//input[@id='form-input-contact-name'])[1]",
+ 'อนุชา ศรีสวัสดิ์',
+ );
+ await page.fill(
+ "(//input[@id='form-input-contact-name'])[2]",
+ 'Anucha Srisawat',
+ );
+
+ // ส่วนที่อยู่นายจ้าง
+ await page.click("(//div[@class='q-tab__label'])[4]");
+ await page.fill("(//input[@id='form-input-address'])[1]", '20228226242');
+ await page.fill(
+ 'id=form-input-address-no',
+ '1234 อาคารซิตี้ทาวเวอร์ ชั้น 12',
+ );
+ await page.fill("(//input[@id='form-input-street'])[1]", 'สาทรใต้');
+ await page.click('id=form-select-province');
+ await page.waitForSelector('id=form-select-province_1');
+ await page.click('id=form-select-province_1');
+ await page.click('id=form-select-district');
+ await page.waitForSelector('id=form-select-district_11');
+ await page.click('id=form-select-district_11');
+ await page.click('id=form-select-sub-district');
+ await page.waitForSelector('id=form-select-sub-district_1');
+ await page.click('id=form-select-sub-district_1');
+ await page.fill(
+ 'id=form-input-address-en',
+ '1234 City Tower Building, 12th Floor',
+ );
+ await page.fill("(//input[@id='form-input-street'])[2]", 'South Sathorn');
+
+ // ส่วนข้อมูลผู้ติดต่อ
+ await page.click("(//div[@class='q-tab__label'])[5]");
+ await page.fill('id=form-input-contact-name', 'วราภรณ์ ศรีสวัสดิ์');
+ await page.fill('id=form-input-mail', 'asiatech@support.com');
+ await page.fill("(//input[@id='form-input-telephone'])[1]", '0866522622');
+ await page.fill("(//input[@id='form-input-telephone'])[2]", '022022002');
+ await page.click('id=quotation-branch');
+ await page.waitForSelector('id=quotation-branch_1');
+ await page.click('id=quotation-branch_1');
+ await page.waitForSelector("//button[@type='submit']");
+ await page.click("//button[@type='submit']");
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ const legalEntitlyNameCheck = await page.locator(
+ "//tr[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด') and contains (.,'022022002')]",
+ );
+
+ await expect(legalEntitlyNameCheck).toContainText(
+ 'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด',
+ );
+ await expect(legalEntitlyNameCheck).toContainText('022022002');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างนายจ้างนิติบุคคล');
+});
+
+test('TC_2_4_005', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเพิ่มนายจ้างนิติบุคคล
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-add');
+
+ await page.waitForSelector('id=add-customer-natural-person');
+ await page.click('id=add-customer-natural-person');
+
+ await page.waitForSelector('.dialog-header-container', {
+ state: 'visible',
+ });
+ await expect(page.locator('.dialog-header-container')).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มนายจ้างบุคคลธรรมดา');
+});
+
+test('TC_2_4_006', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเพิ่มนายจ้างนิติบุคคล
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-add');
+
+ await page.waitForSelector('id=add-customer-natural-person');
+ await page.click('id=add-customer-natural-person');
+
+ // ส่วนเกี่ยวกับ
+ await page.fill('id=input-card-number', '1524428220420');
+ await page.waitForSelector('id=form-select-prefix-name');
+ await page.click('id=form-select-prefix-name');
+ await page.waitForSelector('id=form-select-prefix-name_0');
+ await page.click('id=form-select-prefix-name_0');
+ await page.fill('id=form-input-first-name', 'ยศพัฒน์');
+ await page.fill('id=form-input-last-name', 'ธนากานต์');
+ await page.fill('id=form-input-first-name-en', 'Yossapat');
+ await page.fill('id=form-input-last-name-en', 'Tanakarn');
+ await page.fill('id=form-input-telephone', '0842262228');
+ await page.waitForSelector('id=form-input-birth-date');
+ await page.click('id=form-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1999']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ต.ค.']");
+ await page.click("//div[@id='1999-10-02']/div[1]");
+
+ // ส่วนข้อมูลธุรกิจ
+ await page.waitForSelector("(//div[@aria-selected='false'])[2]");
+ await page.click("(//div[@aria-selected='false'])[2]");
+ await page.waitForSelector('id=form-select-business-type');
+ await page.click('id=form-select-business-type');
+ await page.click('id=form-select-business-type_6');
+ await page.waitForSelector('id=form-select-job-position');
+ await page.click('id=form-select-job-position');
+ await page.click('id=form-select-job-position_0');
+
+ // ส่วนที่อยู่นายจ้าง
+ await page.click("(//div[@aria-selected='false'])[3]");
+ await page.fill("(//input[@id='form-input-address'])[1]", '22282205202');
+ await page.fill('id=form-input-address-no', '200');
+ await page.click('id=form-select-province');
+ await page.waitForSelector('id=form-select-province_4');
+ await page.click('id=form-select-province_4');
+ await page.click('id=form-select-district');
+ await page.waitForSelector('id=form-select-district_8');
+ await page.click('id=form-select-district_8');
+ await page.click('id=form-select-sub-district');
+ await page.waitForSelector('id=form-select-sub-district_7');
+ await page.click('id=form-select-sub-district_7');
+ await page.fill('id=form-input-address-en', '200');
+ await page.click("//button[@type='submit']");
+ await page.click('id=btn-form-close');
+
+ // กำหนดค่าเพื่อตรวจสอบความถูกต้องหลังสร้าง
+
+ const nameTitleNatrualPerson = await page.locator(
+ "//tr[contains(.,'นาย ยศพัฒน์ ธนากานต์') and contains (.,'--')]",
+ );
+
+ expect(nameTitleNatrualPerson).toContainText('ยศพัฒน์ ธนากานต์');
+ expect(nameTitleNatrualPerson).toContainText('--');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถสร้างนายจ้างบุคคลธรรมดาได้');
+});
+
+test('TC_2_4_007', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // ตรวจสอบการเข้าไปในนายจ้างนิติบุคคล
+ try {
+ await page.waitForSelector(
+ "//td[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัดAsiaTech Systems Co., Ltd.')]",
+ );
+ await page.click(
+ "//td[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัดAsiaTech Systems Co., Ltd.')]",
+ );
+
+ const detailInLegalPerson = page.locator(
+ "//tr[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด') and contains (.,'0')]",
+ );
+
+ await expect(detailInLegalPerson).toContainText(
+ 'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด',
+ );
+ await expect(detailInLegalPerson).toContainText(
+ '1234 อาคารซิตี้ทาวเวอร์ ชั้น 12, ถนนสาทรใต้, แขวงบางมด, เขตทุ่งครุ, จังหวัดกรุงเทพมหานคร, 10140',
+ );
+ await expect(detailInLegalPerson).toContainText('022202002');
+ await expect(detailInLegalPerson).toContainText('กิจการก่อสร้าง');
+ await expect(detailInLegalPerson).toContainText('0');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการแสดงนายจ้างนิติบุคค]', error);
+ throw error;
+ }
+
+ // กลับไปสู่หน้าจัดการลูกค้า
+ await page.waitForSelector(
+ "//span[normalize-space(text())='จัดการลูกค้าภายในองค์กร']",
+ );
+ await page.click(
+ "//span[normalize-space(text())='จัดการลูกค้าภายในองค์กร']",
+ );
+
+ // ตรวจสอบการเข้าไปในนายจ้างบุคคลธรรมดา
+ try {
+ await page.waitForSelector(
+ "//td[contains(.,'นาย ยศพัฒน์ ธนากานต์Mr Yossapat Tanakarn')]",
+ );
+ await page.click(
+ "//td[contains(.,'นาย ยศพัฒน์ ธนากานต์Mr Yossapat Tanakarn')]",
+ );
+
+ const detailInNaturalPerson = page.locator(
+ "//tr[contains(.,'ยศพัฒน์ ธนากานต์') and contains (.,'0')]",
+ );
+
+ await expect(detailInNaturalPerson).toContainText('ยศพัฒน์ ธนากานต์');
+ await expect(detailInNaturalPerson).toContainText(
+ '200, ตำบลนิคมทุ่งโพธิ์ทะเล, อำเภอเมืองกำแพงเพชร, จังหวัดกำแพงเพชร, 62000',
+ );
+ await expect(detailInNaturalPerson).toContainText('0842262228 ');
+ await expect(detailInNaturalPerson).toContainText(
+ 'ต่อเนื่องปศุสัตว์โรงฆ่าสัตว์ ชำแหละ ',
+ );
+ await expect(detailInNaturalPerson).toContainText('0');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการแสดงนายจ้างบุคคลธรรมดา', error);
+ throw error;
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงข้อมูลภายในของนายจ้างนิติบุคคลและนายจ้างบุคคลธรรมดา');
+});
+
+test('TC_2_4_008', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // ตรวจสอบการเข้าไปในนายจ้างนิติบุคคล
+ try {
+ await page.waitForSelector(
+ "//td[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัดAsiaTech Systems Co., Ltd.')]",
+ );
+ await page.click(
+ "//td[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัดAsiaTech Systems Co., Ltd.')]",
+ );
+ await page.waitForSelector(
+ 'id=btn-show-employee-บริษัท เอเชียเทค ซิสเต็มส์ จำกัด',
+ );
+ await page.click('id=btn-show-employee-บริษัท เอเชียเทค ซิสเต็มส์ จำกัด');
+
+ // เพิ่มลูกจ้างในนายจ้างนิติบุุคตล
+ await page.waitForSelector(
+ 'id=บริษัท เอเชียเทค ซิสเต็มส์ จำกัด-btn-add-employee',
+ );
+ await page.click('id=บริษัท เอเชียเทค ซิสเต็มส์ จำกัด-btn-add-employee');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill('id=form-employee-input-nrc-no', '2202292283202');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ fakerTH.person.firstName('male'),
+ );
+ await page.fill(
+ 'id=form-employee-input-last-name',
+ fakerTH.person.lastName(),
+ );
+ await page.fill(
+ 'id=form-employee-input-first-name-en',
+ fakerEN.person.firstName(),
+ );
+ await page.fill(
+ 'id=form-employee-input-last-name-en',
+ fakerEN.person.lastName(),
+ );
+
+ // วันเดือนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.waitForSelector("//div[text()='2000']");
+ await page.click("//div[text()='2000']");
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.waitForSelector("//div[text()='ก.พ.']");
+ await page.click("//div[text()='ก.พ.']");
+ await page.waitForSelector("//div[@id='2000-02-04']/div[1]");
+ await page.click("//div[@id='2000-02-04']/div[1]");
+
+ // เลือกเพศและสัญชาติ
+ await page.click('id=form-employee-select-gender');
+ await page.click('id=form-employee-select-gender_0');
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+
+ const employeeAddCompeleted = page.locator(
+ `(//tr[@id='row-table-${fakerEN.person.firstName()}'])[1]`,
+ );
+
+ await expect(employeeAddCompeleted).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการแสดงนายจ้างนิติบุคค]', error);
+ throw error;
+ }
+
+ // กลับไปสู่หน้าจัดการลูกค้า
+ await page.waitForSelector(
+ "//span[normalize-space(text())='จัดการลูกค้าภายในองค์กร']",
+ );
+ await page.click(
+ "//span[normalize-space(text())='จัดการลูกค้าภายในองค์กร']",
+ );
+
+ // ตรวจสอบการเข้าไปในนายจ้างบุคคลธรรมดา
+ try {
+ await page.waitForSelector(
+ "//td[contains(.,'นาย ยศพัฒน์ ธนากานต์Mr Yossapat Tanakarn')]",
+ );
+ await page.click(
+ "//td[contains(.,'นาย ยศพัฒน์ ธนากานต์Mr Yossapat Tanakarn')]",
+ );
+ await page.waitForSelector('id=btn-show-employee-ยศพัฒน์ ธนากานต์');
+ await page.click('id=btn-show-employee-ยศพัฒน์ ธนากานต์');
+
+ // เพิ่มลูกจ้างในนายจ้างนิติบุุคตล
+ await page.waitForSelector('id=ยศพัฒน์-btn-add-employee');
+ await page.click('id=ยศพัฒน์-btn-add-employee');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill('id=form-employee-input-nrc-no', '2202292283202');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ fakerTH.person.firstName('male'),
+ );
+ await page.fill(
+ 'id=form-employee-input-last-name',
+ fakerTH.person.lastName(),
+ );
+ await page.fill(
+ 'id=form-employee-input-first-name-en',
+ fakerEN.person.firstName(),
+ );
+ await page.fill(
+ 'id=form-employee-input-last-name-en',
+ fakerEN.person.lastName(),
+ );
+
+ // วันเดือนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.waitForSelector("//div[text()='2000']");
+ await page.click("//div[text()='2000']");
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.waitForSelector("//div[text()='ก.พ.']");
+ await page.click("//div[text()='ก.พ.']");
+ await page.waitForSelector("//div[@id='2000-02-04']/div[1]");
+ await page.click("//div[@id='2000-02-04']/div[1]");
+
+ // เลือกเพศและสัญชาติ
+ await page.click('id=form-employee-select-gender');
+ await page.click('id=form-employee-select-gender_0');
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+ await page.waitForSelector("(//button[@id='btn-info-basic-save'])[2]");
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+
+ const employeeAddCompeleted = page.locator(
+ `(//tr[@id='row-table-${fakerEN.person.firstName()}'])[1]`,
+ );
+
+ await expect(employeeAddCompeleted).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการแสดงนายจ้างบุคคลธรรมดา', error);
+ throw error;
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบสามารถเพิ่มลูกจ้างในนายจ้างนิติบุคคลและนายจ้างบุคคลธรรมดาได้',
+ );
+});
+
+test('TC_2_4_009', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // --------------------------------------สถานะนายจ้างนิติบุคคล-------------------------------------------
+ try {
+ // ----------------------------------------ปิดสถานะนายจ้างนิติบุคคล----------------------------------
+ await page.click('id=btn-kebab-action-อนุชา ศรีสวัสดิ์');
+
+ await page.click('id=btn-kebab-status-อนุชา ศรีสวัสดิ์', {
+ force: true,
+ });
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//tr[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด') and contains (.,'022022002')]",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgb(249, 250, 252)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ console.log('สีของแถวถูกเปลี่ยน Inactive');
+
+ // -----------------------------------------เปิดสถานะนายจ้างนิติบุคคล--------------------------------------------------
+ await page.click('id=btn-kebab-action-อนุชา ศรีสวัสดิ์');
+
+ await page.click('id=btn-kebab-status-อนุชา ศรีสวัสดิ์', {
+ force: true,
+ });
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowActiveOpenLocator = page.locator(
+ "//tr[contains(.,'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด') and contains (.,'022022002')]",
+ );
+ const backgroundActiveOpenColor = await rowActiveOpenLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedActiveOpenColor = 'rgb(249, 250, 252)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundActiveOpenColor.trim()).toBe(expectedActiveOpenColor);
+ console.log('สีของแถวถูกเปลี่ยนเป็น Active');
+ } catch (error) {
+ console.error('ไม่สามารถเปลี่ยนสถานะได้');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงข้อมูลภายในของนายจ้างนิติบุคคลและนายจ้างบุคคลธรรมดา');
+});
+
+test('TC_2_4_010', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเข้าหน้าแก้ไขนายจ้างนิติบุคคล
+ await page.click('id=btn-kebab-action-อนุชา ศรีสวัสดิ์');
+ await page.waitForSelector('id=btn-kebab-edit-อนุชา ศรีสวัสดิ์');
+ await page.click('id=btn-kebab-edit-อนุชา ศรีสวัสดิ์');
+
+ const pageHeadEditLegalPerson = page.locator(
+ "//span[text()='บริษัท เอเชียเทค ซิสเต็มส์ จำกัด']",
+ );
+
+ await expect(pageHeadEditLegalPerson).toHaveText(
+ 'บริษัท เอเชียเทค ซิสเต็มส์ จำกัด',
+ );
+
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@id='btn-info-cancel'])[1]");
+
+ // การเข้าหน้าแก้ไขนายจ้างบุคคลธรรมดา
+ await page.waitForSelector('id=btn-kebab-action-ยศพัฒน์');
+ await page.click('id=btn-kebab-action-ยศพัฒน์');
+ await page.waitForSelector('id=btn-kebab-edit-ยศพัฒน์');
+ await page.click('id=btn-kebab-edit-ยศพัฒน์');
+
+ const pageHeadEditNaturalPerson = page.locator(
+ "//span[text()='ยศพัฒน์ ธนากานต์']",
+ );
+
+ await expect(pageHeadEditNaturalPerson).toHaveText('ยศพัฒน์ ธนากานต์');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขนายจ้างนิติบุคคลและนายจ้างบุคคลธรรมดา');
+});
+
+test('TC_2_4_011', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const companyNameTH = fakerTH.company.name();
+ const companyNameEN = fakerEN.company.name();
+ const firstNameTH = fakerTH.person.firstName('male');
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const lastNameEN = fakerEN.person.firstName();
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // การเข้าหน้าแก้ไขนายจ้างนิติบุคคล
+ await page.click('id=btn-kebab-action-อนุชา ศรีสวัสดิ์');
+ await page.waitForSelector('id=btn-kebab-edit-อนุชา ศรีสวัสดิ์');
+ await page.click('id=btn-kebab-edit-อนุชา ศรีสวัสดิ์');
+
+ await page.fill('id=input-register-name', companyNameTH);
+ await page.fill('id=input-register-name-en', companyNameEN);
+
+ await page.click("(//button[@type='submit'])[1]");
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@id='btn-info-cancel'])[1]");
+
+ // ใช้ตัวแปรเดิมตรวจสอบผลลัพธ์
+ const pageHeadEditLegalPerson = page.locator(
+ `//tr[contains(.,'${companyNameTH}') and contains(.,'022022002')]`,
+ );
+
+ await expect(pageHeadEditLegalPerson).toContainText(companyNameTH);
+
+ // การเข้าหน้าแก้ไขนายจ้างบุคคลธรรมดา
+ await page.waitForSelector('id=btn-kebab-action-ยศพัฒน์');
+ await page.click('id=btn-kebab-action-ยศพัฒน์');
+ await page.waitForSelector('id=btn-kebab-edit-ยศพัฒน์');
+ await page.click('id=btn-kebab-edit-ยศพัฒน์');
+
+ await page.fill('id=info-input-first-name', firstNameTH);
+ await page.fill('id=info-input-last-name', lastNameTH);
+ await page.fill('id=info-input-first-name-en', firstNameEN);
+ await page.fill('id=info-input-last-name-en', lastNameEN);
+
+ await page.click("(//button[@type='submit'])[1]");
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@id='btn-info-cancel'])[1]");
+
+ // ใช้ตัวแปรเดิมตรวจสอบผลลัพธ์
+ const pageHeadEditNaturallPerson = page.locator(
+ `//tr[contains(.,'${firstNameTH} ${lastNameTH}') and contains (.,'--')]`,
+ );
+
+ await expect(pageHeadEditNaturallPerson).toContainText(firstNameTH);
+ await expect(pageHeadEditNaturallPerson).toContainText(lastNameTH);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขนายจ้างนิติบุคคลและนายจ้างบุคคลธรรมดาได้');
+});
+
+test('TC_2_4_012', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ตรวจสอบการแสดงหน้าเพิ่มลูกจ้าง
+ const pageAddEmployee = page.locator(
+ "//form[contains(.,'เพิ่ม ลูกจ้าง') and contains (.,'ยังไม่มีข้อมูลแสดงในตารางนี้')]",
+ );
+
+ await expect(pageAddEmployee).toContainText('เพิ่ม ลูกจ้าง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มลูกจ้าง');
+});
+
+test('TC_2_4_013', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const showTabPassport = page.locator(
+ 'id=dialog-tab-ข้อมูลหนังสือการเดินทาง',
+ );
+ const showTabVisa = page.locator('id=dialog-tab-ข้อมูล Visa');
+ const showTabHealthDetail = page.locator('id=dialog-tab-ข้อมูลสุขภาพ');
+ const showTabJobDetail = page.locator('id=dialog-tab-ข้อมูลการทำงาน');
+ const showTabMore = page.locator('id=dialog-tab-ข้อมูลอื่นๆ');
+
+ await expect(showTabPassport).toBeVisible;
+ await expect(showTabVisa).toBeVisible;
+ await expect(showTabHealthDetail).toBeVisible;
+ await expect(showTabJobDetail).toBeVisible;
+ await expect(showTabMore).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างลูกจ้างได้');
+});
+
+test('TC_2_4_014', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ await page.waitForSelector('id=dialog-tab-ข้อมูลสุขภาพ');
+ await page.click('id=dialog-tab-ข้อมูลสุขภาพ');
+
+ const showFormHealth = page.locator('id=employee-form-content');
+
+ await expect(showFormHealth).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงแท็ปข้อมูลสุขภาพครั้งที่ 1');
+});
+
+// test('TC_2_4_015', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+// const firstNameTH = fakerTH.person.firstName('male');
+// const middleNameTH = fakerTH.person.middleName();
+// const lastNameTH = fakerTH.person.lastName();
+// const firstNameEN = fakerEN.person.firstName();
+// const middleNameEN = fakerEN.person.middleName();
+// const lastNameEN = fakerEN.person.firstName();
+
+// // เข้าสู่เมนูลูกค้า
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-customer');
+// await page.click('id=sub-menu-customer');
+
+// // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+// await page.waitForSelector('id=tab-employee');
+// await page.click('id=tab-employee');
+// await page.waitForSelector('id=btn-add');
+// await page.click('id=btn-add');
+
+// // ส่วนข้อมูลพื้นฐาน
+// await page.click('id=form-employee-select-employer-branch');
+// await page.waitForSelector('id=form-employee-select-employer-branch_0');
+// await page.click('id=form-employee-select-employer-branch_0');
+// await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+// // ส่วนข้อมูลส่วนตัว
+// await page.click('id=form-employee-select-prefix-name');
+// await page.waitForSelector('id=form-employee-select-prefix-name_0');
+// await page.click('id=form-employee-select-prefix-name_0');
+// await page.fill(
+// "(//input[@id='form-employee-input-first-name'])[1]",
+// firstNameTH,
+// );
+// await page.fill('id=form-employee-input-last-name', lastNameTH);
+// await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+// await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+// // วันเดิิอนปีเกิด
+// await page.click('id=form-employee-input-birth-date');
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.click("//div[text()='1996']");
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+// await page.click("//div[text()='พ.ค.']");
+// await page.click("//div[@id='1996-05-02']/div[1]");
+
+// // สัญชาติ
+// await page.click('id=form-employee-select-nationality');
+// await page.waitForSelector('id=form-employee-select-nationality_2');
+// await page.click('id=form-employee-select-nationality_2');
+
+// await page.click('id=btn-info-basic-save');
+// await page.waitForTimeout(2000);
+
+// await page.waitForSelector('id=dialog-tab-ข้อมูลสุขภาพ');
+// await page.click('id=dialog-tab-ข้อมูลสุขภาพ');
+
+// const showFormHealth = page.locator('id=employee-form-content');
+
+// await expect(showFormHealth).toBeVisible;
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบแสดงแท็ปข้อมูลสุขภาพครั้งที่ 1');
+// });
+
+test('TC_2_4_016', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ await page.waitForSelector('id=dialog-tab-ข้อมูลการทำงาน');
+ await page.click('id=dialog-tab-ข้อมูลการทำงาน');
+
+ const showFormHealth = page.locator('id=employee-form-content');
+
+ await expect(showFormHealth).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงแท็ปข้อมูลการทำงาน');
+});
+
+// test('TC_2_4_017', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+// const firstNameTH = fakerTH.person.firstName('male');
+// const middleNameTH = fakerTH.person.middleName();
+// const lastNameTH = fakerTH.person.lastName();
+// const firstNameEN = fakerEN.person.firstName();
+// const middleNameEN = fakerEN.person.middleName();
+// const lastNameEN = fakerEN.person.firstName();
+
+// // เข้าสู่เมนูลูกค้า
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-customer');
+// await page.click('id=sub-menu-customer');
+
+// // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+// await page.waitForSelector('id=tab-employee');
+// await page.click('id=tab-employee');
+// await page.waitForSelector('id=btn-add');
+// await page.click('id=btn-add');
+
+// // ส่วนข้อมูลพื้นฐาน
+// await page.click('id=form-employee-select-employer-branch');
+// await page.waitForSelector('id=form-employee-select-employer-branch_0');
+// await page.click('id=form-employee-select-employer-branch_0');
+// await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+// // ส่วนข้อมูลส่วนตัว
+// await page.click('id=form-employee-select-prefix-name');
+// await page.waitForSelector('id=form-employee-select-prefix-name_0');
+// await page.click('id=form-employee-select-prefix-name_0');
+// await page.fill(
+// "(//input[@id='form-employee-input-first-name'])[1]",
+// firstNameTH,
+// );
+// await page.fill('id=form-employee-input-last-name', lastNameTH);
+// await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+// await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+// // วันเดิิอนปีเกิด
+// await page.click('id=form-employee-input-birth-date');
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.click("//div[text()='1996']");
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+// await page.click("//div[text()='พ.ค.']");
+// await page.click("//div[@id='1996-05-02']/div[1]");
+
+// // สัญชาติ
+// await page.click('id=form-employee-select-nationality');
+// await page.waitForSelector('id=form-employee-select-nationality_2');
+// await page.click('id=form-employee-select-nationality_2');
+
+// await page.click('id=btn-info-basic-save');
+// await page.waitForTimeout(2000);
+
+// await page.waitForSelector('id=dialog-tab-ข้อมูลการทำงาน');
+// await page.click('id=dialog-tab-ข้อมูลการทำงาน');
+
+// const showFormHealth = page.locator('id=employee-form-content');
+
+// await expect(showFormHealth).toBeVisible;
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบแสดงแท็ปข้อมูลการทำงาน');
+// });
+
+test('TC_2_4_018', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ await page.waitForSelector('id=dialog-tab-ข้อมูลอื่นๆ');
+ await page.click('id=dialog-tab-ข้อมูลอื่นๆ');
+
+ const showFormHealth = page.locator('id=employee-form-content');
+
+ await expect(showFormHealth).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงแท็ปข้อมูลอื่นๆ');
+});
+
+test('TC_2_4_019', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // เข้าหน้าแท็ปข้อมูลอื่นๆ
+ await page.waitForSelector('id=dialog-tab-ข้อมูลอื่นๆ');
+ await page.click('id=dialog-tab-ข้อมูลอื่นๆ');
+ await page.fill(
+ "(//input[@id='form-employee-input-citizen-id'])[1]",
+ '2201182726324',
+ );
+ await page.fill(
+ "(//input[@id='form-employee-input-citizen-id'])[2]",
+ '0882262262',
+ );
+ await page.fill('id=form-employee-input-father-first-name', firstNameTH);
+ await page.fill('id=form-employee-input-father-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-father-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-father-last-name-en', lastNameEN);
+ await page.fill('id=form-employee-input-mother-first-name', firstNameTH);
+ await page.fill('id=form-employee-input-mother-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-mother-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-mother-last-name-en', lastNameEN);
+ await page.waitForSelector("(//button[@id='btn-info-health-save'])[2]");
+ await page.click("(//button[@id='btn-info-health-save'])[2]");
+
+ const formEmployeeSave = page.locator('id=form-employee-other');
+ await expect(formEmployeeSave).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการบันทึกข้อมูลส่วนข้อมูลอื่นๆ');
+});
+
+// test('TC_2_4_020', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+// const firstNameTH = fakerTH.person.firstName('male');
+// const middleNameTH = fakerTH.person.middleName();
+// const lastNameTH = fakerTH.person.lastName();
+// const firstNameEN = fakerEN.person.firstName();
+// const middleNameEN = fakerEN.person.middleName();
+// const lastNameEN = fakerEN.person.firstName();
+
+// // เข้าสู่เมนูลูกค้า
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-customer');
+// await page.click('id=sub-menu-customer');
+
+// // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+// await page.waitForSelector('id=tab-employee');
+// await page.click('id=tab-employee');
+// await page.waitForSelector('id=btn-add');
+// await page.click('id=btn-add');
+
+// // ส่วนข้อมูลพื้นฐาน
+// await page.click('id=form-employee-select-employer-branch');
+// await page.waitForSelector('id=form-employee-select-employer-branch_0');
+// await page.click('id=form-employee-select-employer-branch_0');
+// await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+// // ส่วนข้อมูลส่วนตัว
+// await page.click('id=form-employee-select-prefix-name');
+// await page.waitForSelector('id=form-employee-select-prefix-name_0');
+// await page.click('id=form-employee-select-prefix-name_0');
+// await page.fill(
+// "(//input[@id='form-employee-input-first-name'])[1]",
+// firstNameTH,
+// );
+// await page.fill('id=form-employee-input-last-name', lastNameTH);
+// await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+// await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+// // วันเดิิอนปีเกิด
+// await page.click('id=form-employee-input-birth-date');
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.click("//div[text()='1996']");
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+// await page.click("//div[text()='พ.ค.']");
+// await page.click("//div[@id='1996-05-02']/div[1]");
+
+// // สัญชาติ
+// await page.click('id=form-employee-select-nationality');
+// await page.waitForSelector('id=form-employee-select-nationality_2');
+// await page.click('id=form-employee-select-nationality_2');
+
+// await page.click('id=btn-info-basic-save');
+// await page.waitForTimeout(2000);
+// //-------------------------------------เข้าหน้าแท็ปข้อมูลหนังสือเดินทาง----------------------------------
+// await page.waitForSelector('id=dialog-tab-ข้อมูล Visa');
+// await page.click('id=dialog-tab-ข้อมูล Visa');
+
+// // ส่วนข้อมูลหนังสือเดินทาง
+// await page.click(
+// "(//input[@id='drawer-info-employee-select-visa-type'])[3]",
+// );
+// await page.waitForSelector('id=drawer-info-employee-select-visa-type_0');
+// await page.click('id=drawer-info-employee-select-visa-type_0');
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-previous-passport-Number'])[2]",
+// 'TH202273',
+// );
+// await page.click(
+// "(//input[@id='drawer-info-employee-select-prefix-name'])[2]",
+// );
+// await page.waitForSelector('id=drawer-info-employee-select-prefix-name_0');
+// await page.click('iddrawer-info-employee-select-prefix-name_0');
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-first-name'])[2]",
+// firstNameTH,
+// );
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-last-name'])[2]",
+// lastNameTH,
+// );
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-first-name-en'])[2]",
+// firstNameEN,
+// );
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-last-name-en'])[2]",
+// lastNameEN,
+// );
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-passport-no'])[2]",
+// 'TH202322',
+// );
+// await page.click(
+// "(//input[@id='drawer-info-employee-input-birth-date'])[2]",
+// );
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.waitForSelector("//div[text()='2020']");
+// await page.click("//div[text()='2020']");
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[1]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+// await page.waitForSelector("//div[text()='ม.ค.']");
+// await page.click("//div[text()='ม.ค.']");
+// await page.waitForSelector("//div[@id='2020-01-02']/div[1]");
+// await page.click("//div[@id='2020-01-02']/div[1]");
+// await page.click("(//input[@aria-label='สัญชาติ'])[2]");
+// await page.waitForSelector('id=drawer-info-employee-select-visa-type_2');
+// await page.click('id=drawer-info-employee-select-visa-type_2');
+// await page.click(
+// "(//input[@id='drawer-info-employee-select-passport-country'])[2]",
+// );
+// await page.waitForSelector(
+// 'id=drawer-info-employee-select-passport-country_1',
+// );
+// await page.click('id=drawer-info-employee-select-passport-country_1');
+// await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+// // ตรวจสอบหลังจากทำการบันทึกข้อมูลหนังสือการเดินทาง
+// const formPassportSave = page.locator("(//div[@id='form-passport'])[2]");
+// await expect(formPassportSave).toBeVisible;
+
+// //-------------------------------------เข้าหน้าแท็ปข้อมูล Visa----------------------------------------
+// await page.waitForSelector('id=dialog-tab-ข้อมูล Visa');
+// await page.click('id=dialog-tab-ข้อมูล Visa');
+// await page.click(
+// "(//input[@id='drawer-info-employee-select-visa-type'])[3]",
+// );
+// await page.waitForSelector('id=drawer-info-employee-select-visa-type_0');
+// await page.click('id=drawer-info-employee-select-visa-type_0');
+// await page.fill(
+// "(//input[@aria-label='เลขที่ตรวจลงตรา'])[2]",
+// '2202202220',
+// );
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-visa-place'])[2]",
+// 'กรุงเทพ',
+// );
+// await page.click("(//input[@aria-label='ประเภทการตรวจลงตรา'])[2]");
+// await page.waitForSelector('id=drawer-info-employee-select-visa-type_1');
+// await page.click('id=drawer-info-employee-select-visa-type_1');
+// await page.fill(
+// "(//input[@aria-label='บัตรขาเข้า หมายเลข TM'])[2]",
+// '220322',
+// );
+// await page.click(
+// "(//input[@id='drawer-info-employee-date-picker-visa-enter'])[2]",
+// );
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[2]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+// await page.waitForSelector("//div[text()='2020']");
+// await page.click("//div[text()='2020']");
+// await page.waitForSelector(
+// "(//button[@class='dp__btn dp__month_year_select'])[1]",
+// );
+// await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+// await page.waitForSelector("//div[text()='ม.ค.']");
+// await page.click("//div[text()='ม.ค.']");
+// await page.waitForSelector("//div[@id='2020-01-08']/div[1]");
+// await page.click("//div[@id='2020-01-08']/div[1]");
+// await page.fill(
+// "(//input[@aria-label='เดินทางเข้ามาทางด่าน'])[2]",
+// 'แม่สอด',
+// );
+// await page.click(
+// "(//input[@id='drawer-info-employee-select-issue-country'])[2]",
+// );
+// await page.waitForSelector(
+// 'id=drawer-info-employee-select-issue-country_1',
+// );
+// await page.click('id=drawer-info-employee-select-issue-country_1');
+// await page.fill(
+// "(//input[@id='drawer-info-employee-input-entry-count'])[2]",
+// '300',
+// );
+// await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+// // ตรวจสอบหลังจากทำการบันทึกข้อมูล Visa
+// const formSaveVisa = page.locator("(//div[@id='form-visa'])[2]");
+// await expect(formSaveVisa).toBeVisible;
+
+// //-------------------------------------เข้าหน้าแท็ปข้อมูลสุขภาพ----------------------------------------
+// await page.waitForSelector('id=dialog-tab-ข้อมูลสุขภาพ');
+// await page.click('id=dialog-tab-ข้อมูลสุขภาพ');
+// await page.click('id=form-employee-select-health-checkresult');
+// await page.waitForSelector('id=form-employee-select-health-checkresult_0');
+// await page.click('id=form-employee-select-health-checkresult_0');
+// await page.click('id=form-employee-select-checkup-type');
+// await page.waitForSelector('id=form-employee-select-checkup-type_0');
+// await page.click('id=form-employee-select-checkup-type_0');
+// await page.fill('id=form-employee-input-hospital', 'โรงพยาบาลตากสิน');
+// await page.click('id=form-employee-select-province');
+// await page.waitForSelector('id=form-employee-select-province_0');
+// await page.click('id=form-employee-select-province_0');
+// await page.click("(//button[@id='btn-info-health-save'])[2]");
+
+// // ตรวจสอบหลังจากทำการบันทึกข้อมูลสุขภาพ
+// const formSaveHelath = page.locator('id=form-employee-checkup-0');
+// await expect(formSaveHelath).toBeVisible;
+
+// //-------------------------------------เข้าหน้าแท็ปข้อมูลการทำงาน-------------------------------------
+// await page.waitForSelector('id=dialog-tab-ข้อมูลการทำงาน');
+// await page.click('id=dialog-tab-ข้อมูลการทำงาน');
+// await page.fill("(//input[@id='form-employee-input-owner-name'])[1]",fakerTH.person.fullName())
+// await page.click("id=form-employee-select-province")
+// await page.waitForSelector("id=form-employee-select-province_0")
+// await page.click("id=form-employee-select-province_0")
+// await page.click("id=form-employee-select-job-type")
+// await page.waitForSelector("id=form-employee-select-job-type_0")
+// await page.click("id=form-employee-select-job-type_0")
+// await page.click("id=form-employee-select-position-name")
+// await page.waitForSelector("id=form-employee-select-position-name_0")
+// await page.click("id=form-employee-select-position-name_0")
+// await page.fill("(//input[@id='form-employee-input-owner-name'])[2]",'2022832028200')
+// await page.fill("(//input[@id='form-employee-input-owner-name'])[3]",'2202202930292')
+// await page.fill("(//input[@aria-label='สถานที่ออกใบอนุญาต'])[2]",'กรุงเทพ')
+// await page.click("(//button[@type='submit'])[2]")
+
+// // ตรวจสอบหลังจากทำการบันทึกข้อมูลการทำงาน
+// const formWorkSave = page.locator("")
+
+// //-------------------------------------เข้าหน้าแท็ปข้อมูลอื่นๆ-----------------------------------------
+// await page.waitForSelector('id=dialog-tab-ข้อมูลอื่นๆ');
+// await page.click('id=dialog-tab-ข้อมูลอื่นๆ');
+// await page.fill(
+// "(//input[@id='form-employee-input-citizen-id'])[1]",
+// '2201182726324',
+// );
+// await page.fill(
+// "(//input[@id='form-employee-input-citizen-id'])[2]",
+// '0882262262',
+// );
+// await page.fill('id=form-employee-input-father-first-name', firstNameTH);
+// await page.fill('id=form-employee-input-father-last-name', lastNameTH);
+// await page.fill('id=form-employee-input-father-first-name-en', firstNameEN);
+// await page.fill('id=form-employee-input-father-last-name-en', lastNameEN);
+// await page.fill('id=form-employee-input-mother-first-name', firstNameTH);
+// await page.fill('id=form-employee-input-mother-last-name', lastNameTH);
+// await page.fill('id=form-employee-input-mother-first-name-en', firstNameEN);
+// await page.fill('id=form-employee-input-mother-last-name-en', lastNameEN);
+// await page.waitForSelector("(//button[@id='btn-info-health-save'])[2]");
+// await page.click("(//button[@id='btn-info-health-save'])[2]");
+
+// const formEmployeeSave = page.locator('id=form-employee-other');
+// await expect(formEmployeeSave).toBeVisible;
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบทำการบันทึกข้อมูลส่วนข้อมูลอื่นๆ');
+// });
+
+test('TC_2_4_021', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const showTabPassport = page.locator(
+ 'id=dialog-tab-ข้อมูลหนังสือการเดินทาง',
+ );
+ const showTabVisa = page.locator('id=dialog-tab-ข้อมูล Visa');
+ const showTabHealthDetail = page.locator('id=dialog-tab-ข้อมูลสุขภาพ');
+ const showTabJobDetail = page.locator('id=dialog-tab-ข้อมูลการทำงาน');
+ const showTabMore = page.locator('id=dialog-tab-ข้อมูลอื่นๆ');
+
+ await expect(showTabPassport).toBeVisible;
+ await expect(showTabVisa).toBeVisible;
+ await expect(showTabHealthDetail).toBeVisible;
+ await expect(showTabJobDetail).toBeVisible;
+ await expect(showTabMore).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างลูกจ้างได้');
+});
+
+test('TC_2_4_022', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ // ส่วนข้อมูลที่อยู่
+ await page.click('id=form-employee-custom');
+ await page.fill('id=form-employee-input-address-no', '200/20');
+ await page.fill("(//input[@id='form-employee-input-moo'])[1]", '2');
+ await page.fill("(//input[@id='form-employee-input-soi'])[1]", '20');
+ await page.fill(
+ "(//input[@id='form-employee-input-street'])[1]",
+ 'สุขุมวิท',
+ );
+ await page.click('id=form-employee-select-province');
+ await page.waitForSelector('id=form-employee-select-province_0');
+ await page.click('id=form-employee-select-province_0');
+ await page.click('id=form-employee-select-district');
+ await page.waitForSelector('id=form-employee-select-district_0');
+ await page.click('id=form-employee-select-district_0');
+ await page.click('id=form-employee-select-sub-district');
+ await page.waitForSelector('id=form-employee-select-sub-district_0');
+ await page.click('id=form-employee-select-sub-district_0');
+ await page.fill('id=form-employee-input-address-en', '200/20');
+ await page.fill("(//input[@id='form-employee-input-moo'])[2]", '2');
+ await page.fill("(//input[@id='form-employee-input-soi'])[2]", '20');
+ await page.fill(
+ "(//input[@id='form-employee-input-street'])[2]",
+ 'Sukumvit',
+ );
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบหลังจากบันทึก
+ const checkEmployeeCreate = page.locator(
+ `//td[contains(.,'${firstNameEN}') and contains(.,'${lastNameEN}') and contains(.,'${firstNameTH}') and contains(.,'${lastNameTH}')]`,
+ );
+
+ await expect(checkEmployeeCreate).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างลูกจ้างได้');
+});
+
+test('TC_2_4_023', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ // ส่วนข้อมูลที่อยู่
+ await page.click('id=form-employee-custom');
+ await page.fill('id=form-employee-input-address-no', '200/20');
+ await page.fill("(//input[@id='form-employee-input-moo'])[1]", '2');
+ await page.fill("(//input[@id='form-employee-input-soi'])[1]", '20');
+ await page.fill(
+ "(//input[@id='form-employee-input-street'])[1]",
+ 'สุขุมวิท',
+ );
+ await page.click('id=form-employee-select-province');
+ await page.waitForSelector('id=form-employee-select-province_0');
+ await page.click('id=form-employee-select-province_0');
+ await page.click('id=form-employee-select-district');
+ await page.waitForSelector('id=form-employee-select-district_0');
+ await page.click('id=form-employee-select-district_0');
+ await page.click('id=form-employee-select-sub-district');
+ await page.waitForSelector('id=form-employee-select-sub-district_0');
+ await page.click('id=form-employee-select-sub-district_0');
+ await page.fill('id=form-employee-input-address-en', '200/20');
+ await page.fill("(//input[@id='form-employee-input-moo'])[2]", '2');
+ await page.fill("(//input[@id='form-employee-input-soi'])[2]", '20');
+ await page.fill(
+ "(//input[@id='form-employee-input-street'])[2]",
+ 'Sukumvit',
+ );
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบหลังจากบันทึก
+ const checkEmployeeCreate = page.locator(
+ `//tr[contains(.,'${firstNameEN} ${lastNameEN}') and contains (.,'${firstNameTH} ${lastNameTH}')]`,
+ );
+
+ await expect(checkEmployeeCreate).toBeVisible;
+
+ await expect(checkEmployeeCreate).toBeVisible;
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงข้อมูลลูกจ้างหลังสร้างถูกต้อง');
+});
+
+test('TC_2_4_024', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+
+ // ----------------------------------------- การทำ Inactive ลูกจ้าง -----------------------------------------
+ const kebabAction = page.locator(`id=btn-kebab-action-${firstNameTH}`);
+ await kebabAction.waitFor();
+ await kebabAction.click();
+
+ const kebabStatus = page
+ .locator(`id=btn-kebab-status-${firstNameTH}`)
+ .nth(0);
+ await kebabStatus.click({ force: true });
+
+ const okDialog = page.locator('id=btn-ok-dialog');
+ await okDialog.click();
+ console.log('✅ เปลี่ยนสถานะเป็น Inactive สำเร็จ');
+
+ // ตรวจสอบสีของแถวหลังจากเปลี่ยนเป็น Inactive
+ const rowLocator = page.locator(
+ `//div[normalize-space(text())='${firstNameTH} ${lastNameTH}']`,
+ );
+ await expect(rowLocator).toHaveCSS('background-color', 'rgba(0, 0, 0, 0)');
+ console.log('✅ สีของแถวถูกเปลี่ยนเป็นสีเทาอ่อน');
+
+ // ---------------------------------------------- การทำ Active ลูกจ้าง ----------------------------------------
+ await kebabAction.waitFor();
+ await page.waitForTimeout(2000);
+ await kebabAction.click();
+
+ await kebabStatus.click({ force: true });
+
+ await okDialog.click();
+ console.log('✅ เปลี่ยนสถานะเป็น Active สำเร็จ');
+
+ // ตรวจสอบสีของแถวหลังจากเปลี่ยนเป็น Active
+ await expect(rowLocator).toHaveCSS('background-color', 'rgba(0, 0, 0, 0)');
+ console.log('✅ สีของแถวถูกเปลี่ยนเป็นสีขาว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถทำการ Active/InActive ลูกจ้างได้');
+});
+
+test('TC_2_4_025', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ // การเปลี่ยนจำนวนในตารางจากแสดง 30 คน เป็น 1000 คน
+ await page.click("//span[normalize-space(text())='30']");
+ await page.waitForSelector("//div[normalize-space(text())='1000']");
+ await page.click("//div[normalize-space(text())='1000']");
+
+ // การแก้ไขลูกจ้าง
+ await page.waitForTimeout(2000);
+ await page.click(`id=btn-kebab-action-${firstNameTH}`);
+ await page.waitForSelector(`id=btn-kebab-edit-${firstNameTH}`);
+ await page.click(`id=btn-kebab-edit-${firstNameTH}`);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขลูกจ้าง');
+});
+
+test('TC_2_4_026', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ // การเปลี่ยนจำนวนในตารางจากแสดง 30 คน เป็น 1000 คน
+ await page.click("//span[normalize-space(text())='30']");
+ await page.waitForSelector("//div[normalize-space(text())='1000']");
+ await page.click("//div[normalize-space(text())='1000']");
+
+ // การแก้ไขลูกจ้าง
+ await page.waitForTimeout(2000);
+ await page.click(`id=btn-kebab-action-${firstNameTH}`);
+ await page.waitForSelector(`id=btn-kebab-edit-${firstNameTH}`);
+ await page.click(`id=btn-kebab-edit-${firstNameTH}`);
+
+ await page.fill(
+ "(//input[@id='drawer-info-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=drawer-info-employee-input-last-name', lastNameTH);
+ await page.fill('id=drawer-info-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=drawer-info-employee-input-last-name-en', lastNameEN);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForSelector("(//button[@id='btn-info-close'])[2]");
+ await page.click("(//button[@id='btn-info-close'])[2]");
+
+ const checkEditSave = page.locator(
+ ` //tr[contains(.,'${firstNameEN}') and contains (.,'${lastNameEN}') and contains (.,'${firstNameTH}') and contains (.,'${lastNameTH}')]`,
+ );
+
+ await expect(checkEditSave).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขลูกจ้างได้');
+});
+
+test('TC_2_4_027', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // สร้างค่าชื่อบริษัทที่เหมือนกันทั้งภาษาไทยและอังกฤษ
+ const firstNameTH = fakerTH.person.firstName('male');
+ const middleNameTH = fakerTH.person.middleName();
+ const lastNameTH = fakerTH.person.lastName();
+ const firstNameEN = fakerEN.person.firstName();
+ const middleNameEN = fakerEN.person.middleName();
+ const lastNameEN = fakerEN.person.firstName();
+
+ // เข้าสู่เมนูลูกค้า
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-customer');
+ await page.click('id=sub-menu-customer');
+
+ // เข้าแท็ปลูกจ้างเพื่อทำการเพิ่มลูกจ้าง
+ await page.waitForSelector('id=tab-employee');
+ await page.click('id=tab-employee');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=form-employee-select-employer-branch');
+ await page.waitForSelector('id=form-employee-select-employer-branch_0');
+ await page.click('id=form-employee-select-employer-branch_0');
+ await page.fill('id=form-employee-input-nrc-no', '1223423112342');
+
+ // ส่วนข้อมูลส่วนตัว
+ await page.click('id=form-employee-select-prefix-name');
+ await page.waitForSelector('id=form-employee-select-prefix-name_0');
+ await page.click('id=form-employee-select-prefix-name_0');
+ await page.fill(
+ "(//input[@id='form-employee-input-first-name'])[1]",
+ firstNameTH,
+ );
+ await page.fill('id=form-employee-input-last-name', lastNameTH);
+ await page.fill('id=form-employee-input-first-name-en', firstNameEN);
+ await page.fill('id=form-employee-input-last-name-en', lastNameEN);
+ // วันเดิิอนปีเกิด
+ await page.click('id=form-employee-input-birth-date');
+ await page.waitForSelector(
+ "(//button[@class='dp__btn dp__month_year_select'])[2]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='1996']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='พ.ค.']");
+ await page.click("//div[@id='1996-05-02']/div[1]");
+
+ // สัญชาติ
+ await page.click('id=form-employee-select-nationality');
+ await page.waitForSelector('id=form-employee-select-nationality_2');
+ await page.click('id=form-employee-select-nationality_2');
+
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+
+ // การเปลี่ยนจำนวนในตารางจากแสดง 30 คน เป็น 1000 คน
+ await page.click("//span[normalize-space(text())='30']");
+ await page.waitForSelector("//div[normalize-space(text())='1000']");
+ await page.click("//div[normalize-space(text())='1000']");
+
+ // การแก้ไขลูกจ้าง
+ await page.waitForTimeout(2000);
+ await page.click(`id=btn-kebab-action-${firstNameTH}`);
+ await page.waitForSelector(`id=btn-kebab-edit-${firstNameTH}`);
+ await page.click(`id=btn-kebab-edit-${firstNameTH}`);
+
+ await page.click(
+ "(//div[@id='drawer-info-employee-select-employer-branch'])[1]",
+ );
+ await page.waitForSelector(
+ 'id=drawer-info-employee-select-employer-branch_1',
+ );
+ await page.click('id=drawer-info-employee-select-employer-branch_1');
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.waitForSelector("(//button[@id='btn-info-close'])[2]");
+ await page.click("(//button[@id='btn-info-close'])[2]");
+
+ const checkEditSave = page.locator(
+ `//tr[contains(.,'${firstNameEN}') and contains (.,'บริษัท สยาม เอ็นเนอร์จี โซลูชั่น จำกัด')]`,
+ );
+
+ await expect(checkEditSave).toContainText(
+ 'บริษัท สยาม เอ็นเนอร์จี โซลูชั่น จำกัด',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขนายจ้างในลูกจ้างได้');
+});
diff --git a/tests/01-Manage/MenuPersonel.spec.ts b/tests/01-Manage/MenuPersonel.spec.ts
new file mode 100644
index 00000000..06c21b3b
--- /dev/null
+++ b/tests/01-Manage/MenuPersonel.spec.ts
@@ -0,0 +1,1295 @@
+import { test, expect, Page } from '@playwright/test';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('http://192.168.1.62:20101/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_2_2_001', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าจัดการบุคลากร');
+});
+
+test('TC_2_2_002', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เข้าสู่หน้าเพิ่มบุคลการ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ const pageAddPersonel = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ const dialogFormInformation = page.locator('id=dialog-form-information');
+ const dialogFormPersonal = page.locator('id=dialog-form-personal');
+ const dialogFormInAddress = page.locator('id=dialog-form-address');
+
+ await expect(pageAddPersonel).toHaveText('เพิ่มบุคลากร');
+ await expect(dialogFormInformation).toBeVisible();
+ await expect(dialogFormPersonal).toBeVisible();
+ await expect(dialogFormInAddress).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มบุคลากร');
+});
+
+test('TC_2_2_003', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เข้าสู่หน้าเพิ่มบุคลการ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ // await page.click("//i[@aria-hidden='false']");
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_12');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'employeem');
+ await page.click('id=select-user-type');
+ await page.click('id=select-user-type_0');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_2');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'ธรรมรงด์');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'ดำรงธรรม');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Thamrong');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Dumrongtum',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'employeem@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='ชาย']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2000']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2000-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2010']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2010-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-regis-no', '2822282222421');
+ await page.click('id=input-start-date');
+ await page.click("//div[text()='11']");
+ await page.click('id=input-retire-date');
+ await page.click("//div[text()='21']");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ await page.waitForSelector;
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='ธรรมรงด์ ดำรงธรรม']",
+ );
+
+ const displayName = (await displayNameLocator.textContent())?.trim() || '';
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('ธรรมรงด์ ดำรงธรรม');
+ console.log(displayName);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการเพิ่มพนักงาน');
+});
+
+test('TC_2_2_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[2]");
+ await page.click("(//div[@role='tab'])[2]");
+
+ // เข้าหน้าแก้ไขพนักงาน
+ await page.waitForSelector('id=btn-kebab-action-employeem');
+ await page.click('id=btn-kebab-action-employeem');
+ await page.waitForSelector('id=btn-kebab-edit-employeem');
+ await page.click('id=btn-kebab-edit-employeem');
+
+ // แก้ไขข้อมูลพนักงาน
+ await page.fill(
+ "(//input[@id='drawer-info-personnel-input-first-name'])[1]",
+ 'ณัฐวัฒน์',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name', 'วงศ์อนันต์');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Nattawat');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Wonganan');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ await page.waitForSelector;
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='ณัฐวัฒน์ วงศ์อนันต์']",
+ );
+
+ const displayName = (await displayNameLocator.textContent())?.trim() || '';
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('ณัฐวัฒน์ วงศ์อนันต์');
+ console.log(displayName);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแก้ไขข้อมูลพนักงานได้');
+});
+
+test('TC_2_2_005', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[2]");
+ await page.click("(//div[@role='tab'])[2]");
+
+ // สร้างบุคลากรเพื่อทำการลบ
+ // เข้าสู่หน้าเพิ่มบุคลการ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ // await page.click("//i[@aria-hidden='false']");
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_12');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'employeetest');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_2');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'อารม');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'คมมา');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Aram');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Proma');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'employeem@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='ชาย']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2000']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2000-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2010']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2010-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-regis-no', '2822282222421');
+ await page.click('id=input-start-date');
+ await page.click("//div[text()='11']");
+ await page.click('id=input-retire-date');
+ await page.click("//div[text()='21']");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // การลบบุคลากร
+ await page.waitForSelector('id=btn-kebab-action-employeetest');
+ await page.click('id=btn-kebab-action-employeetest');
+ await page.waitForSelector('id=btn-kebab-delete-employeetest');
+ await page.click('id=btn-kebab-delete-employeetest');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลังจากทำการลบ
+ const personalDeletedCheck = page.locator(
+ "//tr[contains(.,'อารม คมมา') and contains (.,'employeetest@mail.comAgent')]",
+ );
+
+ await expect(personalDeletedCheck).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบการลบบุคลากรออกจากระบบ');
+});
+
+test('TC_2_2_006', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[3]");
+ await page.click("(//div[@role='tab'])[3]");
+
+ // เข้าสู่หน้าเพิ่มบุคลการ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_12');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'courierw');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_6');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'มาตา');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'ลดา');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Mata');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Lada');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'courierw@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='หญิง']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2002']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2002-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2012']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2012-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-regis-no', '2822282222421');
+ await page.click('id=input-start-date');
+ await page.click("//div[text()='11']");
+ await page.click('id=input-retire-date');
+ await page.click("//div[text()='21']");
+ await page.click('id=input-responsible-area');
+ await page.waitForSelector('id=input-responsible-area_7');
+ await page.click('id=input-responsible-area_7');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='มาตา ลดา']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('มาตา ลดา');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างพนักงานส่งเอกสาร');
+});
+
+test('TC_2_2_007', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[3]");
+ await page.click("(//div[@role='tab'])[3]");
+
+ // เปิดหน้าแก้ไขพนักงานส่งเอกสาร
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-kebab-action-courierw');
+ await page.waitForSelector('id=btn-kebab-edit-courierw');
+ await page.click('id=btn-kebab-edit-courierw');
+
+ // แก้ไขชื่อพนักงานส่งเอกสาร
+ await page.fill(
+ "(//input[@id='drawer-info-personnel-input-first-name'])[1]",
+ 'อริสรา',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name', 'ธนาพร');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Arisara');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Thanaporn');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='อริสรา ธนาพร']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('อริสรา ธนาพร');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแก้ไขพนักงานส่งเอกสาร');
+});
+
+test('TC_2_2_008', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[3]");
+ await page.click("(//div[@role='tab'])[3]");
+
+ // ทดสอบการเพิ่มบุคลากรเพื่อทำการลบ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_12');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'test');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_6');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'ปริญญา');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'สุขเกษม');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Parinya');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Sukkasem');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'courierw@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='หญิง']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2002']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2002-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2012']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2012-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-regis-no', '2822282222421');
+ await page.click('id=input-start-date');
+ await page.click("//div[text()='11']");
+ await page.click('id=input-retire-date');
+ await page.click("//div[text()='21']");
+ await page.click('id=input-responsible-area');
+ await page.waitForSelector('id=input-responsible-area_7');
+ await page.click('id=input-responsible-area_7');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // การลบบุคลากร
+ await page.waitForSelector('id=btn-kebab-action-test');
+ await page.click('id=btn-kebab-action-test');
+ await page.waitForSelector('id=btn-kebab-delete-test');
+ await page.click('id=btn-kebab-delete-test');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ const courierDeletedCheck = page.locator(
+ "//div[normalize-space(text())='ปริญญา สุขเกษม']",
+ );
+
+ await expect(courierDeletedCheck).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแก้ไขพนักงานส่งเอกสาร');
+});
+
+test('TC_2_2_009', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[4]");
+ await page.click("(//div[@role='tab'])[4]");
+
+ // ทดสอบการเพิ่มบุคลากรตัวแทน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'delegatem');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_8');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'อาคม');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'พลัง');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Akom');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Palang');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'delegatem@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='ชาย']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2004']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2004-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2014']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2014-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-discount-condition', 'ทดสอบข้อมูลการทำงาน');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='อาคม พลัง']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('อาคม พลัง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างตัวแทน');
+});
+
+test('TC_2_2_010', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[4]");
+ await page.click("(//div[@role='tab'])[4]");
+
+ // เปิดหน้าแก้ไขพนักงานส่งเอกสาร
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-kebab-action-delegatem');
+ await page.waitForSelector('id=btn-kebab-edit-delegatem');
+ await page.click('id=btn-kebab-edit-delegatem');
+
+ // แก้ไขชื่อพนักงานส่งเอกสาร
+ await page.fill(
+ "(//input[@id='drawer-info-personnel-input-first-name'])[1]",
+ 'ชยาภัสร์',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name', 'นาคินทร์');
+ await page.fill(
+ 'id=drawer-info-personnel-input-first-name-en',
+ 'Chayaphat',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Nakin');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='ชยาภัสร์ นาคินทร์']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('ชยาภัสร์ นาคินทร์');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแก้ไขตัวแทนได้');
+});
+
+test('TC_2_2_011', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[4]");
+ await page.click("(//div[@role='tab'])[4]");
+
+ // ทดสอบการเพิ่มบุคลากรเพื่อทำการลบ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'testdelegatem');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_8');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'อธิวัฒน์');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'พงษ์ศิริ');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Athiwat');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Phongsiri');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'delegatem@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='ชาย']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2004']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2004-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2014']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2014-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.fill('id=input-discount-condition', 'ทดสอบข้อมูลการทำงาน');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+
+ // ทำการลบตัวแทน
+ await page.waitForSelector('id=btn-kebab-action-testdelegatem');
+ await page.click('id=btn-kebab-action-testdelegatem');
+ await page.waitForSelector('id=btn-kebab-delete-testdelegatem');
+ await page.click('id=btn-kebab-delete-testdelegatem');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลีงจากทำการบุคลากรตัวแทน
+ const checkDelegatemDeleted = page.locator(
+ "//div[normalize-space(text())='อธิวัฒน์ พงษ์ศิริ']",
+ );
+ await expect(checkDelegatemDeleted).toBeHidden();
+ await page.waitForTimeout(2000);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบตัวแทนออกจากระบบได้');
+});
+
+test('TC_2_2_012', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[5]");
+ await page.click("(//div[@role='tab'])[5]");
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_12');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'agencyw');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_2');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'ธิดา');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'งามตา');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Thida');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Yamta');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill('id=form-dialog-personnel-input-email', 'agencyw@mail.com');
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='หญิง']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2006']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2006-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2016']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2016-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.click('id=input-source-nationality');
+ await page.click("(//div[@role='option'])[1]");
+ await page.click('id=input-import-nationality');
+ await page.click("(//div[@role='option'])[1]");
+ await page.click('id=select-trainig-place');
+ await page.click("//span[text()='สถานที่อบรมแรงงานเมียนมา-แม่สอด จ.ตาก']");
+ await page.fill('id=input-checkpoint', 'แม่สอด');
+ await page.fill('id=input-checkpoint-en', 'Maesod');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='ธิดา งามตา']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('ธิดา งามตา');
+
+ await page.waitForTimeout(2000);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถสร้างบุคลากรเอเจนซี่ได้');
+});
+
+test('TC_2_2_013', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[5]");
+ await page.click("(//div[@role='tab'])[5]");
+
+ // เปิดหน้าแก้ไขบุคลากรเอเจนซี่
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-kebab-action-agencyw');
+ await page.click('id=btn-kebab-action-agencyw');
+ await page.waitForSelector('id=btn-kebab-edit-agencyw');
+ await page.click('id=btn-kebab-edit-agencyw');
+
+ // แก้ไขชื่อพบัคลากรเอเจนซี่
+ await page.fill(
+ "(//input[@id='drawer-info-personnel-input-first-name'])[1]",
+ 'นวพร',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name', 'จารุวัฒน์ ');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Nawaporn');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Jaruwat');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ดึงข้อมูลจาก Locator และนำ .textContent() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='นวพร จารุวัฒน์']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('นวพร จารุวัฒน์');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารแก้ไขบุคลากรเอเจนซี่ได้');
+});
+
+test('TC_2_2_014', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าบุคลากร
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-personnel');
+ await page.click('id=sub-menu-personnel');
+
+ // เปิดแท็ปพนักงาน
+ await page.waitForSelector("(//div[@role='tab'])[5]");
+ await page.click("(//div[@role='tab'])[5]");
+
+ // ทดสอบการเพิ่มบุคลากรเพื่อทำการลบ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector('id=select-hq-id', {
+ state: 'visible',
+ });
+ await page.click('id=select-hq-id');
+ await page.click('id=select-hq-id_12');
+
+ await page.waitForSelector('id=select-br-id', { state: 'visible' });
+ await page.click('id=select-br-id');
+ await page.click('id=select-br-id_4');
+ await page.fill('id=input-username', 'agencytest');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_8');
+ // await page.click("//div[@role='option']");
+
+ // กรอกชื่อข้อมูลพื้นฐาน
+ await page.fill('id=input-citizen-id', '1282262422820');
+ await page.click(
+ "//label[@for='form-dialog-personnel-select-prefix-name']",
+ );
+ await page.click('id=form-dialog-personnel-select-prefix-name_0');
+ await page.fill('id=form-dialog-personnel-input-first-name', 'กิตติศักดิ์');
+ await page.fill('id=form-dialog-personnel-input-last-name', 'วรากุล');
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'Kittisak');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Warakul');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'delegatem@mail.com',
+ );
+
+ // เลือกเพศ
+ await page.click('id=form-dialog-personnel-select-gender');
+ await page.click("//span[text()='ชาย']");
+
+ // เลือกวันเกิด
+ await page.click('id=form-dialog-personnel-input-birth-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2004']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2004-01-02']/div[1]");
+
+ // วันออกบัตร
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2014']");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[1]");
+ await page.click("//div[text()='ม.ค.']");
+ await page.click("//div[@id='2014-01-02']/div[1]");
+
+ // กรอกที่อยู่
+ await page.fill('id=drawer-info-personnel-input-address-no', '20/1');
+ await page.click('id=drawer-info-personnel-select-province');
+ await page.waitForSelector('id=drawer-info-personnel-select-province_6', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-province_6');
+ await page.click('id=drawer-info-personnel-select-district');
+ await page.waitForSelector('id=drawer-info-personnel-select-district_2', {
+ state: 'visible',
+ });
+ await page.click('id=drawer-info-personnel-select-district_2');
+ await page.click('id=drawer-info-personnel-select-sub-district');
+ await page.waitForSelector(
+ 'id=drawer-info-personnel-select-sub-district_1',
+ {
+ state: 'visible',
+ },
+ );
+ await page.click('id=drawer-info-personnel-select-sub-district_1');
+
+ // กรอกที่อยู่ภาษาอังกฤษ
+ await page.fill('id=drawer-info-personnel-input-address-en', '20/01');
+
+ // กรอกข้อมูลการทำงาน
+ await page.click('id=input-source-nationality');
+ await page.click("(//div[@role='option'])[1]");
+ await page.click('id=input-import-nationality');
+ await page.click("(//div[@role='option'])[1]");
+ await page.click('id=select-trainig-place');
+ await page.click("//span[text()='สถานที่อบรมแรงงานเมียนมา-แม่สอด จ.ตาก']");
+ await page.fill('id=input-checkpoint', 'แม่สอด');
+ await page.fill('id=input-checkpoint-en', 'Maesod');
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ await page.click('id=btn-info-basic-save');
+
+ // ทำการลบตัวแทน
+ await page.waitForSelector('id=btn-kebab-action-agencytest');
+ await page.click('id=btn-kebab-action-agencytest');
+ await page.waitForSelector('id=btn-kebab-delete-agencytest');
+ await page.click('id=btn-kebab-delete-agencytest');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลีงจากทำการบุคลากรตัวแทน
+ const checkDelegatemDeleted = page.locator(
+ "//div[normalize-space(text())='กิตติศักดิ์ วรากุล']",
+ );
+ await expect(checkDelegatemDeleted).toBeHidden();
+ await page.waitForTimeout(2000);
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบบุคคลากรเอเจนซี่ออกจากระบบได้');
+});
diff --git a/tests/01-Manage/MenuProductandService.spec.ts b/tests/01-Manage/MenuProductandService.spec.ts
new file mode 100644
index 00000000..20669f6b
--- /dev/null
+++ b/tests/01-Manage/MenuProductandService.spec.ts
@@ -0,0 +1,1602 @@
+import { test, expect, Page } from '@playwright/test';
+import { faker, fakerEN, fakerTH } from '@faker-js/faker';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_3_3_001', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ const titleNameProductAndService = page.locator(
+ "//div[@id='app-content']/div[1]/div[1]/span[1]",
+ );
+ await expect(titleNameProductAndService).toHaveText('สินค้าและบริการ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบเข้าสู่หน้าสินค้าและบริการ');
+});
+
+test('TC_3_3_002', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ await page.click('id=btn-add');
+
+ const titleGroupProductAndService = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ await expect(titleGroupProductAndService).toHaveText(
+ 'เพิ่มกลุ่มสินค้าและบริการ',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มกลุ่มสินค้าและบริการ');
+});
+
+test('TC_3_3_003', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill("(//input[@id='input-name'])[2]", 'ค่าบริการ');
+ await page.click('id=btn-info-basic-save');
+
+ const checkGroupProductAndServiceCreate = page.locator(
+ "//div[normalize-space(text())='ค่าบริการ']",
+ );
+ await expect(checkGroupProductAndServiceCreate).toHaveText('ค่าบริการ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการเพิ่มกลุ่มสินค้าและบริการ');
+});
+
+test('TC_3_3_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ await page.click('id=btn-add');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@role='alert'])[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่ไม่กรอกข้อมูล');
+});
+
+test('TC_3_3_005', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ await page.click('id=btn-add');
+ await page.fill("(//input[@id='input-name'])[2]", 'กลุ่มทดสอบ');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบแจ้งเตือนในกรณีที่กรอกชื่อกลุ่มสินค้าแต่ไม่เลือกสาขาที่ลงทะเบียน',
+ );
+});
+
+test('TC_3_3_006', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่เลือกสาขาที่ลงทะเบียนแต่ไม่กรอกชื่อ');
+});
+
+test('TC_3_3_007', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การแก้ไขกลุ่มสินค้าและบริการ
+ await page.click("(//button[@id='btn-kebab-action-ค่าบริการ'])[2]");
+ await page.waitForSelector('id=btn-kebab-edit-ค่าบริการ');
+ await page.click('id=btn-kebab-edit-ค่าบริการ');
+
+ await page.fill('id=input-name', 'ค่าบริการและสินค้า');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบหลังจากทำการแก้ไข
+ const editGroupAndService = page.locator(
+ "//div[normalize-space(text())='ค่าบริการและสินค้า']",
+ );
+ await expect(editGroupAndService).toHaveText('ค่าบริการและสินค้า');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขกลุ่มสินค้าและบริการได้');
+});
+
+test('TC_3_3_008', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การลบกลุ่มสินค้าและบริการ
+ await page.click(
+ "(//button[@id='btn-kebab-action-ค่าบริการและสินค้า'])[2]",
+ );
+ await page.waitForSelector('id=btn-kebab-delete-ค่าบริการและสินค้า');
+ await page.click('id=btn-kebab-delete-ค่าบริการและสินค้า');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลังจากทำการลบ
+ const deleteGroupAndService = page.locator(
+ "//div[normalize-space(text())='ค่าบริการและสินค้า']",
+ );
+ await expect(deleteGroupAndService).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบสามารถทำการลบกลุ่มสินค้าและบริการในกรณีที่ยังไม่มีการใช้งานได้',
+ );
+});
+
+test('TC_3_3_009', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // ทดสอบการเพิ่มกลุ่มสินค้าและบริการ
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill("(//input[@id='input-name'])[2]", 'ค่าธรรมเนียม');
+ await page.click('id=btn-info-basic-save');
+
+ // ทดสอบการเพิ่มสินค้าเพื่อทดสอบการลบ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector("(//input[@id='select-br-id'])[1]");
+ await page.click("(//input[@id='select-br-id'])[1]");
+ await page.waitForSelector('id=select-br-id_0');
+ await page.click('id=select-br-id_0');
+ await page.fill("(//input[@id='input-name'])[2]", 'ค่าธรรมเนียมอื่นๆ');
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+ await page.reload();
+
+ // // การลบกลุ่มสินค้าและบริการ
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@id='btn-kebab-action-ค่าธรรมเนียม'])[2]");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบสีของปุ่ม "ลบ" ว่ากลายเป็นสีเทาหรือไม่
+ const deleteText = page.locator("//span[text()='ลบ']");
+ const color = await deleteText.evaluate((el) => {
+ const style = window.getComputedStyle(el);
+ return style.color; // ตรวจสอบค่า color ของปุ่ม
+ });
+
+ const expectedColor = 'rgb(125, 130, 130)'; // ค่าสีเทาที่คาดหวัง (คุณสามารถปรับสีตามที่ระบบของคุณใช้งาน)
+ expect(color).toBe(expectedColor);
+ console.log('✅ ปุ่ม "ลบ" เปลี่ยนเป็นสีเทา');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบไม่สามารถทำการลบกลุ่มสินค้าและบริการในกรณีที่มีการใช้งานได้',
+ );
+});
+
+test('TC_3_3_010', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ตรวจสอบหน้าการเพิ่มสินค้า
+ const pageCreateProduceAndService = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+
+ await expect(pageCreateProduceAndService).toHaveText(
+ 'เพิ่มสินค้าและบริการ',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบเข้าสู่หน้าเพิ่มสินค้าและบริการ');
+});
+
+test('TC_3_3_011', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.waitForSelector("(//input[@id='select-br-id'])[1]");
+ await page.click("(//input[@id='select-br-id'])[1]");
+ await page.waitForSelector('id=select-br-id_0');
+ await page.click('id=select-br-id_0');
+ await page.fill("(//input[@id='input-name'])[2]", 'ค่าธรรมเนียมการเดินทาง');
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//input[@id='select-br-id'])[2]");
+ await page.click("(//input[@id='select-br-id'])[2]");
+ await page.waitForSelector('id=select-br-id_1');
+ await page.click('id=select-br-id_1');
+ await page.waitForTimeout(1000);
+
+ // ส่วนข้อมูลราคา
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.fill('id=input-price', '2000');
+ await page.fill('id=input-agent-price', '1000');
+ await page.fill('id=input-service-charge', '500');
+ await page.waitForTimeout(1000);
+
+ // // ส่วนข้อมูลเอกสาร
+ // await page.click("(//div[@role='listitem'])[3]");
+ // await page.waitForSelector("//div[normalize-space(text())='เลือกเอกสาร']");
+ // await page.click("//div[normalize-space(text())='เลือกเอกสาร']");
+ // await page.waitForSelector("(//div[@class='q-checkbox__bg absolute'])[1]");
+ // await page.click("(//div[@class='q-checkbox__bg absolute'])[1]");
+
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบหน้าการเพิ่มสินค้า
+ const createProductAndService = page.locator(
+ "//div[normalize-space(text())='ค่าธรรมเนียมการเดินทาง']",
+ );
+
+ await expect(createProductAndService).toHaveText('ค่าธรรมเนียมการเดินทาง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มสินค้าและบริการได้');
+});
+
+test('TC_3_3_012', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@role='alert'])[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนในกรณีที่ไม่กรอกข้อมูล');
+});
+
+test('TC_3_3_013', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.fill("(//input[@id='input-name'])[2]", 'ธรรมเนียม');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนในกรณีที่ไม่เลือกรหัสสินค้า');
+});
+
+test('TC_3_3_014', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-br-id'])[1]");
+ await page.waitForSelector('id=select-br-id_0');
+ await page.click('id=select-br-id_0');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนในกรณีที่ไม่กรอกชื่อสินค้า');
+});
+
+test('TC_3_3_015', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การแก้ไขสินค้าและบริการ
+ await page.waitForSelector('id=btn-kebab-action-ค่าธรรมเนียมการเดินทาง');
+ await page.click('id=btn-kebab-action-ค่าธรรมเนียมการเดินทาง');
+ await page.waitForSelector('id=btn-kebab-edit-ค่าธรรมเนียมการเดินทาง');
+ await page.click('id=btn-kebab-edit-ค่าธรรมเนียมการเดินทาง');
+ await page.fill(
+ "(//input[@id='input-name'])[2]",
+ 'ค่าธรรมเนียมประกันสังคม',
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบการแก้ไขสินค้าและบริการ
+ const editProductAndService = page.locator(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+
+ await expect(editProductAndService).toHaveText('ค่าธรรมเนียมประกันสังคม');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขสินค้าได้');
+});
+
+test('TC_3_3_016', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การเพิ่มสินค้า
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // เพิ่มสินค้าเพื่อทดสอบการลบ
+ await page.waitForSelector("(//input[@id='select-br-id'])[1]");
+ await page.click("(//input[@id='select-br-id'])[1]");
+ await page.waitForSelector('id=select-br-id_0');
+ await page.click('id=select-br-id_0');
+ await page.fill("(//input[@id='input-name'])[2]", 'ค่าธรรมเนียม MOU');
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//input[@id='select-br-id'])[2]");
+ await page.click("(//input[@id='select-br-id'])[2]");
+ await page.waitForSelector('id=select-br-id_1');
+ await page.click('id=select-br-id_1');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ // การลบสินค้า
+ await page.waitForSelector('id=btn-kebab-action-ค่าธรรมเนียม MOU');
+ await page.click('id=btn-kebab-action-ค่าธรรมเนียม MOU');
+ await page.waitForSelector('id=btn-kebab-delete-ค่าธรรมเนียม MOU');
+ await page.click('id=btn-kebab-delete-ค่าธรรมเนียม MOU');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบการลบสินค้า
+ const deleteProductAndService = page.locator(
+ "//div[normalize-space(text())='ค่าธรรมเนียม MOU']",
+ );
+
+ await expect(deleteProductAndService).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถทำการลบสินค้าในกรณีที่ยังไม่มีการใช้งานได้');
+});
+
+test('TC_3_3_017', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-สินค้าและบริการ-ค่าธรรมเนียม');
+
+ // การลบสินค้า
+ await page.waitForSelector('id=btn-kebab-action-ค่าธรรมเนียมประกันสังคม');
+ await page.click('id=btn-kebab-action-ค่าธรรมเนียมประกันสังคม');
+ await page.waitForSelector('id=btn-kebab-delete-ค่าธรรมเนียมประกันสังคม');
+ await page.click('id=btn-kebab-delete-ค่าธรรมเนียมประกันสังคม');
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(1000);
+
+ // ตรวจสอบการลบสินค้า
+ const popUpWraningDeleteProduct = page.locator(
+ "//span[normalize-space(text())='สินค้าและบริการใช้งานอยู่']",
+ );
+
+ await expect(popUpWraningDeleteProduct).toHaveText(
+ 'สินค้าและบริการใช้งานอยู่',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบไม่สามารถทำการลบสินค้าในกรณีที่มีการใช้งานได้');
+});
+
+test('TC_3_3_018', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const pageCreatePackage = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ await expect(pageCreatePackage).toHaveText('เพิ่มแพ็คเกจ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบเข้าสู่หน้าเพิ่มแพ็คเกจ');
+});
+
+test('TC_3_3_019', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//button[contains(.,'จัดการ')]");
+ await page.click("//button[contains(.,'จัดการ')]");
+ await page.waitForSelector("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.click("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.fill('id=input-work-name-9', 'ค่าดำเนินการ');
+ await page.waitForSelector('id=btn-save-work-name');
+ await page.click('id=btn-save-work-name');
+ await page.waitForSelector("(//button[@id='btn-form-close'])[2]");
+ await page.click("(//button[@id='btn-form-close'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//div[normalize-space(text())='ค่าดำเนินการ']");
+ await page.click("//div[normalize-space(text())='ค่าดำเนินการ']");
+
+ // เพิ่มสินค้า
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[1]");
+ await page.click("(//button[@id='btn-add-work-product'])[1]");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.click(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-form-submit');
+
+ // เพิ่มขั้นตอนการทำงาน
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+ await page.waitForSelector('id=undefined');
+ await page.click('id=undefined');
+ await page.waitForSelector('id=undefined_0');
+ await page.click('id=undefined_0');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const packageCreate = page.locator(
+ "//div[normalize-space(text())='มติครม 2568']",
+ );
+ await expect(packageCreate).toHaveText('มติครม 2568');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารเพิ่มแพ็คเกจได้');
+});
+
+test('TC_3_3_020', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@role='alert'])[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่ไม่กรอกข้อมูล');
+});
+
+test('TC_3_3_021', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.fill('id=input-service-name', 'มติ ครม');
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่ไม่กรอกรหัสแพ็คเกจ');
+});
+
+test('TC_3_3_022', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.fill('id=input-service-code', 'MOU');
+ await page.click('id=btn-info-basic-save');
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่ไม่กรอกชื่อแพ็คเกจ');
+});
+
+test('TC_3_3_023', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติ ครม');
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบการแจ้งเตือน
+ const headPopUpError = page.locator(
+ "//span[normalize-space(text())='แจ้งเตือน']",
+ );
+ const popUpDetailError = page.locator(
+ "//span[normalize-space(text())='ข้อมูลงวดไม่ถูกต้อง กรุณาตรวจสอบและยืนยันว่าแต่ละงวดมีสินค้าอย่างน้อยหนึ่งรายการ']",
+ );
+
+ await expect(headPopUpError).toHaveText('แจ้งเตือน');
+ await expect(popUpDetailError).toHaveText(
+ 'ข้อมูลงวดไม่ถูกต้อง กรุณาตรวจสอบและยืนยันว่าแต่ละงวดมีสินค้าอย่างน้อยหนึ่งรายการ',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่ไม่กรอกข้อมูลส่วนข้อมูลงาน');
+});
+
+test('TC_3_3_024', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//button[contains(.,'จัดการ')]");
+ await page.click("//button[contains(.,'จัดการ')]");
+ await page.waitForSelector("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.click("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.fill('id=input-work-name-10', 'ยื่นคำร้อง');
+ await page.waitForSelector('id=btn-save-work-name');
+ await page.click('id=btn-save-work-name');
+ await page.waitForSelector("(//button[@id='btn-form-close'])[2]");
+ await page.click("(//button[@id='btn-form-close'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//div[normalize-space(text())='ยื่นคำร้อง']");
+ await page.click("//div[normalize-space(text())='ยื่นคำร้อง']");
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const createNameWork = page.locator(
+ "(//span[@class='app-text-muted-2'])[1]",
+ );
+ await expect(createNameWork).toHaveText('ยื่นคำร้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการเลือกงานในแพ็คเกจได้');
+});
+
+test('TC_3_3_025', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมรวม']",
+ );
+ await page.click("//div[normalize-space(text())='ค่าธรรมเนียมรวม']");
+
+ // เพิ่มสินค้า
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[1]");
+ await page.click("(//button[@id='btn-add-work-product'])[1]");
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const pageProduct = page.locator(
+ "(//div[contains(@class,'col text-subtitle1')])[2]",
+ );
+ await expect(pageProduct).toHaveText('สินค้าและบริการทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าสินค้าและบริการในแพ็คเกจ');
+});
+
+test('TC_3_3_026', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//button[contains(.,'จัดการ')]");
+ await page.click("//button[contains(.,'จัดการ')]");
+ await page.waitForSelector("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.click("//span[normalize-space(text())='เพิ่มงาน']");
+ await page.fill('id=input-work-name-11', 'ค่าธรรมเนียมรวม');
+ await page.waitForSelector('id=btn-save-work-name');
+ await page.click('id=btn-save-work-name');
+ await page.waitForSelector("(//button[@id='btn-form-close'])[2]");
+ await page.click("(//button[@id='btn-form-close'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมรวม']",
+ );
+ await page.click("//div[normalize-space(text())='ค่าธรรมเนียมรวม']");
+
+ // เพิ่มสินค้า
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[1]");
+ await page.click("(//button[@id='btn-add-work-product'])[1]");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.click(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-form-submit');
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const createProduct = page.locator(
+ "//span[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await expect(createProduct).toHaveText('ค่าธรรมเนียมประกันสังคม');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการเพิ่มสินค้าในแพ็คเกจได้');
+});
+
+test('TC_3_3_027', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมรวม']",
+ );
+ await page.click("//div[normalize-space(text())='ค่าธรรมเนียมรวม']");
+
+ // เพิ่มขั้นตอนการทำงาน
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const pageProperties = page.locator(
+ "(//div[contains(@class,'col text-subtitle1')])[2]",
+ );
+ await expect(pageProperties).toHaveText('คุณสมบัติ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าคุณสมบัติ');
+});
+
+test('TC_3_3_028', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมรวม']",
+ );
+ await page.click("//div[normalize-space(text())='ค่าธรรมเนียมรวม']");
+
+ // เพิ่มขั้นตอนการทำงาน
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+ await page.waitForSelector('id=undefined');
+ await page.click('id=undefined');
+ await page.waitForSelector('id=undefined_0');
+ await page.click('id=undefined_0');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const createProperties = page.locator(
+ "//span[@class='app-text-muted']/following-sibling::span[1]",
+ );
+ await expect(createProperties).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มแม่แบบขั้นตอนการทำงานในแพ็คเกจได้');
+});
+
+test('TC_3_3_029', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2568');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมรวม']",
+ );
+ await page.click("//div[normalize-space(text())='ค่าธรรมเนียมรวม']");
+
+ // เพิ่มขั้นตอนการทำงาน
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+ await page.waitForSelector('id=undefined');
+ await page.click('id=undefined');
+ await page.waitForSelector('id=undefined_0');
+ await page.click('id=undefined_0');
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@aria-expanded='false'])[2]");
+ await page.waitForSelector('id=list-workerStatus');
+ await page.click('id=list-workerStatus');
+ await page.click('id=list-contactChannel');
+ await page.waitForTimeout(1000);
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+
+ // ตรวจสอบหลังจากเปิดหน้าเพิ่มแพ็คเกจ
+ const propertiesWorkerStatus = page.locator(
+ "(//span[contains(@class,'surface-2 bordered')])[3]",
+ );
+ const propertiesContactChannel = page.locator(
+ "(//span[contains(@class,'surface-2 bordered')]/following-sibling::span)[3]",
+ );
+ await expect(propertiesWorkerStatus).toHaveText('สถานะคนงาน');
+ await expect(propertiesContactChannel).toHaveText('ช่องทางการติดต่อ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มคุณสมบัติในแม่แบบขั้นตอนในแพ็คเกจได้');
+});
+
+test('TC_3_3_030', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การแก้ไขแพ็คเกจ
+ await page.click("//button[@id='btn-kebab-action-มติครม 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-มติครม 2568']");
+ await page.click("//div[@id='btn-kebab-edit-มติครม 2568']");
+ await page.fill('id=input-service-name', 'มติครม ประจำปี 2568');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ const editPackageCheck = page.locator(
+ "//div[normalize-space(text())='มติครม ประจำปี 2568']",
+ );
+ await expect(editPackageCheck).toHaveText('มติครม ประจำปี 2568');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขแพ็คเกจได้');
+});
+
+test('TC_3_3_031', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าสินค้าและบริการ
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-productService');
+ await page.click('id=sub-menu-productService');
+
+ // การเข้าสู่หน้าสินค้าและบริการ
+ await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-ค่าธรรมเนียม');
+ await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+ await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+ // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนข้อมูลแพ็คเกจ
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'มติครม 2567');
+
+ // ส่วนข้อมูลงาน
+ await page.waitForSelector("(//div[@role='listitem'])[2]");
+ await page.click("(//div[@role='listitem'])[2]");
+ await page.click("(//button[@id='btn-add-work'])[1]");
+ await page.waitForSelector("//div[@for='select-work-name-1']");
+ await page.click("//div[@for='select-work-name-1']");
+ await page.waitForSelector("//div[normalize-space(text())='ค่าดำเนินการ']");
+ await page.click("//div[normalize-space(text())='ค่าดำเนินการ']");
+
+ // เพิ่มสินค้า
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[1]");
+ await page.click("(//button[@id='btn-add-work-product'])[1]");
+ await page.waitForSelector(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.click(
+ "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-form-submit');
+
+ // เพิ่มขั้นตอนการทำงาน
+ await page.waitForTimeout(1000);
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+ await page.waitForSelector('id=undefined');
+ await page.click('id=undefined');
+ await page.waitForSelector('id=undefined_0');
+ await page.click('id=undefined_0');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ // การทำการลบแพ็คเกจ
+ await page.waitForSelector("//button[@id='btn-kebab-action-มติครม 2567']");
+ await page.click("//button[@id='btn-kebab-action-มติครม 2567']");
+ await page.waitForSelector("//div[@id='btn-kebab-delete-มติครม 2567']");
+ await page.click("//div[@id='btn-kebab-delete-มติครม 2567']");
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบหลังจากทำการลบแพ็คเกจ
+ const deletedPackageCompleted = page.locator(
+ "//div[normalize-space(text())='มติครม 2567']",
+ );
+
+ await expect(deletedPackageCompleted).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถทำการลบแพ็คเกจในกรณีที่ยังไม่มีการใช้งานได้');
+});
+
+// test('TC_3_3_032', async () => {
+// if (!isLoginSuccessful) {
+// await login(page);
+// }
+// try {
+// // เข้าสู่หน้าสินค้าและบริการ
+// await page.click('id=menu.manage');
+// await page.waitForSelector('id=sub-menu-productService');
+// await page.click('id=sub-menu-productService');
+
+// // การเข้าสู่หน้าสินค้าและบริการ
+// await page.waitForSelector('id=tree-enter-ค่าธรรมเนียม');
+// await page.click('id=tree-enter-ค่าธรรมเนียม');
+// await page.waitForSelector('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+// await page.click('id=tree-enter-แพ็คเกจ-ค่าธรรมเนียม');
+
+// // การเข้าสู่หน้าเพิ่มแพ็คเกจ
+// await page.waitForSelector('id=btn-add');
+// await page.click('id=btn-add');
+
+// // ส่วนข้อมูลแพ็คเกจ
+// await page.fill('id=input-service-code', 'MOU');
+// await page.fill('id=input-service-name', 'มติครม 2567');
+
+// // ส่วนข้อมูลงาน
+// await page.waitForSelector("(//div[@role='listitem'])[2]");
+// await page.click("(//div[@role='listitem'])[2]");
+// await page.click("(//button[@id='btn-add-work'])[1]");
+// await page.waitForSelector("//div[@for='select-work-name-1']");
+// await page.click("//div[@for='select-work-name-1']");
+// await page.waitForSelector("//div[normalize-space(text())='ค่าดำเนินการ']");
+// await page.click("//div[normalize-space(text())='ค่าดำเนินการ']");
+
+// // เพิ่มสินค้า
+// await page.waitForSelector("(//button[@id='btn-add-work-product'])[1]");
+// await page.click("(//button[@id='btn-add-work-product'])[1]");
+// await page.waitForSelector(
+// "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+// );
+// await page.click(
+// "//div[normalize-space(text())='ค่าธรรมเนียมประกันสังคม']",
+// );
+// await page.waitForTimeout(1000);
+// await page.click('id=btn-form-submit');
+
+// // เพิ่มขั้นตอนการทำงาน
+// await page.waitForTimeout(1000);
+// await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+// await page.click("(//button[@id='btn-add-work-product'])[2]");
+// await page.waitForSelector('id=undefined');
+// await page.click('id=undefined');
+// await page.waitForSelector('id=undefined_0');
+// await page.click('id=undefined_0');
+// await page.waitForSelector('id=btn-form-submit');
+// await page.click('id=btn-form-submit');
+
+// await page.waitForTimeout(1000);
+// await page.click('id=btn-info-basic-save');
+
+// // การทำการลบแพ็คเกจ
+// await page.waitForSelector("//button[@id='btn-kebab-action-มติครม 2567']");
+// await page.click("//button[@id='btn-kebab-action-มติครม 2567']");
+// await page.waitForSelector("//div[@id='btn-kebab-delete-มติครม 2567']");
+// await page.click("//div[@id='btn-kebab-delete-มติครม 2567']");
+// await page.waitForSelector('id=btn-ok-dialog');
+// await page.click('id=btn-ok-dialog');
+
+// // ตรวจสอบหลังจากทำการลบแพ็คเกจ
+// const deletedPackageCompleted = page.locator(
+// "//div[normalize-space(text())='มติครม 2567']",
+// );
+
+// await expect(deletedPackageCompleted).toBeHidden();
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+// isLoginSuccessful = false;
+// throw error;
+// }
+// await page.waitForTimeout(2000);
+// console.log('ระบบสามารถทำการลบแพ็คเกจในกรณีที่ยังไม่มีการใช้งานได้');
+// });
diff --git a/tests/01-Manage/MenuWorkflow.spec.ts b/tests/01-Manage/MenuWorkflow.spec.ts
new file mode 100644
index 00000000..7a9a4a33
--- /dev/null
+++ b/tests/01-Manage/MenuWorkflow.spec.ts
@@ -0,0 +1,1277 @@
+import { test, expect, Page } from '@playwright/test';
+import { fakerEN, fakerTH } from '@faker-js/faker';
+import e from 'express';
+import { isAwaitExpression } from 'typescript';
+import { parseCache } from 'vue/compiler-sfc';
+import AppDropdown from 'src/components/app/AppDropdown.vue';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+ // เข้าสู่หน้าแม่แบบขั้นตอนการทำงาน
+ await page.click('id=menu.manage');
+ await page.waitForSelector('id=sub-menu-workflow');
+ await page.click('id=sub-menu-workflow');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_2_0_001', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ const titleNameProductAndService = page.locator(
+ "//div[@id='app-content']/div[1]/div[1]/span[1]",
+ );
+ await expect(titleNameProductAndService).toHaveText(
+ 'แม่แบบขั้นตอนการทำงาน',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบเข้าสู่หน้าแม่แบบขั้นตอนการทำงาน');
+});
+
+test('TC_2_0_002', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ const titleNameProductAndService = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ await expect(titleNameProductAndService).toHaveText(
+ 'แม่แบบขั้นตอนการทำงาน',
+ );
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มแม่แบบขั้นตอนการทำงาน');
+});
+
+test('TC_2_0_003', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การดำเนินการ 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click('id=select-responsible-institution-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-messenger');
+ await page.click('id=list-messenger');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ const createWorkflowName = page.locator(
+ "//section[normalize-space(text())='การดำเนินการ 2568']",
+ );
+ await expect(createWorkflowName).toHaveText('การดำเนินการ 2568');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถสร้างแม่แบบขั้นตอนการทำงานได้');
+});
+
+test('TC_2_0_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ const expectedErrors = [
+ {
+ locator: "(//div[@role='alert'])[1]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ {
+ locator: "(//div[@role='alert'])[2]",
+ message: 'จำเป็นต้องกรอกข้อมูลนี้',
+ },
+ ];
+ for (const error of expectedErrors) {
+ const locator = page.locator(error.locator);
+ await expect(locator).toHaveText(error.message);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.click('id=btn-form-close');
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการแจ้งเตือนในกรณีที่ไม่กรอกข้อมูล');
+});
+
+test('TC_2_0_005', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2568']");
+ await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2568']");
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขแม่แบบขั้นตอนการทำงานได้');
+});
+
+test('TC_2_0_006', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2568']");
+ await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2568']");
+ await page.fill(
+ "//input[@aria-label='ชื่อขั้นตอน']",
+ 'การดำเนินการ ตามมติ 2568',
+ );
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ const editWorkFlow = page.locator(
+ "//td[contains(.,'การดำเนินการ ตามมติ 2568')]",
+ );
+ await expect(editWorkFlow).toHaveText('การดำเนินการ ตามมติ 2568');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขแม่แบบขั้นตอนการทำงานได้');
+});
+
+test('TC_2_0_007', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.click(
+ "//button[@id='btn-kebab-action-การดำเนินการ ตามมติ 2568']",
+ );
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-delete-การดำเนินการ ตามมติ 25688']",
+ );
+ await page.click("//div[@id='btn-kebab-delete-การดำเนินการ ตามมติ 25688']");
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ const deletedWorkFlow = page.locator(
+ "//td[contains(.,'การดำเนินการ ตามมติ 2568')]",
+ );
+ await expect(deletedWorkFlow).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบแม่แบบขั้นตอนการทำงานได้');
+});
+
+test('TC_2_0_008', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ //-----------------------ทดสอบการสร้างชื่อแม่แบบขั้นจอนการทำงาน------------------------------------
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การดำเนินการ 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click('id=select-responsible-institution-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-messenger');
+ await page.click('id=list-messenger');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ //-----------------------------ทดสอลการสร้างชื่อซ้ำ-------------------------------------
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การดำเนินการ 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click('id=select-responsible-institution-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-messenger');
+ await page.click('id=list-messenger');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ // ตรวจสอบการสร้างชื่อซำ้
+ const workflowSameNameError = page.locator(
+ "//span[normalize-space(text())='ชื่อนี้ถูกใช้ไปแล้ว']",
+ );
+ await expect(workflowSameNameError).toHaveText('ชื่อนี้ถูกใช้ไปแล้ว');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแจ้งเตือนในกรณีที่สร้างชื่อแม่แบบขั้นตอนการทำงานซ้ำกัน');
+});
+
+test('TC_2_0_009', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การดำเนินการ 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+
+ const pageCreateWorkFlowFirst = page.locator("(//div[@id='item-up'])[2]");
+ await expect(pageCreateWorkFlowFirst).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงขั้นตอนการทำงานขั้นตอนที่ 1');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_010', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การประเมิน 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click('id=select-responsible-institution-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]",
+ );
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-messenger');
+ await page.click('id=list-messenger');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ const createWorkflowName = page.locator(
+ "//section[normalize-space(text())='การประเมิน 2568']",
+ );
+ await expect(createWorkflowName).toHaveText('การประเมิน 2568');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบทำการสร้างแม่แบบขั้นตอนการทำงาน');
+});
+
+test('TC_2_0_011', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขแขั้นตอนการทำงาน
+ await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ const pageEditWorkFlowFirst = page.locator(
+ "(//div[@id='item-up']//div)[1]",
+ );
+ await expect(pageEditWorkFlowFirst).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าแก้ไขขั้นตอนการทำงาน');
+});
+
+test('TC_2_0_012', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขแขั้นตอนการทำงาน
+ await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-designForm');
+ await page.click('id=list-designForm');
+ await page.waitForSelector('id=list-quotationNo');
+ await page.click('id=list-quotationNo');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForSelector('id=select-responsible-institution-0-drawer');
+ await page.click('id=select-responsible-institution-0-drawer');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(1000);
+ await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']");
+
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การประเมิน 2568']",
+ );
+ await page.click("//div[@id='btn-kebab-view-detail-การประเมิน 2568']");
+ const editWorkFlowFirst = page.locator(
+ "//span[normalize-space(text())='ออกแบบฟอร์ม']",
+ );
+ const editWorkFlowSeconde = page.locator(
+ "//span[normalize-space(text())='Quotation No.']",
+ );
+ const editWorkFlowAgencies = page.locator(
+ "//span[normalize-space(text())='จัดหางานพื้นที่']",
+ );
+
+ await expect(editWorkFlowFirst).toBeVisible();
+ await expect(editWorkFlowSeconde).toBeVisible();
+ await expect(editWorkFlowAgencies).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขขั้นตอนการทำงานได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_013', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // ลบขั้นตอนการทำงาน
+ await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']");
+ await page.waitForSelector('id=btn-delete-work');
+ await page.click('id=btn-delete-work');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(1000);
+ await page.click(
+ "//button[@id='btn-kebab-action-cm78fi5u50004lj1yczab47oa']",
+ );
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การประเมิน 2568']",
+ );
+ await page.click("//div[@id='btn-kebab-view-detail-การประเมิน 2568']");
+
+ const deleteProcessStep = page.locator("(//div[@id='item-up']//div)[1]");
+
+ await expect(deleteProcessStep).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบขั้นตอนการทำงานได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_014', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'การดำเนินการ 2567',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.fill("(//textarea[@aria-label='รายละเอียด'])[2]", 'รายละเอียด');
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+ await page.waitForTimeout(1000);
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']");
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']",
+ );
+ await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']");
+
+ const detailProcessStep = page.locator(
+ "//div[normalize-space(text())='รายละเอียด']",
+ );
+ await expect(detailProcessStep).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารบันทึกรายละเอียดได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_015', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2567']");
+ await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2567']");
+ await page.fill(
+ "//div[normalize-space(text())='รายละเอียด']",
+ 'แก้ไขรายละเอียด',
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(1000);
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']");
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']",
+ );
+ await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']");
+
+ const detailProcessStep = page.locator(
+ "//div[normalize-space(text())='รายละเอียด']",
+ );
+ await expect(detailProcessStep).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารแก้ไขรายละเอียดได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_016', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']");
+ await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2567']");
+ await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2567']");
+ await page.fill("//div[normalize-space(text())='รายละเอียด']", '');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(1000);
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']");
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']",
+ );
+ await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']");
+
+ const deleteDetailProcessStep = page.locator(
+ "//div[normalize-space(text())='รายละเอียด']",
+ );
+ await expect(deleteDetailProcessStep).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(
+ 'ระบบสามารลบรายละเอียดได้โดยในรายละเอียดหากไม่มีข้อมูลจะแสดง "-"',
+ );
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_017', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+
+ const nameResoinsiblePerson = page.locator("(//div[@role='menu']//div)[1]");
+ await expect(nameResoinsiblePerson).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงรายชื่อบุคลากรเพื่อให้เลิือกผู้รับผิดชอบ');
+ await page.keyboard.press('Escape');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_018', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.click('id=select-responsible-person-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]",
+ );
+ await page.waitForSelector("(//button[@id='btn-info-basic-save'])[2]");
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ // ดูรายละเอียกหลังเพิ่มผู้รับผิดชอบ
+ await page.waitForTimeout(1000);
+ await page.click(
+ "//button[@id='btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม']",
+ );
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม']",
+ );
+ await page.click(
+ "//div[@id='btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม']",
+ );
+
+ const nameResoinsiblePersonCreate = page.locator(
+ "//div[@class='column q-pl-md']",
+ );
+ await expect(nameResoinsiblePersonCreate).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มผู้รับผิดชอบได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_019', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขผู้รับผิดชอบ
+ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม');
+ await page.waitForSelector(
+ 'id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+ await page.click('id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม');
+ await page.click('id=select-responsible-person-0-drawer');
+ await page.waitForSelector('id=select-responsible-person-0-สามารถ-drawer');
+ await page.click('id=select-responsible-person-0-สามารถ-drawer');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ // ดูรายละเอียดหลังแก้ไขผู้รับผิดชอบ
+
+ await page.click("id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม'");
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+ await page.click(
+ 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+
+ const nameResoinsiblePersonEdit = page.locator(
+ "//div[@class='column q-pl-md']",
+ );
+ await expect(nameResoinsiblePersonEdit).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขผู้รับผิดชอบได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_020', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขผู้รับผิดชอบ
+ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม');
+ await page.waitForSelector(
+ 'id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+ await page.click('id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม');
+ await page.click('id=select-responsible-person-0-drawer');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]",
+ );
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-info-basic-save');
+
+ // ดูรายละเอียดหลังลบผู้รับผิดชอบ
+ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+ await page.click(
+ 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม',
+ );
+
+ const nameResoinsiblePersonEdit = page.locator(
+ "//div[@class='column q-pl-md']",
+ );
+ await expect(nameResoinsiblePersonEdit).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบผู้รับผิดชอบได้');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_021', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'กระบวนการดำเนินงาน 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]");
+ await page.click("(//button[@id='btn-add-work-product'])[2]");
+
+ const pageAddProperties = page.locator(
+ "(//div[contains(@class,'col text-subtitle1')])[2]",
+ );
+ await expect(pageAddProperties).toHaveText('คุณสมบัติ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเพิ่มคุณสมบัติ');
+ await page.click("(//button[@id='btn-form-close'])[2]");
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_022', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'กระบวนการดำเนินงาน 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-serviceRecordName');
+ await page.click('id=list-serviceRecordName');
+ await page.waitForTimeout(1000);
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const addPropertiesProcessStep = page.locator(
+ "(//span[contains(@class,'surface-2 bordered')])[2]",
+ );
+ await expect(addPropertiesProcessStep).toHaveText('บันทึกบริการ_Name');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มคุณสมบัติได้');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_023', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+
+ // ส่วนชื่อแม่แบบ
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@aria-label='ชื่อขั้นตอน'])[2]",
+ 'กระบวนการดำเนินงาน 2568',
+ );
+
+ // ส่วนขั้นตอนการทำงาน
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม');
+ await page.waitForSelector('id=btn-add-work-product-0-dialog');
+ await page.click('id=btn-add-work-product-0-dialog');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-messenger');
+ await page.click('id=list-messenger');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(1000);
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+ await page.waitForTimeout(1000);
+
+ // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ
+ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568',
+ );
+ await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const addPropertiesProcessStep = page.locator(
+ "//span[normalize-space(text())='พนักงานส่งเอกสาร']",
+ );
+ await expect(addPropertiesProcessStep).toHaveText('พนักงานส่งเอกสาร');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเพิ่มคุณสมบัติและบันทึกได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_024', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขคุณสมบัติ
+ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector('id=btn-add-work-product-0-drawer');
+ await page.click('id=btn-add-work-product-0-drawer');
+ await page.waitForSelector('id=select-step');
+ await page.click('id=select-step');
+ await page.waitForSelector('id=list-quotationNo');
+ await page.click('id=list-quotationNo');
+ await page.waitForSelector('id=list-designForm');
+ await page.click('id=list-designForm');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ
+ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568',
+ );
+ await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const addPropertiesProcessStepFirst = page.locator(
+ "//span[normalize-space(text())='ออกแบบฟอร์ม']",
+ );
+ await expect(addPropertiesProcessStepFirst).toHaveText('ออกแบบฟอร์ม');
+
+ const addPropertiesProcessStepSecond = page.locator(
+ "//span[normalize-space(text())='Quotation No.']",
+ );
+ await expect(addPropertiesProcessStepSecond).toHaveText('Quotation No.');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขคุณสมบัติได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_025', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขคุณสมบัติ
+ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector('id=btn-add-work-product-0-drawer');
+ await page.click('id=btn-add-work-product-0-drawer');
+ await page.waitForSelector("(//button[@id='btn-delete-work-product'])[3]");
+ await page.click("(//button[@id='btn-delete-work-product'])[3]");
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ
+ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568',
+ );
+ await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const addPropertiesProcessStepFirst = page.locator(
+ "//span[normalize-space(text())='ออกแบบฟอร์ม']",
+ );
+ await expect(addPropertiesProcessStepFirst).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบคุณสมบัติได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_026', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเพิ่มหน่วยงานในขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.waitForSelector("(//button[@id='btn-add-step'])[2]");
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.click('id=select-responsible-institution-0-dialog');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const menuAgencise = page.locator("//div[@role='menu']");
+ await expect(menuAgencise).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงรายการเลือกหน่วยงาน');
+ await page.keyboard.press('Escape');
+ await page.waitForSelector('id=btn-form-close');
+ await page.click('id=btn-form-close');
+});
+
+test('TC_2_0_027', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // การเพิ่มหน่วยงานในขั้นตอนการทำงาน
+ await page.waitForSelector('id=btn-add');
+ await page.click('id=btn-add');
+ await page.click("(//input[@id='select-hq-id'])[2]");
+ await page.waitForSelector('id=select-hq-id_0');
+ await page.click('id=select-hq-id_0');
+ await page.fill(
+ "(//input[@id='input-flow-template-name'])[2]",
+ 'การดำเนินการเตรียมการ',
+ );
+ await page.waitForSelector("(//button[@id='btn-add-step'])[2]");
+ await page.click("(//button[@id='btn-add-step'])[2]");
+ await page.fill('id=input-flow-step-name-0-dialog', 'เตรียมเอกสาร');
+ await page.click('id=select-responsible-institution-0-dialog');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-AGE-drawer']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-AGE-drawer']//div)[1]",
+ );
+ await page.keyboard.press('Escape');
+ await page.click("(//button[@id='btn-info-basic-save'])[2]");
+
+ // เปิดดูรายละเอียด
+ await page.waitForSelector(
+ "//button[@id='btn-kebab-action-การดำเนินการเตรียมการ']",
+ );
+ await page.click("//button[@id='btn-kebab-action-การดำเนินการเตรียมการ']");
+ await page.waitForSelector(
+ "//div[@id='btn-kebab-view-detail-การดำเนินการเตรียมการ']",
+ );
+ await page.click(
+ "//div[@id='btn-kebab-view-detail-การดำเนินการเตรียมการ']",
+ );
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const addAgenciseWorkFlow = page.locator(
+ "//span[normalize-space(text())='เอเจนซี่ / หน่วยงาน']",
+ );
+ await expect(addAgenciseWorkFlow).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถเลือกหน่วยงานได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_028', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // แก้ไขหน่วยงาน
+ await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.waitForSelector('id=btn-kebab-edit-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-edit-การดำเนินการเตรียมการ');
+ await page.waitForSelector('id=select-responsible-institution-0-drawer');
+ await page.click('id=select-responsible-institution-0-drawer');
+ await page.waitForSelector(
+ "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]",
+ );
+ await page.click(
+ "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]",
+ );
+ await page.keyboard.press('Escape');
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // เปิดดูรายละเอียดหลังแก้ไข
+ await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-การดำเนินการเตรียมการ',
+ );
+ await page.click('id=btn-kebab-view-detail-การดำเนินการเตรียมการ');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const checkEditAgenciseWorkFlow = page.locator(
+ "//span[normalize-space(text())='จัดหางานพื้นที่']",
+ );
+ await expect(checkEditAgenciseWorkFlow).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถแก้ไขหน่วยงานได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
+
+test('TC_2_0_029', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // ลบหน่วยงาน
+ await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.waitForSelector('id=btn-kebab-edit-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-edit-การดำเนินการเตรียมการ');
+ await page.waitForSelector("(//i[@aria-hidden='false'])[2]");
+ await page.click("(//i[@aria-hidden='false'])[2]");
+ await page.waitForSelector('id=btn-info-basic-save');
+ await page.click('id=btn-info-basic-save');
+
+ // เปิดดูรายละเอียดหลังลบ
+ await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ');
+ await page.waitForSelector(
+ 'id=btn-kebab-view-detail-การดำเนินการเตรียมการ',
+ );
+ await page.click('id=btn-kebab-view-detail-การดำเนินการเตรียมการ');
+
+ // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ
+ const checkDeleteAgenciseWorkFlow = page.locator(
+ "//span[normalize-space(text())='จัดหางานพื้นที่']",
+ );
+ await expect(checkDeleteAgenciseWorkFlow).toBeHidden();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบสามารถลบหน่วยงานได้');
+ await page.waitForSelector('id=btn-info-close');
+ await page.click('id=btn-info-close');
+});
diff --git a/tests/02-Sales/MenuQuotation.spec.ts b/tests/02-Sales/MenuQuotation.spec.ts
new file mode 100644
index 00000000..013b8468
--- /dev/null
+++ b/tests/02-Sales/MenuQuotation.spec.ts
@@ -0,0 +1,365 @@
+import { test, expect, Page } from '@playwright/test';
+import { de, fakerEN, fakerTH } from '@faker-js/faker';
+import { isAwaitExpression } from 'typescript';
+
+let page: Page;
+let isLoginSuccessful = false;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+async function login(page: Page) {
+ try {
+ // Login
+ await page.goto('/');
+ await expect(page).toHaveTitle(/^Sign in to /);
+ await page.fill("input[name='username']", 'admin');
+ await page.fill("input[name='password']", '1234');
+ await page.click('id=kc-login');
+ await page.waitForTimeout(2000);
+ // await page.click('id=acceptBtn');
+ // เข้าสู่หน้าแม่แบบขั้นตอนการทำงาน
+ await page.click('id=menu.sales');
+ await page.waitForSelector('id=sub-menu-quotation');
+ await page.click('id=sub-menu-quotation');
+
+ // ถ้าทั้งหมดสำเร็จ
+ isLoginSuccessful = true;
+ console.log('ระบบทำการ Login สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการ Login');
+ isLoginSuccessful = false;
+ }
+}
+test('Login', async () => {
+ await login(page);
+});
+
+test('TC_3_0_001', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่เมนูใบเสนอราคา
+ const pageAgencies = page.locator(
+ "//span[contains(@class,'title-gradient text-weight-bold')]",
+ );
+ await expect(pageAgencies).toHaveText('ใบเสนอราคา');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดงหน้าเมนูใบเสนอราคา');
+});
+
+test('TC_3_0_002', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.click('id=btn-add');
+
+ const pageQuatationTitle = page.locator(
+ "//div[contains(@class,'col text-subtitle1')]",
+ );
+ const dropdownServiceQuatation = page.locator('id=select-hq-id');
+ const dropdownSelectCustomer = page.locator('id=select-customer');
+
+ await expect(pageQuatationTitle).toHaveText('เพิ่มใบเสนอราคา');
+ await expect(dropdownServiceQuatation).toBeVisible();
+ await expect(dropdownSelectCustomer).toBeVisible();
+
+ await page.click('id=btn-form-cancel');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบแสดง Pop Up เพิ่มใบเสนอราคา');
+});
+
+test('TC_3_0_003', async () => {
+ // ถ้ายังไม่ได้ Login ให้ทำการ Login
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+ try {
+ // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.click('id=btn-add');
+
+ // เพิ่มใบเสนอราคาเพื่อเข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.waitForSelector('id=select-hq-id');
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_1');
+ await page.click('id=select-hq-id_1');
+ await page.waitForSelector('id=select-customer');
+ await page.click('id=select-customer');
+ await page.waitForSelector('id=select-customer_1');
+ await page.click('id=select-customer_1');
+ await page.waitForSelector('id=btn-form-submit');
+ await page.click('id=btn-form-submit');
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบหลังจากเข้าสู่หน้าเพิ่มใบเสนอราคา
+
+ const titlePageQuotation = page.locator(
+ "//header[contains(.,'ใบเสนอราคา')]",
+ );
+ await expect(titlePageQuotation).toBeVisible();
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log('ระบบเข้าสู่หน้าเพิ่มใบเสนอราคา');
+});
+
+test('TC_3_0_004', async () => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+
+ try {
+ // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.click('id=btn-add');
+
+ // เลือก HQ
+ await page.waitForSelector('id=select-hq-id');
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_1');
+ await page.click('id=select-hq-id_1');
+
+ // เลือกลูกค้า
+ await page.waitForSelector('id=select-customer');
+ await page.click('id=select-customer');
+ await page.waitForSelector('id=select-customer_1');
+ await page.click('id=select-customer_1');
+
+ // ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
+ const [newPage] = await Promise.all([
+ page
+ .context()
+ .waitForEvent('page')
+ .catch(() => null), // ตรวจจับหน้าใหม่
+ page.click('id=btn-form-submit'),
+ ]);
+
+ // ใช้หน้าใหม่ถ้ามี หรือหน้าเดิมถ้าไม่มี
+ const newTab = newPage || page;
+ await newTab.waitForLoadState('networkidle');
+
+ // ตรวจสอบ URL เพื่อ debug
+ console.log(' URL ปัจจุบัน:', newTab.url());
+
+ // กรอกข้อมูลในฟอร์ม
+ await newTab.fill('id=input-work-name', 'MOU');
+ await newTab.fill('id=input-contact-name', fakerTH.person.fullName());
+ await newTab.fill('id=input-telephone', '0882273282');
+
+ // บันทึกใบเสนอราคา
+ await newTab.click('id=btn-save');
+
+ // ตรวจสอบว่าแสดงปุ่ม Edit
+ const showButtonEdit = newTab.locator('id=btn-edit');
+ await expect(showButtonEdit).toBeVisible();
+ // ปิดหน้าต่างใบเสนอราคา
+ await newTab.click('id=btn-close');
+ await newTab.waitForSelector('id=btn-ok-dialog');
+ await newTab.click('id=btn-ok-dialog');
+ } catch (error) {
+ console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+ console.log(' ระบบบันทึกใบเสนอราคาและเห็นปุ่มแก้ไข');
+});
+
+test('TC_3_0_005', async ({ page, context }) => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+
+ try {
+ // เก็บจำนวนหน้าเดิมก่อนกด
+ const oldPages = context.pages();
+
+ // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.click('id=btn-add');
+
+ // เลือก HQ
+ await page.waitForSelector('id=select-hq-id');
+ await page.click('id=select-hq-id');
+ await page.waitForSelector('id=select-hq-id_1');
+ await page.click('id=select-hq-id_1');
+
+ // เลือกลูกค้า
+ await page.waitForSelector('id=select-customer');
+ await page.click('id=select-customer');
+ await page.waitForSelector('id=select-customer_1');
+ await page.click('id=select-customer_1');
+
+ // ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
+ await Promise.all([
+ page.click('id=btn-form-submit'),
+ context.waitForEvent('page').catch(() => null),
+ page.waitForLoadState('networkidle'),
+ ]);
+
+ // ตรวจจับหน้าใหม่ถ้ามี
+ const newPages = context.pages().filter((p) => !oldPages.includes(p));
+ const newTab = newPages.length > 0 ? newPages[0] : page;
+
+ // ตรวจสอบ URL เพื่อ debug
+ console.log(' URL ปัจจุบัน:', newTab.url());
+
+ // ข้อมูลที่ต้องการทดสอบ
+ const initialContactName = fakerTH.person.fullName();
+ const updatedContactName = fakerTH.person.fullName();
+
+ // กรอกข้อมูลในฟอร์ม
+ await newTab.fill('id=input-work-name', 'MOU');
+ await newTab.fill('id=input-contact-name', initialContactName);
+ await newTab.fill('id=input-telephone', '0882273282');
+
+ // บันทึกใบเสนอราคา
+ await newTab.click('id=btn-save');
+
+ // ทดสอบการแก้ไขใบเสนอราคา
+ await newTab.click('id=btn-edit');
+ await newTab.fill('id=input-contact-name', updatedContactName);
+ await newTab.click('id=btn-save');
+
+ // ตรวจสอบว่าข้อมูลถูกแก้ไขสำเร็จ
+ const editedContactName = newTab.locator(
+ `//input[@value='${updatedContactName}']`,
+ );
+ await expect(editedContactName).toBeVisible();
+
+ // ปิดหน้าต่างใบเสนอราคา
+ await newTab.click('id=btn-close');
+ await newTab.waitForSelector('id=btn-ok-dialog');
+ await newTab.click('id=btn-ok-dialog');
+ } catch (error) {
+ console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ console.log(' ระบบสามารถแก้ไขใบเสนอราคาได้');
+ await page.waitForTimeout(2000);
+});
+
+test('TC_3_0_006', async ({ page, context }) => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+
+ try {
+ // เก็บจำนวนหน้าเดิมก่อนกด
+ const oldPages = context.pages();
+
+ // // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ // await page.click("(//button[@id='btn-eye-MOU'])[1]");
+
+ // ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
+ await Promise.all([
+ page.click("(//button[@id='btn-eye-MOU'])[1]"),
+ context.waitForEvent('page').catch(() => null),
+ page.waitForLoadState('networkidle'),
+ ]);
+
+ // ตรวจจับหน้าใหม่ถ้ามี
+ const newPages = context.pages().filter((p) => !oldPages.includes(p));
+ const newTab = newPages.length > 0 ? newPages[0] : page;
+
+ // ตรวจสอบ URL เพื่อ debug
+ console.log(' URL ปัจจุบัน:', newTab.url());
+
+ // เปิดแท็ปลูกค้าตอบรับ
+ await newTab.click('id=btn-status-Accepted');
+
+ // ยืนยันลูกค้าตอบรับ
+ await newTab.waitForSelector('id=btn-submit-accepted');
+ await newTab.click('id=btn-submit-accepted');
+ await newTab.waitForSelector('id=btn-ok-dialog');
+ await newTab.click('id=btn-ok-dialog');
+
+ // ตรวจสอบว่าลูกค้าตอบรับแล้ว
+ const acceptedSubmit = newTab.locator('id=btn-submit-accepted');
+ await expect(acceptedSubmit).toBeHidden();
+
+ // ปิดหน้าต่างใบเสนอราคา
+ await newTab.click('id=btn-close');
+ await newTab.waitForSelector('id=btn-ok-dialog');
+ await newTab.click('id=btn-ok-dialog');
+ } catch (error) {
+ console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ console.log(' ระบบทำการยืนยันลูกค้าตอบรับ');
+ await page.waitForTimeout(2000);
+});
+
+test('TC_3_0_007', async ({ page, context }) => {
+ if (!isLoginSuccessful) {
+ await login(page);
+ }
+
+ try {
+ // เก็บจำนวนหน้าเดิมก่อนกด
+ const oldPages = context.pages();
+
+ // // เข้าสู่หน้าเพิ่มใบเสนอราคา
+ await page.click("(//div[@role='tab'])[2]");
+
+ // ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
+ await Promise.all([
+ page.click('id=btn-eye-MOU'),
+ context.waitForEvent('page').catch(() => null),
+ page.waitForLoadState('networkidle'),
+ ]);
+
+ // ตรวจจับหน้าใหม่ถ้ามี
+ const newPages = context.pages().filter((p) => !oldPages.includes(p));
+ const newTab = newPages.length > 0 ? newPages[0] : page;
+
+ // ตรวจสอบ URL เพื่อ debug
+ console.log(' URL ปัจจุบัน:', newTab.url());
+
+ // เปิดแท็ปใบแจ้งหนี้
+ await newTab.click('id=btn-status-Invoice');
+
+ // อนุมัติใบแจ้งหนี้
+ await newTab.waitForSelector('id=btn-approve-invoice');
+ await newTab.click('id=btn-approve-invoice');
+
+ // ตรวจสอบว่าอนุมัติใบแจ้งหนี้แล้ว
+ const acceptedSubmit = newTab.locator('id=btn-approve-invoice');
+ await expect(acceptedSubmit).toBeHidden();
+
+ // ปิดหน้าต่างใบเสนอราคา
+ await newTab.click('id=btn-close');
+ await newTab.waitForSelector('id=btn-ok-dialog');
+ await newTab.click('id=btn-ok-dialog');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ isLoginSuccessful = false;
+ throw error;
+ }
+ console.log('ระบบทำการอนุมัติใบแจ้งหนี้');
+ await page.waitForTimeout(2000);
+});
|