Playwright Testing for Aadhaar OTP Verification Scenarios
Mock UIDAI API responses to test Aadhaar-based OTP authentication flows safely in Indian government and fintech applications.
playwright-v1-49-matrix
Playwright Testing for Aadhaar OTP Verification Scenarios
Region Focus: This guide includes examples and patterns specifically relevant to India-based development teams and applications.
Modern web applications require thorough testing strategies that account for regional requirements, diverse user bases, and complex technical architectures. This guide provides actionable Playwright patterns for your specific context.
Introduction
Mock UIDAI API responses to test Aadhaar-based OTP authentication flows safely in Indian government and fintech applications. This guide covers the essential patterns, configurations, and strategies to handle this scenario reliably in your Playwright test suite.
Understanding the nuances of this topic allows your team to ship with confidence, reduce flakiness, and maintain high-quality automation across different environments.
Architecture Overview
graph TD
Form["Aadhaar Form"] --> OTP["OTP Request"]
OTP --> UIDAI["Mocked UIDAI API"]
UIDAI --> Verify["OTP Verification"]This structure ensures clean separation of concerns and maintainable test code.
Implementation Flow
sequenceDiagram
participant Test as Playwright Test
participant App as Application
participant API as Backend / Mock API
Test->>App: Navigate and interact
App->>API: Trigger API call
API-->>App: Return response
App-->>Test: UI state updated
Test->>Test: Assert outcomeStep-by-Step Guide
Follow this implementation to set up the pattern in your test suite.
1. Core Implementation
test('Aadhaar OTP verification succeeds', async ({ page }) => {
await page.route('/uidai/otp/', route =>
route.fulfill({ json: { status: 'success', txnId: 'TXN123456' } })
);
await page.goto('/verify-aadhaar');
await page.getByLabel('Aadhaar Number').fill('1234 5678 9012');
await page.getByRole('button', { name: 'Send OTP' }).click();
await expect(page.getByText('OTP sent to registered mobile')).toBeVisible();
});2. Run and Verify
# Run this specific test file
npx playwright test --grep "Playwright Testing for"
Run with UI mode for debugging
npx playwright test --ui
Run across all browsers
npx playwright test --project=chromium --project=firefox --project=webkit3. View Test Report
npx playwright show-reportReference Table
| Scenario | Mock Response | Expected UI |
|---|---|---|
| Valid Aadhaar | Success + txnId | OTP input shown |
| Invalid Aadhaar | Error 400 | Validation message |
| OTP expired | Error TIMEOUT | Resend button |
| Max retries | Error LOCKED | Account locked msg |
Best Practices
getByRole(), getByLabel(), and getByTestId() instead of CSS selectors for resilient tests.await expect(locator).toBeVisible() over page.waitForTimeout()Common Pitfalls
| Anti-Pattern | Problem | Solution |
page.waitForTimeout(3000) | Flaky on slow CI | Use expect(locator).toBeVisible() |
| Hardcoded selectors | Breaks on UI change | Use ARIA roles and labels |
| Shared global state | Test interference | Use isolated browser contexts |
| Real external APIs | Unreliable in CI | Mock with page.route() |
Frequently Asked Questions
Why mock UIDAI APIs instead of using real ones?
UIDAI production APIs cannot be used in test environments. Mocking ensures safe, repeatable tests.
How to test Aadhaar biometric flows?
Mock the biometric SDK API endpoints and simulate fingerprint match success/failure responses.
Can I test OKYC flows with Playwright?
Yes, mock the OKYC callback URL and assert that the user data is populated correctly in the form.
How to handle masked Aadhaar display?
Assert that the displayed value shows only the last 4 digits after submission.
What is the test Aadhaar number format?
Use format XXXX XXXX XXXX with any 12 digits. Mock the API to return success regardless.
Summary
Mock UIDAI API responses to test Aadhaar-based OTP authentication flows safely in Indian government and fintech applications. By following these patterns, your team can build a reliable, maintainable automation suite that works across environments and handles edge cases gracefully.
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.