Skip to main content
Back to Blog
Guide
2026-05-18

Web Testing Checklist 2026: 150+ Test Cases Every QA Engineer Needs

The ultimate web testing checklist with 150+ test cases organized by category. Covers functional testing, UI/UX, forms, auth, payments, accessibility, performance, security, SEO, cross-browser, and mobile web testing.

Every web application needs thorough testing before it reaches users. This comprehensive checklist provides 150+ test cases organized by category, each tagged with a priority level (P0 for critical, P1 for high, P2 for medium). Use this as a living reference for your QA process, whether you are testing manually, writing automated tests, or reviewing test coverage.

How to Use This Checklist

Priority levels:

  • P0 (Critical): Must pass before any release. Blocking bugs. Test these first and automate them immediately
  • P1 (High): Should pass for every release. Important functionality that affects most users
  • P2 (Medium): Test regularly but acceptable to defer in time-constrained releases

Automation recommendation:

  • P0 tests should always be automated and run in CI/CD
  • P1 tests should be automated and run nightly or on every PR
  • P2 tests can be a mix of automated and manual exploratory testing

1. Functional Testing Checklist

Navigation and Routing

#Test CasePriority
1All navigation links point to the correct pagesP0
2Browser back and forward buttons work correctlyP1
3Deep links (direct URL access) load the correct pageP0
4404 page displays for invalid URLsP1
5Redirects work correctly (HTTP to HTTPS, www to non-www)P0
6URL parameters are preserved through navigationP1
7Breadcrumb navigation reflects the current locationP2
8Anchor links scroll to the correct sectionP2
9Pagination works correctly (next, previous, page numbers)P1
10Infinite scroll loads additional content correctlyP1

Search Functionality

#Test CasePriority
11Search returns relevant results for valid queriesP0
12Search handles empty queries gracefullyP1
13Search displays "no results" message appropriatelyP1
14Search results highlight matching termsP2
15Search filters work correctly (category, date, type)P1
16Search handles special characters without errorsP1
17Search suggestions or autocomplete work correctlyP2
18Search results pagination works correctlyP1
19Search preserves the query when navigating backP2
20Search performance is acceptable (results in under 2 seconds)P1

Data Display

#Test CasePriority
21Lists and tables display data correctlyP0
22Sorting works in both ascending and descending orderP1
23Filtering removes non-matching items correctlyP1
24Empty states display a helpful messageP1
25Loading states display while data is being fetchedP1
26Error states display when data fetch failsP0
27Large datasets handle pagination or virtualizationP1
28Date and time values display in the correct timezoneP1
29Currency values display with proper formattingP1
30Numbers use appropriate decimal and thousands separatorsP2

2. UI/UX Testing Checklist

Visual Consistency

#Test CasePriority
31Font sizes and families are consistent across pagesP1
32Color scheme matches the design systemP1
33Spacing and alignment follow the design specificationsP2
34Icons render correctly at all sizesP2
35Images load with proper aspect ratios (no stretching)P1
36Dark mode and light mode toggle correctlyP1
37Hover states are visible on interactive elementsP2
38Focus states are visible for keyboard navigationP0
39Active/selected states are clearly distinguishableP1
40Disabled states are visually distinct from enabled statesP1

Responsive Design

#Test CasePriority
41Layout adapts correctly at mobile breakpoint (320-480px)P0
42Layout adapts correctly at tablet breakpoint (481-768px)P1
43Layout adapts correctly at desktop breakpoint (769-1024px)P1
44Layout adapts correctly at large desktop (1025px and above)P1
45No horizontal scrollbar appears at any standard breakpointP0
46Text remains readable at all screen sizesP0
47Touch targets are at least 44x44 pixels on mobileP1
48Navigation transforms to a mobile menu at small screensP0
49Images scale appropriately without pixelationP1
50Tables are scrollable or stack on small screensP1

User Interaction

#Test CasePriority
51Buttons provide visual feedback on clickP1
52Loading indicators appear for async operationsP1
53Success messages display after completed actionsP1
54Error messages are clear and actionableP0
55Confirmation dialogs appear for destructive actionsP0
56Undo functionality works where applicableP2
57Tooltips display on hover for elements that need explanationP2
58Modals can be closed with the Escape keyP1
59Modals can be closed by clicking the overlayP2
60Toast notifications auto-dismiss after appropriate durationP2

