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