Playwright Testing for Ionic and Capacitor Mobile Web Applications
Complete guide to playwright testing for ionic and capacitor mobile web applications with production-ready Playwright patterns and real-world examples.
playwright-v1-49-matrix
Playwright Testing for Ionic and Capacitor Mobile Web Applications
This guide provides complete, production-ready Playwright patterns for playwright testing for ionic and capacitor mobile web applications.
Introduction
Robust test automation requires domain-specific patterns. This article covers playwright testing for ionic and capacitor mobile web applications with practical code examples you can use immediately in your test suite.
Architecture Overview
graph TD
Test["Playwright Test"] --> App["Application Under Test"]
App --> API["Backend API / Mock"]
API --> Assert["Test Assertions Pass"]Implementation
test('Ionic app navigation works correctly', async ({ page }) => {
await page.goto('/');
// Ionic uses shadow DOM for components
const tabBar = page.locator('ion-tab-bar');
await expect(tabBar).toBeVisible();
await tabBar.locator('ion-tab-button[tab="profile"]').click();
await expect(page.locator('ion-title')).toContainText('Profile');
});Run Tests
npx playwright test --grep "Playwright Testing for"
npx playwright test --uiReference Table
| Ionic Component | Shadow DOM | Playwright Approach |
|---|---|---|
| ion-button | Yes | locator with pierce |
| ion-input | Yes | locator nth |
| ion-modal | Yes | page.locator |
| ion-alert | Yes | getByRole dialog |
Best Practices
getByRole, getByLabel) for resilient, maintainable tests.Common Mistakes
page.waitForTimeout(). Use auto-waiting assertions instead.| Anti-Pattern | Better Approach |
| Hardcoded sleep | await expect(locator).toBeVisible() |
| Testing 3rd party live APIs | Mock with page.route() |
| Shared state between tests | Isolated fixture setup/teardown |
Frequently Asked Questions
How to interact with Ionic components in Playwright?
Use page.locator('ion-button') for standard queries. Use >> to pierce shadow DOM for nested elements.
How to test Ionic modal popups?
Trigger the modal, then use page.locator('ion-modal') to interact with the modal content.
Can Playwright test Ionic alerts and action sheets?
Yes, click the trigger button and verify ion-alert or ion-action-sheet components appear.
How to test Ionic form validation?
Fill Ionic input components and verify ion-note elements show validation error messages.
How to test swipe-to-delete on Ionic lists?
Simulate swipe gesture using mouse events on the ion-item-sliding component.
Summary
This guide covered playwright testing for ionic and capacitor mobile web applications. Apply these patterns to build reliable, fast, and maintainable automation for this specific scenario.
Related Articles
About The Author
PlaywrightPad Editorial reports on Chromium engines, E2E test optimizations, and AI integration specifications.
Newsletter
Get weekly browser reports sent directly to your inbox.