Files
everything-is-suitable/everything-is-suitable-test/e2e/examples/assertion-helper-usage.spec.ts
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

163 lines
6.9 KiB
TypeScript

import { test, expect } from '../test-fixtures';
test.describe('AssertionHelper - 断言辅助工具使用示例', () => {
test.beforeEach(async ({ testLogger }) => {
testLogger.startTest('AssertionHelper测试');
});
test.afterEach(async ({ testLogger, helpers }) => {
await helpers.screenshot.takeScreenshot('after-test');
testLogger.endTest('AssertionHelper测试', 'passed');
});
test('@smoke 元素可见性断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证登录表单可见');
await helpers.assertion.assertElementVisible(page, 'input[name="username"]', '用户名输入框应该可见');
await helpers.assertion.assertElementVisible(page, 'input[name="password"]', '密码输入框应该可见');
await helpers.assertion.assertElementVisible(page, 'button[type="submit"]', '登录按钮应该可见');
testLogger.endStep('验证登录表单可见', 'passed');
});
test('@smoke 元素文本断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证页面标题');
await helpers.assertion.assertElementText(page, 'h1', '登录', '页面标题应该是"登录"');
testLogger.endStep('验证页面标题', 'passed');
});
test('@smoke 元素状态断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证按钮状态');
await helpers.assertion.assertElementEnabled(page, 'button[type="submit"]', '登录按钮应该启用');
testLogger.startStep('验证错误消息隐藏');
await helpers.assertion.assertElementHidden(page, '.error-message', '错误消息应该隐藏');
testLogger.endStep('验证按钮状态', 'passed');
});
test('@regression URL和标题断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证URL');
await helpers.assertion.assertURL(page, /\/login/, 'URL应该包含/login');
testLogger.startStep('验证页面标题');
await helpers.assertion.assertTitle(page, '登录 - 系统管理', '页面标题应该正确');
testLogger.endStep('验证URL和标题', 'passed');
});
test('@regression 元素属性断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证输入框类型');
await helpers.assertion.assertAttributeValue(page, 'input[name="password"]', 'type', 'password', '密码输入框应该是password类型');
testLogger.startStep('验证按钮类型');
await helpers.assertion.assertAttributeValue(page, 'button[type="submit"]', 'type', 'submit', '登录按钮应该是submit类型');
testLogger.endStep('验证元素属性', 'passed');
});
test('@regression 元素计数断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证输入框数量');
await helpers.assertion.assertElementCount(page, 'input[type="text"]', 1, '应该有1个文本输入框');
await helpers.assertion.assertElementCount(page, 'input[type="password"]', 1, '应该有1个密码输入框');
testLogger.endStep('验证元素计数', 'passed');
});
test('@critical 表单验证断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证表单有效性');
await helpers.assertion.assertFormValid(page, '登录表单应该有效');
testLogger.endStep('验证表单有效性', 'passed');
});
test('@critical 成功和错误消息断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证错误消息隐藏');
await helpers.assertion.assertErrorMessage(page, undefined, '错误消息应该隐藏');
testLogger.startStep('验证加载状态');
await helpers.assertion.assertNotLoading(page, '页面不应该处于加载状态');
testLogger.endStep('验证消息状态', 'passed');
});
test('@critical 模态框和Toast断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证模态框隐藏');
await helpers.assertion.assertModalHidden(page, '模态框应该隐藏');
testLogger.startStep('验证Toast隐藏');
await helpers.assertion.assertToastHidden(page, 'Toast消息应该隐藏');
testLogger.endStep('验证模态框和Toast', 'passed');
});
test('@critical 表格数据断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到用户管理页面');
await page.goto('/user-management');
testLogger.startStep('验证表格数据');
const expectedData = [
{ username: 'admin', realName: '管理员' },
{ username: 'testuser', realName: '测试用户' }
];
await helpers.assertion.assertTableData(page, '.ant-table', expectedData, '表格数据应该匹配');
testLogger.endStep('验证表格数据', 'passed');
});
test('@critical CSS类断言', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证按钮CSS类');
await helpers.assertion.assertCSSClass(page, 'button[type="submit"]', 'ant-btn', '登录按钮应该有ant-btn类');
testLogger.endStep('验证CSS类', 'passed');
});
test('@critical 复合断言示例', async ({ page, helpers, testLogger }) => {
testLogger.startStep('导航到登录页面');
await page.goto('/login');
testLogger.startStep('验证登录页面完整性');
await helpers.assertion.assertElementVisible(page, 'input[name="username"]', '用户名输入框应该可见');
await helpers.assertion.assertElementVisible(page, 'input[name="password"]', '密码输入框应该可见');
await helpers.assertion.assertElementVisible(page, 'button[type="submit"]', '登录按钮应该可见');
await helpers.assertion.assertElementEnabled(page, 'button[type="submit"]', '登录按钮应该启用');
await helpers.assertion.assertElementHidden(page, '.error-message', '错误消息应该隐藏');
await helpers.assertion.assertURL(page, /\/login/, 'URL应该包含/login');
await helpers.assertion.assertTitle(page, '登录 - 系统管理', '页面标题应该正确');
testLogger.endStep('验证登录页面完整性', 'passed');
});
});