3. Form Validation Checklist

Input Fields

#Test CasePriority
61Required fields show validation errors when emptyP0
62Email fields validate email formatP0
63Phone number fields accept valid formatsP1
64Password fields enforce minimum lengthP0
65Password fields enforce complexity requirementsP1
66Numeric fields reject non-numeric inputP1
67Date fields validate date format and rangesP1
68URL fields validate URL formatP2
69Maximum character limits are enforcedP1
70Minimum character limits are enforcedP1

Form Behavior

#Test CasePriority
71Form cannot be submitted with invalid dataP0
72Validation errors display next to the relevant fieldP0
73Validation errors clear when the user corrects the inputP1
74Submit button is disabled during form submissionP1
75Double-click on submit does not create duplicate entriesP0
76Form preserves input on validation failure (no data loss)P0
77Tab order follows a logical sequence through form fieldsP1
78Autofill works correctly for common fieldsP2
79Copy-paste works in all input fieldsP1
80Form submission works with Enter keyP1

File Uploads

#Test CasePriority
81Allowed file types are acceptedP0
82Rejected file types show a clear error messageP0
83File size limits are enforcedP1
84Multiple file upload works if supportedP1
85Upload progress indicator is visibleP1
86Drag and drop upload worksP2
87File preview displays after uploadP2
88Upload cancellation works correctlyP2

4. Authentication Flow Checklist

Login

#Test CasePriority
89Login with valid credentials succeedsP0
90Login with invalid password shows errorP0
91Login with non-existent account shows appropriate errorP0
92Account lockout after multiple failed attemptsP0
93Remember me functionality works across browser sessionsP1
94Login redirects to the originally requested pageP1
95Social login (Google, GitHub) works correctlyP1
96Two-factor authentication flow works correctlyP0
97Session expires after the configured timeoutP1
98Concurrent session handling works as designedP1

Registration

#Test CasePriority
99Registration with valid data creates a new accountP0
100Duplicate email registration shows appropriate errorP0
101Email verification flow works correctlyP0
102Password strength indicator updates in real timeP2
103Terms and conditions acceptance is requiredP1
104Registration confirmation email is receivedP1

Password Management

#Test CasePriority
105Forgot password sends reset emailP0
106Password reset link works correctlyP0
107Password reset link expires after timeoutP1
108Password change requires current passwordP0
109New password cannot match the old passwordP2
110Password visibility toggle worksP2

Session and Logout

#Test CasePriority
111Logout clears the session completelyP0
112After logout, back button does not show authenticated pagesP0
113Session token is invalidated on logoutP0
114Multiple tab behavior is consistent after logoutP1

5. Payment Flow Checklist

#Test CasePriority
115Valid credit card payment processes successfullyP0
116Declined card shows appropriate error messageP0
117Expired card shows appropriate error messageP0
118Payment amount matches the order totalP0
119Tax calculation is correct for the shipping addressP0
120Discount codes apply correctlyP1
121Discount codes validate expiration and eligibilityP1
122Payment receipt is sent via emailP1
123Refund process works correctlyP0
124Currency display matches the user's localeP1
125Payment retry works after a failed attemptP1
1263D Secure authentication flow completes correctlyP0
127Payment confirmation page displays order detailsP1
128Order appears in the user's order historyP1

6. Accessibility Testing Checklist (WCAG 2.2)

Perceivable

#Test CasePriority
129All images have descriptive alt textP0
130Color contrast ratio meets AA standard (4.5:1 for text)P0
131Information is not conveyed by color aloneP0
132Text can be resized to 200% without loss of contentP1
133Videos have captions or transcriptsP1
134Audio content has text alternativesP1

Operable

#Test CasePriority
135All functionality is accessible via keyboardP0
136Focus order follows a logical reading sequenceP0
137Focus indicator is visible on all interactive elementsP0
138No keyboard trap exists (user can tab away from any element)P0
139Skip navigation link is present and functionalP1
140Page has no content that flashes more than 3 times per secondP0
141Touch target size is at least 24x24 CSS pixels (WCAG 2.2)P1
142Drag actions have single-pointer alternatives (WCAG 2.2)P1

Understandable

