Diya — Ukrainian Government Digital Services Portal & Mobile App
Manual QA testing of a government-grade digital services platform serving millions of Ukrainian citizens.
Testing Scope
Functional Testing
Login, registration, document viewing, service requests, form validation, OTP flows
UI/UX Testing
Design spec compliance, dark mode, accessibility, font scaling, tap targets
Security Testing
Session timeout, screenshot blocking, biometric auth, HTTPS enforcement, PII redaction
Cross-Platform
iOS 16, Android 10–13, Safari, Chrome WebView, BrowserStack emulators
Performance Testing
Cold start time, scroll performance (60 fps), list rendering, async loading
Accessibility
VoiceOver labels, WCAG AA contrast ratios, color blindness compliance
Test Cases (23 Cases)
Comprehensive test coverage across 8 modules: Login, Registration, Documents, Services, UI/UX, Security, Performance, and Compatibility.
| TC-ID | Module | Test Case Title | Priority | Status |
|---|---|---|---|---|
TC-01 |
Login | Valid login with registered phone | High | Pass |
TC-02 |
Login | Login with unregistered phone number | High | Pass |
TC-03 |
Login | Empty phone field submit | Medium | Pass |
TC-04 |
Login | Invalid OTP code (3 attempts) | High | Pass |
TC-05 |
Login | OTP expiry (> 5 min) | Medium | Pass |
TC-06 |
Registration | New user full registration flow | High | Pass |
TC-07 |
Registration | Duplicate phone registration | High | Pass |
TC-08 |
Registration | Invalid ID photo (blurry/wrong doc) | Medium | Pass |
TC-09 |
Documents | View national ID card | High | Pass |
TC-10 |
Documents | Refresh document data | Medium | Pass |
TC-11 |
Documents | Share document via QR | High | Pass |
TC-12 |
Documents | Access documents offline | High | Pass |
TC-13 |
Services | Submit marriage certificate request | High | Pass |
TC-14 |
Services | Request with incomplete form | Medium | Pass |
TC-15 |
Services | Track request status | Medium | Pass |
TC-16 |
UI/UX | Font scaling accessibility (large text) | Low | Pass |
TC-17 |
UI/UX | Dark mode rendering | Low | Fail |
TC-18 |
Security | Session timeout after 10 min idle | High | Pass |
TC-19 |
Security | Screenshot blocked on sensitive screens | High | Pass |
TC-20 |
Security | Biometric authentication | High | Pass |
TC-21 |
Cross-Browser | App on Android 11 (Chrome WebView) | Medium | Pass |
TC-22 |
Cross-Browser | App on iOS 16 (Safari) | Medium | Pass |
TC-23 |
Performance | App cold start time | Medium | Pass |
Release Readiness Checklist (20 Items)
| # | Area | Check Item | Result | Notes / Evidence |
|---|---|---|---|---|
| 01 | Functionality | All main navigation tabs respond correctly | Pass | Tested on iOS 16 and Android 12 |
| 02 | Functionality | Login / logout flow works end-to-end | Pass | OTP received in < 30 sec |
| 03 | Functionality | Document list loads for authenticated user | Pass | Avg load 1.8 sec |
| 04 | Functionality | Service request submission completes | Pass | Confirmation email received |
| 05 | Functionality | Push notifications delivered | Pass | Tested with Firebase test message |
| 06 | UI / UX | All screens match Figma design spec | Fail | Dark mode has 2 colour mismatches (TC-17) |
| 07 | UI / UX | Buttons have correct tap target (≥ 44px) | Pass | Checked with DevTools overlay |
| 08 | UI / UX | Error messages are human-readable | Pass | All tested error flows reviewed |
| 09 | UI / UX | Loading spinners present on async actions | Pass | Present on all identified async calls |
| 10 | Security | HTTPS enforced on all API calls | Pass | Charles Proxy — no HTTP calls detected |
| 11 | Security | No sensitive data in plain-text logs | Pass | Logcat review — PII redacted |
| 12 | Security | Screenshot restricted on document screens | Pass | Confirmed on Android 12 & iOS 16 |
| 13 | Security | Session expires after inactivity | Pass | Timeout triggers at 10 min (TC-18) |
| 14 | Accessibility | VoiceOver labels on interactive elements | Pass | Spot-checked 15 elements |
| 15 | Accessibility | Colour contrast ≥ 4.5:1 (WCAG AA) | Fail | 2 secondary text colours below threshold |
| 16 | Performance | Cold start < 3 sec | Pass | Avg 2.4 sec across 5 launches |
| 17 | Performance | Scroll performance (no jank) in lists | Pass | 60 fps maintained on flagship device |
| 18 | Localisation | Ukrainian language strings complete | Pass | No missing keys detected |
| 19 | Localisation | Date / number formats correct (UK locale) | Pass | dd.mm.yyyy format confirmed |
| 20 | Compatibility | Android 10, 11, 12, 13 — no crashes | Pass | Tested on BrowserStack emulators |
Bug Reports
Dark mode: incorrect background colour on Service Request confirmation screen
Description
On the "Service Request Confirmation" screen, the card background retains the light theme colour (#FFFFFF) when the device is in Dark Mode. The text colour is adjusted for dark mode (#E0E0E0), causing near-zero contrast and making the confirmation details unreadable.
Steps to Reproduce
- Enable Dark Mode in iOS Settings → Display & Brightness.
- Open Diya app and log in.
- Navigate to Services → Marriage Certificate → fill form → tap "Submit".
- Observe the confirmation screen.
Expected Result
Card background adapts to dark theme (expected: #1C1C1E or equivalent dark token); text remains readable.
Actual Result
Card background stays white (#FFFFFF) in dark mode. Light-coloured text (#E0E0E0) becomes invisible against the white background.
Attachments
screenshot_BUG001_dark_mode_confirmation.png · video_BUG001_dark_mode_steps.mp4
Notes
Issue reproduced consistently on iOS 16.4. Not reproduced on Android 12 (dark mode renders correctly there). Checklist item #06 flags this defect.
Secondary text colour (#9E9E9E on #FFFFFF) fails WCAG AA contrast ratio (3.04:1 vs required 4.5:1)
Description
Secondary labels (e.g., document issuance dates, form field hints) use colour token #9E9E9E on white backgrounds. The measured contrast ratio is 3.04:1, which falls below the WCAG 2.1 Level AA minimum of 4.5:1 for normal text. Affects users with low vision.
Steps to Reproduce
- Open Diya app → navigate to "My Documents".
- Open any document (e.g., ID Card).
- Observe the "Issued:" date label beneath the document number.
- Measure colour contrast using a tool such as WebAIM Contrast Checker or browser DevTools accessibility panel.
Expected Result
Secondary text contrast ratio ≥ 4.5:1 against background per WCAG 2.1 AA. Suggested accessible colour: #767676 on #FFFFFF gives exactly 4.54:1.
Actual Result
Measured contrast: 3.04:1 for #9E9E9E / #FFFFFF. Does not meet WCAG 2.1 Level AA. Fails accessibility audit.
Attachments
screenshot_BUG002_contrast_issue.png · contrast_checker_BUG002.pdf
Notes
Found during accessibility checklist review (item #15). Affects all screens using the secondary text token. Recommend updating design tokens system-wide. No functional regression; cosmetic / accessibility defect only.