import { test, expect, Page } from '@playwright/test'; import { fakerEN, fakerTH } from '@faker-js/faker'; import e from 'express'; import { isAwaitExpression } from 'typescript'; import { parseCache } from 'vue/compiler-sfc'; import AppDropdown from 'src/components/app/AppDropdown.vue'; let page: Page; let isLoginSuccessful = false; test.beforeAll(async ({ browser }) => { page = await browser.newPage(); }); test.afterAll(async () => { if (page !== undefined) { await page.close(); } }); async function login(page: Page) { try { // Login await page.goto('/'); await expect(page).toHaveTitle(/^Sign in to /); await page.fill("input[name='username']", 'admin'); await page.fill("input[name='password']", '1234'); await page.click('id=kc-login'); await page.waitForTimeout(2000); // await page.click('id=acceptBtn'); // เข้าสู่หน้าแม่แบบขั้นตอนการทำงาน await page.click('id=menu.manage'); await page.waitForSelector('id=sub-menu-workflow'); await page.click('id=sub-menu-workflow'); // ถ้าทั้งหมดสำเร็จ isLoginSuccessful = true; console.log('ระบบทำการ Login สำเร็จ'); } catch (error) { console.error('เกิดข้อผิดพลาดในการ Login'); isLoginSuccessful = false; } } test('Login', async () => { await login(page); }); test('TC_2_0_001', async () => { if (!isLoginSuccessful) { await login(page); } try { const titleNameProductAndService = page.locator( "//div[@id='app-content']/div[1]/div[1]/span[1]", ); await expect(titleNameProductAndService).toHaveText( 'แม่แบบขั้นตอนการทำงาน', ); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบเข้าสู่หน้าแม่แบบขั้นตอนการทำงาน'); }); test('TC_2_0_002', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); const titleNameProductAndService = page.locator( "//div[contains(@class,'col text-subtitle1')]", ); await expect(titleNameProductAndService).toHaveText( 'แม่แบบขั้นตอนการทำงาน', ); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.click('id=btn-form-close'); await page.waitForTimeout(2000); console.log('ระบบแสดงหน้าเพิ่มแม่แบบขั้นตอนการทำงาน'); }); test('TC_2_0_003', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การดำเนินการ 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click('id=select-responsible-institution-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-messenger'); await page.click('id=list-messenger'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(1000); await page.click("(//button[@id='btn-info-basic-save'])[2]"); const createWorkflowName = page.locator( "//section[normalize-space(text())='การดำเนินการ 2568']", ); await expect(createWorkflowName).toHaveText('การดำเนินการ 2568'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถสร้างแม่แบบขั้นตอนการทำงานได้'); }); test('TC_2_0_004', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); await page.click("(//button[@id='btn-info-basic-save'])[2]"); const expectedErrors = [ { locator: "(//div[@role='alert'])[1]", message: 'จำเป็นต้องกรอกข้อมูลนี้', }, { locator: "(//div[@role='alert'])[2]", message: 'จำเป็นต้องกรอกข้อมูลนี้', }, ]; for (const error of expectedErrors) { const locator = page.locator(error.locator); await expect(locator).toHaveText(error.message); } } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.click('id=btn-form-close'); await page.waitForTimeout(2000); console.log('ระบบทำการแจ้งเตือนในกรณีที่ไม่กรอกข้อมูล'); }); test('TC_2_0_005', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2568']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2568']"); await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2568']"); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงหน้าแก้ไขแม่แบบขั้นตอนการทำงานได้'); }); test('TC_2_0_006', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2568']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2568']"); await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2568']"); await page.fill( "//input[@aria-label='ชื่อขั้นตอน']", 'การดำเนินการ ตามมติ 2568', ); await page.waitForTimeout(2000); await page.waitForSelector('id=btn-info-basic-save'); await page.click('id=btn-info-basic-save'); const editWorkFlow = page.locator( "//td[contains(.,'การดำเนินการ ตามมติ 2568')]", ); await expect(editWorkFlow).toHaveText('การดำเนินการ ตามมติ 2568'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถแก้ไขแม่แบบขั้นตอนการทำงานได้'); }); test('TC_2_0_007', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.click( "//button[@id='btn-kebab-action-การดำเนินการ ตามมติ 2568']", ); await page.waitForSelector( "//div[@id='btn-kebab-delete-การดำเนินการ ตามมติ 25688']", ); await page.click("//div[@id='btn-kebab-delete-การดำเนินการ ตามมติ 25688']"); await page.waitForSelector('id=btn-ok-dialog'); await page.click('id=btn-ok-dialog'); const deletedWorkFlow = page.locator( "//td[contains(.,'การดำเนินการ ตามมติ 2568')]", ); await expect(deletedWorkFlow).toBeHidden(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถลบแม่แบบขั้นตอนการทำงานได้'); }); test('TC_2_0_008', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); //-----------------------ทดสอบการสร้างชื่อแม่แบบขั้นจอนการทำงาน------------------------------------ // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การดำเนินการ 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click('id=select-responsible-institution-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-messenger'); await page.click('id=list-messenger'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(1000); await page.click("(//button[@id='btn-info-basic-save'])[2]"); //-----------------------------ทดสอลการสร้างชื่อซ้ำ------------------------------------- await page.waitForTimeout(2000); await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การดำเนินการ 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click('id=select-responsible-institution-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-messenger'); await page.click('id=list-messenger'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(1000); await page.click("(//button[@id='btn-info-basic-save'])[2]"); // ตรวจสอบการสร้างชื่อซำ้ const workflowSameNameError = page.locator( "//span[normalize-space(text())='ชื่อนี้ถูกใช้ไปแล้ว']", ); await expect(workflowSameNameError).toHaveText('ชื่อนี้ถูกใช้ไปแล้ว'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแจ้งเตือนในกรณีที่สร้างชื่อแม่แบบขั้นตอนการทำงานซ้ำกัน'); }); test('TC_2_0_009', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การดำเนินการ 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); const pageCreateWorkFlowFirst = page.locator("(//div[@id='item-up'])[2]"); await expect(pageCreateWorkFlowFirst).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงขั้นตอนการทำงานขั้นตอนที่ 1'); await page.click('id=btn-form-close'); }); test('TC_2_0_010', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การประเมิน 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click('id=select-responsible-institution-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-AGE-dialog']//div)[1]", ); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-messenger'); await page.click('id=list-messenger'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(1000); await page.click("(//button[@id='btn-info-basic-save'])[2]"); const createWorkflowName = page.locator( "//section[normalize-space(text())='การประเมิน 2568']", ); await expect(createWorkflowName).toHaveText('การประเมิน 2568'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบทำการสร้างแม่แบบขั้นตอนการทำงาน'); }); test('TC_2_0_011', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขแขั้นตอนการทำงาน await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']"); await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']"); const pageEditWorkFlowFirst = page.locator( "(//div[@id='item-up']//div)[1]", ); await expect(pageEditWorkFlowFirst).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงหน้าแก้ไขขั้นตอนการทำงาน'); }); test('TC_2_0_012', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขแขั้นตอนการทำงาน await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']"); await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']"); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-designForm'); await page.click('id=list-designForm'); await page.waitForSelector('id=list-quotationNo'); await page.click('id=list-quotationNo'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForSelector('id=select-responsible-institution-0-drawer'); await page.click('id=select-responsible-institution-0-drawer'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]", ); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); await page.waitForTimeout(1000); await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']"); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การประเมิน 2568']", ); await page.click("//div[@id='btn-kebab-view-detail-การประเมิน 2568']"); const editWorkFlowFirst = page.locator( "//span[normalize-space(text())='ออกแบบฟอร์ม']", ); const editWorkFlowSeconde = page.locator( "//span[normalize-space(text())='Quotation No.']", ); const editWorkFlowAgencies = page.locator( "//span[normalize-space(text())='จัดหางานพื้นที่']", ); await expect(editWorkFlowFirst).toBeVisible(); await expect(editWorkFlowSeconde).toBeVisible(); await expect(editWorkFlowAgencies).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถแก้ไขขั้นตอนการทำงานได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_013', async () => { if (!isLoginSuccessful) { await login(page); } try { // ลบขั้นตอนการทำงาน await page.click("//button[@id='btn-kebab-action-การประเมิน 2568']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การประเมิน 2568']"); await page.click("//div[@id='btn-kebab-edit-การประเมิน 2568']"); await page.waitForSelector('id=btn-delete-work'); await page.click('id=btn-delete-work'); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); await page.waitForTimeout(1000); await page.click( "//button[@id='btn-kebab-action-cm78fi5u50004lj1yczab47oa']", ); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การประเมิน 2568']", ); await page.click("//div[@id='btn-kebab-view-detail-การประเมิน 2568']"); const deleteProcessStep = page.locator("(//div[@id='item-up']//div)[1]"); await expect(deleteProcessStep).toBeHidden(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถลบขั้นตอนการทำงานได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_014', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'การดำเนินการ 2567', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.fill("(//textarea[@aria-label='รายละเอียด'])[2]", 'รายละเอียด'); await page.click("(//button[@id='btn-info-basic-save'])[2]"); await page.waitForTimeout(1000); await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']"); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']", ); await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']"); const detailProcessStep = page.locator( "//div[normalize-space(text())='รายละเอียด']", ); await expect(detailProcessStep).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารบันทึกรายละเอียดได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_015', async () => { if (!isLoginSuccessful) { await login(page); } try { await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2567']"); await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2567']"); await page.fill( "//div[normalize-space(text())='รายละเอียด']", 'แก้ไขรายละเอียด', ); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); await page.waitForTimeout(1000); await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']"); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']", ); await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']"); const detailProcessStep = page.locator( "//div[normalize-space(text())='รายละเอียด']", ); await expect(detailProcessStep).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารแก้ไขรายละเอียดได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_016', async () => { if (!isLoginSuccessful) { await login(page); } try { await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']"); await page.waitForSelector("//div[@id='btn-kebab-edit-การดำเนินการ 2567']"); await page.click("//div[@id='btn-kebab-edit-การดำเนินการ 2567']"); await page.fill("//div[normalize-space(text())='รายละเอียด']", ''); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); await page.waitForTimeout(1000); await page.click("//button[@id='btn-kebab-action-การดำเนินการ 2567']"); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']", ); await page.click("//div[@id='btn-kebab-view-detail-การดำเนินการ 2567']"); const deleteDetailProcessStep = page.locator( "//div[normalize-space(text())='รายละเอียด']", ); await expect(deleteDetailProcessStep).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log( 'ระบบสามารลบรายละเอียดได้โดยในรายละเอียดหากไม่มีข้อมูลจะแสดง "-"', ); await page.click('id=btn-info-close'); }); test('TC_2_0_017', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'ขั้นตอนการเตรียมเอกสารประกันสังคม', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); const nameResoinsiblePerson = page.locator("(//div[@role='menu']//div)[1]"); await expect(nameResoinsiblePerson).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงรายชื่อบุคลากรเพื่อให้เลิือกผู้รับผิดชอบ'); await page.keyboard.press('Escape'); await page.click('id=btn-form-close'); }); test('TC_2_0_018', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'ขั้นตอนการเตรียมเอกสารประกันสังคม', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.click('id=select-responsible-person-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-dialog'])[1]", ); await page.waitForSelector("(//button[@id='btn-info-basic-save'])[2]"); await page.click("(//button[@id='btn-info-basic-save'])[2]"); // ดูรายละเอียกหลังเพิ่มผู้รับผิดชอบ await page.waitForTimeout(1000); await page.click( "//button[@id='btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม']", ); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม']", ); await page.click( "//div[@id='btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม']", ); const nameResoinsiblePersonCreate = page.locator( "//div[@class='column q-pl-md']", ); await expect(nameResoinsiblePersonCreate).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถเพิ่มผู้รับผิดชอบได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_019', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขผู้รับผิดชอบ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม'); await page.waitForSelector( 'id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); await page.click('id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม'); await page.click('id=select-responsible-person-0-drawer'); await page.waitForSelector('id=select-responsible-person-0-สามารถ-drawer'); await page.click('id=select-responsible-person-0-สามารถ-drawer'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]", ); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); // ดูรายละเอียดหลังแก้ไขผู้รับผิดชอบ await page.click("id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม'"); await page.waitForSelector( 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); await page.click( 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); const nameResoinsiblePersonEdit = page.locator( "//div[@class='column q-pl-md']", ); await expect(nameResoinsiblePersonEdit).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถแก้ไขผู้รับผิดชอบได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_020', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขผู้รับผิดชอบ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม'); await page.waitForSelector( 'id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); await page.click('id=btn-kebab-edit-ขั้นตอนการเตรียมเอกสารประกันสังคม'); await page.click('id=select-responsible-person-0-drawer'); await page.waitForSelector( "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]", ); await page.click( "(//div[@id='select-responsible-person-0-กานดา-drawer'])[1]", ); await page.waitForTimeout(1000); await page.click('id=btn-info-basic-save'); // ดูรายละเอียดหลังลบผู้รับผิดชอบ await page.click('id=btn-kebab-action-ขั้นตอนการเตรียมเอกสารประกันสังคม'); await page.waitForSelector( 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); await page.click( 'id=btn-kebab-view-detail-ขั้นตอนการเตรียมเอกสารประกันสังคม', ); const nameResoinsiblePersonEdit = page.locator( "//div[@class='column q-pl-md']", ); await expect(nameResoinsiblePersonEdit).toBeHidden(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถลบผู้รับผิดชอบได้'); await page.click('id=btn-info-close'); }); test('TC_2_0_021', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'กระบวนการดำเนินงาน 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.waitForSelector("(//button[@id='btn-add-work-product'])[2]"); await page.click("(//button[@id='btn-add-work-product'])[2]"); const pageAddProperties = page.locator( "(//div[contains(@class,'col text-subtitle1')])[2]", ); await expect(pageAddProperties).toHaveText('คุณสมบัติ'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงหน้าเพิ่มคุณสมบัติ'); await page.click("(//button[@id='btn-form-close'])[2]"); await page.waitForSelector('id=btn-form-close'); await page.click('id=btn-form-close'); }); test('TC_2_0_022', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'กระบวนการดำเนินงาน 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-serviceRecordName'); await page.click('id=list-serviceRecordName'); await page.waitForTimeout(1000); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(2000); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const addPropertiesProcessStep = page.locator( "(//span[contains(@class,'surface-2 bordered')])[2]", ); await expect(addPropertiesProcessStep).toHaveText('บันทึกบริการ_Name'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถเพิ่มคุณสมบัติได้'); await page.waitForSelector('id=btn-form-close'); await page.click('id=btn-form-close'); }); test('TC_2_0_023', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเข้าสู่หน้าเพิ่มแม่แบบขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); // ส่วนชื่อแม่แบบ await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@aria-label='ชื่อขั้นตอน'])[2]", 'กระบวนการดำเนินงาน 2568', ); // ส่วนขั้นตอนการทำงาน await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'ตรวจเอกสารตามมติครม'); await page.waitForSelector('id=btn-add-work-product-0-dialog'); await page.click('id=btn-add-work-product-0-dialog'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-messenger'); await page.click('id=list-messenger'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForTimeout(1000); await page.click("(//button[@id='btn-info-basic-save'])[2]"); await page.waitForTimeout(1000); // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.waitForSelector( 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568', ); await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const addPropertiesProcessStep = page.locator( "//span[normalize-space(text())='พนักงานส่งเอกสาร']", ); await expect(addPropertiesProcessStep).toHaveText('พนักงานส่งเอกสาร'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถเพิ่มคุณสมบัติและบันทึกได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); }); test('TC_2_0_024', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขคุณสมบัติ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.waitForSelector('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568'); await page.waitForSelector('id=btn-add-work-product-0-drawer'); await page.click('id=btn-add-work-product-0-drawer'); await page.waitForSelector('id=select-step'); await page.click('id=select-step'); await page.waitForSelector('id=list-quotationNo'); await page.click('id=list-quotationNo'); await page.waitForSelector('id=list-designForm'); await page.click('id=list-designForm'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForSelector('id=btn-info-basic-save'); await page.click('id=btn-info-basic-save'); // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.waitForSelector( 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568', ); await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const addPropertiesProcessStepFirst = page.locator( "//span[normalize-space(text())='ออกแบบฟอร์ม']", ); await expect(addPropertiesProcessStepFirst).toHaveText('ออกแบบฟอร์ม'); const addPropertiesProcessStepSecond = page.locator( "//span[normalize-space(text())='Quotation No.']", ); await expect(addPropertiesProcessStepSecond).toHaveText('Quotation No.'); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถแก้ไขคุณสมบัติได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); }); test('TC_2_0_025', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขคุณสมบัติ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.waitForSelector('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-edit-กระบวนการดำเนินงาน 2568'); await page.waitForSelector('id=btn-add-work-product-0-drawer'); await page.click('id=btn-add-work-product-0-drawer'); await page.waitForSelector("(//button[@id='btn-delete-work-product'])[3]"); await page.click("(//button[@id='btn-delete-work-product'])[3]"); await page.waitForSelector('id=btn-ok-dialog'); await page.click('id=btn-ok-dialog'); await page.waitForSelector('id=btn-form-submit'); await page.click('id=btn-form-submit'); await page.waitForSelector('id=btn-info-basic-save'); await page.click('id=btn-info-basic-save'); // ตรวจสอบการดูรายละเอียดหลังเพิ่มคุณสมบัติ await page.waitForSelector('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.click('id=btn-kebab-action-กระบวนการดำเนินงาน 2568'); await page.waitForSelector( 'id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568', ); await page.click('id=btn-kebab-view-detail-กระบวนการดำเนินงาน 2568'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const addPropertiesProcessStepFirst = page.locator( "//span[normalize-space(text())='ออกแบบฟอร์ม']", ); await expect(addPropertiesProcessStepFirst).toBeHidden(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถลบคุณสมบัติได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); }); test('TC_2_0_026', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเพิ่มหน่วยงานในขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); await page.waitForSelector("(//button[@id='btn-add-step'])[2]"); await page.click("(//button[@id='btn-add-step'])[2]"); await page.click('id=select-responsible-institution-0-dialog'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const menuAgencise = page.locator("//div[@role='menu']"); await expect(menuAgencise).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบแสดงรายการเลือกหน่วยงาน'); await page.keyboard.press('Escape'); await page.waitForSelector('id=btn-form-close'); await page.click('id=btn-form-close'); }); test('TC_2_0_027', async () => { if (!isLoginSuccessful) { await login(page); } try { // การเพิ่มหน่วยงานในขั้นตอนการทำงาน await page.waitForSelector('id=btn-add'); await page.click('id=btn-add'); await page.click("(//input[@id='select-hq-id'])[2]"); await page.waitForSelector('id=select-hq-id_0'); await page.click('id=select-hq-id_0'); await page.fill( "(//input[@id='input-flow-template-name'])[2]", 'การดำเนินการเตรียมการ', ); await page.waitForSelector("(//button[@id='btn-add-step'])[2]"); await page.click("(//button[@id='btn-add-step'])[2]"); await page.fill('id=input-flow-step-name-0-dialog', 'เตรียมเอกสาร'); await page.click('id=select-responsible-institution-0-dialog'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-AGE-drawer']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-AGE-drawer']//div)[1]", ); await page.keyboard.press('Escape'); await page.click("(//button[@id='btn-info-basic-save'])[2]"); // เปิดดูรายละเอียด await page.waitForSelector( "//button[@id='btn-kebab-action-การดำเนินการเตรียมการ']", ); await page.click("//button[@id='btn-kebab-action-การดำเนินการเตรียมการ']"); await page.waitForSelector( "//div[@id='btn-kebab-view-detail-การดำเนินการเตรียมการ']", ); await page.click( "//div[@id='btn-kebab-view-detail-การดำเนินการเตรียมการ']", ); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const addAgenciseWorkFlow = page.locator( "//span[normalize-space(text())='เอเจนซี่ / หน่วยงาน']", ); await expect(addAgenciseWorkFlow).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถเลือกหน่วยงานได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); }); test('TC_2_0_028', async () => { if (!isLoginSuccessful) { await login(page); } try { // แก้ไขหน่วยงาน await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.waitForSelector('id=btn-kebab-edit-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-edit-การดำเนินการเตรียมการ'); await page.waitForSelector('id=select-responsible-institution-0-drawer'); await page.click('id=select-responsible-institution-0-drawer'); await page.waitForSelector( "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]", ); await page.click( "(//div[@id='select-responsible-institution-0-DOE-drawer']//div)[1]", ); await page.keyboard.press('Escape'); await page.waitForSelector('id=btn-info-basic-save'); await page.click('id=btn-info-basic-save'); // เปิดดูรายละเอียดหลังแก้ไข await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.waitForSelector( 'id=btn-kebab-view-detail-การดำเนินการเตรียมการ', ); await page.click('id=btn-kebab-view-detail-การดำเนินการเตรียมการ'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const checkEditAgenciseWorkFlow = page.locator( "//span[normalize-space(text())='จัดหางานพื้นที่']", ); await expect(checkEditAgenciseWorkFlow).toBeVisible(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถแก้ไขหน่วยงานได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); }); test('TC_2_0_029', async () => { if (!isLoginSuccessful) { await login(page); } try { // ลบหน่วยงาน await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.waitForSelector('id=btn-kebab-edit-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-edit-การดำเนินการเตรียมการ'); await page.waitForSelector("(//i[@aria-hidden='false'])[2]"); await page.click("(//i[@aria-hidden='false'])[2]"); await page.waitForSelector('id=btn-info-basic-save'); await page.click('id=btn-info-basic-save'); // เปิดดูรายละเอียดหลังลบ await page.waitForSelector('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.click('id=btn-kebab-action-การดำเนินการเตรียมการ'); await page.waitForSelector( 'id=btn-kebab-view-detail-การดำเนินการเตรียมการ', ); await page.click('id=btn-kebab-view-detail-การดำเนินการเตรียมการ'); // ตรวจสอบการแสดงผลหลังจากเพิ่มคุณสมบัติ const checkDeleteAgenciseWorkFlow = page.locator( "//span[normalize-space(text())='จัดหางานพื้นที่']", ); await expect(checkDeleteAgenciseWorkFlow).toBeHidden(); } catch (error) { console.error('เกิดข้อผิดพลาดในการทดสอบ', error); isLoginSuccessful = false; throw error; } await page.waitForTimeout(2000); console.log('ระบบสามารถลบหน่วยงานได้'); await page.waitForSelector('id=btn-info-close'); await page.click('id=btn-info-close'); });