#Test CasePriority
143Page language is declared in HTML lang attributeP0
144Form labels are associated with their input fieldsP0
145Error messages identify the field and describe the errorP0
146Navigation is consistent across pagesP1
147Help text is available for complex form fieldsP2

Robust

#Test CasePriority
148HTML validates without major errorsP1
149ARIA roles and properties are used correctlyP1
150Screen reader can navigate and read all contentP0
151Dynamic content updates are announced to assistive technologyP1
152Custom components have appropriate ARIA rolesP1

Automated Accessibility Testing

Run automated accessibility checks as part of your test suite:

// Playwright with axe-core
import AxeBuilder from '@axe-core/playwright';
import { test, expect } from '@playwright/test';

test('homepage has no accessibility violations', async ({ page }) => {
  await page.goto('/');
  const results = await new AxeBuilder({ page }).analyze();
  expect(results.violations).toEqual([]);
});

test('form page meets accessibility standards', async ({ page }) => {
  await page.goto('/contact');
  const results = await new AxeBuilder({ page })
    .withTags(['wcag2a', 'wcag2aa', 'wcag22aa'])
    .analyze();
  expect(results.violations).toEqual([]);
});

Note: Automated tools catch approximately 30-40% of accessibility issues. Manual testing with screen readers and keyboard-only navigation is essential for full coverage.


7. Performance Testing Checklist (Core Web Vitals)

Core Web Vitals (2026 Thresholds)

#Test CasePriority
153Largest Contentful Paint (LCP) is under 2.5 secondsP0
154Interaction to Next Paint (INP) is under 200 millisecondsP0
155Cumulative Layout Shift (CLS) is under 0.1P0
156First Contentful Paint (FCP) is under 1.8 secondsP1
157Time to First Byte (TTFB) is under 800 millisecondsP1

Load Performance

#Test CasePriority
158Page loads within 3 seconds on 4G connectionP0
159Page loads within 5 seconds on 3G connectionP1
160Total page weight is under 3MB (initial load)P1
161JavaScript bundle size is under 500KB (gzipped)P1
162Images are optimized and served in modern formats (WebP/AVIF)P1
163Lazy loading is implemented for below-the-fold imagesP1
164Critical CSS is inlined for above-the-fold contentP2
165Third-party scripts do not block renderingP1

Runtime Performance

#Test CasePriority
166Scrolling is smooth (60fps)P1
167Animations do not cause layout shiftsP1
168Form interactions respond within 100 millisecondsP0
169No memory leaks during extended usageP1
170API responses complete within SLA (typically under 1 second)P0

Performance Testing with Playwright

test('page performance meets thresholds', async ({ page }) => {
  await page.goto('/');

  const performanceMetrics = await page.evaluate(() => {
    const entries = performance.getEntriesByType('navigation');
    const nav = entries[0] as PerformanceNavigationTiming;
    return {
      ttfb: nav.responseStart - nav.requestStart,
      domContentLoaded: nav.domContentLoadedEventEnd - nav.startTime,
      loadComplete: nav.loadEventEnd - nav.startTime,
    };
  });

  expect(performanceMetrics.ttfb).toBeLessThan(800);
  expect(performanceMetrics.loadComplete).toBeLessThan(3000);
});

8. Security Testing Checklist (OWASP)

Input Validation

#Test CasePriority
171SQL injection attempts are blocked in all input fieldsP0
172XSS (Cross-Site Scripting) attempts are blockedP0
173CSRF protection tokens are present on all formsP0
174Input length limits prevent buffer overflow attemptsP1
175File upload validates content type (not just extension)P0
176Server-side validation matches client-side validationP0

Authentication and Authorization

#Test CasePriority
177Passwords are never stored in plain textP0
178Session tokens are regenerated after loginP0
179Session cookies have Secure, HttpOnly, and SameSite flagsP0
180Unauthorized users cannot access protected resourcesP0
181API endpoints enforce proper authorization checksP0
182Rate limiting is applied to login and registration endpointsP0
183JWT tokens have reasonable expiration timesP1
184Sensitive operations require re-authenticationP1

Data Protection

#Test CasePriority
185All traffic uses HTTPS (HTTP redirects to HTTPS)P0
186HSTS header is present with appropriate max-ageP0
187Sensitive data is not exposed in URLsP0
188API responses do not leak internal implementation detailsP1
189Error messages do not expose stack traces or system infoP0
190Content-Security-Policy header is configuredP1
191X-Content-Type-Options: nosniff is setP1
192X-Frame-Options or CSP frame-ancestors prevents clickjackingP1

