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'); }); });