import { test, expect, Page } from '@playwright/test'
import { nanoid } from 'nanoid'
import { Directive } from 'vue'
test.describe.configure({ mode: 'serial' })

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']", 'admin')
  await page.fill("input[name='password']", 'P@ssw0rd')
  await page.click("input[name='login']")
})

test('listViewMode', async () => {
    await page.click("//i[text()='view_list']")
})


test('Create Cabinet', async () => {
  await page.click("//span[text()='สร้างตู้เก็บเอกสาร']")
  await page.fill("//input[@placeholder='กรอกชื่อ']", 'oat-test')
  await page.click("//button[@type='submit']")
})

test('Go into Cabinet', async () => {
    await page.click('//td[contains(text(),"oat-test")]')
})

test('Create Drawer', async () => {
    await page.click("//span[text()='สร้างลิ้นชัก']")
    await page.fill("(//input[@class='q-field__native q-placeholder'])[2]", 'oat-drawer')
    await page.click("(//button[@type='submit'])")
})

test('Go into Drawer', async () => {
    await page.click("//table[@class='q-table']/tbody[1]/tr[1]/td[1]")
})

test('Create Folder', async () => {
    await page.click("//span[text()='สร้างแฟ้ม']")
    await page.fill("(//input[@class='q-field__native q-placeholder'])[2]", 'oat-folder')
    await page.click("(//button[@type='submit'])")
})

test('Go into Folder', async () => {
    await page.click("//table[@class='q-table']/tbody[1]/tr[1]/td[1]")
})

test('Create subFolder', async () => {
    await page.click("//span[text()='สร้างแฟ้มย่อย']")
    await page.fill("(//input[@class='q-field__native q-placeholder'])[2]","oat-subfolder")
    await page.click("//span[text()='บันทึก']")
})

test('Go into SubFolder', async () => {
    await page.click("//table[@class='q-table']")
})

test('Upload File in SubFolder Level', async () => {
  await page.click("//span[text()='สร้างเอกสาร']")
  await page.locator("//input[@type='file']").setInputFiles('tests/test.docx')
  await page.fill("//input[@placeholder='กรอกชื่อเรื่อง']",'oattestfile')
  await page.click("(//button[@type='submit'])[1]")
  await page.waitForTimeout(2500)
  await page.click("button#getFolder")
  await page.waitForTimeout(1000)
})

test('Go into File', async () => {
  await page.click('//td[contains(text(),"test.docx")]')
})
  
test('Download File', async () => {
  await page.click("//span[text()='ดาวน์โหลด']")
  await page.waitForTimeout(2000)
})

test('Go Back to SubFolder', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delele file on SubFolder', async () => {
  await page.click("//button[@data-testid='listViewFileDelete']")
  await page.click("//span[text()='ลบ']")
})

test('Go back to Folder Level', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delete SubFolder', async () => {
  await page.click("//button[@data-testid='oat-subfolder']")
  await page.click("//span[text()='ลบ']")
})

test('Upload File in Folder Level', async () => {
  await page.click("//span[text()='สร้างเอกสาร']")
  await page.locator("//input[@type='file']").setInputFiles('tests/searchtest.txt')
  await page.fill("//input[@placeholder='กรอกชื่อเรื่อง']",'testtext')
  await page.click("(//button[@type='submit'])[1]")
  await page.waitForTimeout(2500)
  await page.click("button#getFolder")
  await page.waitForTimeout(1000)
})

test('Go into Text File', async () => {
  await page.click('//td[contains(text(),"searchtest.txt")]')
})

test('Download File Text', async () => {
  await page.click("//span[text()='ดาวน์โหลด']")
  await page.waitForTimeout(2000)
})

test('Go back to Folder Level Again', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delele file on Folder', async () => {
  await page.click("//button[@data-testid='listViewFileDelete']")
  await page.click("//span[text()='ลบ']")
})

test('Go back to Drawer Level', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delete Folder', async () => {
  await page.click("//button[@data-testid='oat-folder']")
  await page.click("//span[text()='ลบ']")
})

test('Go back to Cabinet Level', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delete Drawer', async () => {
  await page.click("//button[@data-testid='oat-drawer']")
  await page.click("//span[text()='ลบ']")
})

test('Go back to Main Level', async () => {
  await page.click("//i[text()='arrow_back']")
})

test('Delete Cabinet', async () => {
  await page.click("//button[@data-testid='oat-test']")
  await page.click("//span[text()='ลบ']")
  await page.waitForTimeout(1000)
})


// test('Delete Cabinet', async () => {
//   await page.click("//button[@data-testid='oat-test']")
//   await page.click("//span[text()='ลบ']")
//   await page.waitForTimeout(2000)
// })