Common Security Headers Check

test('security headers are present', async ({ request }) => {
  const response = await request.get('/');
  const headers = response.headers();

  expect(headers['strict-transport-security']).toBeDefined();
  expect(headers['x-content-type-options']).toBe('nosniff');
  expect(headers['x-frame-options']).toBeDefined();
  expect(headers['content-security-policy']).toBeDefined();
  expect(headers['referrer-policy']).toBeDefined();
});

9. SEO Testing Checklist

On-Page SEO

#Test CasePriority
193Each page has a unique title tag (50-60 characters)P0
194Each page has a unique meta description (150-160 characters)P0
195Heading hierarchy is correct (single H1, proper nesting)P1
196Images have descriptive alt attributesP1
197URLs are clean and descriptive (no query string for content pages)P1
198Canonical tags are present on all pagesP0
199Open Graph tags are present for social sharingP1
200Structured data (JSON-LD) is valid and presentP1

Technical SEO

#Test CasePriority
201robots.txt is present and correctly configuredP0
202XML sitemap is present and includes all important pagesP0
203XML sitemap validates against the schemaP1
204No noindex tag on pages that should be indexedP0
205Internal links use proper anchor text (not "click here")P2
206No broken internal links (404s)P1
207Redirect chains are under 3 hopsP2
208Page renders meaningful content without JavaScript for crawlersP1

Automated SEO Testing

test('homepage has proper SEO metadata', async ({ page }) => {
  await page.goto('/');

  const title = await page.title();
  expect(title.length).toBeGreaterThan(20);
  expect(title.length).toBeLessThan(70);

  const description = await page.getAttribute(
    'meta[name="description"]',
    'content'
  );
  expect(description).toBeTruthy();
  expect(description!.length).toBeGreaterThan(50);
  expect(description!.length).toBeLessThan(170);

  const h1Count = await page.locator('h1').count();
  expect(h1Count).toBe(1);

  const canonical = await page.getAttribute(
    'link[rel="canonical"]',
    'href'
  );
  expect(canonical).toBeTruthy();

  const ogTitle = await page.getAttribute(
    'meta[property="og:title"]',
    'content'
  );
  expect(ogTitle).toBeTruthy();
});

10. Cross-Browser Testing Checklist

Browser Coverage

#Test CasePriority
209Chrome (latest 2 versions)P0
210Firefox (latest 2 versions)P1
211Safari (latest 2 versions)P1
212Edge (latest 2 versions)P1
213Safari on iOS (latest 2 versions)P0
214Chrome on Android (latest 2 versions)P0

Cross-Browser Specific Checks

#Test CasePriority
215CSS Grid and Flexbox layout renders correctly in all browsersP1
216Custom fonts load and display correctlyP1
217Form elements render acceptably in all browsersP1
218Date picker works in all browsersP1
219Video and audio playback works in all browsersP1
220Smooth scrolling behavior is consistentP2
221CSS animations and transitions work correctlyP2
222JavaScript APIs used are supported in all target browsersP0
223Web Storage (localStorage/sessionStorage) works correctlyP1
224Cookie handling is consistent across browsersP1

Playwright Cross-Browser Config

// playwright.config.ts
export default defineConfig({
  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
    {
      name: 'mobile-chrome',
      use: { ...devices['Pixel 7'] },
    },
    {
      name: 'mobile-safari',
      use: { ...devices['iPhone 15'] },
    },
  ],
});

11. Mobile Web Testing Checklist

Touch Interactions

#Test CasePriority
225Tap interactions work correctly on all buttonsP0
226Swipe gestures work where implementedP1
227Pinch-to-zoom works on images and mapsP2
228Long press actions work where implementedP2
229No accidental taps due to elements being too close togetherP1
230Pull-to-refresh works where implementedP2

Mobile-Specific Behavior

#Test CasePriority
231Virtual keyboard does not obscure active input fieldP0
232Landscape orientation works correctlyP1
233Portrait orientation works correctlyP0
234Page handles orientation changes gracefullyP1
235Viewport meta tag is set correctlyP0
236Phone numbers are clickable (tel: links)P1
237Email addresses are clickable (mailto: links)P2
238Maps link to the native maps applicationP2
239App install banners display at appropriate timesP2
240Mobile navigation menu opens and closes correctlyP0

