46 lines
2.4 KiB
JavaScript
46 lines
2.4 KiB
JavaScript
import { expect, test } from '@playwright/test'
|
|
import postgres from 'postgres'
|
|
|
|
test('멤버 댓글 페이지 이동·게시물 링크와 대시보드 최근 댓글을 표시한다', async ({ page }) => {
|
|
const database = postgres(process.env.DATABASE_URL, { max: 1 })
|
|
let postId
|
|
try {
|
|
const login = await page.request.post('/admin/api/auth/login', {
|
|
data: { email: 'playwright-admin@example.com', password: 'playwright-admin-password' }
|
|
})
|
|
expect(login.ok()).toBeTruthy()
|
|
const admin = await login.json()
|
|
const created = await page.request.post('/admin/api/posts', {
|
|
data: { title: '댓글 화면 검증 게시물', slug: 'comments-ui-test', content: '본문', status: 'published', tags: [], tagNames: {} }
|
|
})
|
|
expect(created.ok()).toBeTruthy()
|
|
postId = (await created.json()).id
|
|
for (let index = 0; index < 11; index += 1) {
|
|
await database`
|
|
INSERT INTO comments (post_id, user_id, body, created_at)
|
|
VALUES (${postId}, ${admin.userId}, ${`화면 댓글 ${index}`}, now() + ${index} * interval '1 second')
|
|
`
|
|
}
|
|
await page.goto(`/admin/members/${admin.userId}`)
|
|
await page.waitForLoadState('networkidle')
|
|
const list = page.locator('.admin-comment-list')
|
|
await expect(list.locator('.admin-comment-list__item')).toHaveCount(10)
|
|
await expect(list.locator('.admin-comment-list__body').first()).toHaveText('화면 댓글 10')
|
|
await expect(list.getByRole('link', { name: '게시물 보기' }).first()).toHaveAttribute('href', '/post/comments-ui-test#comments')
|
|
await list.getByRole('button', { name: '다음' }).click()
|
|
await expect(list.locator('.admin-comment-list__item')).toHaveCount(1)
|
|
await expect(list.locator('.admin-comment-list__body')).toHaveText('화면 댓글 0')
|
|
await list.getByRole('button', { name: '이전' }).click()
|
|
await expect(list.locator('.admin-comment-list__item')).toHaveCount(10)
|
|
await page.goto('/admin')
|
|
await expect(page.locator('.admin-comment-list__item')).toHaveCount(5)
|
|
await expect(page.locator('.admin-comment-list__body').first()).toHaveText('화면 댓글 10')
|
|
await page.goto('/admin/posts')
|
|
const row = page.locator('.admin-posts__row').filter({ hasText: '댓글 화면 검증 게시물' })
|
|
await expect(row.locator('.admin-posts__comment-count')).toHaveText('11')
|
|
} finally {
|
|
if (postId) await database`DELETE FROM posts WHERE id = ${postId}`
|
|
await database.end()
|
|
}
|
|
})
|