diff --git a/reports.json b/reports.json
new file mode 100644
index 00000000..697c1be6
--- /dev/null
+++ b/reports.json
@@ -0,0 +1,167 @@
+{
+ "config": {
+ "configFile": "/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/playwright.config.ts",
+ "rootDir": "/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests",
+ "forbidOnly": false,
+ "fullyParallel": true,
+ "globalSetup": null,
+ "globalTeardown": null,
+ "globalTimeout": 0,
+ "grep": {},
+ "grepInvert": null,
+ "maxFailures": 0,
+ "metadata": {
+ "actualWorkers": 1
+ },
+ "preserveOutput": "always",
+ "reporter": [
+ [
+ "json",
+ {
+ "outputFile": "reports.json"
+ }
+ ]
+ ],
+ "reportSlowTests": {
+ "max": 5,
+ "threshold": 15000
+ },
+ "quiet": false,
+ "projects": [
+ {
+ "outputDir": "/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/test-results",
+ "repeatEach": 1,
+ "retries": 0,
+ "metadata": {},
+ "id": "chromium",
+ "name": "chromium",
+ "testDir": "/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests",
+ "testIgnore": [],
+ "testMatch": [
+ "**/*.@(spec|test).?(c|m)[jt]s?(x)"
+ ],
+ "timeout": 30000
+ }
+ ],
+ "shard": null,
+ "updateSnapshots": "missing",
+ "version": "1.44.1",
+ "workers": 1,
+ "webServer": null
+ },
+ "suites": [
+ {
+ "title": "01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts",
+ "file": "01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts",
+ "column": 0,
+ "line": 0,
+ "specs": [
+ {
+ "title": "Login",
+ "ok": true,
+ "tags": [],
+ "tests": [
+ {
+ "timeout": 30000,
+ "annotations": [],
+ "expectedStatus": "passed",
+ "projectId": "chromium",
+ "projectName": "chromium",
+ "results": [
+ {
+ "workerIndex": 4,
+ "status": "passed",
+ "duration": 3024,
+ "errors": [],
+ "stdout": [],
+ "stderr": [],
+ "retry": 0,
+ "startTime": "2024-07-30T02:59:00.817Z",
+ "attachments": []
+ }
+ ],
+ "status": "expected"
+ }
+ ],
+ "id": "8c5091bd59605f227965-8109f0f4a59e27330a76",
+ "file": "01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts",
+ "line": 16,
+ "column": 1
+ },
+ {
+ "title": "Create Branch Managenment",
+ "ok": true,
+ "tags": [],
+ "tests": [
+ {
+ "timeout": 30000,
+ "annotations": [],
+ "expectedStatus": "passed",
+ "projectId": "chromium",
+ "projectName": "chromium",
+ "results": [
+ {
+ "workerIndex": 4,
+ "status": "passed",
+ "duration": 5091,
+ "errors": [],
+ "stdout": [],
+ "stderr": [],
+ "retry": 0,
+ "startTime": "2024-07-30T02:59:05.659Z",
+ "attachments": []
+ }
+ ],
+ "status": "expected"
+ }
+ ],
+ "id": "8c5091bd59605f227965-5a0d70f27623401a3479",
+ "file": "01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts",
+ "line": 27,
+ "column": 1
+ },
+ {
+ "title": "Create Branch Managenment Second",
+ "ok": true,
+ "tags": [],
+ "tests": [
+ {
+ "timeout": 30000,
+ "annotations": [],
+ "expectedStatus": "passed",
+ "projectId": "chromium",
+ "projectName": "chromium",
+ "results": [
+ {
+ "workerIndex": 4,
+ "status": "passed",
+ "duration": 5029,
+ "errors": [],
+ "stdout": [],
+ "stderr": [],
+ "retry": 0,
+ "startTime": "2024-07-30T02:59:10.755Z",
+ "attachments": []
+ }
+ ],
+ "status": "expected"
+ }
+ ],
+ "id": "8c5091bd59605f227965-d619bd2184e7f07d4970",
+ "file": "01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts",
+ "line": 52,
+ "column": 1
+ }
+ ]
+ }
+ ],
+ "errors": [],
+ "stats": {
+ "startTime": "2024-07-30T02:59:00.334Z",
+ "duration": 15556.794999999925,
+ "expected": 3,
+ "skipped": 0,
+ "unexpected": 0,
+ "flaky": 0
+ }
+}
\ No newline at end of file
diff --git a/tests/00-Role&Permission/JWS_RP_001_CorporateCustomer.spec.ts b/tests/00-Role&Permission/JWS_RP_001_CorporateCustomer.spec.ts
new file mode 100644
index 00000000..9e736e43
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_001_CorporateCustomer.spec.ts
@@ -0,0 +1,181 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Corporate Customer', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'corporatecus');
+ 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_0');
+ // 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', 'Bunma');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Pama');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill(
+ 'id=form-dialog-personnel-input-email',
+ 'cocustomer@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-24']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Corporate Customer ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'corporatecus');
+ await page.fill("input[name='password']", 'corporatecus');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'corporcu@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Corporate Customer']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Corporate Customer');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Corporate Customer');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Corporate Customer ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Corporate Cutomer สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_002_HeadOfAdmin.spec.ts b/tests/00-Role&Permission/JWS_RP_002_HeadOfAdmin.spec.ts
new file mode 100644
index 00000000..2f15e88f
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_002_HeadOfAdmin.spec.ts
@@ -0,0 +1,185 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Head of Admin', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'headofad');
+ 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_1');
+ // 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', 'Thanin');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Prasertpattana',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'hoa@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Head of Admin ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'headofad');
+ await page.fill("input[name='password']", 'headofad');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'headofadmin@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Head Of Admin']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Head Of Admin');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Head of Admin');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Head of Admin ปรากฏ
+ const menuBranchManagement = await page.isVisible('id=drawer-menu.branch');
+ const menuPersonnelManagement = await page.isVisible('id=drawer-menu.user');
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuBranchManagement).toBe(true);
+ expect(menuPersonnelManagement).toBe(true);
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Head of Admin สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_003_Sale.spec.ts b/tests/00-Role&Permission/JWS_RP_003_Sale.spec.ts
new file mode 100644
index 00000000..4596dd0c
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_003_Sale.spec.ts
@@ -0,0 +1,184 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Sale', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'sale');
+ 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', 'Kiat');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Intaraprasith',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'sale@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Sale ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'sale');
+ await page.fill("input[name='password']", 'sale');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'sale@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Sale']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Sale');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Sale');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Sale ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Sale สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_004_DocumentChecker.spec.ts b/tests/00-Role&Permission/JWS_RP_004_DocumentChecker.spec.ts
new file mode 100644
index 00000000..e622330e
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_004_DocumentChecker.spec.ts
@@ -0,0 +1,178 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Document Checker', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'doccheck');
+ 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_3');
+ // 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', 'Possathorn');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Lertwittaya');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'doccheck@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Document Checker ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'doccheck');
+ await page.fill("input[name='password']", 'doccheck');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'docchecker@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Document Checker']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Document Checker');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Document Checker');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Document Checker ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Document Checker สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_005_SaleAgent.spec.ts b/tests/00-Role&Permission/JWS_RP_005_SaleAgent.spec.ts
new file mode 100644
index 00000000..c3a9c094
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_005_SaleAgent.spec.ts
@@ -0,0 +1,178 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Sale Agent', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'saleag');
+ 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_4');
+ // 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', 'Passorn');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Udomsek');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'saleag@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Sale Agent ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'saleag');
+ await page.fill("input[name='password']", 'saleag');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'saleag@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Sale Agent']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Sale Agent');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Sale Agent');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Sale Agent ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Sale Agent สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_006_Messenger.spec.ts b/tests/00-Role&Permission/JWS_RP_006_Messenger.spec.ts
new file mode 100644
index 00000000..46be9fee
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_006_Messenger.spec.ts
@@ -0,0 +1,178 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Messenger', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'message');
+ 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_5');
+ // 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', 'Thanat');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Jaraswong');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'message@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Messenger ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'message');
+ await page.fill("input[name='password']", 'message');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'message@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Messenger']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Messenger');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Messenger');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Messenger ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Messenger สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_007_Account.spec.ts b/tests/00-Role&Permission/JWS_RP_007_Account.spec.ts
new file mode 100644
index 00000000..3f420942
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_007_Account.spec.ts
@@ -0,0 +1,176 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Account', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'account');
+ 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_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', 'Thawan');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Boondee');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'account@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Account ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'account');
+ await page.fill("input[name='password']", 'account');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'account@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Account']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Account');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Account');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Account ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Account สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_008_Admin.spec.ts b/tests/00-Role&Permission/JWS_RP_008_Admin.spec.ts
new file mode 100644
index 00000000..64c9a00b
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_008_Admin.spec.ts
@@ -0,0 +1,180 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Admin', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'admins');
+ 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_7');
+ // 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', 'Theerayan');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Sukkasem');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'admin@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Admin ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'admins');
+ await page.fill("input[name='password']", 'admins');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'admins@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Admin']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Admin');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Admin');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Admin ปรากฏ
+ const menuBranchManagement = await page.isVisible('id=drawer-menu.branch');
+ const menuPersonnelManagement = await page.isVisible('id=drawer-menu.user');
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuBranchManagement).toBe(true);
+ expect(menuPersonnelManagement).toBe(true);
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Admin สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_009_Executive.spec.ts b/tests/00-Role&Permission/JWS_RP_009_Executive.spec.ts
new file mode 100644
index 00000000..1500cf27
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_009_Executive.spec.ts
@@ -0,0 +1,179 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Executive', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'executive');
+ 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_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', 'Teepakorn');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Suwanwechatada',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'executive@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Executive ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'executive');
+ await page.fill("input[name='password']", 'executive');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'executive@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Executive']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Executive');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Executive');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Executive ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Executive สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_010_DataEntry.spec.ts b/tests/00-Role&Permission/JWS_RP_010_DataEntry.spec.ts
new file mode 100644
index 00000000..ee6aaab5
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_010_DataEntry.spec.ts
@@ -0,0 +1,176 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Data Entry', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'dataentry');
+ 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_9');
+ // 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', 'Kanokpong');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Dusitwan');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'dataen@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Data Entry ', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'dataentry');
+ await page.fill("input[name='password']", 'dataentry');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'dataen@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Data Entry']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Data Entry');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Data Entry');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Data Entry ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Data Entry สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_011_HeadOfAccount.spec.ts b/tests/00-Role&Permission/JWS_RP_011_HeadOfAccount.spec.ts
new file mode 100644
index 00000000..03198a85
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_011_HeadOfAccount.spec.ts
@@ -0,0 +1,178 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Head of Account', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'headacc');
+ 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_10');
+ // 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', 'Thitikorn');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Wongwarang');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'headac@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Head of Account', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'headacc');
+ await page.fill("input[name='password']", 'headacc');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'headac@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Head Of Account']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Head Of Account');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Head of Account');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Head of Account ปรากฏ
+ const menuBranchManagement = await page.isVisible('id=drawer-menu.branch');
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuBranchManagement).toBe(true);
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Head of Account สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_012_HeadOfSale.spec.ts b/tests/00-Role&Permission/JWS_RP_012_HeadOfSale.spec.ts
new file mode 100644
index 00000000..47626a09
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_012_HeadOfSale.spec.ts
@@ -0,0 +1,179 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Head of Sale', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'headsale');
+ 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_11');
+ // 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', 'Polapat');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Tanajaroenkij',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'headsale@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Head of Sale', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'headsale');
+ await page.fill("input[name='password']", 'headsale');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'headsale@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Head Of Sale']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Head Of Sale');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Head of Sale');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Head of Sale ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Head of Sale สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_013_PersonalCustomer.spec.ts b/tests/00-Role&Permission/JWS_RP_013_PersonalCustomer.spec.ts
new file mode 100644
index 00000000..c203fc0b
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_013_PersonalCustomer.spec.ts
@@ -0,0 +1,179 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Personal Customer', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'personal');
+ 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_12');
+ // 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', 'Teepakorn');
+ await page.fill(
+ 'id=form-dialog-personnel-input-last-name-en',
+ 'Jantaraprakarn',
+ );
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'personal@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Personal Customer', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'personal');
+ await page.fill("input[name='password']", 'personal');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'personal@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Personal Customer']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Personal Customer');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Personal Customer');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Personal Customer ปรากฏ
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Personal Customer สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/00-Role&Permission/JWS_RP_014_BranchManager.spec.ts b/tests/00-Role&Permission/JWS_RP_014_BranchManager.spec.ts
new file mode 100644
index 00000000..fe1d079c
--- /dev/null
+++ b/tests/00-Role&Permission/JWS_RP_014_BranchManager.spec.ts
@@ -0,0 +1,178 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ตำแหน่ง Branch Manager', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+ 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', 'branch');
+ 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_13');
+ // 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', 'Jiran');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Dusitwan');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422644482');
+ await page.fill('id=form-dialog-personnel-input-email', 'branch@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("//div[@id='2024-09-08']/div[1]");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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[@id='2024-09-12']/div[1]");
+ await page.click('id=input-retire-date');
+ await page.click("//div[@id='2024-09-16']/div[1]");
+
+ // กดปุ่มเพื่อสร้างบุคคลากร
+ 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);
+
+ console.log('ตรวจสอบการสร้างตำแหน่งงานถูกต้อง');
+ await page.waitForTimeout(4000);
+});
+
+test('ทดสอบการเข้าใช้งาน ผู้ใช้งานสิทธิ์ Branch Manager', async () => {
+ try {
+ // ออกจากระบบและเข้าสู่ระบบด้วย Role ใหม่
+ await page.click('id=btn-profile-menu');
+ await page.click('id=btn-logout');
+ await page.click('id=btn-ok-dialog');
+ await page.fill("input[name='username']", 'branch');
+ await page.fill("input[name='password']", 'branch');
+ await page.click('id=kc-login');
+
+ // ใส่รหัสใหม่
+ await page.fill('id=password-new', '1234');
+ await page.fill('id=password-confirm', '1234');
+ await page.click("//input[@type='submit']");
+
+ // กรอกอีเมลเพื่อสร้างผู้ใช้งานใหม่
+ await page.fill('id=email', 'branch@email.com');
+ await page.click("//input[@type='submit']");
+ await page.waitForTimeout(2000);
+
+ // ตรวจสอบข้อมูลหลังจากทำการเข้าสู่ระบบ
+ const useRole = await page
+ .locator("//div[normalize-space(text())='Branch Manager']")
+ .textContent();
+ expect(useRole?.trim()).toBe('Branch Manager');
+
+ console.log('ตรวจสอบสำเร็จ : สิทธิ์ผู้ใช้งานประเภท Branch Manager');
+
+ // ตรวจสอบเมนูสำหรับสิทธิ์ผู้ใช้งานประเภท Branch Manager ปรากฏ
+ const menuPersonnelManagement = await page.isVisible('id=drawer-menu.user');
+ const menuCustomerManagement = await page.isVisible(
+ 'id=drawer-menu.customer',
+ );
+ const menuProductAndService = await page.isVisible(
+ 'id=drawer-menu.product',
+ );
+ const menuDocumentManagement = await page.isVisible('id=drawer-menu.dms');
+
+ // ตรวจสอบว่าเมนูปรากฏ
+ expect(menuPersonnelManagement).toBe(true);
+ expect(menuCustomerManagement).toBe(true);
+ expect(menuProductAndService).toBe(true);
+ expect(menuDocumentManagement).toBe(true);
+
+ console.log('ตรวจสอบเมนูต่าง ๆ ของ สิทธิ์ Branch Manager สำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
index b13f96b8..c97d3502 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
+++ b/tests/01-Admin-BranchManagement/JWS_BM_001_CreateHeadquarters.spec.ts
@@ -1,5 +1,6 @@
import { test, expect, Page } from '@playwright/test';
-import { strictEqual } from 'assert';
+import path from 'path';
+import { off } from 'process';
let page: Page;
@@ -25,19 +26,167 @@ test('Login', async () => {
});
test('Create Branch Managenment', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.click('id=hq-add-btn');
- 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]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
+ try {
+ await page.click('id=menu-icon-branch-management');
+ await page.click('id=hq-add-btn');
+ // await page.click('id=btn-Add');
+ // await page.click("(//div[@class='q-avatar relative-position'])[2]");
+
+ // const fileInput = page.locator(
+ // "//div[@class='image-dialog-body']//button[1]",
+ // );
+ // await fileInput.waitFor({ state: 'visible' });
+
+ // // อัปโหลดไฟล์
+ // await fileInput.setInputFiles(
+ // '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ // ); // เปลี่ยน path ให้ตรง
+
+ // await page.setInputFiles(
+ // "//div[@class='image-dialog-body']//button[1]",
+ // '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ // );
+ // // UploadFile
+
+ // ส่วนข้อมูลพื้นฐาน
+ 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'])[3]", 'บริษัท คาโมมายด์ จำกัด');
+ 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.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-form-submit');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท คาโมมายด์ จำกัดCMM00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก
ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท คาโมมายด์ จำกัดCMM00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('Create Branch Managenment Second', async () => {
+ try {
+ // ส่วนข้อมูลพื้นฐาน
+ await page.click('id=hq-add-btn');
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'CMO');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[3]", 'บริษัท โคโม่ จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'COMO');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill("(//input[@id='input-email'])[2]", 'como@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022010100');
+ 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]", 'como20');
+
+ // ส่วนที่อยู่
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '40/04');
+ await page.fill("(//input[@id='default-input-moo'])[3]", '2');
+ 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]", '40/04');
+ await page.fill("(//input[@aria-label='Moo'])[2]", '1');
+
+ // ส่วนธนาคาร
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_4');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '2022822624262');
+ 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-form-submit');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const newOfficeLocator = page.locator(
+ "//td[contains(.,'บริษัท โคโม่ จำกัดCMO00000')]",
+ );
+ await newOfficeLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความจาก | ที่ตรงกับ XPath
+ const newOfficeName = await newOfficeLocator.textContent();
+
+ // ตรวจสอบว่าเนื้อหาที่บันทึกถูกต้อง
+ if (newOfficeName !== null) {
+ const trimmedName = newOfficeName.trim();
+ expect(trimmedName).toBe('บริษัท โคโม่ จำกัดCMO00000');
+ console.log('การตรวจสอบสำเร็จ: ข้อมูลถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึกใน | ');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
await page.waitForTimeout(2000);
});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
index d122df9d..19bd7967 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
+++ b/tests/01-Admin-BranchManagement/JWS_BM_002_CreateHeadquarterFail.spec.ts
@@ -1,5 +1,6 @@
import { test, expect, Page } from '@playwright/test';
import { strictEqual } from 'assert';
+import exp from 'constants';
let page: Page;
@@ -24,106 +25,122 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Create Branch Managenment Not input data', async () => {
+test('Create Branch Management - ไม่มีการกรอกข้อมูล', async () => {
await page.click('id=menu-icon-branch-management');
await page.click('id=hq-add-btn');
- await page.click('id=submitBtn');
+ await page.click('id=btn-form-submit');
+
+ const abbreviationError = page.locator(
+ "(//div[@class='q-field__messages col'])[1]",
+ );
+ const taxNoError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
+ const nameError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[3]",
+ );
+ const nameEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[4]",
+ );
+ const LicenseNumberError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[5]",
+ );
+ const addressError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[6]",
+ );
+ const provinceError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[7]",
+ );
+ const districtError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[8]",
+ );
+ const subDistrictError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[9]",
+ );
+ const addressEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[10]",
+ );
+
+ await expect(abbreviationError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้', {
+ timeout: 2000,
+ });
+ await expect(taxNoError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(LicenseNumberError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(addressError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(provinceError).toHaveText('โปรดเลือกจังหวัด');
+ await expect(districtError).toHaveText('โปรดเลือกอำเภอ');
+ await expect(subDistrictError).toHaveText('โปรดเลือกตำบล');
+ await expect(addressEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
});
-test('Create Branch Managenment Not input Tax', async () => {
+test('Create Branch Managenment - กรณีที่กรอกชื่อย่อที่ไม่ใช่ภาษาอังกฤษ', async () => {
+ await page.reload();
await page.click('id=hq-add-btn');
- await page.fill("(//input[@id='input-name'])[2]", 'สีลม');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
+ await page.fill("(//input[@id='input-abbreviation'])[2]", 'ภาษาไทย');
+ const invalidDataabbreviationError = page.locator(
+ // ตรวจสอบการแสดง Validation แจ้งเตือนชื่อย่อในกรณีที่ไม่ใช้ภาษาอังกฤษ
+ "(//div[contains(@class,'q-field__bottom row')])[1]",
+ );
+
+ await expect(invalidDataabbreviationError).toHaveText(
+ 'ข้อมูลไม่ถูกต้อง โปรดใช้เฉพาะตัวอักษรภาษาอังกฤษและตัวเลขเท่านั้น',
+ {
+ timeout: 2000,
+ },
+ );
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่ไม่ใช่ภาษาอังกฤษถูกต้อง',
+ );
+
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
});
-test('Create Branch Managenment Not input Head Office Name Thai', async () => {
+test('Create Branch Management - กรอกเลขนิติบุคคลในกรณีที่กรอกไม่ครบจำนวน 13 หลัก', async () => {
+ await page.reload();
await page.click('id=hq-add-btn');
- await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
+ await page.fill("(//input[@id='input-tax-no'])[2]", '123');
+ const taxNoError = page.locator(
+ // ตรวจสอบการแสดง Validation แจ้งเตือนชื่อย่อในกรณีที่ไม่ใช้ภาษาอังกฤษ
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
+
+ await expect(taxNoError).toHaveText(
+ 'ข้อมูลไม่ถูกต้อง กรุณากรอกให้ครบ 13 หลัก',
+ {
+ timeout: 2000,
+ },
+ );
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกทะเบียนนิติบุคคลเลขที่ไม่ครบ 13 หลัก',
+ );
+
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
});
-test('Create Branch Managenment Not input Head Office Name ENG', async () => {
+test('Create Branch Management - กรอกอีเมลในกรณีที่ไม่ตรงรูปแบบอีเมล', async () => {
+ await page.reload();
await page.click('id=hq-add-btn');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
+ await page.fill("(//input[@id='input-email'])[2]", '123');
+ const emailError = page.locator(
+ // ตรวจสอบการแสดง Validation แจ้งเตือนในกรณีที่กรอกอีเมลไม่ถูกรูปแบบ
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
-test('Create Branch Managenment Not input Address TH ', async () => {
- await page.click('id=hq-add-btn');
- 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]", 'Silom');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
+ await expect(emailError).toHaveText('ข้อมูลไม่ถูกต้อง', {
+ timeout: 2000,
+ });
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกอีเมลไม่ถูกรูปแบบ',
+ );
-test('Create Branch Managenment Not input Address ENG', async () => {
- await page.click('id=hq-add-btn');
- 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]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.click('id=submitBtn');
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
-
-test('Create Branch Managenment Not Select Province,District,Sub-District', async () => {
- await page.click('id=hq-add-btn');
- 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]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
index dd2803c1..5aade922 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
+++ b/tests/01-Admin-BranchManagement/JWS_BM_003_CreateSub-branch.spec.ts
@@ -25,21 +25,88 @@ test('Login', async () => {
});
test('Create Sub Branch Managenment', async () => {
- await page.click('id=menu-icon-branch-management');
- for (let i = 0; i < 10; i++) {
- await page.click('id=create-sub-branch-btn-สีลม');
- 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[@id='input-address'])[2]", `20/0${i + 1}`);
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", `20/0${i + 1}`);
- await page.click('id=submitBtn');
+ try {
+ await page.click('id=menu-icon-branch-management');
+ for (let i = 0; i < 5; i++) {
+ await page.click('id=create-sub-branch-btn-บริษัท โคโม่ จำกัด');
+ await page.click("(//button[@type='submit'])[1]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill(
+ "(//input[@id='input-tax-no'])[2]",
+ `126084622028${i + 1}`,
+ );
+ await page.fill("(//input[@id='input-name'])[3]", `สีลม${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-form-submit');
+ }
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const subBranchErrors = ['สีลม1', 'สีลม2', 'สีลม3', 'สีลม4', 'สีลม5'];
+
+ for (const branch of subBranchErrors) {
+ const subBranchErrors = page.locator(
+ `//div[normalize-space(text())='${branch}']`,
+ );
+ await subBranchErrors.waitFor({ state: 'visible' });
+ const newOfficeName = await subBranchErrors.textContent();
+ const trimmedName = newOfficeName?.trim();
+
+ expect(trimmedName).toBe(branch);
+ }
+
+ console.log('การตรวจสอบสำเร็จ : ข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
}
+
await page.waitForTimeout(2000);
});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
index 43f89984..ebaf0c44 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
+++ b/tests/01-Admin-BranchManagement/JWS_BM_004_CreateSub-branchFail.spec.ts
@@ -24,106 +24,93 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Create Sub-Branch Managenment Not input data', async () => {
+test('Create Sub-Branch Managenment - ในกรณีที่ไม่กรอกข้อมูล', async () => {
await page.click('id=menu-icon-branch-management');
- await page.click('id=create-sub-branch-btn-สีลม');
- await page.click('id=submitBtn');
+ await page.click('id=create-sub-branch-btn-บริษัท โคโม่ จำกัด');
+ await page.click("(//button[@type='submit'])[1]");
+ await page.click('id=btn-form-submit');
+
+ const taxNoError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[1]",
+ );
+ const nameError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
+ const nameEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[3]",
+ );
+ const lincenseNumberError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[4]",
+ );
+ const addressError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[5]",
+ );
+ const provinceError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[6]",
+ );
+ const districtError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[7]",
+ );
+ const subDistrictError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[8]",
+ );
+ const addressEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[9]",
+ );
+
+ await expect(taxNoError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(lincenseNumberError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(addressError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(provinceError).toHaveText('โปรดเลือกจังหวัด');
+ await expect(districtError).toHaveText('โปรดเลือกอำเภอ');
+ await expect(subDistrictError).toHaveText('โปรดเลือกตำบล');
+ await expect(addressEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
});
-test('Create Sub-Branch Managenment Not input Tax', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- await page.fill("(//input[@id='input-name'])[2]", 'สีลม');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
+test('Create Sub-Branch Managenment - ในกรณีที่กรอกทะเบียนนิติบุคคลเลขที่ไม่ครบ 13 หลัก', async () => {
+ await page.reload();
+ await page.click('id=create-sub-branch-btn-บริษัท โคโม่ จำกัด');
+ await page.click("(//button[@type='submit'])[1]");
+ await page.fill("(//input[@id='input-tax-no'])[2]", '123');
+
+ // ตรวจสอบการแจ้งเตือนของทะเบียนนิติบุคคลเลขที่ในกรณีที่กรอกข้อมูลไม่ครบ 13 หลัก
+ const taxNoError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[1]",
+ );
+
+ await expect(taxNoError).toHaveText(
+ 'ข้อมูลไม่ถูกต้อง กรุณากรอกให้ครบ 13 หลัก',
+ );
+
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกทะเบียนนิติบุคคลเลขที่ไม่ครบ 13 หลักถูกต้อง',
+ );
});
-test('Create Sub-Branch Managenment Not input Head Office Name Thai', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220284');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
+test('Create Sub-Branch Managenment - กรอกอีเมลในกรณีที่ไม่ตรงรูปแบบอีเมล', async () => {
+ await page.reload();
+ await page.click('id=create-sub-branch-btn-บริษัท โคโม่ จำกัด');
+ await page.click("(//button[@type='submit'])[1]");
+ await page.fill("(//input[@id='input-email'])[2]", 'email');
-test('Create Sub-Branch Managenment Not input Head Office Name ENG', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
+ // ตรวจสอบการแจ้งเตือนของทะเบียนนิติบุคคลเลขที่ในกรณีที่กรอกข้อมูลไม่ครบ 13 หลัก
+ const emailError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
-test('Create Sub-Branch Managenment Not input Address TH ', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- 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]", 'Silom');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
+ await expect(emailError).toHaveText('ข้อมูลไม่ถูกต้อง');
-test('Create Sub-Branch Managenment Not input Address ENG', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- 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]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.click("(//div[@id='select-province'])[2]");
- await page.click("//div[@role='option']");
- await page.click("(//div[@id='select-district'])[2]");
- await page.click("//span[text()='เมือง']");
- await page.click("(//div[@id='select-sub-district'])[2]");
- await page.click("//span[text()='ช้างเผือก']");
- await page.click('id=submitBtn');
await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
-});
-
-test('Create Sub-Branch Managenment Not Select Province,District,Sub-District', async () => {
- await page.click('id=create-sub-branch-btn-สีลม');
- 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]", 'Silom');
- await page.fill("(//input[@id='input-address'])[2]", '20/02 ');
- await page.fill("(//input[@id='input-address-en'])[2]", '20/02');
- await page.click('id=submitBtn');
- await page.waitForTimeout(4000);
- await page.click("(//button[@id='closeDialog'])[2]");
+ await page.click('id=btn-form-cancel');
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกอีเมลไม่ตรงรูปแบบถูกต้อง',
+ );
});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts
new file mode 100644
index 00000000..84ff0605
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_005_CreateServicePoint.spec.ts
@@ -0,0 +1,118 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Service Point Managenment', async () => {
+ try {
+ await page.click('id=menu-icon-branch-management');
+ for (let i = 0; i < 5; i++) {
+ await page.click('id=create-sub-branch-btn-บริษัท คาโมมายด์ จำกัด');
+ await page.click("(//button[@type='submit'])[2]");
+
+ // ส่วนข้อมูลพื้นฐาน
+ await page.fill(
+ "(//input[@id='input-tax-no'])[2]",
+ `202282628264${i + 1}`,
+ );
+ await page.fill("(//input[@id='input-name'])[3]", `บางรัก${i + 1}`);
+ await page.fill("(//input[@id='input-name-en'])[2]", `Bangrak${i + 1}`);
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+
+ // ส่วนติดต่อ
+ await page.fill(
+ "(//input[@id='input-email'])[2]",
+ `cmm${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]", `082262286${i + 1}`);
+ await page.fill("(//input[@id='input-line-id'])[2]", 'cmmsupport');
+
+ await page.fill(
+ "(//input[@id='default-input-address-no'])[2]",
+ `40/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]",
+ `40/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]",
+ `282264220${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-form-submit');
+ }
+
+ // ตรวจสอบความถูกต้องหลังจากทำการบันทึกสร้างสำนักงานใหญ่
+ const subBranchErrors = [
+ 'บางรัก1',
+ 'บางรัก2',
+ 'บางรัก3',
+ 'บางรัก4',
+ 'บางรัก5',
+ ];
+
+ for (const branch of subBranchErrors) {
+ const subBranchErrors = page.locator(
+ `//div[normalize-space(text())='${branch}']`,
+ );
+ await subBranchErrors.waitFor({ state: 'visible' });
+ const newOfficeName = await subBranchErrors.textContent();
+ const trimmedName = newOfficeName?.trim();
+
+ expect(trimmedName).toBe(branch);
+ }
+
+ console.log('การตรวจสอบสำเร็จ : ข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_005_SelectTypeBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_005_SelectTypeBranch.spec.ts
deleted file mode 100644
index 3749a858..00000000
--- a/tests/01-Admin-BranchManagement/JWS_BM_005_SelectTypeBranch.spec.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import { test, expect, Page } from '@playwright/test';
-import { strictEqual } from 'assert';
-
-let page: Page;
-
-test.beforeAll(async ({ browser }) => {
- page = await browser.newPage();
-});
-
-test.afterAll(async () => {
- if (page !== undefined) {
- await page.close();
- }
-});
-
-test('Login', async () => {
- // Login
- await page.goto('http://192.168.1.90: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');
-});
-
-test('Select Type Branch Name Out', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[1]");
- await page.waitForTimeout(2000);
-});
-
-test('Select Type Branch Telephone No. Out', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[2]");
- await page.waitForTimeout(2000);
-});
-test('Select Type Branch Address Out', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[3]");
- await page.waitForTimeout(2000);
-});
-test('Select Type Branch Type Out', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[4]");
- await page.waitForTimeout(2000);
-});
-
-test('Select Type Branch Status Out', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[5]");
- await page.waitForTimeout(2000);
-});
-
-test('Select Type Branch Name In', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[1]");
- await page.waitForTimeout(2000);
-});
-
-test('Select Type Branch Telephone No. In', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[2]");
- await page.waitForTimeout(2000);
-});
-test('Select Type Branch Address In', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[3]");
- await page.waitForTimeout(2000);
-});
-test('Select Type Branch Type In', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[4]");
- await page.waitForTimeout(2000);
-});
-
-test('Select Type Branch Status In', async () => {
- await page.keyboard.press('Escape');
- await page.click("//span[text()='ข้อมูลที่แสดง']");
- await page.click("(//div[@role='option'])[5]");
- await page.waitForTimeout(2000);
-});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts
new file mode 100644
index 00000000..94491dc4
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_006_CreateServicePointFail.spec.ts
@@ -0,0 +1,112 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Service Point - ในกรณีที่ไม่กรอกข้อมูล', async () => {
+ await page.click('id=menu-icon-branch-management');
+ await page.click('id=create-sub-branch-btn-บริษัท คาโมมายด์ จำกัด');
+ await page.click("(//button[@type='submit'])[2]");
+ await page.click('id=btn-form-submit');
+
+ const taxNoError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[1]",
+ );
+ const nameError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
+ const nameEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[3]",
+ );
+ const addressError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[4]",
+ );
+ const provinceError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[5]",
+ );
+ const districtError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[6]",
+ );
+ const subDistrictError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[7]",
+ );
+ const addressEnError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[8]",
+ );
+
+ await expect(taxNoError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(nameEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(addressError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(provinceError).toHaveText('โปรดเลือกจังหวัด');
+ await expect(districtError).toHaveText('โปรดเลือกอำเภอ');
+ await expect(subDistrictError).toHaveText('โปรดเลือกตำบล');
+ await expect(addressEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-cancel');
+ console.log('การตรวจสอบ Validation ถูกต้อง');
+});
+
+test('Create Service Point - ในกรณีที่กรอกทะเบียนนิติบุคคลเลขที่ไม่ครบ 13 หลัก', async () => {
+ await page.reload();
+ await page.click('id=create-sub-branch-btn-บริษัท คาโมมายด์ จำกัด');
+ await page.click("(//button[@type='submit'])[2]");
+ await page.fill("(//input[@id='input-tax-no'])[2]", '123');
+
+ // ตรวจสอบการแจ้งเตือนของทะเบียนนิติบุคคลเลขที่ในกรณีที่กรอกข้อมูลไม่ครบ 13 หลัก
+ const taxNoError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[1]",
+ );
+
+ await expect(taxNoError).toHaveText(
+ 'ข้อมูลไม่ถูกต้อง กรุณากรอกให้ครบ 13 หลัก',
+ );
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-cancel');
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกทะเบียนนิติบุคคลเลขที่ไม่ครบ 13 หลักถูกต้อง',
+ );
+});
+
+test('Create Service Point - กรอกอีเมลในกรณีที่ไม่ตรงรูปแบบอีเมล', async () => {
+ await page.reload();
+ await page.click('id=create-sub-branch-btn-บริษัท คาโมมายด์ จำกัด');
+ await page.click("(//button[@type='submit'])[2]");
+ await page.fill("(//input[@id='input-email'])[2]", 'email');
+
+ // ตรวจสอบการแจ้งเตือนของทะเบียนนิติบุคคลเลขที่ในกรณีที่กรอกข้อมูลไม่ครบ 13 หลัก
+ const emailError = page.locator(
+ "(//div[@class='q-field__messages col']//div)[2]",
+ );
+
+ await expect(emailError).toHaveText('ข้อมูลไม่ถูกต้อง');
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-form-cancel');
+ console.log(
+ 'ตรวจสอบการแสดง Vidation แจ้งเตือนในกรณีที่กรอกอีเมลไม่ตรงรูปแบบถูกต้อง',
+ );
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_007_EditBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_007_EditBranch.spec.ts
deleted file mode 100644
index c17074bc..00000000
--- a/tests/01-Admin-BranchManagement/JWS_BM_007_EditBranch.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { test, expect, Page } from '@playwright/test';
-import { strictEqual } from 'assert';
-
-let page: Page;
-
-test.beforeAll(async ({ browser }) => {
- page = await browser.newPage();
-});
-
-test.afterAll(async () => {
- if (page !== undefined) {
- await page.close();
- }
-});
-
-test('Login', async () => {
- // Login
- await page.goto('http://192.168.1.90: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');
-});
-
-test('Edit Branch', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.click('id=view-detail-btn-สีลม');
- await page.click('id=view-detail-btn-สีลม-edit');
- await page.fill("(//input[@id='input-name'])[2]", 'สาทร');
- await page.fill("(//input[@id='input-name-en'])[2]", 'Sathorn');
- await page.click("(//button[@id='submitBtn'])[2]");
- await page.click('id=view-detail-btn-สาทร');
- await page.click('id=view-detail-btn-สาทร-view');
- await page.waitForTimeout(4000);
-});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts
new file mode 100644
index 00000000..f17e51a2
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_007_SelectTypeBranch.spec.ts
@@ -0,0 +1,387 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { watchFile } from 'fs';
+import { waitForDebugger } from 'inspector';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับที่', async () => {
+ try {
+ // คลิกเมนูเพื่อจัดการสาขา
+ await page.click('id=menu-icon-branch-management');
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 2
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='สำนักงาน']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 2 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 2 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 2
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 2 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 2 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลทะเบียนนิติบุคคล', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 3
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ทะเบียนนิติบุคคล']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 3 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 3 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 3
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 3 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 3 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรสำนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 4
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='เบอร์โทรสำนักงาน']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 4 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 4 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 4
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 4 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 4 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลติดต่อ', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 5
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator("//th[normalize-space(text())='ติดต่อ']");
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 5 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 5 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 5
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 5 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 5 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลที่อยู่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 6
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ที่อยู่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 6 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 6 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 6
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 6 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 6 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_008_CloseStatusBranchandSub.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_008_CloseStatusBranchandSub.spec.ts
deleted file mode 100644
index 887720fa..00000000
--- a/tests/01-Admin-BranchManagement/JWS_BM_008_CloseStatusBranchandSub.spec.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { test, expect, Page } from '@playwright/test';
-import { strictEqual } from 'assert';
-
-let page: Page;
-
-test.beforeAll(async ({ browser }) => {
- page = await browser.newPage();
-});
-
-test.afterAll(async () => {
- if (page !== undefined) {
- await page.close();
- }
-});
-
-test('Login', async () => {
- // Login
- await page.goto('http://192.168.1.90: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');
-});
-
-test('Close Status Branch Headquater', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.click('id=view-detail-btn-สาทร');
- await page.click(
- "//div[contains(@class,'q-toggle__inner relative-position')]",
- );
- await page.waitForTimeout(2000);
- await page.keyboard.press('Escape');
-});
-
-test('Open Status Branch Headquater', async () => {
- await page.click('id=view-detail-btn-สาทร');
- await page.click(
- "//div[contains(@class,'q-toggle__inner relative-position')]",
- );
- await page.waitForTimeout(2000);
- await page.keyboard.press('Escape');
-});
-
-test('Close Status Sub-Branch Headquater', async () => {
- await page.click(
- "(//div[contains(@class,'q-tree__node-header relative-position')])[3]",
- );
- await page.click('id=branch-card-สาทร');
- await page.click('id=view-detail-btn-สีลม3');
- await page.click(
- "//div[contains(@class,'q-toggle__inner relative-position')]",
- );
- await page.waitForTimeout(2000);
- await page.keyboard.press('Escape');
- await page.waitForTimeout(4000);
-});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts
new file mode 100644
index 00000000..5ac5db74
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_008_ViewDetail.spec.ts
@@ -0,0 +1,91 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('View Detail Headquter Branch', async () => {
+ try {
+ await page.click('id=menu-icon-branch-management');
+ await page.click('id=btn-kebab-action-บริษัท โคโม่ จำกัด');
+ await page.click('id=btn-kebab-view-detail-บริษัท โคโม่ จำกัด');
+
+ const detailTitle = page.locator(
+ "//span[text()='บริษัท โคโม่ จำกัด ']/following-sibling::span",
+ );
+
+ await expect(detailTitle).toHaveText('CMO00000'); // เลขรหัสสำนักงานใหญ่
+
+ console.log('ตรวจสอบข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('View Detail Sub Branch', async () => {
+ try {
+ await page.click("(//div[@id='tree-enter-บริษัท โคโม่ จำกัด']//div)[1]");
+ await page.click('id=btn-kebab-action-สีลม1');
+ await page.click('id=btn-kebab-view-detail-สีลม1');
+
+ const detailTitle = page.locator("//span[text()='สีลม1 ']");
+
+ await detailTitle.waitFor({ state: 'visible' });
+
+ await expect(detailTitle).toHaveText('สีลม1'); // เลขรหัสสำนักงานใหญ่
+
+ console.log('ตรวจสอบข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('View Detail Service Point', async () => {
+ try {
+ await page.click("//div[@id='tree-enter-บริษัท คาโมมายด์ จำกัด']/div[1]");
+ await page.click('id=btn-kebab-action-บางรัก1');
+ await page.click('id=btn-kebab-view-detail-บางรัก1');
+
+ const detailTitle = page.locator("//span[text()='บางรัก1 ']");
+
+ await detailTitle.waitFor({ state: 'visible' });
+
+ await expect(detailTitle).toHaveText('บางรัก1'); // เลขรหัสสำนักงานใหญ่
+
+ console.log('ตรวจสอบข้อมูลถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts
new file mode 100644
index 00000000..7c14e2af
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_009_EditBranch.spec.ts
@@ -0,0 +1,129 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import exp from 'constants';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Edit Headquter Branch', async () => {
+ try {
+ // แก้ไขสำนักงานใหญ่
+ await page.click('id=menu-icon-branch-management');
+ await page.click('id=btn-kebab-action-บริษัท โคโม่ จำกัด');
+ await page.click('id=btn-kebab-edit-บริษัท โคโม่ จำกัด');
+ await page.fill('id=input-name', 'บริษัท โคโมโดะ จำกัด');
+ await page.fill('id=input-name-en', 'COMODO');
+ await page.click('id=btn-info-basic-save');
+
+ //ตรวจสอบรายละเอียดการแก้ไข
+ await page.click('id=btn-kebab-action-บริษัท โคโมโดะ จำกัด');
+ await page.click('id=btn-kebab-view-detail-บริษัท โคโมโดะ จำกัด');
+
+ //ตรวจสอบว่าได้ทำการแก้ไขถูกต้องหรือไม่
+ const detailEditName = await page.inputValue(
+ "//input[@value='บริษัท โคโมโดะ จำกัด']",
+ );
+ const detailEditNameEn = await page.inputValue(
+ "//input[@aria-label='ชื่อสำนักงานใหญ่ (EN)']",
+ );
+
+ await expect(detailEditName).toBe('บริษัท โคโมโดะ จำกัด');
+ await expect(detailEditNameEn).toBe('COMODO');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลสำนักงานใหญ่ถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('Edit Sub Branch', async () => {
+ try {
+ // แก้ไขสำนักงานใหญ่
+ await page.click("//div[@id='tree-enter-บริษัท โคโมโดะ จำกัด']/div[1]");
+ await page.waitForSelector('id=btn-kebab-action-สีลม1', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-สีลม1');
+ await page.waitForTimeout(1000);
+ await page.click('id=btn-kebab-edit-สีลม1');
+ await page.fill('id=input-name', 'สินสาทร');
+ await page.fill('id=input-name-en', 'Sinsathorn');
+ await page.click('id=btn-info-basic-save');
+
+ //ตรวจสอบรายละเอียดการแก้ไข
+ await page.click('id=btn-kebab-action-สินสาทร');
+ await page.click('id=btn-kebab-view-detail-สินสาทร');
+
+ //ตรวจสอบว่าได้ทำการแก้ไขถูกต้องหรือไม่
+ const detailEditName = await page.inputValue("//input[@value='สินสาทร']");
+ const detailEditNameEn = await page.inputValue(
+ "//input[@value='Sinsathorn']",
+ );
+
+ await expect(detailEditName).toBe('สินสาทร');
+ await expect(detailEditNameEn).toBe('Sinsathorn');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลสาขาถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('Edit Visual Branch', async () => {
+ try {
+ // แก้ไขสำนักงานใหญ่
+ await page.click("//div[@id='tree-enter-บริษัท คาโมมายด์ จำกัด']/div[1]");
+ await page.click('id=btn-kebab-action-บางรัก1');
+ await page.click('id=btn-kebab-edit-บางรัก1');
+ await page.fill('id=input-name', 'บางจาก');
+ await page.fill('id=input-name-en', 'Bangjak');
+ await page.click('id=btn-info-basic-save');
+
+ //ตรวจสอบรายละเอียดการแก้ไข
+ await page.click('id=btn-kebab-action-บางจาก');
+ await page.click('id=btn-kebab-view-detail-บางจาก');
+
+ //ตรวจสอบว่าได้ทำการแก้ไขถูกต้องหรือไม่
+ const detailEditName = await page.inputValue("//input[@value='บางจาก']");
+ const detailEditNameEn = await page.inputValue("//input[@value='Bangjak']");
+
+ await expect(detailEditName).toBe('บางจาก');
+ await expect(detailEditNameEn).toBe('Bangjak');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลสาขาเสมือนถูกต้อง');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts
new file mode 100644
index 00000000..efcb464d
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_010_StatusBranchandSubType.spec.ts
@@ -0,0 +1,229 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ตรวจสอบการแสดงผลสถานะการใช้งาน เปิด/ปิด สำนักงานใหญ่', async () => {
+ try {
+ // คลิกเมนูเพื่อจัดการสาขา
+ await page.click('id=menu-icon-branch-management');
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+// test('ตรวจสอบการแสดงผลสถานะการใช้งาน เปิด/ปิด สาขา', async () => {
+// try {
+// // คลิกเข้าสู่สาขา
+// await page.click("//div[@id='tree-enter-บริษัท โคโมโดะ จำกัด']/div[1]");
+
+// // แสดงสถานะที่ใช้งาน
+// // คลิกเพื่อเปิด dropdown
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+// await page.click('id=field-select-status_1');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+// const statusActive = await page.isVisible('id=field-select-status_1');
+
+// console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+// // แสดงสถานะที่ไม่ใช้งาน
+// // คลิกเพื่อเปิด dropdown
+// await page.keyboard.press('Escape');
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+// await page.click('id=field-select-status_2');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+// const statusInActive = await page.isVisible('id=field-select-status_1');
+
+// console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+// // แสดงสถานะทั้งหมด
+// // คลิกเพื่อเปิด dropdown
+// await page.keyboard.press('Escape');
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะทั้งหมด
+// await page.click('id=field-select-status_0');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+// const statusAll = await page.isVisible('id=field-select-status_1');
+
+// console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะทั้งหมด');
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+// throw error;
+// }
+
+// await page.waitForTimeout(2000);
+// });
+
+// test('ตรวจสอบการแสดงผลสถานะการใช้งาน เปิด/ปิด จุดรับบริการ', async () => {
+// try {
+// // คลิกเข้าสู่สาขาเสมือน
+// await page.click("//div[@id='tree-enter-บริษัท คาโมมายด์ จำกัด']/div[1]");
+
+// // แสดงสถานะที่ใช้งาน
+// // คลิกเพื่อเปิด dropdown
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+// await page.click('id=field-select-status_1');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+// const statusActive = await page.isVisible('id=field-select-status_1');
+
+// console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+// // แสดงสถานะที่ไม่ใช้งาน
+// // คลิกเพื่อเปิด dropdown
+// await page.keyboard.press('Escape');
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+// await page.click('id=field-select-status_2');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+// const statusInActive = await page.isVisible('id=field-select-status_1');
+
+// console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+// // แสดงสถานะทั้งหมด
+// // คลิกเพื่อเปิด dropdown
+// await page.keyboard.press('Escape');
+// await page.click('id=field-select-status');
+// await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+// // คลิกเพื่อแสดงสถานะทั้งหมด
+// await page.click('id=field-select-status_0');
+// await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+// // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+// const statusAll = await page.isVisible('id=field-select-status_1');
+
+// console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+// expect(statusActive).toBe(false);
+
+// console.log('ตรวจสอบสถานะทั้งหมด');
+// } catch (error) {
+// console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+// throw error;
+// }
+
+// await page.waitForTimeout(2000);
+// });
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts
new file mode 100644
index 00000000..4a5be902
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_011_SearchBranchmanagement.spec.ts
@@ -0,0 +1,85 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Search Data Branch Management', async () => {
+ await page.click('id=menu-icon-branch-management');
+
+ try {
+ // กำหนดคำที่จะค้นหา
+ const searchDatas = [
+ 'โคโมโดะ',
+ 'คาโมมายด์',
+ 'CM',
+ 'CMO',
+ '00000',
+ 'บางจาก',
+ 'บางรัก',
+ 'สีลม1',
+ ];
+
+ for (const searchData of searchDatas) {
+ // พิมพ์คำที่ต้องการค้นหา
+ await page.fill('id=input-search', searchData); // ดึงคำมาจาก searchDatas
+ await page.waitForTimeout(2000);
+
+ // ดึงผลลัพฑ์การค้นหาทั้งหมด
+ const searchResults = page.locator("//table[@class='q-table']//tbody[1]");
+ const resultCount = await searchResults.count();
+
+ // ถ้าไม่มีผลลัพธ์ให้ข้ามคำถัดไป
+ if (resultCount === 0) {
+ console.error(`ไม่พบการค้นหา: '${searchData}', ข้ามไปคำถัดไป`);
+ continue; // ข้ามคำค้นหาคำถัดไป
+ }
+
+ // ดึงข้อความทั้งหมดของผลลัพธ์การค้นหา
+ const searchResultTexts = await searchResults.allTextContents();
+ console.log(`ผลลัพธ์ของการค้นหา '${searchData}'`, searchDatas);
+
+ // ตรวจสอบว่าผลลัพธ์ทั้งหมดมีคำที่ค้นหาหรือไม่
+ const allResultContainSearchData = searchResultTexts.every((result) =>
+ result.includes(searchData),
+ );
+
+ // ถ้าไม่พบคำค้นหา ให้แค่แจ้งเตือนและข้ามไปคำถัดไป
+ if (!allResultContainSearchData) {
+ console.error(
+ `\x1b[31mผลลัพธ์บางรายการไม่ตรงกับคำค้นหา: '${searchData}', ข้ามไปคำถัดไป\x1b[0m`,
+ );
+ continue; // ข้ามไปคำค้นหาถัดไป
+ }
+
+ expect(allResultContainSearchData).toBe(true);
+
+ console.log(`การค้นหา '${searchData}' และการแสดงผลสำเร็จ`);
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบการค้นหาหลายคำค้นหา', error);
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts
new file mode 100644
index 00000000..dc671956
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_012_CloseStatusBranch.spec.ts
@@ -0,0 +1,99 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ปิดการใช้งานสำนักงานใหญ่', async () => {
+ try {
+ await page.click('id=menu-icon-branch-management');
+ 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('เปลี่ยนสถานะสำเร็จ');
+ await page.reload();
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//td[contains(.,'บริษัท คาโมมายด์ จำกัดCMM00000')]",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgb(249, 250, 252)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ console.log('สีของแถวถูกเปลี่ยนเป็นสีเทาอ่อน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
+
+test('เปิดการใช้งานสำนักงานใหญ่', async () => {
+ 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('เปลี่ยนสถานะสำเร็จ');
+ await page.reload();
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//td[contains(.,'บริษัท คาโมมายด์ จำกัดCMM00000')]",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgba(0, 0, 0, 0)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ console.log('สีของแถวถูกเปลี่ยนเป็นของสถานะการใช้งาน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts b/tests/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts
new file mode 100644
index 00000000..2ceaab3f
--- /dev/null
+++ b/tests/01-Admin-BranchManagement/JWS_BM_013_DeleteBranch.spec.ts
@@ -0,0 +1,217 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { Console, error, log } from 'console';
+import exp from 'constants';
+import { it } from 'node:test';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ทดสอบการลบจัดการสาขา', async () => {
+ await page.click('id=menu-icon-branch-management');
+
+ // จำลองการสร้างสำนักงานใหญ่
+
+ 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]", '1260846220284');
+ await page.fill("(//input[@id='input-name'])[2]", 'บริษัท จำลอง จำกัด');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'JOMLONG');
+ await page.fill("(//input[@id='input-email'])[2]", 'JOM@support.com');
+ await page.fill("(//input[@id='input-telephone-no'])[2]", '022010100');
+ 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]", 'como20');
+ await page.fill("(//input[@id='default-input-address'])[2]", '40/04');
+ 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]", '40/04');
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_4');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '2022822624262');
+ 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-form-submit');
+
+ await page.waitForSelector('id=btn-ok-dialog');
+ await page.click('id=btn-ok-dialog');
+
+ // จำลองการสร้างสาขา
+
+ await page.click('id=create-sub-branch-btn-บริษัท จำลอง จำกัด');
+ await page.click("(//button[@type='submit'])[1]");
+
+ await page.fill("(//input[@id='input-tax-no'])[2]", '1260846220281');
+ await page.fill("(//input[@id='input-name'])[3]", 'สาขาจำลอง');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'SAKAJOMLONG');
+ await page.fill(
+ "(//input[@aria-label='เลขที่ใบอนุญาต'])[2]",
+ '1228222822822',
+ );
+ await page.fill("(//input[@id='input-email'])[2]", 'test@support.com');
+ 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]", '0822262228');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'company');
+
+ await page.fill("(//input[@id='default-input-address-no'])[2]", '20/02');
+ 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/02');
+
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_1');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '2282020021');
+ 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-form-submit');
+
+ // จำลองการสร้างสาขาเสมือน
+
+ await page.click('id=create-sub-branch-btn-บริษัท จำลอง จำกัด');
+ await page.click("(//button[@type='submit'])[2]");
+
+ await page.fill("(//input[@id='input-tax-no'])[2]", '2022826282642');
+ await page.fill("(//input[@id='input-name'])[2]", 'สาขาเสมือน');
+ await page.fill("(//input[@id='input-name-en'])[2]", 'VISUALBRANCH');
+ await page.fill("(//input[@id='input-email'])[2]", 'visual@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]", '0822622862');
+ await page.fill("(//input[@id='input-line-id'])[2]", 'cmmsupport');
+
+ await page.fill("(//input[@id='default-input-address'])[2]", '40/04');
+ 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]", '40/04');
+
+ await page.click("(//input[@id='select-bankbook'])[3]");
+ await page.click('id=select-bankbook_2');
+ await page.fill("(//input[@aria-label='เลขบัญชี'])[2]", '2822642201');
+ 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-form-submit');
+
+ // ลบสาขาและตรวจสอบการลบสาขา
+ try {
+ await page.click('id=btn-kebab-action-สาขาจำลอง');
+ await page.click('id=btn-kebab-delete-สาขาจำลอง');
+
+ // ยืนยันการลบ
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(1000);
+
+ // ตรวจสอบการลบสาขา
+ const itemLocator = page.locator(
+ "//tr[contains(.,'1 สาขาจำลองTES0000112608462202810822262228คุณอาท20/02')]",
+ );
+
+ // ตรวจสอบว่าถูกลบออกจากระบบหรือไม่
+ await expect(itemLocator).toBeHidden();
+
+ console.log('ตรวจสอบข้อมูลการลบสาขาสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการลบสาขา', error);
+ throw error;
+ }
+
+ // ลบสาขาเสมือนและตรวจสอบการลบสาขาเสมือน
+
+ try {
+ await page.click('id=btn-kebab-action-สาขาเสมือน');
+ await page.click('id=btn-kebab-delete-สาขาเสมือน');
+
+ // ยืนยันการลบ
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(1000);
+
+ // ตรวจสอบการลบสาขาเสมือน
+ const itemLocator = page.locator(
+ "//tr[contains(.,'2 สาขาเสมือนTES0000220228262826420822622862คุณอุล40/04')]",
+ );
+
+ // ตรวจสอบว่าถูกลบออกจากระบบหรือไม่
+ await expect(itemLocator).toBeHidden();
+
+ console.log('ตรวจสอบข้อมูลการลบสาขาเสมือนสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการลบสาขาเสมือน', error);
+ throw error;
+ }
+
+ // // ลบสำนักงานใหญ่และตรวจสอบการลบสำนักงานใหญ่
+
+ // await page.click("//div[@id='tree-enter-บริษัท จำลอง จำกัด']/div[1]");
+ // try {
+ // await page.click('id=btn-kebab-action-บริษัท จำลอง จำกัด');
+ // await page.click('id=btn-kebab-delete-บริษัท จำลอง จำกัด');
+
+ // // ยืนยันการลบ
+ // await page.click('id=btn-ok-dialog');
+ // await page.waitForTimeout(1000);
+
+ // // ตรวจสอบการลบสำนักงานใหญ่
+ // const itemLocator = page.locator(
+ // "//tr[contains(.,'9 บริษัท จำลอง จำกัดTES0000012608462202840866224228คุณอาท40/04')]",
+ // );
+
+ // // ตรวจสอบว่าถูกลบออกจากระบบหรือไม่
+ // await expect(itemLocator).toBeHidden();
+
+ // console.log('ตรวจสอบข้อมูลการลบสำนักงานใหญ่สำเร็จ');
+ // } catch (error) {
+ // console.error('เกิดข้อผิดพลาดในการลบสำนักงานใหญ่', error);
+ // throw error;
+ // }
+
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
index 152ab264..8ba381c2 100644
--- a/tests/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_001_CreatePersonnel.spec.ts
@@ -1,5 +1,6 @@
import { test, expect, Page } from '@playwright/test';
import { strictEqual } from 'assert';
+import exp from 'constants';
let page: Page;
@@ -26,309 +27,767 @@ test('Login', async () => {
test('Create Personnel พนักงาน ชาย', async () => {
await page.click('id=menu-icon-personnel-management');
- for (let i = 1; i < 5; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user${i + 1}`);
- // await page.click('id=select-user-type');
- // await page.click("//span[text()='พนักงาน']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 1}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 1}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='ชาย']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 1}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 1}`);
- await page.fill('id=input-regis-no', `282228222242${i + 1}`);
- await page.click('id=input-start-date');
- await page.click(`//div[text()='1${i + 1}']`);
- await page.click('id=input-retire-date');
- await page.click(`//div[text()='2${i + 1}']`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-17']/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);
+
+ console.log('ตรวจสอบการสร้างพนักงานชายถูกต้อง');
});
test('Create Personnel พนักงาน หญิง', async () => {
- for (let i = 1; i < 10; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user${i + 5}`);
- // await page.click('id=select-user-type');
- // await page.click("//span[text()='พนักงาน']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 5}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 5}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='หญิง']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 5}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 5}`);
- await page.fill('id=input-regis-no', `282228222242${i + 5}`);
- await page.click('id=input-start-date');
- await page.click(`//div[text()='1${i + 5}']`);
- await page.click('id=input-retire-date');
- await page.click(`//div[text()='2${i + 5}']`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
-});
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
-test('Create Personnel พนักงานส่งเอกสาร ชาย', async () => {
- for (let i = 1; i < 5; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user0${i + 1}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='พนักงานส่งเอกสาร']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 1}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 1}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='ชาย']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 1}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 1}`);
- await page.fill('id=input-regis-no', `282228222222${i + 1}`);
- await page.click('id=input-start-date');
- await page.click(`//div[text()='1${i + 1}']`);
- await page.click('id=input-retire-date');
- await page.click(`//div[text()='2${i + 1}']`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'employeew');
+ 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', 'Araya');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Mala');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill('id=form-dialog-personnel-input-email', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-16']/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() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='อารยา มาลา']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('อารยา มาลา');
+
+ console.log('ตรวจสอบการสร้างพนักงานหญิงถูกต้อง');
});
test('Create Personnel พนักงานส่งเอกสาร หญิง', async () => {
- for (let i = 1; i < 10; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user0${i + 5}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='พนักงานส่งเอกสาร']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 5}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 5}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='หญิง']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 5}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 5}`);
- await page.fill('id=input-regis-no', `282228222224${i + 5}`);
- await page.click('id=input-start-date');
- await page.click(`//div[text()='1${i + 5}']`);
- await page.click('id=input-retire-date');
- await page.click(`//div[text()='2${i + 5}']`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ await page.click("(//div[@role='tab'])[3]");
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-15']/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() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='มาตา ลดา']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('มาตา ลดา');
+
+ console.log('ตรวจสอบการสร้างพนักงานส่งเอกสารหญิงถูกต้อง');
+});
+
+test('Create Personnel พนักงานส่งเอกสาร ชาย', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'courierm');
+ 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', 'Thanwa');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Mana');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill('id=form-dialog-personnel-input-email', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-14']/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() เพื่อดึงมาแต่ข้อความจริง ๆ
+ const displayNameLocator = page.locator(
+ "//div[normalize-space(text())='ธันวา มานา']",
+ );
+ const displayName = (await displayNameLocator.textContent())?.trim();
+
+ // ตรวจสอบข้อมูลที่ดึงออกมา
+ expect(displayName).toBe('ธันวา มานา');
+
+ console.log('ตรวจสอบการสร้างพนักงานส่งเอกสารชายถูกต้อง');
});
test('Create Personnel ตัวแทน ชาย', async () => {
- for (let i = 1; i < 5; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user00${i + 1}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='ตัวแทน']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 1}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 1}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='ชาย']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 1}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 1}`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ await page.click("(//div[@role='tab'])[4]");
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-13']/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('อาคม พลัง');
+
+ console.log('ตรวจสอบการสร้างตัวแทนชายถูกต้อง');
});
test('Create Personnel ตัวแทน หญิง', async () => {
- for (let i = 1; i < 10; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user00${i + 5}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='ตัวแทน']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 5}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 5}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='หญิง']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 5}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 5}`);
- await page.click('id=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
-});
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
-test('Create Personnel เอเจนซี่ ชาย', async () => {
- for (let i = 1; i < 5; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user000${i + 1}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='เอเจนซี่']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 1}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 1}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 1}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='ชาย']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 1}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 1}`);
- await page.click('id=input-source-nationality');
- await page.click("(//span[text()='ไทย'])[2]");
- await page.click('id=input-import-nationality');
- await page.click("(//span[text()='ไทย'])[3]");
- 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=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'delegatew');
+ await page.click('id=select-user-role');
+ await page.click('id=select-user-role_10');
+ // 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', 'Sarocha');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Mena');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill('id=form-dialog-personnel-input-email', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-12']/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('สโรชา มีนา');
+
+ console.log('ตรวจสอบการสร้างตัวแทนหญิงถูกต้อง');
});
test('Create Personnel เอเจนซี่ หญิง', async () => {
- for (let i = 1; i < 10; i++) {
- await page.click('id=btn-add');
- await page.click('id=btn-add-personne');
- await page.fill('id=input-username', `user000${i + 5}`);
- await page.click('id=select-user-type');
- await page.click("//span[text()='เอเจนซี่']");
- await page.click('id=select-user-role');
- await page.click("//span[text()='System']");
- await page.click("//div[@role='option']");
- await page.fill('id=input-first-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-last-name', `ทดสอบ${i + 5}`);
- await page.fill('id=input-first-name-en', `Firstname${i + 5}`);
- await page.fill('id=input-last-name-en', `Lastname${i + 5}`);
- await page.click('id=select-gender');
- await page.click("//span[text()='หญิง']");
- await page.click('id=input-birth-date');
- await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
- await page.click("//div[text()='2021']");
- await page.click("//div[text()='10']");
- await page.fill('id=input-address', `20/0${i + 5}`);
- await page.click('id=select-province');
- await page.click("//span[text()='เชียงใหม่']");
- await page.click('id=select-district');
- await page.click("//span[text()='เมือง']");
- await page.click('id=select-sub-district');
- await page.click("//span[text()='ช้างเผือก']");
- await page.fill('id=input-address-en', `20/0${i + 5}`);
- await page.click('id=input-source-nationality');
- await page.click("(//span[text()='ไทย'])[2]");
- await page.click('id=input-import-nationality');
- await page.click("(//span[text()='ไทย'])[3]");
- 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=submitBtn');
- await page.click('id=btn-ok-dialog');
- }
- await page.waitForTimeout(4000);
+ await page.click("(//div[@role='tab'])[5]");
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-11']/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('ธิดา งามตา');
+
+ console.log('ตรวจสอบการสร้างเอเจนซี่หญิงถูกต้อง');
+});
+
+test('Create Personnel เอเจนซี่ ชาย', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกข้อมูลพื้นฐานของบุคคลากร
+ 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.click("//span[normalize-space(text())='CMO00000']");
+
+ 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', 'agencym');
+ 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', 'Aunda');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'Thamma');
+ await page.fill('id=form-dialog-personnel-input-telephone', '08422622282');
+ await page.fill('id=form-dialog-personnel-input-email', 'employeew@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()='2561']");
+ await page.click("//div[text()='8']");
+
+ // วันออกบัตร วันที่หมออายุ
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-issue'])[1]",
+ );
+ await page.click("//div[@id='2024-09-02']");
+ await page.click(
+ "(//input[@id='form-dialog-personnel-input-citizen-expire'])[1]",
+ );
+ await page.click("//div[@id='2024-09-10']/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('อันดา ธรรมา');
+
+ console.log('ตรวจสอบการสร้างเอเจนซี่ชายถูกต้อง');
});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts
new file mode 100644
index 00000000..ec57ab11
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_002_CreatePersonnelFail.spec.ts
@@ -0,0 +1,128 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import exp from 'constants';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Personnel - ในกรณีที่ไม่กรอกข้อมูล', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+ await page.click('id=btn-info-basic-save');
+ await page.waitForTimeout(2000);
+
+ const usernameError = page.locator("(//div[@role='alert'])[1]");
+ const userTypeError = page.locator("(//div[@role='alert'])[2]");
+ const userPermisionError = page.locator("(//div[@role='alert'])[3]");
+ const citizenIdError = page.locator("(//div[@role='alert'])[4]");
+ const firstNameError = page.locator("(//div[@role='alert'])[5]");
+ const lastNameError = page.locator("(//div[@role='alert'])[6]");
+ const firstNameEnError = page.locator("(//div[@role='alert'])[7]");
+ const lastNameEnError = page.locator("(//div[@role='alert'])[8]");
+ const brithDateError = page.locator("(//div[@role='alert'])[9]");
+ const citizenIdInError = page.locator("(//div[@role='alert'])[10]");
+ const addressError = page.locator("(//div[@role='alert'])[11]");
+ const provinceError = page.locator("(//div[@role='alert'])[12]");
+ const districtError = page.locator("(//div[@role='alert'])[13]");
+ const subDistrictErrorError = page.locator("(//div[@role='alert'])[14]");
+ const addressEnErrorError = page.locator("(//div[@role='alert'])[15]");
+
+ await expect(usernameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(userTypeError).toHaveText('โปรดเลือกประเภทผู้ใช้งาน');
+ await expect(userPermisionError).toHaveText('โปรดเลือกสิทธิ์ผู้ใช้งาน');
+ await expect(citizenIdError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(firstNameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(lastNameError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(firstNameEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(lastNameEnError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(brithDateError).toHaveText('โปรดเลือกวันเดือนปีเกิด');
+ await expect(citizenIdInError).toHaveText('โปรดเลือกวันที่ออกบัตร');
+ await expect(addressError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+ await expect(provinceError).toHaveText('โปรดเลือกจังหวัด');
+ await expect(districtError).toHaveText('โปรดเลือกอำเภอ');
+ await expect(subDistrictErrorError).toHaveText('โปรดเลือกตำบล');
+ await expect(addressEnErrorError).toHaveText('จำเป็นต้องกรอกข้อมูลนี้');
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบการทำงานถูกต้อง');
+});
+
+test('Create Personnel - ในกรณีที่กรอกชื่อผู้ใช้งานที่ไม่ตรงกับตัวอักษรที่กำหนด', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกชื่อผู้ใช้งาน
+ await page.fill('id=input-username', 'ทดสอบ');
+
+ const usernameError = page.locator("(//div[@role='alert'])[1]");
+
+ await expect(usernameError).toHaveText(
+ 'โปรดใช้เฉพาะตัวอักษรภาษาอังกฤษและตัวเลขเท่านั้น',
+ );
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบการทำงานถูกต้อง');
+});
+
+test('Create Personnel - ในกรณีที่กรอกชื่อและนามสกุลภาษาอังกฤษไม่ตรงตามรูปแบบ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกชื่อผู้ใช้งาน
+ await page.fill('id=form-dialog-personnel-input-first-name-en', 'ทดสอบ');
+ await page.fill('id=form-dialog-personnel-input-last-name-en', 'ทดสอบ');
+
+ const firstNameEnError = page.locator("(//div[@role='alert'])[1]");
+ const lastNameEnError = page.locator("(//div[@role='alert'])[2]");
+
+ await expect(firstNameEnError).toHaveText(
+ 'โปรดใช้เฉพาะตัวอักษรภาษาอังกฤษเท่านั้น',
+ );
+ await expect(lastNameEnError).toHaveText(
+ 'โปรดใช้เฉพาะตัวอักษรภาษาอังกฤษเท่านั้น',
+ );
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบการทำงานถูกต้อง');
+});
+
+test('Create Personnel - ในกรณีที่กรอกอีเมลไม่ตรงรูปแบบ', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-personne');
+
+ // กรอกชื่อผู้ใช้งาน
+ await page.fill('id=form-dialog-personnel-input-email', 'ทดสอบ');
+
+ const firstNameEnError = page.locator("(//div[@role='alert'])[1]");
+
+ await expect(firstNameEnError).toHaveText('ข้อมูลไม่ถูกต้อง');
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-form-close');
+ console.log('การตรวจสอบการทำงานถูกต้อง');
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts
new file mode 100644
index 00000000..0829467d
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_003_ViewDetail.spec.ts
@@ -0,0 +1,109 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('View Deatil Personnel Employee', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ await page.click("(//div[@role='tab'])[2]");
+
+ try {
+ await page.waitForSelector('id=btn-kebab-action-employeem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-employeem');
+ await page.click('id=btn-kebab-view-detail-employeem');
+
+ const detailTitle = page.locator("//span[text()='ธรรมรงด์ ดำรงธรรม']");
+
+ await expect(detailTitle).toHaveText('ธรรมรงด์ ดำรงธรรม');
+ console.log('ตรวจสอบรายละเอียดพนักงานถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-close');
+});
+
+test('View Deatil Personnel Courier', async () => {
+ try {
+ await page.click("(//div[@role='tab'])[3]");
+ await page.click('id=btn-kebab-action-courierw');
+ await page.click('id=btn-kebab-view-detail-courierw');
+
+ const detailTitle = page.locator("//span[text()='มาตา ลดา']");
+
+ await expect(detailTitle).toHaveText('มาตา ลดา');
+ console.log('ตรวจสอบรายละเอียดพนักงานส่งเอกสารถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-close');
+});
+
+test('View Deatil Personnel Delegate', async () => {
+ try {
+ await page.click("(//div[@role='tab'])[4]");
+ await page.click('id=btn-kebab-action-delegatem');
+ await page.click('id=btn-kebab-view-detail-delegatem');
+
+ const detailTitle = page.locator("//span[text()='อาคม พลัง']");
+
+ await expect(detailTitle).toHaveText('อาคม พลัง');
+ console.log('ตรวจสอบรายละเอียดตัวแทนถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-close');
+});
+
+test('View Deatil Personnel Agency', async () => {
+ try {
+ await page.click("(//div[@role='tab'])[5]");
+ await page.click('id=btn-kebab-action-agencyw');
+ await page.waitForSelector('id=btn-kebab-view-detail-agencyw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-view-detail-agencyw');
+
+ const detailTitle = await page.locator("//span[text()='ธิดา งามตา']");
+
+ await expect(detailTitle).toHaveText('ธิดา งามตา');
+ console.log('ตรวจสอบรายละเอียดเอเจนซี่ถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+ await page.click('id=btn-info-close');
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts
new file mode 100644
index 00000000..6150116b
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_004_EditPersonnel.spec.ts
@@ -0,0 +1,243 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { exec } from 'child_process';
+import { log } from 'console';
+import { writeFileSync } from 'fs';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Edit Personnel - พนักงาน', async () => {
+ await page.click('id=menu-icon-personnel-management');
+
+ try {
+ // เข้าสู่หน้าแก้ไขพนักงาน
+ await page.click("(//div[@role='tab'])[2]");
+ await page.waitForSelector('id=btn-kebab-action-employeem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-employeem');
+
+ // ตรวจสอบการคลิกว่าได้มีการคลิกหรือการแสดงจริงหรือไม่
+ // const isElementVisible = await page.isVisible(
+ // 'id=btn-kebab-edit-employeem',
+ // );
+ // console.log('Element visibility:', isElementVisible);
+
+ await page.click('id=btn-kebab-edit-employeem');
+
+ // แก้ไขข้อมูล
+ await page.fill('id=drawer-info-personnel-input-first-name', 'อานน');
+ await page.fill('id=drawer-info-personnel-input-last-name', 'รักมาก');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Arnon');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Rakmak');
+ await page.click('id=btn-info-basic-save'); // คลิกปุ่มบันทึก
+
+ // ตรวจสอบหลังแก้ไขเสร็จ
+ await page.waitForSelector('id=btn-kebab-action-employeem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-employeem');
+ await page.waitForSelector('id=btn-kebab-view-detail-employeem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-view-detail-employeem');
+
+ // ตรวจสอบข้อมูลว่าทำการแก้ไขถูกหรือไม่
+ const detailEditFistName = await page.inputValue("//input[@value='อานน']");
+ const detailEditLastName = await page.inputValue(
+ "//input[@value='รักมาก']",
+ );
+ const detailEditFistNameEn = await page.inputValue(
+ "//input[@value='Arnon']",
+ );
+ const detailEditLastNameEn = await page.inputValue(
+ "//input[@value='Rakmak']",
+ );
+
+ await expect(detailEditFistName).toBe('อานน');
+ await expect(detailEditLastName).toBe('รักมาก');
+ await expect(detailEditFistNameEn).toBe('Arnon');
+ await expect(detailEditLastNameEn).toBe('Rakmak');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลพนักงานถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบแก้ไขบุคลากร');
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('Edit Personnel - พนักงานส่งเอกสาร', async () => {
+ try {
+ // เข้าสู่หน้าแก้ไขพนักงาน
+ await page.click("(//div[@role='tab'])[3]");
+ await page.click('id=btn-kebab-action-courierw');
+ await page.click('id=btn-kebab-edit-courierw');
+
+ // แก้ไขข้อมูล
+ await page.fill('id=drawer-info-personnel-input-first-name', 'ลาดา');
+ await page.fill('id=drawer-info-personnel-input-last-name', 'มดา');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Lada');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Mada');
+ await page.click('id=btn-info-basic-save'); // คลิกปุ่มบันทึก
+
+ // ตรวจสอบหลังแก้ไขเสร็จ
+ await page.waitForSelector('id=btn-kebab-action-courierw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-courierw');
+ await page.waitForSelector('id=btn-kebab-view-detail-courierw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-view-detail-courierw');
+
+ // ตรวจสอบข้อมูลว่าทำการแก้ไขถูกหรือไม่
+ const detailEditFistName = await page.inputValue("//input[@value='ลาดา']");
+ const detailEditLastName = await page.inputValue("//input[@value='มดา']");
+ const detailEditFistNameEn = await page.inputValue(
+ "//input[@value='Lada']",
+ );
+ const detailEditLastNameEn = await page.inputValue(
+ "//input[@value='Mada']",
+ );
+
+ await expect(detailEditFistName).toBe('ลาดา');
+ await expect(detailEditLastName).toBe('มดา');
+ await expect(detailEditFistNameEn).toBe('Lada');
+ await expect(detailEditLastNameEn).toBe('Mada');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลพนักงานส่งเอกสารถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบแก้ไขบุคลากร');
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('Edit Personnel - ตัวแทน', async () => {
+ try {
+ // เข้าสู่หน้าแก้ไขพนักงาน
+ await page.click("(//div[@role='tab'])[4]");
+ await page.click('id=btn-kebab-action-delegatem');
+ await page.click('id=btn-kebab-edit-delegatem');
+
+ // แก้ไขข้อมูล
+ await page.fill('id=drawer-info-personnel-input-first-name', 'ธนกร');
+ await page.fill('id=drawer-info-personnel-input-last-name', 'ลอยฟ้า');
+ await page.fill(
+ 'id=drawer-info-personnel-input-first-name-en',
+ 'Thanakorn',
+ );
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Loifa');
+ await page.click('id=btn-info-basic-save'); // คลิกปุ่มบันทึก
+
+ // ตรวจสอบหลังแก้ไขเสร็จ
+ await page.waitForSelector('id=btn-kebab-action-delegatem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-delegatem');
+ await page.waitForSelector('id=btn-kebab-view-detail-delegatem', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-view-detail-delegatem');
+
+ // ตรวจสอบข้อมูลว่าทำการแก้ไขถูกหรือไม่
+ const detailEditFistName = await page.inputValue("//input[@value='ธนกร']");
+ const detailEditLastName = await page.inputValue(
+ "//input[@value='ลอยฟ้า']",
+ );
+ const detailEditFistNameEn = await page.inputValue(
+ "//input[@value='Thanakorn']",
+ );
+ const detailEditLastNameEn = await page.inputValue(
+ "//input[@value='Loifa']",
+ );
+
+ await expect(detailEditFistName).toBe('ธนกร');
+ await expect(detailEditLastName).toBe('ลอยฟ้า');
+ await expect(detailEditFistNameEn).toBe('Thanakorn');
+ await expect(detailEditLastNameEn).toBe('Loifa');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลตัวแทนถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบแก้ไขบุคลากร');
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
+
+test('Edit Personnel - เอเจนซี่', async () => {
+ try {
+ // เข้าสู่หน้าแก้ไขพนักงาน
+ await page.click("(//div[@role='tab'])[5]");
+ await page.waitForTimeout(2000);
+ await page.waitForSelector('id=btn-kebab-action-agencyw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-agencyw');
+ await page.click('id=btn-kebab-edit-agencyw');
+
+ // แก้ไขข้อมูล
+ await page.fill('id=drawer-info-personnel-input-first-name', 'นิดา');
+ await page.fill('id=drawer-info-personnel-input-last-name', 'อามา');
+ await page.fill('id=drawer-info-personnel-input-first-name-en', 'Nida');
+ await page.fill('id=drawer-info-personnel-input-last-name-en', 'Arma');
+ await page.click('id=btn-info-basic-save'); // คลิกปุ่มบันทึก
+
+ // ตรวจสอบหลังแก้ไขเสร็จ
+ await page.waitForSelector('id=btn-kebab-action-agencyw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-action-agencyw');
+ await page.waitForSelector('id=btn-kebab-view-detail-agencyw', {
+ state: 'visible',
+ });
+ await page.click('id=btn-kebab-view-detail-agencyw');
+
+ // ตรวจสอบข้อมูลว่าทำการแก้ไขถูกหรือไม่
+ const detailEditFistName = await page.inputValue("//input[@value='นิดา']");
+ const detailEditLastName = await page.inputValue("//input[@value='อามา']");
+ const detailEditFistNameEn = await page.inputValue(
+ "//input[@value='Nida']",
+ );
+ const detailEditLastNameEn = await page.inputValue(
+ "//input[@value='Arma']",
+ );
+
+ await expect(detailEditFistName).toBe('นิดา');
+ await expect(detailEditLastName).toBe('อามา');
+ await expect(detailEditFistNameEn).toBe('Nida');
+ await expect(detailEditLastNameEn).toBe('Arma');
+
+ console.log('ตรวจสอบการแก้ไขข้อมูลเอเจนซี่ถูกต้อง');
+ } catch (error) {
+ console.log('เกิดข้อผิดพลาดในการทดสอบแก้ไขบุคลากร');
+ throw error;
+ }
+ await page.waitForTimeout(4000);
+ await page.click('id=btn-info-close');
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts
new file mode 100644
index 00000000..df83e61e
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_005_StatusPersonnel.spec.ts
@@ -0,0 +1,98 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ปิดสถานะการใช้งานบุคลากร', async () => {
+ await page.click('id=menu-icon-personnel-management');
+ try {
+ await page.click('id=btn-kebab-action-employeem');
+
+ await page.click('id=btn-kebab-status-employeem', {
+ force: true,
+ });
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+ await page.reload();
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//div[normalize-space(text())='อานน รักมาก']",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgba(0, 0, 0, 0)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ console.log('สีของแถวถูกเปลี่ยนเป็นสีเทาอ่อน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
+
+test('เปิดสถานะการใช้งานบุคลากร', async () => {
+ try {
+ await page.click('id=btn-kebab-action-employeem');
+
+ await page.click('id=btn-kebab-status-employeem', {
+ force: true,
+ });
+ await page.click('id=btn-ok-dialog');
+ console.log('เปลี่ยนสถานะสำเร็จ');
+ await page.reload();
+
+ // รอ Update
+ await page.waitForTimeout(2000);
+ console.log('สถานะถูกเปลี่ยนแล้ว');
+
+ // ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
+ const rowLocator = page.locator(
+ "//div[normalize-space(text())='อานน รักมาก']",
+ );
+ const backgroundColor = await rowLocator.evaluate(
+ (el) => window.getComputedStyle(el).backgroundColor,
+ );
+
+ // กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
+ const expectedColor = 'rgba(0, 0, 0, 0)';
+
+ // ตรวจสอบสีที่เปลี่ยนไป
+ expect(backgroundColor.trim()).toBe(expectedColor);
+ console.log('สีของแถวถูกเปลี่ยนเป็นของสถานะการใช้งาน');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ');
+ throw error;
+ }
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_005_SearchPersonnel.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel(ยังไม่เสร็จทำทีหลัง).spec.ts
similarity index 100%
rename from tests/02-Admin-PersonnelManagement/JWS_PM_005_SearchPersonnel.spec.ts
rename to tests/02-Admin-PersonnelManagement/JWS_PM_006_SearchPersonnel(ยังไม่เสร็จทำทีหลัง).spec.ts
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts
new file mode 100644
index 00000000..2ec0c54e
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_007_StatusPersonnelType.spec.ts
@@ -0,0 +1,355 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ตรวจสอบการแสดงสถานะใช้งาน เปิด/ปิด บุคลากรทั้งหมด', async () => {
+ try {
+ // คลิกเมนูจัดการบุคลากร
+ await page.click('id=menu-icon-personnel-management');
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+});
+
+test('ตรวจสอบการแสดงสถานะใช้งาน เปิด/ปิด พนักงาน', async () => {
+ try {
+ // คลิก Tab พนักงาน
+ await page.click("(//div[@role='tab'])[2]");
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+});
+
+test('ตรวจสอบการแสดงสถานะใช้งาน เปิด/ปิด พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิก Tab พนักงานส่งเอกสาร
+ await page.click("(//div[@role='tab'])[3]");
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+});
+
+test('ตรวจสอบการแสดงสถานะใช้งาน เปิด/ปิด ตัวแทน', async () => {
+ try {
+ // คลิก Tab ตัวแทน
+ await page.click("(//div[@role='tab'])[4]");
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+});
+
+test('ตรวจสอบการแสดงสถานะใช้งาน เปิด/ปิด เอเจนซี่', async () => {
+ try {
+ // คลิก Tab เอเจนซี่
+ await page.click("(//div[@role='tab'])[5]");
+
+ // แสดงสถานะที่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังใช้งานอยู่
+ await page.click('id=field-select-status_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะใช้งานหรือไม่
+ const statusActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะกำลังใช้งานเท่านั้น');
+
+ // แสดงสถานะที่ไม่ใช้งาน
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะกำลังไม่ใช้งาน
+ await page.click('id=field-select-status_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่ามีแต่สถานะไม่ใช้งานหรือไม่
+ const statusInActive = await page.isVisible('id=field-select-status_1');
+
+ console.log('มีเพียงสถานะการใช้งานเท่านั้น', statusInActive); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะการใช้งานมีแต่สถานะที่ไม่ใช้งาน');
+
+ // แสดงสถานะทั้งหมด
+ // คลิกเพื่อเปิด dropdown
+ await page.keyboard.press('Escape');
+ await page.click('id=field-select-status');
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อแสดงสถานะทั้งหมด
+ await page.click('id=field-select-status_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าแสดงทุกสถานะหรือไม่
+ const statusAll = await page.isVisible('id=field-select-status_1');
+
+ console.log('สถานะทั้งหมด', statusAll); // เช็ค
+
+ expect(statusActive).toBe(false);
+
+ console.log('ตรวจสอบสถานะทั้งหมด');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts b/tests/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts
new file mode 100644
index 00000000..91abf788
--- /dev/null
+++ b/tests/02-Admin-PersonnelManagement/JWS_PM_008_TypePersonnelFields.spec.ts
@@ -0,0 +1,2084 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+//---------------------------------Tab ทั้งหมด----------------------------------------
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับ', async () => {
+ try {
+ // คลิกเมนูเพื่อเข้าหน้าจัดการบุคลากร
+ await page.click('id=menu-icon-personnel-management');
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ-สกุล', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลประเภท', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรศัพท์', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอายุ', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอีเมล', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลสิทธิ์ผู้ใช้งาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_6');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_6'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+//---------------------------------Tab พนักงาน----------------------------------------
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับ - พนักงาน', async () => {
+ try {
+ // คลิก Tab พนักงาน
+ await page.click("(//div[@role='tab'])[2]");
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ-สกุล - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลประเภท - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรศัพท์ - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอายุ - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอีเมล - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลสิทธิ์ผู้ใช้งาน - พนักงาน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_6');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_6'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+//---------------------------------Tab พนักงานส่งเอกสาร----------------------------------------
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับ - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิก Tab พนักงาน
+ await page.click("(//div[@role='tab'])[3]");
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ-สกุล - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลประเภท - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรศัพท์ - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอายุ - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอีเมล - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลสิทธิ์ผู้ใช้งาน - พนักงานส่งเอกสาร', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_6');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_6'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+//---------------------------------Tab ตัวแทน----------------------------------------
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับ - ตัวแทน', async () => {
+ try {
+ // คลิก Tab พนักงาน
+ await page.click("(//div[@role='tab'])[4]");
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ-สกุล - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลประเภท - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรศัพท์ - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอายุ - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอีเมล - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลสิทธิ์ผู้ใช้งาน - ตัวแทน', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_6');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_6'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+//---------------------------------Tab เอเจนซี่----------------------------------------
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลลำดับ - เอเจนซี่', async () => {
+ try {
+ // คลิก Tab พนักงาน
+ await page.click("(//div[@role='tab'])[5]");
+
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_0');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_0'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลชื่อ-สกุล - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_1');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_1'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลประเภท - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_2');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_2'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลเบอร์โทรศัพท์ - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_3');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_3'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอายุ - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_4');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_4'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลอีเมล - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_5');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_5'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+});
+
+test('ตรวจสอบการแสดงผลฟิลด์แสดงผลสิทธิ์ผู้ใช้งาน - เอเจนซี่', async () => {
+ try {
+ // คลิกเพื่อเปิด dropdown
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+
+ // คลิกเพื่อปิดคอลัมน์ที่ 1
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์ถูกซ่อน
+ const column1 = page.locator('id=select-field_6');
+ const column1Cells = page.locator(
+ "//th[normalize-space(text())='ลำดับที่']",
+ );
+
+ const isColumn1Hidden = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display === 'none',
+ );
+ console.log('คอลัมน์ที่ 1 ซ่อนอยู่:', isColumn1Hidden); // เช็ค
+
+ const areCellsHidden = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display === 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 ซ่อนอยู่:', areCellsHidden); // เช็ค
+
+ expect(isColumn1Hidden).toBe(false);
+ expect(areCellsHidden).toBe(true);
+
+ // คลิกอีกครั้งเพื่อเปิดคอลัมน์ที่ 1
+ await page.keyboard.press('Escape');
+ await page.click("(//input[@id='select-field'])[1]");
+ await page.waitForTimeout(1000); // รอให้ dropdown เปิด
+ await page.click('id=select-field_6'); // คลิกเพื่อเปิดคอลัมน์
+ await page.waitForTimeout(1000); // รอให้ UI อัปเดต
+
+ // ตรวจสอบว่าคอลัมน์แสดงอยู่
+ const isColumn1Visible = await column1.evaluate(
+ (el) => window.getComputedStyle(el).display !== 'none',
+ );
+ console.log('คอลัมน์ที่ 1 แสดงอยู่:', isColumn1Visible); // เช็ค
+
+ const areCellsVisible = await column1Cells.evaluateAll((cells) =>
+ cells.every((cell) => window.getComputedStyle(cell).display !== 'none'),
+ );
+ console.log('เซลล์ในคอลัมน์ที่ 1 แสดงอยู่:', areCellsVisible); // เช็ค
+
+ expect(isColumn1Visible).toBe(true);
+ expect(areCellsVisible).toBe(true);
+
+ console.log('ตรวจสอบการเปิด/ซ่อนคอลัมน์ในตารางสำเร็จ');
+ } catch (error) {
+ console.error('เกิดข้อผิดพลาดในการทดสอบ:', error);
+ throw error;
+ }
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts
new file mode 100644
index 00000000..fffb576d
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_001_CreateNaturalperoson.spec.ts
@@ -0,0 +1,118 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Natural Person', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@id='input-start-date'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Second', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'วัง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", 'จคภ/คค/ุ//');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@id='input-start-date'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts
new file mode 100644
index 00000000..ed7f59f7
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_002_CreateNaturalperosonfail.spec.ts
@@ -0,0 +1,249 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Natural Person No input Data', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Employee name', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", '');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Tax No', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=cancelBtn');
+
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Customer Name TH', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", '');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Customer Name EN', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", '');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Customername', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", '');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person No Input Address TH', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Province', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select District', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Sub District', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Address ENG', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-natural-person');
+ await page.fill("(//input[@id='input-employer-id'])[3]", 'ปิง');
+ await page.fill("(//input[@id='input-tax-no'])[3]", '1242822482204');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'โคโม่');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Como');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_002_ViewDetail.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
similarity index 68%
rename from tests/02-Admin-PersonnelManagement/JWS_PM_002_ViewDetail.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
index 7ca45cf6..539eb2ca 100644
--- a/tests/02-Admin-PersonnelManagement/JWS_PM_002_ViewDetail.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_003_DetailNaturalperson.spec.ts
@@ -24,9 +24,10 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('View Deatil Personnel', async () => {
- await page.click('id=menu-icon-personnel-management');
- await page.click("(//div[@class='full-width text-right']//button)[1]");
- await page.click("(//div[@class='q-focus-helper']/following-sibling::i)[1]");
- await page.waitForTimeout(4000);
+test('Selete Filter Manage Customer Active', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=btn-eye-โคโม่');
+ await page.waitForTimeout(2000);
+ await page.click("(//button[@id='closeDialog'])[1]");
+ await page.waitForTimeout(2000);
});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts
new file mode 100644
index 00000000..4e32a8a8
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_004_EditNaturalperson.spec.ts
@@ -0,0 +1,41 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Edit Naturalperson', async () => {
+ // รออัพเดท PATH
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-PERS000001']");
+ await page.click('id=view-detail-btn-undefined-edit');
+ await page.click(
+ "//div[contains(@class,'q-field__append q-field__marginal')]/following-sibling::div[1]",
+ );
+ await page.click("//span[text()='บางรัก']");
+ await page.fill("(//input[@id='input-employer-id'])[1]", 'หลินปิง');
+ await page.fill("(//input[@id='input-customerName'])[1]", 'บางรัก');
+ await page.fill("(//input[@id='input-customerEnglishName'])[1]", 'Bangrak');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts
new file mode 100644
index 00000000..ba10c85b
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_005_DeleteNaturalperson.spec.ts
@@ -0,0 +1,34 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Delete Naturalperson', async () => {
+ // รออัพเดท PATH
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-PERS000002']");
+ await page.click('id=view-detail-btn-undefined-delete');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts
new file mode 100644
index 00000000..b9ada759
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_006_StatusNaturalperson.spec.ts
@@ -0,0 +1,38 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Status On Natural Person', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-PERS000002']");
+ await page.click('id=view-detail-btn-undefined-status');
+ await page.waitForTimeout(2000);
+});
+
+test('Status Off Natural Person', async () => {
+ await page.click('id=btn-dots-โคโม่');
+ await page.click('id=view-detail-btn-undefined-status');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts
new file mode 100644
index 00000000..3d1efe90
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_007_CreateLegalentitly.spec.ts
@@ -0,0 +1,132 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Legalentitly Person', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("//span[text()='บางรัก']");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Bangrak');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'บางรัก');
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Legalentitly Person Second', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลาภ');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Lab');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@role='option']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.waitForTimeout(2000);
+ await page.click("//div[@role='option']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts
new file mode 100644
index 00000000..97dff87e
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_008_CreateLegalentitlyfail.spec.ts
@@ -0,0 +1,1226 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Create Natural Person Not Input Data', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Name TH', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", '');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Name ENG', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", '');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Name Company', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", '');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Customername ENG ', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", '');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Customername TH', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", '');
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Tax No', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Registername', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", '');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Authorizedcapital', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Date', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Address TH', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+});
+
+test('Create Natural Person Not Select Province', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select District', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Subdistrict', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Address ENG', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Employee Office', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Business Type', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Job Position', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Job Discription', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Select Paydate', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Sales Person', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", '');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Email', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", '');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input Telephone Number', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '');
+ await page.setInputFiles(
+ "(//input[contains(@class,'q-field__input fit')])[3]",
+ '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ ); // UploadFile
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Natural Person Not Input File', async () => {
+ await page.click("(//div[@id='btn-add'])[1]");
+ await page.click('id=add-customer-legal-entity');
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.click("(//div[@id='input-source-nationality'])[3]");
+ await page.fill("(//input[@id='input-customer-name'])[3]", 'ลอย');
+ await page.fill("(//input[@id='input-customer-name-en'])[3]", 'Loi');
+ await page.fill("(//input[@id='input-owner-name'])[3]", 'ปิงปิง');
+ await page.fill("(//input[@id='input-customerEnglishName'])[3]", 'Silom');
+ await page.fill("(//input[@id='input-customerName'])[3]", 'สีลม');
+
+ await page.fill("(//input[@id='input-taxNo'])[3]", '1284262822028');
+ await page.fill("(//input[@id='input-registerName'])[3]", 'ปองพล กันธะณะ');
+ await page.fill("(//input[@id='input-authorizedCapital'])[3]", '20000000');
+ await page.click("(//input[@aria-label='จดทะเบียนเมื่อ'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2560']");
+ await page.click("(//div[text()='30'])[2]");
+ await page.fill("(//input[@id='input-address-0'])[3]", '20/02');
+ await page.click("(//div[@id='select-province-0'])[3]");
+ await page.click("//span[text()='เชียงใหม่']");
+ await page.click("(//div[@id='select-district-0'])[3]");
+ await page.click("//span[text()='สารภี']");
+ await page.click("(//div[@id='select-sub-district-0'])[3]");
+ await page.click("//span[text()='ท่าวังตาล']");
+ await page.fill("(//input[@id='input-address-en-0'])[3]", '20/02');
+ await page.fill(
+ "(//input[@id='input-employment-office'])[3]",
+ 'กรุงเทพมหานคร',
+ );
+ await page.click("(//div[@id='select-business-type'])[3]");
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='select-job-position'])[3]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ "(//input[@id='input-job-description'])[3]",
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click("(//input[@aria-label='วันที่จ่ายค่าแรง'])[3]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-sales-person'])[3]", 'พนักงานขาย');
+ await page.fill("(//input[@id='input-mail'])[3]", 'jws@local.com');
+ await page.fill("(//input[@id='input-telephone'])[3]", '0864228464');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_003_EditPersonnel.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
similarity index 73%
rename from tests/02-Admin-PersonnelManagement/JWS_PM_003_EditPersonnel.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
index 69375f92..111813fb 100644
--- a/tests/02-Admin-PersonnelManagement/JWS_PM_003_EditPersonnel.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_009_DetailLegalentitly.spec.ts
@@ -24,9 +24,10 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Edit Personnel', async () => {
- await page.click('id=menu-icon-personnel-management');
- await page.click("(//div[@class='full-width text-right']//button)[1]");
- await page.click("(//div[@class='q-focus-helper']/following-sibling::i)[2]");
+test('View Detail Legalentitly', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-CORP000002']");
+
+ await page.click('id=view-detail-btn-undefined-view');
await page.waitForTimeout(2000);
});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts
new file mode 100644
index 00000000..2dc6b93d
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_010_EditLegalentitly.spec.ts
@@ -0,0 +1,37 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Edit Legalentitly ', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-CORP000002']");
+ await page.click('id=view-detail-btn-undefined-edit');
+ await page.click("(//div[@id='input-source-nationality'])[1]");
+ await page.click("//span[text()='บางรัก']");
+ await page.fill("(//input[@id='input-customerEnglishName'])[1]", 'Bangrak');
+ await page.fill("(//input[@id='input-customerName'])[1]", 'บางรัก');
+ await page.click('id=submitBtn');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts
new file mode 100644
index 00000000..ec13917a
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_011_DeleteLegalentitly.spec.ts
@@ -0,0 +1,35 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Delete Legalentitly', async () => {
+ // รออัพเดท PATH
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-CORP000002']");
+
+ await page.click('id=view-detail-btn-undefined-delete');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts
new file mode 100644
index 00000000..1803675f
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_012_StatusLegalentitly.spec.ts
@@ -0,0 +1,39 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Status Off Legalentitly', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click("//button[@id='btn-dots-CORP000002']");
+ await page.click('id=view-detail-btn-undefined-status');
+ await page.waitForTimeout(2000);
+});
+
+test('Status On Legalentitly', async () => {
+ await page.click("//button[@id='btn-dots-CORP000002']");
+ await page.waitForTimeout(2000);
+ await page.click('id=view-detail-btn-undefined-status');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_009_SearchBranchmanagement.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
similarity index 56%
rename from tests/01-Admin-BranchManagement/JWS_BM_009_SearchBranchmanagement.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
index de5ee522..ed99ea8d 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_009_SearchBranchmanagement.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_013_DropdownEmployertype.spec.ts
@@ -1,5 +1,6 @@
import { test, expect, Page } from '@playwright/test';
import { strictEqual } from 'assert';
+import { escape } from 'querystring';
let page: Page;
@@ -24,26 +25,33 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Search Branch Management', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.fill('id=input-Search', 'สีลม');
+test('Select Dropdown Employer Type Off', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=select-field');
+ await page.click('id=select-field_0');
await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'สีลม1');
+ await page.click('id=select-field_1');
await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'สี');
+ await page.click('id=select-field_2');
await page.waitForTimeout(2000);
- await page.fill('id=input-Search', '1');
+ await page.click('id=select-field_3');
await page.waitForTimeout(2000);
- await page.fill('id=input-Search', '20/02');
+ await page.click('id=select-field_4');
await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'เชียงใหม่');
- await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'เมือง');
- await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'ช้างเผือก');
- await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'ดำเนินการอยู่');
- await page.waitForTimeout(2000);
- await page.fill('id=input-Search', 'ปิดดำเนินการ');
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+test('Select Dropdown Employer Type on', async () => {
+ await page.click('id=select-field');
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_4');
await page.waitForTimeout(2000);
});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts
new file mode 100644
index 00000000..5546521e
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_014_SearchManageCustomer.spec.ts
@@ -0,0 +1,43 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Selete Filter Manage Customer Active', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.fill('id=input-search', 'โค');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'โคโม่');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'นิติบุคคล');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'Como');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'Co');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'Lab');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'L');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_006_FilterStatusPersonnel.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_015_FilterManageStatusCustomer.spec.ts
similarity index 61%
rename from tests/02-Admin-PersonnelManagement/JWS_PM_006_FilterStatusPersonnel.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_015_FilterManageStatusCustomer.spec.ts
index 4bbe1f67..d194c89b 100644
--- a/tests/02-Admin-PersonnelManagement/JWS_PM_006_FilterStatusPersonnel.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_015_FilterManageStatusCustomer.spec.ts
@@ -24,21 +24,21 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Select Filter Status Active Personnel', async () => {
- await page.click('id=menu-icon-personnel-management');
- await page.click('id=btn-filter');
- await page.click('id=btn-filter-active');
+test('Selete Filter Manage Customer Active', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=select-status');
+ await page.click('id=select-status_1');
await page.waitForTimeout(2000);
});
-test('Select Filter Status InActive Personnel', async () => {
- await page.click('id=btn-filter');
- await page.click('id=btn-filter-inactive');
+test('Selete Filter Manage Customer Inative', async () => {
+ await page.click('id=select-status');
+ await page.click('id=select-status_2');
await page.waitForTimeout(2000);
});
-test('Select Filter Status All Personnel', async () => {
- await page.click('id=btn-filter');
- await page.click('id=btn-filter-all');
+test('Selete Filter Manage Customer All', async () => {
+ await page.click('id=select-status');
+ await page.click('id=select-status_0');
await page.waitForTimeout(2000);
});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts
new file mode 100644
index 00000000..88e5d3cd
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_016_CreateEmployee.spec.ts
@@ -0,0 +1,98 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Select Employee Tab', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee', async () => {
+ await page.click("(//input[@id='select-employer-branch'])[2]");
+ await page.click('id=select-employer-branch_0');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+ await page.fill("(//input[@id='input-first-name'])[2]", 'ปองพล');
+ await page.fill("(//input[@id='input-last-name'])[2]", 'กันธะณะ');
+ await page.fill("(//input[@id='input-first-name-en'])[2]", 'Pongpon');
+ await page.fill("(//input[@id='input-last-name-en'])[2]", 'Kuntana');
+ await page.click("(//input[@id='input-birth-date'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2536']");
+ await page.click("//div[text()='8']");
+ await page.click("(//div[@id='select-gender'])[2]");
+ await page.click("//span[text()='หญิง']");
+ await page.click("(//div[@id='select-nationality'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.waitForTimeout(2000);
+});
+
+test('Create Detail OCR ', async () => {
+ await page.click("(//div[@id='select-passport-type'])[2]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-passport-no'])[2]", 'TH2862242226262');
+ await page.fill("(//input[@id='input-passport-ref'])[2]", '2042022022426');
+ await page.fill("(//input[@id='input-passport-place'])[2]", 'Bangkok');
+ await page.click("(//div[@id='select-passport-country'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่ออกหนังสือเดินทาง'])[2]");
+ await page.click("(//div[text()='2'])[1]");
+ await page.click("(//input[@aria-label='วันหมดอายุหนังสือเดินทาง'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2574']");
+ await page.click("//div[text()='8']");
+ await page.waitForTimeout(2000);
+});
+
+test('Create VISA OCR', async () => {
+ await page.click("(//div[@id='select-visa-type'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-visa-no'])[2]", '200222');
+ await page.click("(//input[@aria-label='ออกให้วันที่'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click("(//input[@aria-label='ใช้ได้ถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='8']");
+ await page.fill(
+ "(//input[@id='input-visa-place'])[2]",
+ 'กรมตรวจคนเข้าเมืองน่าน',
+ );
+ await page.click("(//input[@aria-label='ให้อยู่ในราชอาณาจักรถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-tm6'])[2]", '204422002');
+ await page.click("(//input[@aria-label='วันที่เดินทางเข้ามาในประเทศ'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click('id=submitBtn');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts
new file mode 100644
index 00000000..d5ac5484
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_017_CreateEmployeeFail.spec.ts
@@ -0,0 +1,297 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Select Employee Tab', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Input Data', async () => {
+ await page.click('id=tab-employee');
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+ await page.click('id=submitBtn');
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Select Employee Code ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+ await page.fill("(//input[@id='input-first-name'])[2]", 'ปองพล');
+ await page.fill("(//input[@id='input-last-name'])[2]", 'กันธะณะ');
+ await page.fill("(//input[@id='input-first-name-en'])[2]", 'Pongpon');
+ await page.fill("(//input[@id='input-last-name-en'])[2]", 'Kuntana');
+ await page.click("(//input[@id='input-birth-date'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2536']");
+ await page.click("//div[text()='8']");
+ await page.click("(//div[@id='select-gender'])[2]");
+ await page.click("//span[text()='หญิง']");
+ await page.click("(//div[@id='select-nationality'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@id='select-passport-type'])[2]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-passport-no'])[2]", 'TH2862242226262');
+ await page.fill("(//input[@id='input-passport-ref'])[2]", '2042022022426');
+ await page.fill("(//input[@id='input-passport-place'])[2]", 'Bangkok');
+ await page.click("(//div[@id='select-passport-country'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่ออกหนังสือเดินทาง'])[2]");
+ await page.click("(//div[text()='2'])[1]");
+ await page.click("(//input[@aria-label='วันหมดอายุหนังสือเดินทาง'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2574']");
+ await page.click("//div[text()='8']");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@id='select-visa-type'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-visa-no'])[2]", '200222');
+ await page.click("(//input[@aria-label='ออกให้วันที่'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click("(//input[@aria-label='ใช้ได้ถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='8']");
+ await page.fill(
+ "(//input[@id='input-visa-place'])[2]",
+ 'กรมตรวจคนเข้าเมืองน่าน',
+ );
+ await page.click("(//input[@aria-label='ให้อยู่ในราชอาณาจักรถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-tm6'])[2]", '204422002');
+ await page.click("(//input[@aria-label='วันที่เดินทางเข้ามาในประเทศ'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click('id=submitBtn');
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Input Personal Information ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+ await page.click("(//input[@id='select-employer-branch'])[2]");
+ await page.click('id=select-employer-branch_0');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+
+ await page.click("(//div[@id='select-passport-type'])[2]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-passport-no'])[2]", 'TH2862242226262');
+ await page.fill("(//input[@id='input-passport-ref'])[2]", '2042022022426');
+ await page.fill("(//input[@id='input-passport-place'])[2]", 'Bangkok');
+ await page.click("(//div[@id='select-passport-country'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่ออกหนังสือเดินทาง'])[2]");
+ await page.click("(//div[text()='2'])[1]");
+ await page.click("(//input[@aria-label='วันหมดอายุหนังสือเดินทาง'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2574']");
+ await page.click("//div[text()='8']");
+ await page.waitForTimeout(2000);
+
+ await page.click("(//div[@id='select-visa-type'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-visa-no'])[2]", '200222');
+ await page.click("(//input[@aria-label='ออกให้วันที่'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click("(//input[@aria-label='ใช้ได้ถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='8']");
+ await page.fill(
+ "(//input[@id='input-visa-place'])[2]",
+ 'กรมตรวจคนเข้าเมืองน่าน',
+ );
+ await page.click("(//input[@aria-label='ให้อยู่ในราชอาณาจักรถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-tm6'])[2]", '204422002');
+ await page.click("(//input[@aria-label='วันที่เดินทางเข้ามาในประเทศ'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click('id=submitBtn');
+ await page.click('id=btn-ok-dialog');
+ await page.click('id=submitBtn');
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Input Personal Address ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+
+ await page.click("(//input[@id='select-employer-branch'])[2]");
+ await page.click('id=select-employer-branch_0');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+ await page.fill("(//input[@id='input-first-name'])[2]", 'ปองพล');
+ await page.fill("(//input[@id='input-last-name'])[2]", 'กันธะณะ');
+ await page.fill("(//input[@id='input-first-name-en'])[2]", 'Pongpon');
+ await page.fill("(//input[@id='input-last-name-en'])[2]", 'Kuntana');
+ await page.click("(//input[@id='input-birth-date'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2536']");
+ await page.click("//div[text()='8']");
+ await page.click("(//div[@id='select-gender'])[2]");
+ await page.click("//span[text()='หญิง']");
+ await page.click("(//div[@id='select-nationality'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.waitForTimeout(2000);
+
+ await page.click("(//div[@id='select-passport-type'])[2]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-passport-no'])[2]", 'TH2862242226262');
+ await page.fill("(//input[@id='input-passport-ref'])[2]", '2042022022426');
+ await page.fill("(//input[@id='input-passport-place'])[2]", 'Bangkok');
+ await page.click("(//div[@id='select-passport-country'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่ออกหนังสือเดินทาง'])[2]");
+ await page.click("(//div[text()='2'])[1]");
+ await page.click("(//input[@aria-label='วันหมดอายุหนังสือเดินทาง'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2574']");
+ await page.click("//div[text()='8']");
+
+ await page.click("(//div[@id='select-visa-type'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-visa-no'])[2]", '200222');
+ await page.click("(//input[@aria-label='ออกให้วันที่'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click("(//input[@aria-label='ใช้ได้ถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='8']");
+ await page.fill(
+ "(//input[@id='input-visa-place'])[2]",
+ 'กรมตรวจคนเข้าเมืองน่าน',
+ );
+ await page.click("(//input[@aria-label='ให้อยู่ในราชอาณาจักรถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-tm6'])[2]", '204422002');
+ await page.click("(//input[@aria-label='วันที่เดินทางเข้ามาในประเทศ'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click('id=submitBtn');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Input Personal Information OCR ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+ await page.click("(//input[@id='select-employer-branch'])[2]");
+ await page.click('id=select-employer-branch_0');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+ await page.fill("(//input[@id='input-first-name'])[2]", 'ปองพล');
+ await page.fill("(//input[@id='input-last-name'])[2]", 'กันธะณะ');
+ await page.fill("(//input[@id='input-first-name-en'])[2]", 'Pongpon');
+ await page.fill("(//input[@id='input-last-name-en'])[2]", 'Kuntana');
+ await page.click("(//input[@id='input-birth-date'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2536']");
+ await page.click("//div[text()='8']");
+ await page.click("(//div[@id='select-gender'])[2]");
+ await page.click("//span[text()='หญิง']");
+ await page.click("(//div[@id='select-nationality'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+
+ await page.click("(//div[@id='select-visa-type'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-visa-no'])[2]", '200222');
+ await page.click("(//input[@aria-label='ออกให้วันที่'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click("(//input[@aria-label='ใช้ได้ถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='8']");
+ await page.fill(
+ "(//input[@id='input-visa-place'])[2]",
+ 'กรมตรวจคนเข้าเมืองน่าน',
+ );
+ await page.click("(//input[@aria-label='ให้อยู่ในราชอาณาจักรถึงวันที่'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2568']");
+ await page.click("//div[text()='12']");
+ await page.fill("(//input[@id='input-tm6'])[2]", '204422002');
+ await page.click("(//input[@aria-label='วันที่เดินทางเข้ามาในประเทศ'])[2]");
+ await page.click("//div[text()='18']");
+ await page.click('id=submitBtn');
+ await page.click('id=cancelBtn');
+ await page.waitForTimeout(2000);
+});
+
+test('Create Employee Not Input Visa Information OCR ', async () => {
+ await page.click('id=btn-add');
+ await page.click('id=add-employee');
+
+ await page.click("(//input[@id='select-employer-branch'])[2]");
+ await page.click('id=select-employer-branch_0');
+ await page.fill("(//input[@id='input-nrcNo'])[2]", '6282282246226');
+ await page.fill("(//input[@id='input-first-name'])[2]", 'ปองพล');
+ await page.fill("(//input[@id='input-last-name'])[2]", 'กันธะณะ');
+ await page.fill("(//input[@id='input-first-name-en'])[2]", 'Pongpon');
+ await page.fill("(//input[@id='input-last-name-en'])[2]", 'Kuntana');
+ await page.click("(//input[@id='input-birth-date'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2536']");
+ await page.click("//div[text()='8']");
+ await page.click("(//div[@id='select-gender'])[2]");
+ await page.click("//span[text()='หญิง']");
+ await page.click("(//div[@id='select-nationality'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//div[@id='select-passport-type'])[2]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill("(//input[@id='input-passport-no'])[2]", 'TH2862242226262');
+ await page.fill("(//input[@id='input-passport-ref'])[2]", '2042022022426');
+ await page.fill("(//input[@id='input-passport-place'])[2]", 'Bangkok');
+ await page.click("(//div[@id='select-passport-country'])[2]");
+ await page.waitForTimeout(2000);
+ await page.click("(//div[@role='option'])[1]");
+ await page.click("(//input[@aria-label='วันที่ออกหนังสือเดินทาง'])[2]");
+ await page.click("(//div[text()='2'])[1]");
+ await page.click("(//input[@aria-label='วันหมดอายุหนังสือเดินทาง'])[2]");
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2574']");
+ await page.click("//div[text()='8']");
+ await page.click('id=submitBtn');
+ await page.click('id=btn-ok-dialog');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts
new file mode 100644
index 00000000..5877a356
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_018_SeachEmployee.spec.ts
@@ -0,0 +1,44 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Selete Filter Employee Active', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.fill('id=input-search', 'ปองพล กันธะณะ');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'ปองพล');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'กันธะณะ');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'ไทย');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', '6282282246226');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'TH2862242226262');
+ await page.waitForTimeout(2000);
+ await page.fill('id=input-search', 'บางรัก');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_019_FliterStatusEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_019_FliterStatusEmployee.spec.ts
new file mode 100644
index 00000000..1e066fa9
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_019_FliterStatusEmployee.spec.ts
@@ -0,0 +1,45 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Selete Filter Employee Active', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click('id=select-status');
+ await page.click('id=select-status_1');
+ await page.waitForTimeout(2000);
+});
+
+test('Selete Filter Employee Inative', async () => {
+ await page.click('id=select-status');
+ await page.click('id=select-status_2');
+ await page.waitForTimeout(2000);
+});
+
+test('Selete Filter Employee All', async () => {
+ await page.click('id=select-status');
+ await page.click('id=select-status_0');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts
new file mode 100644
index 00000000..b212bbc3
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_020_DetailEmployee.spec.ts
@@ -0,0 +1,33 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Select Detail Employee', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click("//button[@id='btn-dots-CORP000003-01-240003']");
+ await page.click('id=view-detail-btn-undefined-view');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts
new file mode 100644
index 00000000..88b10068
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_021_EditEmployee.spec.ts
@@ -0,0 +1,33 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Edit Employee', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click("//button[@id='btn-dots-CORP000003-01-240003']");
+ await page.click('id=view-detail-btn-undefined-edit');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts
new file mode 100644
index 00000000..1a899d40
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_022_DeleteEmployee.spec.ts
@@ -0,0 +1,33 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Delete Employee', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click("//button[@id='btn-dots-CORP000003-01-240003']");
+ await page.click('id=view-detail-btn-undefined-edit');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/02-Admin-PersonnelManagement/JWS_PM_004_StatusPersonnel.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
similarity index 63%
rename from tests/02-Admin-PersonnelManagement/JWS_PM_004_StatusPersonnel.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
index 3bd61959..222a4a1b 100644
--- a/tests/02-Admin-PersonnelManagement/JWS_PM_004_StatusPersonnel.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_023_StatusEmployee.spec.ts
@@ -24,16 +24,17 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('Status Close Personnel', async () => {
- await page.click('id=menu-icon-personnel-management');
- await page.click("(//div[@class='full-width text-right']//button)[1]");
- await page.click("//div[contains(@class,'q-toggle__thumb absolute')]");
- await page.keyboard.press('Escape');
+test('Status off Employee', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click("//button[@id='btn-dots-PERS000001-01-240001']");
+ await page.click('id=view-detail-btn-undefined-status');
await page.waitForTimeout(2000);
+ await page.keyboard.press('Escape');
});
-test('Status Open Personnel', async () => {
- await page.click("(//div[@class='full-width text-right']//button)[1]");
- await page.click("//div[contains(@class,'q-toggle__thumb absolute')]");
+test('Status on Employee', async () => {
+ await page.click("//button[@id='btn-dots-PERS000001-01-240001']");
+ await page.click('id=view-detail-btn-undefined-status');
await page.waitForTimeout(2000);
});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts
new file mode 100644
index 00000000..64d7694f
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_024_DropdownEmployeetype.spec.ts
@@ -0,0 +1,72 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+import { escape } from 'querystring';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Select Dropdown Employee Type Off', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=tab-employee');
+ await page.click('id=select-field');
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_7');
+ await page.waitForTimeout(2000);
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
+
+test('Select Dropdown Employee Type on', async () => {
+ await page.click('id=select-field');
+ await page.click('id=select-field_0');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_1');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_2');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_3');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_4');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_5');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_6');
+ await page.waitForTimeout(2000);
+ await page.click('id=select-field_7');
+ await page.waitForTimeout(2000);
+ await page.keyboard.press('Escape');
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/03-Admin-ManageCustomer/JWS_MC_025_CreateSubBranchNaturalperson.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_025_CreateSubBranchNaturalperson.spec.ts
new file mode 100644
index 00000000..7fd9f43b
--- /dev/null
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_025_CreateSubBranchNaturalperson.spec.ts
@@ -0,0 +1,71 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('Open Natural Person', async () => {
+ await page.click('id=menu-icon-customer-management');
+ await page.click('id=row-table-โคโม่');
+ await page.click("(//div[@id='btn-add']//a)[1]");
+ await page.click("(//div[@id='btn-add']//div)[2]");
+ await page.waitForTimeout(2000);
+});
+
+test('Create Sub Branch Natural Person', async () => {
+ await page.fill('id=form-dialog-input-branch-no', '20');
+ await page.fill('id=form-dialog-input-customer-name', 'สยาม');
+ await page.fill('id=form-dialog-input-customer-english-name', 'siam');
+ await page.fill('id=form-dialog-input-address-0', '20/022');
+ await page.click('id=form-dialog-select-province-0');
+ await page.click("//div[@role='option']");
+ await page.click('id=form-dialog-select-district-0');
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.click('id=form-dialog-select-sub-district-0');
+ await page.waitForTimeout(1000);
+ await page.click("//div[@role='option']");
+ await page.fill('id=form-dialog-input-address-en-0', '20/022');
+ await page.fill('id=form-dialog-input-employment-office', 'กรุงเทพมหานคร');
+ await page.click('id=form-dialog-select-business-type');
+ await page.click("//span[text()='ประมง']");
+ await page.click("(//div[@id='form-dialog-select-job-position'])[1]");
+ await page.click("(//div[@role='option'])[1]");
+ await page.fill(
+ 'id=form-dialog-input-job-description',
+ 'ตรวจสอบการทำการลักษณะงาน',
+ );
+ await page.click('id=form-dialog-input-start-date');
+ await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
+ await page.click("//div[text()='2561']");
+ await page.click("//div[text()='12']");
+ await page.fill('id=form-dialog-input-sales-person', 'พนักงานขาย');
+ await page.fill('id=form-dialog-input-mail', 'jws@local.com');
+ await page.fill('id=form-dialog-input-telephone', '0864228464');
+ // await page.setInputFiles(
+ // "//input[@id='f_55bbcb5d-4316-43c8-93cf-99c4f1f60115']",
+ // '/Users/linping/Desktop/Chamomind&FrappeT/JWS_TestScript/tests/Datafile/Pic1.jpg',
+ // ); // UploadFile
+ await page.click("(//button[@id='submitBtn'])[2]");
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/01-Admin-BranchManagement/JWS_BM_006_ViewDetail.spec.ts b/tests/03-Admin-ManageCustomer/JWS_MC_026_CreateSubBranchLegalentitly.spec.ts
similarity index 70%
rename from tests/01-Admin-BranchManagement/JWS_BM_006_ViewDetail.spec.ts
rename to tests/03-Admin-ManageCustomer/JWS_MC_026_CreateSubBranchLegalentitly.spec.ts
index 9b1351bd..503172f4 100644
--- a/tests/01-Admin-BranchManagement/JWS_BM_006_ViewDetail.spec.ts
+++ b/tests/03-Admin-ManageCustomer/JWS_MC_026_CreateSubBranchLegalentitly.spec.ts
@@ -24,10 +24,8 @@ test('Login', async () => {
// await page.click('id=acceptBtn');
});
-test('View Detail', async () => {
- await page.click('id=menu-icon-branch-management');
- await page.click('id=view-detail-btn-สีลม');
- await page.click('id=view-detail-btn-สีลม-view');
- await page.waitForTimeout(4000);
- await page.click('id=closeDialog');
+test('Open Legal Entitly ', async () => {
+ await page.click('id=menu-icon-customer-management');
+
+ await page.waitForTimeout(2000);
});
diff --git a/tests/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts b/tests/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts
new file mode 100644
index 00000000..92e1e4d5
--- /dev/null
+++ b/tests/04-ProductandService/JWS_PD_001_CreateProductandServiceGroup.spec.ts
@@ -0,0 +1,115 @@
+import { test, expect, Page } from '@playwright/test';
+import { strictEqual } from 'assert';
+
+let page: Page;
+
+test.beforeAll(async ({ browser }) => {
+ page = await browser.newPage();
+});
+
+test.afterAll(async () => {
+ if (page !== undefined) {
+ await page.close();
+ }
+});
+
+test('Login', async () => {
+ // Login
+ await page.goto('http://192.168.1.90: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');
+});
+
+test('ทดสอบการเพิ่มกลุ่มสินค้าและบริการ', async () => {
+ await page.click('id=menu-icon-product-service');
+
+ try {
+ // เพิ่มกลุ่มสินค้าและบริการ
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-product-group');
+
+ // กรอกข้อมูลกลุ่มสินค้าและบริการ
+ await page.fill("(//input[@id='input-name'])[2]", 'ประกัน');
+ await page.fill("(//textarea[@id='input-detail'])[2]", 'รายละเอียดประกัน');
+ await page.fill("(//textarea[@id='input-remark'])[2]", 'หมายเหตุประกัน');
+
+ // บันทึกการสร้างกลุ่มสินค้นและบริการ
+ await page.click('id=btn-form-submit');
+
+ // ตรวจสอบหลังทำการสร้างกลุ่มสินค้าและบริการ
+ const newProductAndServiceLocator = page.locator(
+ "//div[normalize-space(text())='ประกัน']",
+ );
+ await newProductAndServiceLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความให้ตรงจาก XPath
+
+ const newProductAndServiceName =
+ await newProductAndServiceLocator.textContent();
+
+ // ตรวจสอบความถูกต้องหลังทำการสร้างกลุ่มสินค้าและบริการ
+ if (newProductAndServiceName !== null) {
+ const trimmedName = newProductAndServiceName.trim();
+ expect(trimmedName).toBe('ประกัน');
+ console.log('การตรวจสอบสำเร็จ : ถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึก');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดการในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
+
+test('ทดสอบการเพิ่มประเภท', async () => {
+ // เข้าสู่หน้าหลุ่มสินค้าและบริการ
+ await page.click("(//div[@id='tree-enter-ประกัน']//div)[1]");
+
+ try {
+ // เพิ่มกลุ่มสินค้าและบริการ
+ await page.click('id=btn-add');
+ await page.click('id=btn-add-service');
+
+ // กรอกข้อมูลประเภทส่วน "ข้อมูลประเภท"
+ await page.fill('id=input-service-code', 'MOU');
+ await page.fill('id=input-service-name', 'ประกันภัยแบบกลุ่ม');
+ await page.fill('id=input-service-description', 'รายละเอียดประภัยแบบกลุ่ม');
+
+ // เพิ่มคุณสมบัติส่วน "คุณสมบัติของประเภท"
+ await page.click('id=btn-capitalize');
+
+ // บันทึกการสร้างกลุ่มสินค้นและบริการ
+ await page.click('id=btn-form-submit');
+
+ // ตรวจสอบหลังทำการสร้างกลุ่มสินค้าและบริการ
+ const newProductAndServiceLocator = page.locator(
+ "//div[normalize-space(text())='ประกัน']",
+ );
+ await newProductAndServiceLocator.waitFor({ state: 'visible' });
+
+ // ดึงข้อความให้ตรงจาก XPath
+
+ const newProductAndServiceName =
+ await newProductAndServiceLocator.textContent();
+
+ // ตรวจสอบความถูกต้องหลังทำการสร้างกลุ่มสินค้าและบริการ
+ if (newProductAndServiceName !== null) {
+ const trimmedName = newProductAndServiceName.trim();
+ expect(trimmedName).toBe('ประกัน');
+ console.log('การตรวจสอบสำเร็จ : ถูกต้อง');
+ } else {
+ throw new Error('ไม่พบข้อมูลที่บันทึก');
+ }
+ } catch (error) {
+ console.error('เกิดข้อผิดการในการทดสอบ');
+ throw error;
+ }
+
+ await page.waitForTimeout(2000);
+});
diff --git a/tests/Datafile/Pic1.jpg b/tests/Datafile/Pic1.jpg
new file mode 100644
index 00000000..36846681
Binary files /dev/null and b/tests/Datafile/Pic1.jpg differ
|