jws-frontend/tests/00-Role&Permission/JWS_RP_010_DataEntry.spec.ts

177 lines
7.5 KiB
TypeScript
Raw Normal View History

2024-09-18 17:52:25 +07:00
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);
});