| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /**
- * ================================================================
- * 场景:能量规则配置全流程 E2E 测试
- * ================================================================
- * 用户故事:管理员配置五维能量发放规则
- *
- * 流程步骤:
- * 1. 查看能量规则列表
- * 2. 创建新规则
- * 3. 启用/禁用规则
- * 4. 编辑/删除规则
- *
- * 关键里程碑:
- * - [Milestone-1] 返回规则列表
- * - [Milestone-2] 规则管理成功
- * ================================================================
- *
- * 运行:npx playwright test tests/e2e/energy-rules-config.spec.js
- */
- const { test, expect } = require('@playwright/test');
- test.describe('【场景流程】能量规则配置全流程', () => {
- // ===== 场景1:查看能量规则列表 =====
- test('[场景1] 查看能量规则列表 - 期望返回规则列表', async ({ page }) => {
- // ========== Given:管理员进入能量规则页 ==========
- await page.goto('/#/pages/admin/energy-rules');
- await page.waitForLoadState('networkidle');
- // ========== When:查看规则列表 ==========
- await page.waitForSelector('.rule-list, .energy-rule-list', { timeout: 10000 });
- // ========== Then:Milestone-1 - 返回规则列表 ========
- const ruleItems = page.locator('.rule-item, .energy-rule');
- const count = await ruleItems.count();
- expect(count).toBeGreaterThan(0);
- // 验证规则包含维度信息
- const firstRule = ruleItems.first();
- const dimensionTag = firstRule.locator('.dimension-tag, .rule-type');
- if (await dimensionTag.isVisible()) {
- const tagText = await dimensionTag.textContent();
- expect(tagText).toBeTruthy();
- }
- });
- // ===== 场景2:创建能量规则 =====
- test('[场景2] 创建能量规则 - 期望规则创建成功', async ({ page }) => {
- // ========== Given:管理员进入创建规则页 ==========
- await page.goto('/#/pages/admin/energy-rule-create');
- await page.waitForLoadState('networkidle');
- // ========== When:创建规则 ==========
- await page.waitForSelector('.rule-form', { timeout: 5000 });
- // 选择维度
- const dimensionSelect = page.locator('.dimension-picker, select[name="dimension"]');
- if (await dimensionSelect.isVisible()) {
- await dimensionSelect.selectOption('body');
- }
- // 选择事件类型
- const eventSelect = page.locator('.event-picker, select[name="eventType"]');
- if (await eventSelect.isVisible()) {
- await eventSelect.selectOption('checkin');
- }
- // 输入能量值
- const valueInput = page.locator('input[name="energyValue"], .value-input');
- if (await valueInput.isVisible()) {
- await valueInput.fill('5');
- }
- // 提交
- await page.click('.submit-btn, .save-btn');
- // ========== Then:Milestone-2 - 创建成功 ========
- await page.waitForSelector('.success-tip, .rule-created', { timeout: 10000 });
- expect(await page.locator('.success-tip, .rule-created').isVisible()).toBeTruthy();
- });
- // ===== 场景3:启用/禁用规则 =====
- test('[场景3] 启用/禁用规则 - 期望状态切换成功', async ({ page }) => {
- // ========== Given:管理员进入规则页 ==========
- await page.goto('/#/pages/admin/energy-rules');
- await page.waitForLoadState('networkidle');
- // ========== When:切换规则状态 ==========
- await page.waitForSelector('.rule-item', { timeout: 10000 });
- const toggleBtn = page.locator('.toggle-btn, .rule-toggle').first();
- if (await toggleBtn.isVisible()) {
- await toggleBtn.click();
- }
- // ========== Then:状态切换成功 ========
- await page.waitForTimeout(500);
- // 验证状态变化
- const statusTag = page.locator('.status-tag, .rule-status').first();
- if (await statusTag.isVisible()) {
- const statusText = await statusTag.textContent();
- expect(statusText).toBeTruthy();
- }
- });
- // ===== 场景4:编辑/删除规则 =====
- test('[场景4] 编辑/删除规则 - 期望操作成功', async ({ page }) => {
- // ========== Given:管理员进入规则页 ==========
- await page.goto('/#/pages/admin/energy-rules');
- await page.waitForLoadState('networkidle');
- // ========== When:编辑规则 ==========
- await page.waitForSelector('.rule-item', { timeout: 10000 });
- const firstRule = page.locator('.rule-item').first();
- const editBtn = firstRule.locator('.edit-btn');
- if (await editBtn.isVisible()) {
- await editBtn.click();
- } else {
- await firstRule.click();
- }
- await page.waitForSelector('.edit-form, .rule-form', { timeout: 5000 });
- // 修改能量值
- const valueInput = page.locator('input[name="energyValue"], .value-input');
- if (await valueInput.isVisible()) {
- await valueInput.fill('10');
- }
- // 保存
- await page.click('.save-btn, .submit-btn');
- // ========== Then:操作成功 ========
- await page.waitForSelector('.success-tip, .update-success', { timeout: 10000 });
- expect(await page.locator('.success-tip, .update-success').isVisible()).toBeTruthy();
- });
- });
|