QA portfolio focused on API testing, backend validation and UI regression. Below are QA artifacts, API demos and QA impact dashboards (no NDA data).
If you only have 2 minutes, start with these.
Risk-based regression coverage for key user flows and typical breakpoints.
Structured test cases with preconditions, test data, steps and expected results.
Interactive charts that highlight QA impact: regression duration, defect resolution time and coverage trends. Data is anonymized and based on mock examples (no NDA).
Need fullscreen - open dashboards in a new tab.
Concrete QA artifacts (no NDA): bug reports, test cases, regression planning and requirement mind maps.
Two collections: stable E2E flow and CRUD exploration. Docs: E2E overview (Markdown) - CRUD overview (Markdown)
A short chain that creates data, validates relations and cleans up after execution.
| Method | Path | Description |
|---|---|---|
| POST | /brands | Create a brand - store {{brandId}} for chaining. |
| POST | /cars | Create a car linked to the brand - store {{carId}}. |
| PATCH | /cars/{{carId}} | Update a field (example: price) and validate response schema. |
| GET | /cars/{{carId}}?_expand=brand&_embed=reviews | Validate relations and data integrity (expand + embed). |
| DELETE | /cars/{{carId}} | Cleanup - delete created car. |
| DELETE | /brands/{{brandId}} | Cleanup - delete created brand. |
CRUD checks plus list validations (filters, sorting, pagination) and basic search.
| Area | Method | Path | What is validated |
|---|---|---|---|
| Health | GET | /health |
Service is alive, returns expected status and headers. |
| Admin | POST | /reset |
Database reset - stable baseline before test runs. |
| Cars | GET | /cars |
List - basic schema and typical fields. |
| Cars | GET | /cars?brandId={{brandId}}&price_gte=20000&price_lte=40000 |
Filters - result set matches constraints (brandId and price range). |
| Cars | GET | /cars?_sort=price&_order=asc&_page=1&_limit=3 |
Sorting and pagination - order is correct, page size is respected. |
| Cars | POST | /cars |
Create - required fields and generated id validated. |
| Cars | GET | /cars/{{carId}} |
Get by id - data matches created or updated entity. |
| Cars | PATCH | /cars/{{carId}} |
Partial update - only updated fields change, others stay same. |
| Cars | PUT | /cars/{{carId}} |
Replace - required fields enforced, missing fields behavior checked. |
| Cars | DELETE | /cars/{{carId}} |
Delete - follow-up GET returns 404 or empty response. |
| Brands | GET | /brands |
List brands - basic schema and expected fields. |
| Brands | POST | /brands |
Create brand - store {{brandId}} for chained requests. |
| Brands | GET | /brands/{{brandId}}/cars |
Relation endpoint - cars returned belong to the brand. |
| Brands | PATCH | /brands/{{brandId}} |
Update brand - validates response and persistence. |
| Brands | DELETE | /brands/{{brandId}} |
Cleanup - remove created brand after tests. |
| Search | GET | /cars?q=tesla |
Free-text search - relevant hits returned. |
Sources: car_store repository
| Option | Commands | Notes |
|---|---|---|
| Node |
npm install
then
npm start
|
Runs json-server demo locally |
| Docker |
docker build -t car_store .
then
docker run -p 3001:3001 car_store
|
Build image and run container |
| Docker Compose | docker compose up --build |
Runs demo via compose |
Postman collections - import JSON, set the base URL, then run requests in order.