const { test, expect } = require('@playwright/test'); const { loginAs, BASE_URL } = require('../../../helpers/auth'); const { assertApiSuccess, authHeaders } = require('../../../helpers/utils'); test.describe('【管理员】文章发布流程', function() { var auth; test.beforeAll(async function({ browser }) { auth = await loginAs(browser, 'admin'); }); test('[场景1] 创建文章草稿 — 状态为draft', async function({ page }) { var resp = await page.request.post(BASE_URL + '/api/admin/article/create', { headers: authHeaders(auth), data: { title: 'E2E测试文章', content: '
测试内容
', categoryId: 1 }, }); var data = await assertApiSuccess(resp); expect(data.status || 'draft').toBe('draft'); }); test('[场景2] 提交审核 — 状态变为pending', async function({ page }) { var resp = await page.request.post(BASE_URL + '/api/admin/article/submit-review', { headers: authHeaders(auth), data: { articleId: 1001 }, }); var data = await assertApiSuccess(resp); expect(data.status).toBe('pending'); }); test('[场景3] 审核通过 — 状态变为published', async function({ page }) { var resp = await page.request.post(BASE_URL + '/api/admin/article/approve', { headers: authHeaders(auth), data: { articleId: 1001 }, }); var data = await assertApiSuccess(resp); expect(data.status).toBe('published'); }); test('[场景4] 下架已发布文章 — 状态变为withdrawn', async function({ page }) { var resp = await page.request.post(BASE_URL + '/api/admin/article/withdraw', { headers: authHeaders(auth), data: { articleId: 1002 }, }); var data = await assertApiSuccess(resp); expect(data.status).toBe('withdrawn'); }); });