135 lines
4.6 KiB
TypeScript
135 lines
4.6 KiB
TypeScript
import { test, expect } from '../../fixtures/base.fixture';
|
|
|
|
test.describe('导航冒烟测试 @smoke', () => {
|
|
test.beforeEach(async ({ homePage }) => {
|
|
await homePage.goto();
|
|
await homePage.waitForPageLoad();
|
|
});
|
|
|
|
test('应该显示主导航菜单', async ({ homePage }) => {
|
|
await expect(homePage.navigation).toBeVisible();
|
|
});
|
|
|
|
test('应该显示Logo链接', async ({ homePage }) => {
|
|
await expect(homePage.logo).toBeVisible();
|
|
const altText = await homePage.getLogoAltText();
|
|
expect(altText).toBeTruthy();
|
|
});
|
|
|
|
test('应该有导航项', async ({ homePage }) => {
|
|
const navItems = await homePage.getNavigationItemCount();
|
|
expect(navItems).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('应该能够点击导航项', async ({ homePage }) => {
|
|
const labels = await homePage.getAllNavigationLabels();
|
|
if (labels.length > 0) {
|
|
await homePage.clickNavigationItem(labels[0]);
|
|
await homePage.page.waitForTimeout(1000);
|
|
}
|
|
});
|
|
|
|
test('应该显示立即咨询按钮', async ({ homePage }) => {
|
|
const contactButton = homePage.page.locator('a:has-text("立即咨询")').first();
|
|
await expect(contactButton).toBeVisible();
|
|
});
|
|
|
|
test('应该能够点击立即咨询按钮', async ({ homePage }) => {
|
|
const contactButton = homePage.page.locator('a:has-text("立即咨询")').first();
|
|
await contactButton.click();
|
|
await homePage.page.waitForTimeout(2000);
|
|
const url = homePage.page.url();
|
|
console.log('点击立即咨询后的URL:', url);
|
|
expect(url).toContain('/contact');
|
|
});
|
|
|
|
test('应该显示移动端菜单按钮', async ({ homePage }) => {
|
|
await homePage.page.setViewportSize({ width: 375, height: 667 });
|
|
await expect(homePage.mobileMenuButton).toBeVisible();
|
|
});
|
|
|
|
test('应该能够打开移动端菜单', async ({ homePage }) => {
|
|
await homePage.page.setViewportSize({ width: 375, height: 667 });
|
|
await homePage.openMobileMenu();
|
|
await expect(homePage.mobileMenu).toBeVisible();
|
|
});
|
|
|
|
test('应该能够关闭移动端菜单', async ({ homePage }) => {
|
|
await homePage.page.setViewportSize({ width: 375, height: 667 });
|
|
await homePage.openMobileMenu();
|
|
await homePage.closeMobileMenu();
|
|
await expect(homePage.mobileMenu).not.toBeVisible();
|
|
});
|
|
|
|
test('应该有正确的导航标签', async ({ homePage }) => {
|
|
const labels = await homePage.getAllNavigationLabels();
|
|
expect(labels.length).toBeGreaterThan(0);
|
|
labels.forEach(label => {
|
|
expect(label).toBeTruthy();
|
|
expect(label.length).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
|
|
test('应该能够滚动到各个区块', async ({ homePage }) => {
|
|
const sections = ['services', 'products', 'cases', 'about', 'news', 'contact'];
|
|
for (const sectionId of sections) {
|
|
await homePage.scrollToSection(sectionId);
|
|
const isVisible = await homePage.isSectionVisible(sectionId);
|
|
expect(isVisible).toBe(true);
|
|
}
|
|
});
|
|
|
|
test('应该能够滚动到页面顶部', async ({ homePage }) => {
|
|
await homePage.scrollToBottom();
|
|
await homePage.scrollToTop();
|
|
const scrollPosition = await homePage.page.evaluate(() => window.scrollY);
|
|
expect(scrollPosition).toBe(0);
|
|
});
|
|
|
|
test('应该能够滚动到页面底部', async ({ homePage }) => {
|
|
await homePage.scrollToBottom();
|
|
const scrollPosition = await homePage.page.evaluate(() => window.scrollY);
|
|
expect(scrollPosition).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('应该显示所有区块', async ({ homePage }) => {
|
|
const sectionIds = await homePage.getAllSectionIds();
|
|
expect(sectionIds.length).toBeGreaterThan(0);
|
|
sectionIds.forEach(sectionId => {
|
|
expect(sectionId).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
test('应该能够通过导航跳转到区块', async ({ homePage }) => {
|
|
const labels = await homePage.getAllNavigationLabels();
|
|
if (labels.length > 1) {
|
|
await homePage.clickNavigationItem(labels[1]);
|
|
await homePage.page.waitForTimeout(1000);
|
|
const url = homePage.page.url();
|
|
expect(url).toContain('#');
|
|
}
|
|
});
|
|
|
|
test('应该显示页脚', async ({ homePage }) => {
|
|
await homePage.scrollToBottom();
|
|
await expect(homePage.footer).toBeVisible();
|
|
});
|
|
|
|
test('应该有正确的页面标题', async ({ homePage }) => {
|
|
const title = await homePage.getTitle();
|
|
expect(title).toBeTruthy();
|
|
expect(title.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('应该没有控制台错误', async ({ homePage, page }) => {
|
|
const errors: string[] = [];
|
|
page.on('console', msg => {
|
|
if (msg.type() === 'error') {
|
|
errors.push(msg.text());
|
|
}
|
|
});
|
|
await homePage.waitForPageLoad();
|
|
expect(errors.length).toBe(0);
|
|
});
|
|
});
|