Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
// All pages to test
|
|
const pages = [
|
|
{ path: '/', name: 'Home' },
|
|
{ path: '/about', name: 'About' },
|
|
{ path: '/services', name: 'Services' },
|
|
{ path: '/portfolio', name: 'Portfolio' },
|
|
{ path: '/blog', name: 'Blog' },
|
|
{ path: '/contact', name: 'Contact' },
|
|
{ path: '/privacy', name: 'Privacy Policy' },
|
|
{ path: '/terms', name: 'Terms of Service' },
|
|
{ path: '/sitemap', name: 'Sitemap' },
|
|
];
|
|
|
|
test.describe('Page Load Tests', () => {
|
|
for (const page of pages) {
|
|
test(`${page.name} page loads successfully`, async ({ page: browserPage }) => {
|
|
const response = await browserPage.goto(page.path);
|
|
|
|
// Check response status
|
|
expect(response?.status()).toBeLessThan(400);
|
|
|
|
// Verify page has content
|
|
await expect(browserPage.locator('body')).not.toBeEmpty();
|
|
|
|
// Check no console errors
|
|
const errors: string[] = [];
|
|
browserPage.on('console', msg => {
|
|
if (msg.type() === 'error') {
|
|
errors.push(msg.text());
|
|
}
|
|
});
|
|
|
|
// Wait for page to fully load
|
|
await browserPage.waitForLoadState('networkidle');
|
|
});
|
|
}
|
|
});
|
|
|
|
test.describe('Console Error Checks', () => {
|
|
for (const page of pages) {
|
|
test(`${page.name} page has no console errors`, async ({ page: browserPage }) => {
|
|
const errors: string[] = [];
|
|
|
|
browserPage.on('console', msg => {
|
|
if (msg.type() === 'error') {
|
|
// Ignore common non-critical errors
|
|
const text = msg.text();
|
|
if (!text.includes('favicon') && !text.includes('404')) {
|
|
errors.push(text);
|
|
}
|
|
}
|
|
});
|
|
|
|
await browserPage.goto(page.path);
|
|
await browserPage.waitForLoadState('networkidle');
|
|
|
|
expect(errors).toHaveLength(0);
|
|
});
|
|
}
|
|
});
|