This is a full stack automation project that tests both UI and API of a demo flask application for a user registration and login flows.
Written mostly in Python - The application contains two web-services:
- user-service: handles the frontend requests and integrates with sql database for user data registration and login.
- user-app: serves the html pages for registration and login, to send the user data to the user-service.
Migrated application infrastructure from docker-compose to kubernetes: CI Build and Tests steps are:
- Setting-up local K8s (minikube)
- Building + Deploying applications into local K8s (minikube)
- Forwarding Pod's port for testing in localhost env
- Testing application
Migrated CI infrastructure from running on Jenkins to running on Github Actions using a self-hosted runner setup.
Importat: this is against gh-actions best practices as this is a non-private repo, but it is for the sake of the practice!
Prerequisites:
- Installed and configured minikube + kubectl on your local machine
Configure Action Runner Controller:
- For a complete setup use this guide
- Once done, you will be able to see available runner in your repo settings - under
Actions -> Runners
- Once done, you will be able to see available runner in your repo settings - under
- Create a
.github/workflowsdir in the root of your project - Create a
.ymlfile under the workflows dir - Configure workflow to run on a self-hosted runner:
runs-on:self-hosted
Using the Jenkins multibranch-pipeline, whenever a new remote branch is created (git push), the jenkins server receives a git webhook to initialize a build which would then build, run and test the application.
The build status is reflected in the PR, like so:

- Step 1:
docker network create my-network && docker-compose up -d --build - Step 2:
pytest --alluredir="tests/reports/allure_results" tests/frontend_tests/test_user_app_title.py


