Week #4 #
Testing and QA #
Automated Testing of the Back End #
Manual Testing of the Android Application #
- Testing Method: manual testing was conducted without documented checklists or test cases, as QA worked independently.
- Reasoning: manual testing was chosen to save time since only one regression test is planned (at the end of the course) and the app’s design is rapidly evolving, making UI test automation inefficient.
- Results: four bugs were identified ( bug report 1, bug report 2, bug report 3, bug report 4)
- Mobile Specific Features Tested:
- The application retains state after screen rotation and theme changes.
- A network disconnection does not terminate the app.
Evidence of Test Execution #
https://github.com/evops-sum25/evops/actions/runs/16034532112/job/45243008806
CI/CD #
CI:
Our CI/CD is configured via GitHub Actions. All configuration files are placed in the main repository. There are three CI files for the three major submodules of our project. Here are their workflows:
Back End / ML Server:
- Install the stable Rust toolchain and Protobuf compiler.
- Run
cargo check
to check if the code can build. - Run
cargo test
to execute unit, integration, and documentation tests. - Run
cargo fmt --all --check
to check whether the code is formatted. - Run
cargo clippy -all-targets
to catch common lints.
Website:
- Set up Node.js and pnpm.
- Get the pnpm store path and cache the dependencies.
- Run
pnpm install
to install dependencies. - Run
pnpm lint
to catch common lints. - Run
pnpm test
to test the code. - Run
pnpm typecheck
to check type safety.
CD:
Our Continuous Deployment is configured in a single file. Its workflow should be
triggered manually in the GitHub UI because of the on: workflow_dispatch
setting in the CD configuration file. Here is the workflow:
- Install
sshpass
to run SSH using the keyboard-interactive password authentication mode, but in a non-interactive way. - Connect to our server using the secret variables we’ve set in the repository settings.
- Fetch updates and update submodules.
- Rebuild and rerun the Docker containers.
Links to CI/CD Configuration Files #
Deployment #
Staging #
A prototype instance of our application is hosted on a server that we bought on HostVDS. For the Continuous Deployment file, we’ve set these environment variables in our repository:
SERVER_USER
: Unix username.SSH_PASSWORD
: Unix password.PROJECT_PATH
: filesystem path to the project.SEVER_HOST
: IP address of the server.
As was mentioned in the CI/CD part, we trigger the deployment workflow manually. It helps us avoid unnecessary rebuilds and gives us more control over our deployment.
Production #
Due to the self-hosted nature of our project, we are not supposed to have a single production instance. For the purposes of the Capstone Project course, you can think of our staging deployment (described above) as the production instance. However, the plan has always been to allow users to host their own EvOps in-house.
Vibe Check #
The vibe check was successfully conducted during the last team meeting, where we enjoyed delicious barbecue. 😋
Team health check results: very positive vibe. 😎💯
There has been good progress overall, and no major obstacles have been identified. Some members indicated that they might require assistance with their designated task. Consequently, team members will be offering each other support.
Team dynamics remain healthy, with open communication and effective collaboration. All members have participated actively and felt comfortable sharing.
Weekly Commitments #
Individual Contribution of Each Participant #
Aleksandr Isupov #
- Created styles
(
commit 1,
commit 2):
- Added and integrated typography text styles.
- Fitted images into squares with a blurry background on the Event List screen.
- Refactored element positioning on the Event List and Event Details screens.
- Added animated transitions to navigation.
- Added loaders to network images.
- Tested the application manually and found several bugs ( bug report 1, bug report 2, bug report 3, bug report 4).
- Fixed bugs found during manual testing:
- Navigation bar icons did not show the selected screen ( commit).
- When navigating via the navigation bar, the stack of screens was not cleared ( commit).
- The top app bar on the Event Details screen had double status bar paddings ( commit).
- The navigation bar did not return to the Event List screen when clicking the Home icon on the Event Details screen ( commit).
- Refactored the code written quickly before the MVP ( commit 1, commit 2).
Arsen Galiev #
- Added i18n support to the website ( commit).
- Updated the UI of the event creation page ( commit).
- Fixed ESLint issues ( commit).
Asqar Arslanov #
- Connected the back end to MinIO ( commit).
- Covered the Markdown parser and validation logic with tests ( commit).
- Introduced major changes to the back end codebase
(
PR):
- Added support for image uploads through API endpoints.
- Decoupled domain models and API schemas better.
- Organized the code communicating with the database.
Egor Pustovoytenko #
- Refactored back-end database communication
(
PR 1,
PR 2).
- Moved
evops-db
toserver-ext
for usage by the ML server. - Refactored the architecture of modules in the back end.
- Moved
- Connected ML to the back end ( directory).
- Fixed small bugs ( commit).
Ilya-Linh Nguen #
- Wrote all web CI/CD workflow ( commit 1, commit 2, commit 3, commit 4, commit 5).
- Added MinIO storage for images in Docker Compose ( commit).
- Published a new Android release ( release).
Maksim Ilin #
- Replaced the previously found dataset (Yambda) with the MovieLens dataset because of better fitting.
- Augment the MovieLens dataset with the movie descriptions and perform embeddings creation and dimensionality reduction ( commit).
- Extracted persons with the highest amount (99.99 percentile) of reviews (20M to 78,000 rating entries) and created a user’s profile builder function ( commit).
Ramil Shakirzyanov #
- Evaluated the recommendation system on the MovieLens dataset ( commit).
Plan for Next Week #
DevOps #
- Fix errors with the dev and HMR Dockerfiles.
- Buy a domain for the website.
- Make a CI/CD pipeline for the Android application.
Machine Learning #
- Discuss the idea of machine text translation of posts.
- Implement the template for the recommendation system service class.
Back End #
- Add more endpoints.
- Preprocess incoming images.
- Continue working on issues from previous weeks.
Android #
- Update Create Event screen to include new fields: tags, location, date & time (depends on the back end).
- Integrate new fields to the Event Details screen (depends on the back end).
- Make the search field on the Event List screen functional (depends on the back end).
- Add validation to the Event List screen form.
- Add image posting.
- Add loaders to all the network dependent screens.
Website #
- Integrate Connect Query and solve caching issue in Next.js.
- Add support for new features from our back end.
- Improve the UI in existing pages.
Confirmation of the Code’s Operability #
We confirm that the code in the main
branch:
- Is in working condition.
- Runs via Docker Compose.