Progressive Web App (PWA) Testing Guide (2026)

PWAs are web apps with native-like capabilities — install to home screen, offline support, push notifications, background sync. They work across platforms but have platform-specific quirks, especially

April 10, 2026 · 3 min read · Testing Guides

PWAs are web apps with native-like capabilities — install to home screen, offline support, push notifications, background sync. They work across platforms but have platform-specific quirks, especially on iOS. Testing them covers web surfaces plus the PWA-specific features.

What to test

Installability

  1. manifest.webmanifest valid (name, icons, theme, start_url)
  2. Service worker registered
  3. Served over HTTPS
  4. Browser's install prompt appears at right moment
  5. Installed app launches to start_url

Offline

  1. Critical assets cached on first load
  2. App loads while offline
  3. Cached content served during offline
  4. Background sync queues when offline
  5. Reconnect triggers sync

Service worker

  1. Install lifecycle fires
  2. Activate lifecycle fires
  3. Fetch handler intercepts appropriate requests
  4. Cache strategies correct per asset type (cache-first for images, network-first for API)
  5. SW update flow: new version fires, user prompted to reload

Notifications

  1. Permission prompt at appropriate moment
  2. Push subscription registered server-side
  3. Test push delivery
  4. Notification click opens app to correct URL
  5. Notification works with app closed

Background sync

  1. User triggers action offline → queued
  2. When online, Sync Manager fires, action completes
  3. Retry logic on failure
  4. Status visible to user

Payment / crypto

  1. Payment request API works (if used)
  2. Web Authentication (FIDO2) works
  3. Secure contexts enforced

Platform specifics

#### iOS Safari

#### Android Chrome

#### Samsung Internet / Firefox / Edge

Tools

Lighthouse

Includes PWA audit. Checks manifest, SW, HTTPS, offline, installability.

Workbox

Service worker library by Google. Makes SW writing tractable. Test with Workbox's test utilities.

Chrome DevTools

Playwright


test('installable PWA', async ({ page }) => {
  await page.goto('https://myapp.com');
  // Assert manifest
  const manifest = await page.evaluate(() =>
    document.querySelector('link[rel="manifest"]')?.getAttribute('href'));
  expect(manifest).toBeDefined();
  // Assert SW registered
  const swRegistered = await page.evaluate(() =>
    'serviceWorker' in navigator && navigator.serviceWorker.controller !== null);
  expect(swRegistered).toBe(true);
});

Offline testing


// Playwright
const context = await browser.newContext({ offline: false });
const page = await context.newPage();
await page.goto('https://myapp.com');
await page.waitForLoadState('networkidle'); // Cache warms
await context.setOffline(true);
await page.reload();
// Assert app still loads from cache

Manifest validation


{
  "name": "MyApp",
  "short_name": "MyApp",
  "start_url": "/",
  "display": "standalone",
  "icons": [...],
  "theme_color": "#34d399"
}

Validator: pwabuilder.com or manifest-validator NPM.

SW update strategy

Always-updated SW:


self.addEventListener('activate', (event) => {
  event.waitUntil(self.clients.claim());
});

Prompted update:


self.skipWaiting();
// In page: listen for controllerchange, prompt user to reload

Test: load page, deploy new SW, reload — does correct version load? Is update announcement shown?

How SUSA tests PWAs

SUSA drives PWAs as web apps via Playwright. Detects and reports:


susatest-agent test https://pwa.myapp.com --persona curious --steps 200

Common bugs

  1. SW caches old API response indefinitely — user sees stale data forever
  2. Manifest missing icon sizes — install prompt never appears
  3. SW registered but not updating — skipWaiting / clientsClaim not called
  4. Cache strategy wrong — API cached cache-first, data always stale
  5. iOS notification permission silently denied — requires user gesture in iOS

PWAs are web first, install-capable second. Test the web properly; layer PWA-specific tests on top.

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free