Test And Debug

Use DevTools for manual platform inspection and Playwright for repeatable regressions.

Chrome DevTools Checks

PanelCheck
ManifestInstallability errors, icon rendering, screenshots, protocol handlers
Service workersRegistration, scope, update, skip waiting, push, sync, offline mode
Cache storagePrecached shell, runtime caches, stale entries
IndexedDBObject stores, records, outbox state, migrations
StorageQuota usage, clear storage, persistence behavior
NetworkOffline reload, request fallback, cache headers

Playwright Offline Smoke

import { test, expect } from '@playwright/test';

test('offline reload keeps the app usable', async ({ context, page }) => {
  await page.goto('/');
  await expect(page.getByRole('heading')).toBeVisible();

  await context.setOffline(true);
  await page.reload();

  await expect(page.getByText(/offline|saved|pending/i)).toBeVisible();
});

Service Worker Testing Modes

ModeUse
serviceWorkers: 'allow'Test real PWA behavior
serviceWorkers: 'block'Test network routing/interception without service worker interference

Manual Device Matrix

  • Desktop Chrome or Edge install.
  • Android Chrome install.
  • iOS Safari Add to Home Screen if iOS matters.
  • Offline reload after install.
  • App update after a new deployment.
  • Push permission and click route where supported.