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); });