This commit is contained in:
parent
0150f80ba2
commit
272183bca9
77 changed files with 9957 additions and 144 deletions
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
@ -105,7 +105,7 @@ test('Create Branch Managenment', async () => {
|
|||
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');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
await page.close();
|
||||
}
|
||||
});
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { test, expect, Page } from '@playwright/test';
|
||||
import { strictEqual } from 'assert';
|
||||
import fs from 'fs';
|
||||
import fs, { writeFileSync } from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
let page: Page;
|
||||
let isLoginSuccessful = false;
|
||||
|
||||
test.beforeAll(async ({ browser }) => {
|
||||
page = await browser.newPage();
|
||||
|
|
@ -15,63 +16,76 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('http://192.168.1.62:20101/');
|
||||
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-customer');
|
||||
await page.click('id=sub-menu-customer');
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
isLoginSuccessful = true;
|
||||
console.log('Login สำเร็จ');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการ Login', error);
|
||||
isLoginSuccessful = false;
|
||||
}
|
||||
}
|
||||
|
||||
test('Login', async () => {
|
||||
// Login
|
||||
await page.goto('http://chamomind.ddns.net: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');
|
||||
await login(page);
|
||||
});
|
||||
|
||||
test('สร้างลูกจ้างในสาขา', async () => {
|
||||
const names = [
|
||||
{
|
||||
firstName: 'อริญา',
|
||||
lastName: 'จิตรเกียรติ',
|
||||
firstNameEn: 'Arinya',
|
||||
lastNameEn: 'Jitkiat',
|
||||
},
|
||||
{
|
||||
firstName: 'เกียรติศักดิ์',
|
||||
lastName: 'อำนวย',
|
||||
firstNameEn: 'Kiatsakd',
|
||||
lastNameEn: 'Amnuy',
|
||||
},
|
||||
{
|
||||
firstName: 'ภัทรพล',
|
||||
lastName: 'รุ่งโรจน์',
|
||||
firstNameEn: 'Phatthapon',
|
||||
lastNameEn: 'Rungroj',
|
||||
},
|
||||
{
|
||||
firstName: 'ศิริพร',
|
||||
lastName: 'พงษ์รัตน์',
|
||||
firstNameEn: 'Siriporn',
|
||||
lastNameEn: 'Phongrat',
|
||||
},
|
||||
{
|
||||
firstName: 'กรกมล',
|
||||
lastName: 'กิตติสมบัติ',
|
||||
firstNameEn: 'Karakamon',
|
||||
lastNameEn: 'Kittisombat',
|
||||
},
|
||||
];
|
||||
|
||||
// เข้าสู่เมนูลูกค้า
|
||||
await page.click('id=menu.manage');
|
||||
await page.waitForSelector('id=sub-menu-customer');
|
||||
await page.click('id=sub-menu-customer');
|
||||
|
||||
await page.click(
|
||||
"//td[contains(.,'บริษัท เทคโนโลยีอินโนเวต จำกัดInnovative Technology Co., Ltd.')]",
|
||||
);
|
||||
await page.click("//table[@class='q-table']/tbody[1]/tr[3]/td[6]/button[1]");
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
const names = [
|
||||
{
|
||||
firstName: 'เกียรติศักดิ์',
|
||||
lastName: 'อำนวย',
|
||||
firstNameEn: 'Kiatsakd',
|
||||
lastNameEn: 'Amnuy',
|
||||
},
|
||||
{
|
||||
firstName: 'ภัทรพล',
|
||||
lastName: 'รุ่งโรจน์',
|
||||
firstNameEn: 'Phatthapon',
|
||||
lastNameEn: 'Rungroj',
|
||||
},
|
||||
{
|
||||
firstName: 'ศิริพร',
|
||||
lastName: 'พงษ์รัตน์',
|
||||
firstNameEn: 'Siriporn',
|
||||
lastNameEn: 'Phongrat',
|
||||
},
|
||||
{
|
||||
firstName: 'กรกมล',
|
||||
lastName: 'กิตติสมบัติ',
|
||||
firstNameEn: 'Karakamon',
|
||||
lastNameEn: 'Kittisombat',
|
||||
},
|
||||
];
|
||||
|
||||
await page.click(
|
||||
"//td[contains(.,'บริษัท เอกซ์เซล อินโนเวชั่น จำกัดSiam Energy Solutions Co., Ltd.')]",
|
||||
);
|
||||
await page.click('id=btn-show-employee-บริษัท เอกซ์เซล อินโนเวชั่น จำกัด');
|
||||
for (const user of names) {
|
||||
await page.click("(//th[@class='text-right']//button)[2]");
|
||||
await page.waitForSelector(
|
||||
'id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee',
|
||||
);
|
||||
await page.click('id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee');
|
||||
await page.click('id=form-employee-select-prefix-name');
|
||||
await page.click('id=form-employee-select-prefix-name_0');
|
||||
await page.fill('id=form-employee-input-first-name', user.firstName);
|
||||
|
|
@ -82,8 +96,8 @@ test('สร้างลูกจ้างในสาขา', async () => {
|
|||
// วันเกิด
|
||||
await page.click('id=form-employee-input-birth-date');
|
||||
await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
|
||||
await page.click("//div[text()='2000']");
|
||||
await page.click("//div[@id='2000-11-02']/div[1]");
|
||||
await page.click("//div[text()='1999']");
|
||||
await page.click("//div[@id='1999-12-02']/div[1]");
|
||||
|
||||
// สัญชาติ
|
||||
await page.click('id=form-employee-select-nationality');
|
||||
|
|
@ -98,27 +112,31 @@ test('สร้างลูกจ้างในสาขา', async () => {
|
|||
});
|
||||
|
||||
test('สร้างลูกจ้างในสาขา 2', async () => {
|
||||
const namestwo = [
|
||||
{
|
||||
firstName: 'สุทิน',
|
||||
lastName: 'ภาณุวงศ์',
|
||||
firstNameEn: 'Suthin',
|
||||
lastNameEn: 'Phanuwong',
|
||||
},
|
||||
];
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
|
||||
// เข้าสู่เมนูลูกค้า
|
||||
await page.click('id=menu.manage');
|
||||
await page.waitForSelector('id=sub-menu-customer');
|
||||
await page.click('id=sub-menu-customer');
|
||||
|
||||
await page.click(
|
||||
"//td[contains(.,'บริษัท เทคโนโลยีอินโนเวต จำกัดInnovative Technology Co., Ltd.')]",
|
||||
);
|
||||
await page.click("//table[@class='q-table']/tbody[1]/tr[5]/td[6]/button[1]");
|
||||
try {
|
||||
const namestwo = [
|
||||
{
|
||||
firstName: 'สุทิน',
|
||||
lastName: 'ภาณุวงศ์',
|
||||
firstNameEn: 'Suthin',
|
||||
lastNameEn: 'Phanuwong',
|
||||
},
|
||||
];
|
||||
|
||||
await page.click(
|
||||
"//td[contains(.,'บริษัท เอกซ์เซล อินโนเวชั่น จำกัดSiam Energy Solutions Co., Ltd.')]",
|
||||
);
|
||||
|
||||
await page.click('id=btn-show-employee-บริษัท เอกซ์เซล อินโนเวชั่น จำกัด');
|
||||
|
||||
for (const user of namestwo) {
|
||||
await page.click("(//th[@class='text-right']//button)[3]");
|
||||
await page.waitForSelector(
|
||||
'id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee',
|
||||
);
|
||||
await page.click('id=บริษัท เอกซ์เซล อินโนเวชั่น จำกัด-btn-add-employee');
|
||||
await page.click('id=form-employee-select-prefix-name');
|
||||
await page.click('id=form-employee-select-prefix-name_0');
|
||||
await page.fill('id=form-employee-input-first-name', user.firstName);
|
||||
|
|
@ -129,8 +147,8 @@ test('สร้างลูกจ้างในสาขา 2', async () => {
|
|||
// วันเกิด
|
||||
await page.click('id=form-employee-input-birth-date');
|
||||
await page.click("(//button[@class='dp__btn dp__month_year_select'])[2]");
|
||||
await page.click("//div[text()='2000']");
|
||||
await page.click("//div[@id='2000-11-02']/div[1]");
|
||||
await page.click("//div[text()='1999']");
|
||||
await page.click("//div[@id='1999-12-02']/div[1]");
|
||||
|
||||
// สัญชาติ
|
||||
await page.click('id=form-employee-select-nationality');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ test.afterAll(async () => {
|
|||
});
|
||||
|
||||
//สร้าง Function สำหรับ Login
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ test.afterAll(async () => {
|
|||
}
|
||||
});
|
||||
|
||||
async function login(page) {
|
||||
async function login(page: Page) {
|
||||
try {
|
||||
// Login
|
||||
await page.goto('/');
|
||||
|
|
|
|||
804
tests/01-Manage/MenuAgencies.spec.ts
Normal file
804
tests/01-Manage/MenuAgencies.spec.ts
Normal file
|
|
@ -0,0 +1,804 @@
|
|||
import { test, expect, Page } from '@playwright/test';
|
||||
import { de, fakerEN, fakerTH } from '@faker-js/faker';
|
||||
import { isAwaitExpression } from 'typescript';
|
||||
|
||||
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-agencies');
|
||||
await page.click('id=sub-menu-agencies');
|
||||
|
||||
// ถ้าทั้งหมดสำเร็จ
|
||||
isLoginSuccessful = true;
|
||||
console.log('ระบบทำการ Login สำเร็จ');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการ Login');
|
||||
isLoginSuccessful = false;
|
||||
}
|
||||
}
|
||||
test('Login', async () => {
|
||||
await login(page);
|
||||
});
|
||||
|
||||
test('TC_2_0_001', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่เมนูหน่วยงาน
|
||||
|
||||
const pageAgencies = page.locator(
|
||||
"//span[contains(@class,'title-gradient text-weight-bold')]",
|
||||
);
|
||||
await expect(pageAgencies).toHaveText('หน่วยงาน');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงหน้าเมนูหน่วยงาน');
|
||||
});
|
||||
|
||||
test('TC_2_0_002', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
await page.waitForSelector("(//input[@id='input-agencies-code'])[2]");
|
||||
await page.click("(//input[@id='input-agencies-code'])[2]");
|
||||
|
||||
const dropdownAgenciesGroup = page.locator('id=input-agencies-code_lb');
|
||||
await expect(dropdownAgenciesGroup).toBeVisible();
|
||||
} 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_003', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
const pageCreateAgencies = page.locator(
|
||||
"//div[contains(@class,'col text-subtitle1')]",
|
||||
);
|
||||
await expect(pageCreateAgencies).toHaveText('เพิ่มหน่วยงาน');
|
||||
} 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_004', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// ส่วนข้อมูลพื้นฐาน
|
||||
await page.click("(//input[@id='input-agencies-code'])[2]");
|
||||
await page.waitForSelector('id=input-agencies-code_2');
|
||||
await page.click('id=input-agencies-code_2');
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name'])[2]",
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of the Republic of Bulgaria in Thailand',
|
||||
);
|
||||
|
||||
// ส่วนข้อมูลที่อยู่
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-no'])[2]",
|
||||
'100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
|
||||
);
|
||||
await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
|
||||
await page.click("(//input[@id='-select-province'])[2]");
|
||||
await page.waitForSelector('id=-select-province_1');
|
||||
await page.click('id=-select-province_1');
|
||||
// การเลือก Dropdown ที่อยู่ข้างล่าง
|
||||
await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
|
||||
await page.waitForSelector('#-select-district_lb', { state: 'visible' });
|
||||
|
||||
const targetOption = page.locator('[id="-select-district_40"]');
|
||||
for (let i = 0; i < 10 && !(await targetOption.isVisible()); i++) {
|
||||
await page
|
||||
.locator('#-select-district_lb')
|
||||
.evaluate((el) => (el.scrollTop += 150));
|
||||
await page.waitForTimeout(100);
|
||||
}
|
||||
|
||||
if (await targetOption.isVisible()) {
|
||||
await targetOption.click();
|
||||
console.log('✅ เลือกตัวเลือกสำเร็จ');
|
||||
} else {
|
||||
console.error('❌ ไม่พบตัวเลือกที่ต้องการ');
|
||||
}
|
||||
await page.click("(//input[@id='-select-sub-district'])[2]");
|
||||
await page.waitForSelector('id=-select-sub-district_1');
|
||||
await page.click('id=-select-sub-district_1');
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-en'])[2]",
|
||||
'100/45 Ocean Tower 2, 24th Floor',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click("(//button[@id='btn-info-basic-save'])[2]");
|
||||
|
||||
const createAgencies = page.locator(
|
||||
"//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
|
||||
);
|
||||
await expect(createAgencies).toContainText(
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
await expect(createAgencies).toContainText(
|
||||
'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110',
|
||||
);
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบสามารถเพิ่มหน่วยงานได้');
|
||||
});
|
||||
|
||||
test('TC_2_0_005', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// ส่วนข้อมูลพื้นฐาน
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name'])[2]",
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of the Republic of Bulgaria in Thailand',
|
||||
);
|
||||
|
||||
// ส่วนที่อยู่
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name'])[2]",
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of the Republic of Bulgaria in Thailand',
|
||||
);
|
||||
|
||||
// ส่วนข้อมูลที่อยู่
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-no'])[2]",
|
||||
'100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
|
||||
);
|
||||
await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
|
||||
await page.click("(//input[@id='-select-province'])[2]");
|
||||
await page.waitForSelector('id=-select-province_1');
|
||||
await page.click('id=-select-province_1');
|
||||
// การเลือก Dropdown ที่อยู่ข้างล่าง
|
||||
await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
|
||||
await page.waitForSelector('id=-select-district_2');
|
||||
await page.click('id=-select-district_2');
|
||||
await page.click("(//input[@id='-select-sub-district'])[2]");
|
||||
await page.waitForSelector('id=-select-sub-district_1');
|
||||
await page.click('id=-select-sub-district_1');
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-en'])[2]",
|
||||
'100/45 Ocean Tower 2, 24th Floor',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click("(//button[@id='btn-info-basic-save'])[2]");
|
||||
|
||||
//ตรวจสอบข้อผิดพลาดที่ต้องแสดง
|
||||
const expectedErrors = [
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[1]",
|
||||
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.waitForTimeout(2000);
|
||||
console.log('ระบบทำการแจ้งเตือนให้เลือกกลุ่มหน่วยงาน');
|
||||
await page.waitForSelector('id=btn-form-close');
|
||||
await page.click('id=btn-form-close');
|
||||
});
|
||||
|
||||
test('TC_2_0_006', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// ส่วนข้อมูลพื้นฐาน
|
||||
await page.click("(//input[@id='input-agencies-code'])[2]");
|
||||
await page.waitForSelector('id=input-agencies-code_2');
|
||||
await page.click('id=input-agencies-code_2');
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of the Republic of Bulgaria in Thailand',
|
||||
);
|
||||
|
||||
// ส่วนข้อมูลที่อยู่
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-no'])[2]",
|
||||
'100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
|
||||
);
|
||||
await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
|
||||
await page.click("(//input[@id='-select-province'])[2]");
|
||||
await page.waitForSelector('id=-select-province_1');
|
||||
await page.click('id=-select-province_1');
|
||||
// การเลือก Dropdown ที่อยู่ข้างล่าง
|
||||
await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
|
||||
await page.waitForSelector('id=-select-district_2');
|
||||
await page.click('id=-select-district_2');
|
||||
await page.click("(//input[@id='-select-sub-district'])[2]");
|
||||
await page.waitForSelector('id=-select-sub-district_1');
|
||||
await page.click('id=-select-sub-district_1');
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-en'])[2]",
|
||||
'100/45 Ocean Tower 2, 24th Floor',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click("(//button[@id='btn-info-basic-save'])[2]");
|
||||
|
||||
//ตรวจสอบข้อผิดพลาดที่ต้องแสดง
|
||||
const expectedErrors = [
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[1]",
|
||||
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.waitForTimeout(2000);
|
||||
console.log('ระบบทำการแจ้งเตือนให้กรอกชื่อหน่วยงาน');
|
||||
await page.waitForSelector('id=btn-form-close');
|
||||
await page.click('id=btn-form-close');
|
||||
});
|
||||
|
||||
test('TC_2_0_007', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// ส่วนข้อมูลพื้นฐาน
|
||||
await page.click("(//input[@id='input-agencies-code'])[2]");
|
||||
await page.waitForSelector('id=input-agencies-code_2');
|
||||
await page.click('id=input-agencies-code_2');
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name'])[2]",
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of the Republic of Bulgaria in Thailand',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click("(//button[@id='btn-info-basic-save'])[2]");
|
||||
|
||||
//ตรวจสอบข้อผิดพลาดที่ต้องแสดง
|
||||
const expectedErrors = [
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[1]",
|
||||
message: 'จำเป็นต้องกรอกข้อมูลนี้',
|
||||
},
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[2]",
|
||||
message: 'โปรดเลือกจังหวัด',
|
||||
},
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[3]",
|
||||
message: 'โปรดเลือกเขต/อำเภอ',
|
||||
},
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[4]",
|
||||
message: 'โปรดเลือกแขวง/ตำบล',
|
||||
},
|
||||
{
|
||||
locator: "(//div[@class='q-field__messages col']//div)[5]",
|
||||
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.waitForTimeout(2000);
|
||||
console.log('ระบบทำการแจ้งเตือนให้กรอกที่อยู่');
|
||||
await page.waitForSelector('id=btn-form-close');
|
||||
await page.click('id=btn-form-close');
|
||||
});
|
||||
|
||||
test('TC_2_0_008', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
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-สถานเอกอัครราชทูตสาธารณรัฐบัลแกเรีย ประจำประเทศไทย',
|
||||
);
|
||||
|
||||
// ตรวจสอบหลังแก้ไข
|
||||
const pageEditAgencies = page.locator('id=user-form-content');
|
||||
await expect(pageEditAgencies).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_009', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
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.fill(
|
||||
'id=input-agencies-name',
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click('id=btn-info-basic-save');
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click('id=btn-info-close');
|
||||
|
||||
// ตรวจสอบหลังแก้ไข
|
||||
const editAgencies = page.locator(
|
||||
"//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
|
||||
);
|
||||
await expect(editAgencies).toContainText(
|
||||
'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
|
||||
);
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบสามารถแก้ไขหน่วยงานได้');
|
||||
});
|
||||
|
||||
test('TC_2_0_010', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
await page.click(
|
||||
'id=btn-kebab-action-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector(
|
||||
'id=btn-kebab-delete-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
|
||||
);
|
||||
await page.click(
|
||||
'id=btn-kebab-delete-สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector('id=btn-ok-dialog');
|
||||
await page.click('id=btn-ok-dialog');
|
||||
|
||||
// ตรวจสอบหลังลบ
|
||||
const editAgencies = page.locator(
|
||||
"//tr[contains(.,'สถานเอกอัครราชทูตสาธารณรัฐมอลต้า ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงคลองเตยเหนือ, เขตวัฒนา, จังหวัดกรุงเทพมหานคร, 10110')]",
|
||||
);
|
||||
await expect(editAgencies).toBeHidden();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบสามารถลบหน่วยงานในกรณีที่ยังไม่มีการใช้งานได้');
|
||||
});
|
||||
|
||||
test('TC_2_0_011', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มหน่วยงาน
|
||||
await page.waitForSelector('id=btn-add');
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// ส่วนข้อมูลพื้นฐาน
|
||||
await page.click("(//input[@id='input-agencies-code'])[2]");
|
||||
await page.waitForSelector('id=input-agencies-code_2');
|
||||
await page.click('id=input-agencies-code_2');
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name'])[2]",
|
||||
'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.fill(
|
||||
"(//input[@id='input-agencies-name-en'])[2]",
|
||||
'Embassy of Japan in Thailand',
|
||||
);
|
||||
|
||||
// ส่วนข้อมูลที่อยู่
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-no'])[2]",
|
||||
'100/45 อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24',
|
||||
);
|
||||
await page.fill("(//input[@id='-input-street'])[3]", 'สุขุมวิท 21 (อโศก)');
|
||||
await page.click("(//input[@id='-select-province'])[2]");
|
||||
await page.waitForSelector('id=-select-province_1');
|
||||
await page.click('id=-select-province_1');
|
||||
// การเลือก Dropdown ที่อยู่ข้างล่าง
|
||||
await page.click("(//input[@id='-select-district'])[2]"); // คลิกเปิด dropdown
|
||||
await page.waitForSelector('id=-select-district_1');
|
||||
await page.click('id=-select-district_1');
|
||||
await page.click("(//input[@id='-select-sub-district'])[2]");
|
||||
await page.waitForSelector('id=-select-sub-district_1');
|
||||
await page.click('id=-select-sub-district_1');
|
||||
await page.fill(
|
||||
"(//input[@id='-input-address-en'])[2]",
|
||||
'100/45 Ocean Tower 2, 24th Floor',
|
||||
);
|
||||
await page.waitForTimeout(1000);
|
||||
await page.click("(//button[@id='btn-info-basic-save'])[2]");
|
||||
|
||||
// ปิดสถานะ
|
||||
await page.click(
|
||||
'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector(
|
||||
'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.click(
|
||||
'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
{ force: true },
|
||||
);
|
||||
await page.waitForSelector('id=btn-ok-dialog');
|
||||
await page.click('id=btn-ok-dialog');
|
||||
await page.waitForTimeout(2000);
|
||||
// เปิดสถานะ
|
||||
await page.click(
|
||||
'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector(
|
||||
'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.click(
|
||||
'id=btn-kebab-status-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
{ force: true },
|
||||
);
|
||||
await page.waitForSelector('id=btn-ok-dialog');
|
||||
await page.click('id=btn-ok-dialog');
|
||||
|
||||
// การลบหน่วยงานที่ภูกใช้งานแล้ว
|
||||
await page.click(
|
||||
'id=btn-kebab-action-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector(
|
||||
'id=btn-kebab-delete-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.click(
|
||||
'id=btn-kebab-delete-สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย',
|
||||
);
|
||||
await page.waitForSelector('id=btn-ok-dialog');
|
||||
await page.click('id=btn-ok-dialog');
|
||||
|
||||
// ตรวจการแจ้งเตือนการลบหน่วยงานในกรณีที่หน่วยงานถูกใช้งานแล้ว
|
||||
const popUpErrorAgenciesDeleted = page.locator(
|
||||
"//span[normalize-space(text())='หน่วยงานใช้งานอยู่.']",
|
||||
);
|
||||
await expect(popUpErrorAgenciesDeleted).toHaveText('หน่วยงานใช้งานอยู่.');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบไม่สามารถลบหน่วยงานในกรณีที่มีการใช้งานได้');
|
||||
await page.click('id=btn-ok-dialog');
|
||||
});
|
||||
|
||||
test('TC_2_0_012', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
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('เปลี่ยนสถานะสำเร็จ');
|
||||
|
||||
// รอ Update
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('สถานะถูกเปลี่ยนแล้ว');
|
||||
|
||||
// ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
|
||||
const rowLocator = page.locator(
|
||||
"//tr[contains(.,'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงทรายกองดินใต้, เขตคลองสามวา, จังหวัดกรุงเทพมหานคร, 10510')]",
|
||||
);
|
||||
const backgroundColor = await rowLocator.evaluate(
|
||||
(el) => window.getComputedStyle(el).backgroundColor,
|
||||
);
|
||||
|
||||
// กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
|
||||
const expectedColor = 'rgba(0, 0, 0, 0)';
|
||||
|
||||
// ตรวจสอบสีที่เปลี่ยนไป
|
||||
expect(backgroundColor.trim()).toBe(expectedColor);
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบทำการปิดสถานะการใช้งานหน่วยงาน');
|
||||
});
|
||||
|
||||
test('TC_2_0_013', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
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('เปลี่ยนสถานะสำเร็จ');
|
||||
|
||||
// รอ Update
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('สถานะถูกเปลี่ยนแล้ว');
|
||||
|
||||
// ตรวจสอบสีของแถวหลังจากทำการเปลี่ยนสถานะ
|
||||
const rowLocator = page.locator(
|
||||
"//tr[contains(.,'สถานเอกอัครราชทูตญี่ปุ่น ประจำประเทศไทย') and contains (.,'อาคารโอเชียน ทาวเวอร์ 2 ชั้น 24, ถนนสุขุมวิท 21 (อโศก), แขวงทรายกองดินใต้, เขตคลองสามวา, จังหวัดกรุงเทพมหานคร, 10510')]",
|
||||
);
|
||||
const backgroundColor = await rowLocator.evaluate(
|
||||
(el) => window.getComputedStyle(el).backgroundColor,
|
||||
);
|
||||
|
||||
// กำหนดสีหลัเปลี่ยนสถานะการใช้งาน
|
||||
const expectedColor = 'rgb(249, 250, 252)';
|
||||
|
||||
// ตรวจสอบสีที่เปลี่ยนไป
|
||||
expect(backgroundColor.trim()).toBe(expectedColor);
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบทำการเปิดสถานะการใช้งานหน่วยงาน');
|
||||
});
|
||||
|
||||
test('TC_2_0_014', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่เมนูหน่วยงาน
|
||||
|
||||
const tableAgencies = page.locator("//tr[contains(.,'ลำดับชื่อที่อยู่')]");
|
||||
await expect(tableAgencies).toBeVisible();
|
||||
|
||||
await page.waitForSelector("//div[@id='btn-mode']//button[1]");
|
||||
await page.click("//div[@id='btn-mode']//button[1]");
|
||||
|
||||
const cardAgencies = page.locator(
|
||||
"(//section[contains(@class,'column col-12')])[1]",
|
||||
);
|
||||
await expect(cardAgencies).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงข้อมูลตารางและการ์ดของหน่วยงานทั้งหมด');
|
||||
});
|
||||
|
||||
test('TC_2_0_015', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่เมนูหน่วยงาน
|
||||
|
||||
const typeListAgencies = page.locator(
|
||||
"//div[contains(@class,'q-table__container q-table--horizontal-separator')]",
|
||||
);
|
||||
await expect(typeListAgencies).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงเมนูหน่วยงานในรูปแบบ List');
|
||||
});
|
||||
|
||||
test('TC_2_0_016', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// คลิก Dropdown ฟิลด์แสดงผล
|
||||
await page.waitForSelector("(//div[@id='select-field'])[1]");
|
||||
await page.click("(//div[@id='select-field'])[1]");
|
||||
|
||||
const dropdownFieldDisplay = page.locator('id=select-field_lb');
|
||||
await expect(dropdownFieldDisplay).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงรายการฟิลด์แสดงผล');
|
||||
});
|
||||
|
||||
test('TC_2_0_017', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// การแสดงหน่วยงานในรูปแบบการ์ด
|
||||
await page.waitForSelector("//div[@id='btn-mode']//button[1]");
|
||||
await page.click("//div[@id='btn-mode']//button[1]");
|
||||
|
||||
const typeCardAgencies = page.locator(
|
||||
"//div[contains(@class,'q-table__grid-content row')]",
|
||||
);
|
||||
await expect(typeCardAgencies).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงเมนูหน่วยงานในรูปแบบ Card');
|
||||
});
|
||||
|
||||
test('TC_2_0_018', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่เมนูหน่วยงาน
|
||||
|
||||
const pageAgencies = page.locator(
|
||||
"//div[contains(@class,'stat-card__content row')]",
|
||||
);
|
||||
await expect(pageAgencies).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงจำนวนหน่วยงานทั้งหมด');
|
||||
});
|
||||
2120
tests/01-Manage/MenuBranch.spec.ts
Normal file
2120
tests/01-Manage/MenuBranch.spec.ts
Normal file
File diff suppressed because it is too large
Load diff
2332
tests/01-Manage/MenuCustomer.spec.ts
Normal file
2332
tests/01-Manage/MenuCustomer.spec.ts
Normal file
File diff suppressed because it is too large
Load diff
1295
tests/01-Manage/MenuPersonel.spec.ts
Normal file
1295
tests/01-Manage/MenuPersonel.spec.ts
Normal file
File diff suppressed because it is too large
Load diff
1602
tests/01-Manage/MenuProductandService.spec.ts
Normal file
1602
tests/01-Manage/MenuProductandService.spec.ts
Normal file
File diff suppressed because it is too large
Load diff
1277
tests/01-Manage/MenuWorkflow.spec.ts
Normal file
1277
tests/01-Manage/MenuWorkflow.spec.ts
Normal file
File diff suppressed because it is too large
Load diff
365
tests/02-Sales/MenuQuotation.spec.ts
Normal file
365
tests/02-Sales/MenuQuotation.spec.ts
Normal file
|
|
@ -0,0 +1,365 @@
|
|||
import { test, expect, Page } from '@playwright/test';
|
||||
import { de, fakerEN, fakerTH } from '@faker-js/faker';
|
||||
import { isAwaitExpression } from 'typescript';
|
||||
|
||||
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.sales');
|
||||
await page.waitForSelector('id=sub-menu-quotation');
|
||||
await page.click('id=sub-menu-quotation');
|
||||
|
||||
// ถ้าทั้งหมดสำเร็จ
|
||||
isLoginSuccessful = true;
|
||||
console.log('ระบบทำการ Login สำเร็จ');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการ Login');
|
||||
isLoginSuccessful = false;
|
||||
}
|
||||
}
|
||||
test('Login', async () => {
|
||||
await login(page);
|
||||
});
|
||||
|
||||
test('TC_3_0_001', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่เมนูใบเสนอราคา
|
||||
const pageAgencies = page.locator(
|
||||
"//span[contains(@class,'title-gradient text-weight-bold')]",
|
||||
);
|
||||
await expect(pageAgencies).toHaveText('ใบเสนอราคา');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดงหน้าเมนูใบเสนอราคา');
|
||||
});
|
||||
|
||||
test('TC_3_0_002', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.click('id=btn-add');
|
||||
|
||||
const pageQuatationTitle = page.locator(
|
||||
"//div[contains(@class,'col text-subtitle1')]",
|
||||
);
|
||||
const dropdownServiceQuatation = page.locator('id=select-hq-id');
|
||||
const dropdownSelectCustomer = page.locator('id=select-customer');
|
||||
|
||||
await expect(pageQuatationTitle).toHaveText('เพิ่มใบเสนอราคา');
|
||||
await expect(dropdownServiceQuatation).toBeVisible();
|
||||
await expect(dropdownSelectCustomer).toBeVisible();
|
||||
|
||||
await page.click('id=btn-form-cancel');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบแสดง Pop Up เพิ่มใบเสนอราคา');
|
||||
});
|
||||
|
||||
test('TC_3_0_003', async () => {
|
||||
// ถ้ายังไม่ได้ Login ให้ทำการ Login
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// เพิ่มใบเสนอราคาเพื่อเข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.waitForSelector('id=select-hq-id');
|
||||
await page.click('id=select-hq-id');
|
||||
await page.waitForSelector('id=select-hq-id_1');
|
||||
await page.click('id=select-hq-id_1');
|
||||
await page.waitForSelector('id=select-customer');
|
||||
await page.click('id=select-customer');
|
||||
await page.waitForSelector('id=select-customer_1');
|
||||
await page.click('id=select-customer_1');
|
||||
await page.waitForSelector('id=btn-form-submit');
|
||||
await page.click('id=btn-form-submit');
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
// ตรวจสอบหลังจากเข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
|
||||
const titlePageQuotation = page.locator(
|
||||
"//header[contains(.,'ใบเสนอราคา')]",
|
||||
);
|
||||
await expect(titlePageQuotation).toBeVisible();
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log('ระบบเข้าสู่หน้าเพิ่มใบเสนอราคา');
|
||||
});
|
||||
|
||||
test('TC_3_0_004', async () => {
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
|
||||
try {
|
||||
// เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// เลือก HQ
|
||||
await page.waitForSelector('id=select-hq-id');
|
||||
await page.click('id=select-hq-id');
|
||||
await page.waitForSelector('id=select-hq-id_1');
|
||||
await page.click('id=select-hq-id_1');
|
||||
|
||||
// เลือกลูกค้า
|
||||
await page.waitForSelector('id=select-customer');
|
||||
await page.click('id=select-customer');
|
||||
await page.waitForSelector('id=select-customer_1');
|
||||
await page.click('id=select-customer_1');
|
||||
|
||||
// ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
|
||||
const [newPage] = await Promise.all([
|
||||
page
|
||||
.context()
|
||||
.waitForEvent('page')
|
||||
.catch(() => null), // ตรวจจับหน้าใหม่
|
||||
page.click('id=btn-form-submit'),
|
||||
]);
|
||||
|
||||
// ใช้หน้าใหม่ถ้ามี หรือหน้าเดิมถ้าไม่มี
|
||||
const newTab = newPage || page;
|
||||
await newTab.waitForLoadState('networkidle');
|
||||
|
||||
// ตรวจสอบ URL เพื่อ debug
|
||||
console.log(' URL ปัจจุบัน:', newTab.url());
|
||||
|
||||
// กรอกข้อมูลในฟอร์ม
|
||||
await newTab.fill('id=input-work-name', 'MOU');
|
||||
await newTab.fill('id=input-contact-name', fakerTH.person.fullName());
|
||||
await newTab.fill('id=input-telephone', '0882273282');
|
||||
|
||||
// บันทึกใบเสนอราคา
|
||||
await newTab.click('id=btn-save');
|
||||
|
||||
// ตรวจสอบว่าแสดงปุ่ม Edit
|
||||
const showButtonEdit = newTab.locator('id=btn-edit');
|
||||
await expect(showButtonEdit).toBeVisible();
|
||||
// ปิดหน้าต่างใบเสนอราคา
|
||||
await newTab.click('id=btn-close');
|
||||
await newTab.waitForSelector('id=btn-ok-dialog');
|
||||
await newTab.click('id=btn-ok-dialog');
|
||||
} catch (error) {
|
||||
console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
await page.waitForTimeout(2000);
|
||||
console.log(' ระบบบันทึกใบเสนอราคาและเห็นปุ่มแก้ไข');
|
||||
});
|
||||
|
||||
test('TC_3_0_005', async ({ page, context }) => {
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
|
||||
try {
|
||||
// เก็บจำนวนหน้าเดิมก่อนกด
|
||||
const oldPages = context.pages();
|
||||
|
||||
// เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.click('id=btn-add');
|
||||
|
||||
// เลือก HQ
|
||||
await page.waitForSelector('id=select-hq-id');
|
||||
await page.click('id=select-hq-id');
|
||||
await page.waitForSelector('id=select-hq-id_1');
|
||||
await page.click('id=select-hq-id_1');
|
||||
|
||||
// เลือกลูกค้า
|
||||
await page.waitForSelector('id=select-customer');
|
||||
await page.click('id=select-customer');
|
||||
await page.waitForSelector('id=select-customer_1');
|
||||
await page.click('id=select-customer_1');
|
||||
|
||||
// ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
|
||||
await Promise.all([
|
||||
page.click('id=btn-form-submit'),
|
||||
context.waitForEvent('page').catch(() => null),
|
||||
page.waitForLoadState('networkidle'),
|
||||
]);
|
||||
|
||||
// ตรวจจับหน้าใหม่ถ้ามี
|
||||
const newPages = context.pages().filter((p) => !oldPages.includes(p));
|
||||
const newTab = newPages.length > 0 ? newPages[0] : page;
|
||||
|
||||
// ตรวจสอบ URL เพื่อ debug
|
||||
console.log(' URL ปัจจุบัน:', newTab.url());
|
||||
|
||||
// ข้อมูลที่ต้องการทดสอบ
|
||||
const initialContactName = fakerTH.person.fullName();
|
||||
const updatedContactName = fakerTH.person.fullName();
|
||||
|
||||
// กรอกข้อมูลในฟอร์ม
|
||||
await newTab.fill('id=input-work-name', 'MOU');
|
||||
await newTab.fill('id=input-contact-name', initialContactName);
|
||||
await newTab.fill('id=input-telephone', '0882273282');
|
||||
|
||||
// บันทึกใบเสนอราคา
|
||||
await newTab.click('id=btn-save');
|
||||
|
||||
// ทดสอบการแก้ไขใบเสนอราคา
|
||||
await newTab.click('id=btn-edit');
|
||||
await newTab.fill('id=input-contact-name', updatedContactName);
|
||||
await newTab.click('id=btn-save');
|
||||
|
||||
// ตรวจสอบว่าข้อมูลถูกแก้ไขสำเร็จ
|
||||
const editedContactName = newTab.locator(
|
||||
`//input[@value='${updatedContactName}']`,
|
||||
);
|
||||
await expect(editedContactName).toBeVisible();
|
||||
|
||||
// ปิดหน้าต่างใบเสนอราคา
|
||||
await newTab.click('id=btn-close');
|
||||
await newTab.waitForSelector('id=btn-ok-dialog');
|
||||
await newTab.click('id=btn-ok-dialog');
|
||||
} catch (error) {
|
||||
console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
console.log(' ระบบสามารถแก้ไขใบเสนอราคาได้');
|
||||
await page.waitForTimeout(2000);
|
||||
});
|
||||
|
||||
test('TC_3_0_006', async ({ page, context }) => {
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
|
||||
try {
|
||||
// เก็บจำนวนหน้าเดิมก่อนกด
|
||||
const oldPages = context.pages();
|
||||
|
||||
// // เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
// await page.click("(//button[@id='btn-eye-MOU'])[1]");
|
||||
|
||||
// ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
|
||||
await Promise.all([
|
||||
page.click("(//button[@id='btn-eye-MOU'])[1]"),
|
||||
context.waitForEvent('page').catch(() => null),
|
||||
page.waitForLoadState('networkidle'),
|
||||
]);
|
||||
|
||||
// ตรวจจับหน้าใหม่ถ้ามี
|
||||
const newPages = context.pages().filter((p) => !oldPages.includes(p));
|
||||
const newTab = newPages.length > 0 ? newPages[0] : page;
|
||||
|
||||
// ตรวจสอบ URL เพื่อ debug
|
||||
console.log(' URL ปัจจุบัน:', newTab.url());
|
||||
|
||||
// เปิดแท็ปลูกค้าตอบรับ
|
||||
await newTab.click('id=btn-status-Accepted');
|
||||
|
||||
// ยืนยันลูกค้าตอบรับ
|
||||
await newTab.waitForSelector('id=btn-submit-accepted');
|
||||
await newTab.click('id=btn-submit-accepted');
|
||||
await newTab.waitForSelector('id=btn-ok-dialog');
|
||||
await newTab.click('id=btn-ok-dialog');
|
||||
|
||||
// ตรวจสอบว่าลูกค้าตอบรับแล้ว
|
||||
const acceptedSubmit = newTab.locator('id=btn-submit-accepted');
|
||||
await expect(acceptedSubmit).toBeHidden();
|
||||
|
||||
// ปิดหน้าต่างใบเสนอราคา
|
||||
await newTab.click('id=btn-close');
|
||||
await newTab.waitForSelector('id=btn-ok-dialog');
|
||||
await newTab.click('id=btn-ok-dialog');
|
||||
} catch (error) {
|
||||
console.error(' เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
console.log(' ระบบทำการยืนยันลูกค้าตอบรับ');
|
||||
await page.waitForTimeout(2000);
|
||||
});
|
||||
|
||||
test('TC_3_0_007', async ({ page, context }) => {
|
||||
if (!isLoginSuccessful) {
|
||||
await login(page);
|
||||
}
|
||||
|
||||
try {
|
||||
// เก็บจำนวนหน้าเดิมก่อนกด
|
||||
const oldPages = context.pages();
|
||||
|
||||
// // เข้าสู่หน้าเพิ่มใบเสนอราคา
|
||||
await page.click("(//div[@role='tab'])[2]");
|
||||
|
||||
// ตรวจสอบว่าหน้าเปลี่ยนใน tab เดิม หรือเปิดหน้าใหม่
|
||||
await Promise.all([
|
||||
page.click('id=btn-eye-MOU'),
|
||||
context.waitForEvent('page').catch(() => null),
|
||||
page.waitForLoadState('networkidle'),
|
||||
]);
|
||||
|
||||
// ตรวจจับหน้าใหม่ถ้ามี
|
||||
const newPages = context.pages().filter((p) => !oldPages.includes(p));
|
||||
const newTab = newPages.length > 0 ? newPages[0] : page;
|
||||
|
||||
// ตรวจสอบ URL เพื่อ debug
|
||||
console.log(' URL ปัจจุบัน:', newTab.url());
|
||||
|
||||
// เปิดแท็ปใบแจ้งหนี้
|
||||
await newTab.click('id=btn-status-Invoice');
|
||||
|
||||
// อนุมัติใบแจ้งหนี้
|
||||
await newTab.waitForSelector('id=btn-approve-invoice');
|
||||
await newTab.click('id=btn-approve-invoice');
|
||||
|
||||
// ตรวจสอบว่าอนุมัติใบแจ้งหนี้แล้ว
|
||||
const acceptedSubmit = newTab.locator('id=btn-approve-invoice');
|
||||
await expect(acceptedSubmit).toBeHidden();
|
||||
|
||||
// ปิดหน้าต่างใบเสนอราคา
|
||||
await newTab.click('id=btn-close');
|
||||
await newTab.waitForSelector('id=btn-ok-dialog');
|
||||
await newTab.click('id=btn-ok-dialog');
|
||||
} catch (error) {
|
||||
console.error('เกิดข้อผิดพลาดในการทดสอบ', error);
|
||||
isLoginSuccessful = false;
|
||||
throw error;
|
||||
}
|
||||
console.log('ระบบทำการอนุมัติใบแจ้งหนี้');
|
||||
await page.waitForTimeout(2000);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue