User Management App

Test automation showcase

A full-stack app and the C# test framework that guards it

React + ASP.NET Core application with REST API and browser UI tests written in C#, NUnit and Playwright. Every push runs the suite in GitHub Actions, publishes an Allure report and deploys the app only when everything is green.

Latest test run

Loading report data…

Test strategy

Business rules are checked fast through the API; the browser covers real user journeys.

REST API tests

HttpClient + NUnit, run in parallel.

  • Full CRUD for /api/users with status codes and response bodies
  • Validation: missing and short fields, malformed email → 400 ProblemDetails
  • Business rules: duplicate email (case-insensitive) → 409
  • Missing resources → 404, Location header, trimming input

UI end-to-end tests

Playwright for .NET, Page Object model.

  • Add, edit and delete users through the real interface
  • Client-side validation messages for each field
  • Server errors surfaced to the user (duplicate email)
  • Search, empty states, keyboard (Esc) and cancel flows

Isolated data

Each test creates its own users with unique emails and deletes them afterwards, so tests run in any order and in parallel.

Fast arrange via API

UI tests prepare data through the API and spend browser time only on the behaviour under test.

Debuggable failures

A failed UI test attaches a full-page screenshot and a Playwright trace to the Allure report.

CI/CD pipeline

GitHub Actions on every push and pull request.

  1. 1Build.NET 10 backend, Vite frontend
  2. 2Start serviceswait for /health
  3. 3Run testsAPI + UI in parallel, red build on any failure
  4. 4Allure reportpublished always, with run history
  5. 5DeployDocker Compose, only when green, then smoke check

Denis Davydov

SDET · QA Automation Infrastructure Engineer · Berlin

I build test automation and the infrastructure around it from scratch: UI, API and E2E suites in C# and Python with Playwright and Appium, containerized test runs and CI/CD pipelines. Available for freelance contracts across Germany and the EU.