feat: add dev-audit test suites
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { HomePage, AboutPage, ContactPage } from '../../shared/pages';
|
||||
import { AccessibilityTester } from '../../shared/utils/accessibility/AccessibilityTester';
|
||||
import { accessibilityThresholds } from '../../shared/config/test-data';
|
||||
import { getPageConfig } from '../../shared/config/test-pages';
|
||||
|
||||
test.describe('可访问性测试', () => {
|
||||
const pages = [
|
||||
{ name: '首页', PageClass: HomePage },
|
||||
{ name: '关于我们', PageClass: AboutPage },
|
||||
{ name: '联系我们', PageClass: ContactPage }
|
||||
];
|
||||
|
||||
pages.forEach(({ name, PageClass }) => {
|
||||
test(`${name} - 可访问性验证`, async ({ page }) => {
|
||||
const pageConfig = getPageConfig(name === '首页' ? 'home' : name === '关于我们' ? 'about' : 'contact');
|
||||
const pageObj = new PageClass(page);
|
||||
const tester = new AccessibilityTester(page);
|
||||
|
||||
await pageObj.navigate();
|
||||
const result = await tester.runAxeScan(pageConfig.name, pageConfig.url);
|
||||
|
||||
console.log(`${name} 可访问性结果:`, result);
|
||||
|
||||
expect(result.score).toBeGreaterThanOrEqual(accessibilityThresholds.score);
|
||||
expect(result.violations.length).toBeLessThanOrEqual(accessibilityThresholds.maxViolations);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { ContactPage } from '../../shared/pages';
|
||||
import { formData } from '../../shared/config/test-data';
|
||||
|
||||
test.describe('表单验证测试', () => {
|
||||
test('联系表单 - 有效数据提交', async ({ page }) => {
|
||||
const contactPage = new ContactPage(page);
|
||||
|
||||
await contactPage.navigate();
|
||||
await contactPage.fillContactForm(formData.valid);
|
||||
await contactPage.submitForm();
|
||||
|
||||
const successMessage = await contactPage.getFormSuccessMessage();
|
||||
expect(successMessage).toContain('成功');
|
||||
});
|
||||
|
||||
test('联系表单 - 必填字段验证', async ({ page }) => {
|
||||
const contactPage = new ContactPage(page);
|
||||
|
||||
await contactPage.navigate();
|
||||
await contactPage.fillContactForm({
|
||||
name: '',
|
||||
email: '',
|
||||
phone: '',
|
||||
message: ''
|
||||
});
|
||||
await contactPage.submitForm();
|
||||
|
||||
const errorMessage = await contactPage.getFormErrorMessage();
|
||||
expect(errorMessage).toBeTruthy();
|
||||
});
|
||||
|
||||
test('联系表单 - 邮箱格式验证', async ({ page }) => {
|
||||
const contactPage = new ContactPage(page);
|
||||
|
||||
await contactPage.navigate();
|
||||
await contactPage.fillContactForm({
|
||||
name: '测试用户',
|
||||
email: formData.invalid.email,
|
||||
phone: '13800138000',
|
||||
message: '测试消息'
|
||||
});
|
||||
await contactPage.submitForm();
|
||||
|
||||
const errorMessage = await contactPage.getFormErrorMessage();
|
||||
expect(errorMessage).toContain('邮箱');
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,31 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { HomePage, AboutPage, ContactPage, ProductsPage, ServicesPage, CasesPage, NewsPage } from '../../shared/pages';
|
||||
import { PerformanceMonitor } from '../../shared/utils/performance/PerformanceMonitor';
|
||||
import { performanceThresholds } from '../../shared/config/test-data';
|
||||
|
||||
test.describe('性能审计测试', () => {
|
||||
const pages = [
|
||||
{ name: '首页', PageClass: HomePage },
|
||||
{ name: '关于我们', PageClass: AboutPage },
|
||||
{ name: '联系我们', PageClass: ContactPage },
|
||||
{ name: '产品', PageClass: ProductsPage },
|
||||
{ name: '服务', PageClass: ServicesPage },
|
||||
{ name: '案例', PageClass: CasesPage },
|
||||
{ name: '新闻', PageClass: NewsPage }
|
||||
];
|
||||
|
||||
pages.forEach(({ name, PageClass }) => {
|
||||
test(`${name} - 页面加载性能`, async ({ page }) => {
|
||||
const pageObj = new PageClass(page);
|
||||
const monitor = new PerformanceMonitor(page);
|
||||
|
||||
await pageObj.navigate();
|
||||
const metrics = await monitor.measurePageLoad();
|
||||
|
||||
console.log(`${name} 性能指标:`, metrics);
|
||||
|
||||
expect(metrics.loadTime).toBeLessThan(performanceThresholds.loadTime);
|
||||
expect(metrics.domContentLoaded).toBeLessThan(performanceThresholds.domContentLoaded);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { HomePage, AboutPage, ContactPage } from '../../shared/pages';
|
||||
import { SEOValidator } from '../../shared/utils/seo/SEOValidator';
|
||||
import { seoThresholds } from '../../shared/config/test-data';
|
||||
|
||||
test.describe('SEO检查测试', () => {
|
||||
const pages = [
|
||||
{ name: '首页', PageClass: HomePage },
|
||||
{ name: '关于我们', PageClass: AboutPage },
|
||||
{ name: '联系我们', PageClass: ContactPage }
|
||||
];
|
||||
|
||||
pages.forEach(({ name, PageClass }) => {
|
||||
test(`${name} - SEO验证`, async ({ page }) => {
|
||||
const pageObj = new PageClass(page);
|
||||
const validator = new SEOValidator(page);
|
||||
|
||||
await pageObj.navigate();
|
||||
const result = await validator.validateSEO();
|
||||
|
||||
console.log(`${name} SEO结果:`, result);
|
||||
|
||||
expect(result.score).toBeGreaterThanOrEqual(seoThresholds.score);
|
||||
expect(result.metaTags.title).toBe(true);
|
||||
expect(result.metaTags.description).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user