Mobile Performance

#Test CasePriority
241Page loads within 5 seconds on 4G mobile connectionP0
242Critical above-the-fold content loads within 2 secondsP0
243Touch interactions respond within 100 millisecondsP0
244Scrolling is smooth without jankP1
245Battery-intensive animations can be reducedP2

12. API Integration Testing Checklist

#Test CasePriority
246API returns correct data for valid requestsP0
247API returns appropriate error codes for invalid requestsP0
248API response time is within SLAP0
249API handles concurrent requests correctlyP1
250API rate limiting works as configuredP1
251API pagination returns correct subsets of dataP1
252API authentication rejects expired tokensP0
253API validates all input parametersP0
254API responses match the documented schemaP1
255API handles large payloads gracefullyP1
256API CORS headers are configured correctlyP1
257API versioning works (v1, v2 endpoints)P1

13. Email Testing Checklist

#Test CasePriority
258Transactional emails are sent within expected timeframeP0
259Email content is correct and personalizedP0
260Email links point to the correct pagesP0
261Unsubscribe link works correctlyP0
262Email renders correctly in major email clientsP1
263Email does not land in spam folderP1
264Email attachments are correct and accessibleP1
265Email subject line is correct and not truncatedP1

14. Error Handling and Edge Cases

#Test CasePriority
266Application handles network disconnection gracefullyP0
267Application handles slow network connectionsP1
268Application handles server errors (500) with a user-friendly messageP0
269Application handles timeout errors appropriatelyP1
270Long text strings do not break layoutsP1
271Empty strings are handled correctly in all fieldsP1
272Maximum integer values do not cause overflowP2
273Unicode and emoji characters display correctlyP1
274Right-to-left (RTL) text renders correctly if supportedP2
275Concurrent user operations do not cause data corruptionP0
276Browser tab losing focus and regaining it works correctlyP1
277Application recovers gracefully after browser crashP2

15. Localization and Internationalization

#Test CasePriority
278All user-facing strings are translatedP0
279Date formats match the locale (MM/DD/YYYY vs DD/MM/YYYY)P1
280Number formats match the locale (1,000.00 vs 1.000,00)P1
281Currency symbols and formats are correctP1
282Translated text does not break layouts (German text is often longer)P1
283Language switcher works correctlyP1
284Right-to-left layout works for Arabic/HebrewP1
285Time zones are handled correctlyP1

16. Compliance and Legal

#Test CasePriority
286Cookie consent banner appears for new visitorsP0
287Cookie preferences are respected after selectionP0
288Privacy policy is accessible and up to dateP0
289Terms of service are accessible and up to dateP0
290Data export request (GDPR) can be fulfilledP1
291Account deletion request works correctlyP0
292CAN-SPAM compliance for marketing emailsP1
293Age verification works where requiredP1

Using This Checklist with AI Agents

Install testing-specific skills into your AI coding agent to automate many of these checks:

# Install comprehensive testing skills
npx @qaskills/cli add playwright-e2e
npx @qaskills/cli add accessibility-testing
npx @qaskills/cli add security-testing
npx @qaskills/cli add api-testing-patterns

# Search for more skills
npx @qaskills/cli search "web testing"

With the right QA skills installed, you can describe test scenarios from this checklist in natural language and your AI agent will generate the corresponding automated test code. Browse all available skills at qaskills.sh/skills.


Checklist Summary by Priority

PriorityCountDescription
P0 (Critical)87Must pass before any release
P1 (High)133Should pass for every release
P2 (Medium)73Test regularly, acceptable to defer
Total293Complete web testing coverage

Use this checklist as a starting point and customize it for your specific application. Add domain-specific test cases for your industry (healthcare, finance, e-commerce) and remove items that do not apply. The goal is comprehensive coverage that gives your team confidence in every release.

Automate the P0 tests first, then work through P1, and handle P2 as capacity allows. A well-maintained automated test suite covering all P0 tests is worth more than a comprehensive manual checklist that rarely gets fully executed.

Web Testing Checklist 2026: 150+ Test Cases Every QA Engineer Needs | QASkills.sh