hrms-edm/Services/client/tests/folder-CRUD.spec.ts
2023-12-07 15:39:32 +07:00

277 lines
8.7 KiB
TypeScript

import { test, expect, Page } from '@playwright/test'
import { nanoid } from 'nanoid'
test.describe.configure({ mode: 'serial' })
const cabinet = nanoid()
const drawer = nanoid()
const folder = nanoid()
const subfolder = nanoid()
const newName = nanoid()
let page: Page
test.beforeAll(async ({ browser }) => {
page = await browser.newPage()
})
test.afterAll(async () => {
await page.close()
})
test('Login', async () => {
await page.goto('http://localhost:3010/admin')
await expect(page).toHaveTitle('Sign in to EDM')
await page.fill("input[name='username']", 'oom')
await page.fill("input[name='password']", 'oom')
await page.click("input[name='login']")
await page.waitForTimeout(2000)
})
test('Create Cabinet', async () => {
await page.waitForTimeout(2000)
await page.click("//div[@id='triggerFolderCreateFileItem']")
await page.fill(
"//input[@placeholder='กรอกชื่อ']",
cabinet,
)
await page.click("//button[@type='submit']")
await page.waitForTimeout(300)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(cabinet)
await page.waitForTimeout(300)
})
test('Go to Cabinet', async () => {
await page.click(`(//div[text()='${cabinet}'])[2]`)
})
test('Create drawer', async () => {
await page.click("//div[@id='triggerFolderCreateFileItem']")
await page.fill(
"//input[@placeholder='กรอกชื่อ']",
drawer,
)
await page.click("//button[@type='submit']")
await page.waitForTimeout(300)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(drawer)
await page.waitForTimeout(300)
})
test('Go into drawer', async () => {
await page.click(`(//div[text()='${drawer}'])[2]`)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(drawer)
})
test('Create Folder', async () => {
await page.click("//div[@id='triggerFolderCreateFileItem']")
await page.fill(
"//input[@placeholder='กรอกชื่อ']",
folder,
)
await page.click("//button[@type='submit']")
await page.waitForTimeout(300)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(folder)
})
test('Go into Folder', async () => {
await page.click(`(//div[text()='${folder}'])[2]`)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(folder)
})
test('Create Subfolder', async () => {
await page.click("//div[@id='triggerFolderCreateFileItem']")
await page.fill(
"//input[@placeholder='กรอกชื่อ']",
subfolder,
)
await page.click("(//button[@type='submit'])[3]")
await page.waitForTimeout(300)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(subfolder)
})
test('Go into Subfolder', async () => {
await page.click(`//div[text()='${subfolder}']`)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(folder)
})
test('Back to Folder', async () => {
await page.click("//i[text()='arrow_back']")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(subfolder)
})
test('Edit Subfolder', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${folder}/${subfolder}/']`,
)
await page.click("(//div[@role='listitem'])[1]")
await page.fill("(//input[@placeholder='กรอกชื่อ'])[1]", newName)
await page.click("(//button[@id='FoldeSubmit'])[1]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Subfolder Cancel', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${folder}/${newName}/']`,
)
await page.click("(//div[@role='listitem'])[2]")
await page.click("(//div[@class='q-space']/following-sibling::button)[2]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Subfolder Confirm', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${folder}/${newName}/']`,
)
await page.click("(//div[@role='listitem'])[2]")
await page.click(
"(//div[contains(@class,'q-card__actions justify-end')]//button)[2]",
)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(newName)
})
test('Back to drawer', async () => {
await page.click("//i[text()='arrow_back']")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(folder)
})
test('Edit Folder', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${folder}/']`,
)
await page.click("(//div[@role='listitem'])[1]")
await page.fill("(//input[@placeholder='กรอกชื่อ'])[1]", newName)
await page.click("(//button[@id='FoldeSubmit'])[1]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Folder Cancel', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${newName}/']`,
)
await page.click("(//div[@role='listitem'])[2]")
await page.click("(//div[@class='q-space']/following-sibling::button)[2]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Folder Confirm', async () => {
await page.click(
`//button[@data-testid='action${cabinet}/${drawer}/${newName}/']`,
)
await page.click("(//div[@role='listitem'])[2]")
await page.click(
"(//div[contains(@class,'q-card__actions justify-end')]//button)[2]",
)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(newName)
})
test('Back to Cabinet', async () => {
await page.click("//i[text()='arrow_back']")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(drawer)
})
test('Edit drawer', async () => {
await page.click(`//button[@data-testid='action${cabinet}/${drawer}/']`)
await page.click("(//div[@role='listitem'])[1]")
await page.fill("(//input[@placeholder='กรอกชื่อ'])[1]", newName)
await page.click("(//button[@id='FoldeSubmit'])[1]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Drawer Cancel', async () => {
await page.click(`//button[@data-testid='action${cabinet}/${newName}/']`)
await page.click("(//div[@role='listitem'])[2]")
await page.click("(//div[@class='q-space']/following-sibling::button)[2]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Drawer Confirm', async () => {
await page.click(`//button[@data-testid='action${cabinet}/${newName}/']`)
await page.click("(//div[@role='listitem'])[2]")
await page.click(
"(//div[contains(@class,'q-card__actions justify-end')]//button)[2]",
)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(newName)
})
test('Back to Home', async () => {
await page.click("//i[text()='arrow_back']")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(cabinet)
})
test('Edit Cabinet', async () => {
await page.click(`//button[@data-testid='action${cabinet}/']`)
await page.click("(//div[@role='listitem'])[1]")
await page.fill("(//input[@placeholder='กรอกชื่อ'])[1]", newName)
await page.click("(//button[@id='FoldeSubmit'])[1]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Cabinet Cancel', async () => {
await page.click(`//button[@data-testid='action${newName}/']`)
await page.click("(//div[@role='listitem'])[2]")
await page.click("(//div[@class='q-space']/following-sibling::button)[2]")
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).toContainText(newName)
})
test('Delete Cabinet Confirm', async () => {
await page.click(`//button[@data-testid='action${newName}/']`)
await page.click("(//div[@role='listitem'])[2]")
await page.click(
"(//div[contains(@class,'q-card__actions justify-end')]//button)[2]",
)
await expect(
page.locator("(//div[contains(@class,'bg-white rounded-borders')])[2]"),
).not.toHaveText(newName)
})