An open API service indexing awesome lists of open source software.

https://github.com/bhappy05/random-photo-app

My pet project made with Swift to test and learn different things releated to SwiftUI & Automation
https://github.com/bhappy05/random-photo-app

ios ios-app ios-development qa-automation swiftui

Last synced: about 1 year ago
JSON representation

My pet project made with Swift to test and learn different things releated to SwiftUI & Automation

Awesome Lists containing this project

README

          

# Random Photo App by Denis Kovalev
⚠️ Please Note that this is a live project

This app was developed to practice programming with Swift and enhance my understanding of unit and UI testing using XCTest, it is primarily designed for personal development.
The application is comprehensively tested, with all features covered by either UI or unit tests. A shared MockURLProtocol class was created to handle mocking across all tests. For UI testing, environment variables and session overrides were implemented within SceneDelegate to simulate and test different scenarios effectively.
Through developing this project, I gained a deeper understanding of the structure of Swift applications, the fundamentals of unit testing, and the process of data mocking. I also improved my skills in writing comprehensive UI tests, ensuring that the app functions smoothly across various scenarios.

## Roadmap
Below is the list of features I've planned to add to the project

- [x] 3 screens for different images (Any image, Cats and Dogs)
- [x] Asynchronous image fetching
- [x] Bottom sheet with info
- [x] Deep Links
- [x] Error handling with alerts
- [x] Loaders
- [x] Image download function
- [x] Toasts with info
- [x] Unit Tests
- [x] UI Tests
- [x] GitHub CI integration
- [x] Page Objects

## Screenshots and video
### Launch Screen
![Launch_screen](https://github.com/user-attachments/assets/0194597a-a734-4698-b235-639787a72dfb)

### Main View Controller
![MainVC](https://github.com/user-attachments/assets/8567e5b1-feff-4e62-a6b8-87550c777a7b)

### Cats View Controller
![CatsVC](https://github.com/user-attachments/assets/aee4a8ca-5779-47b6-b3b0-a24d6cd5b379)

### Dogs View Controller
![DogsVC](https://github.com/user-attachments/assets/ce3f7cbe-8fda-4c3b-803d-cb6393103924)

### Bottom Sheet with info
![Bottom_sheet](https://github.com/user-attachments/assets/6a440426-9027-4973-8128-39823d71db77)

### Loaders
https://github.com/user-attachments/assets/d47d5e2c-2a23-460e-88a8-c66cf7e2b50e

### Error handling with alert
![Alert](https://github.com/user-attachments/assets/7b250e70-137d-4957-b3f4-083402b70f5c)

### Toasts
![Toast2](https://github.com/user-attachments/assets/5f9750b0-5591-4ef8-9c2a-ba24df451339)

![Toast1](https://github.com/user-attachments/assets/51d322c2-f079-466b-847e-8c785efaf95f)

### Permissions for photo library and photo saving
https://github.com/user-attachments/assets/4638c270-4daf-496d-8433-be0f3b8677a4

### UI tests
![image](https://github.com/user-attachments/assets/bbea0ee3-53d5-40b6-88ed-aa28e7fcbb2f)

### Unit tests
![image](https://github.com/user-attachments/assets/b1426ff1-64c8-4e18-87ab-013941606a18)

### DeepLink
https://github.com/user-attachments/assets/3df1ae22-8e85-4458-a335-0a94e8c68c2b