
e-Santé.net — Pharmacy E-Health Platform & QA Automation
- Date : 2026
- Software Engineering
- Completed
Built a pharmacy e-health web app (ASP.NET Core, Blazor), then its QA: Selenium + Pytest UI tests, REST API and xUnit security tests, SonarQube analysis — 67 test cases.
Overview
e-Santé.net is a pharmacy-oriented e-health web application built at IIT Sfax in a team of two. It centralises patients, doctors, pharmacists, pharmacies, medicines, stock and prescriptions, which are often scattered across tools in a pharmacy.
The platform uses a layered architecture: a Blazor Server front end, an ASP.NET Core REST API secured by tokens, a business layer and Entity Framework Core repositories on SQL Server. A pharmacist dashboard built with Radzen.Blazor shows activity, prescriptions and stock levels.
In the Software Testing & Quality module, we then tested the same application end to end: UI automation, API integration tests, security and performance tests, and static analysis, organised in four Scrum sprints.
Key figures
- traceable test cases
- 67
- traceable test cases
- functional modules covered
- 9
- functional modules covered
- API resources tested
- 7
- API resources tested
- defects fixed
- 5
- defects fixed
Technologies
Problem
Prescriptions, patient records and stock are often scattered in a pharmacy, which makes their history hard to use and increases the risk of errors when dispensing medicines.
Solution
A web platform with secure sign-in and role-based access, CRUD pages for every entity, prescriptions checked against each pharmacy’s stock, and a dashboard; its quality was then verified with automated UI, API, security and static tests.
My contribution
As a team of two: development of the platform (Blazor pages, REST API, repositories, stock rules), then the whole test effort — UI automation framework, API test suite, xUnit security and performance tests, SonarQube analysis and test documentation.
Results
Delivered 67 traceable test cases across 9 functional modules and 7 API resources. The security tests exposed unhandled 500 errors on unauthenticated and malicious requests, and 5 defects were fixed.
Features
- Sign-in and registration with token-based authentication and role-based access (administrator, pharmacist)
- CRUD for patients, doctors, pharmacists, pharmacies, medicines and stock
- Prescriptions with medicine lines, quantity and dosage, checked against the pharmacy’s stock (explicit 400 error when stock is missing or insufficient)
- Pharmacist dashboard with Radzen.Blazor charts and indicators
- Selenium + Pytest UI automation framework (Page Object Model) with logging, priority markers and screenshots on failure
- REST API integration tests in Pytest with a JWT-authenticated session
- Security and performance tests in C#/xUnit (access control, SQL injection, XSS, response time)
- SonarQube static analysis followed by targeted refactoring
Screenshots
Creating a prescription: patient, pharmacist, doctor and medicine lines with quantity and dosage, checked against the pharmacy’s stock.
Pharmacist dashboard built with Radzen.Blazor: key figures, prescriptions and stock at a glance.
Prescription details: date, patient, doctor, pharmacist and the medicines dispensed.
Patient management: the same List / Create / Edit / Details pages are used for every entity.
Sign-in page: access to the application is protected by token-based authentication.
Automated UI tests (Selenium + Pytest, Page Object Model): results of the Patients module, one of the 9 modules covered.
Swagger documentation of the REST API, used as the reference for the Pytest integration tests.
xUnit security test: an anonymous request to a protected endpoint returned a 500 error instead of 401/403 — a defect found by testing.
SonarQube static analysis: high-severity issues such as excessive cognitive complexity, then refactored.
