To maintain code quality and a smooth development workflow, please adhere to the following rules:
All feature development must take place in a separate branch.
- Base branch: Always branch off from
main. - Naming convention:
US-{your-storyID}.
Example:
# Update main to the latest version
git checkout main
git pull origin main
# Create and switch to a new feature branch
git checkout -b US-E1.1Before requesting a Pull Request:
- Work on your code: Make small, logical commits.
- Tester Verification: Once you've completed your task, a tester must manually verify the changes in your local environment or a staging environment if available.
Example:
# Add your changes
git add .
git commit -m "feat: refactor login page UI"
# Keep your branch up to date with main
git fetch origin main
git merge origin/mainWhen the feature is ready and verified:
- Push your branch to the remote repository.
- Open a Pull Request targeting the
mainbranch. - Automated Tests: GitHub Actions will automatically run the Playwright tests on your PR.
- Review: Wait for at least one approval before merging.
Example:
# Push your branch
git push origin feature/login-page-refactor
# Go to GitHub and open a Pull RequestEvery Pull Request automatically triggers the Playwright test suite.
- Check the Actions tab on GitHub or the PR status to see if tests passed.
- If tests fail, fix the issues and push new commits to the same branch.
| First name | Last name | Role | Password | |
|---|---|---|---|---|
| John | Doe | admin | admin@practicesoftwaretesting.com | welcome01 |
| Jane | Doe | user | customer@practicesoftwaretesting.com | welcome01 |
| Jack | Howe | user | customer2@practicesoftwaretesting.com | welcome01 |
| Bob | Smith | user | customer3@practicesoftwaretesting.com | pass123 |
The mobile app is fully integrated with version 4 of Practice Software Testing, which means both share the same environment. Any changes you make through the mobile app (like creating or editing data) will appear on the website, and updates on the website will also show up in the app.
It will take up to 5 minutes (depending on your internet connection speed), if you run docker compose up -d for the first
time. Any subsequent docker compose up -d will take seconds. You may need to add sudo before the docker command sudo docker compose up -d
All images together are less than 1,5 GB.
This project includes multiple Docker Compose configurations to support development, testing, and production usage.
Use this when actively working on the application:
docker compose up -dThis will:
- Build the containers from local source (
docker-compose.yml) - Mount the source code for live changes
- Automatically include
docker-compose.override.yml(mailcatcher, cron, phpmyadmin)
To start the bare minimum:
docker compose -f docker-compose.yml up -dThis will:
- Use only what's defined in docker-compose.yml
- Ignore docker-compose.override.yml completely
- Skip optional services like cron, phpmyadmin, mailcatcher
docker compose -f docker-compose.prod.yml up --pull missing -d| URL | Description |
|---|---|
| http://localhost:8091 | (REST) API |
| http://localhost:8091/api/documentation | Swagger |
| http://localhost:1080 | MailCatcher |
| http://localhost:4200 | (Angular) Application |
http://localhost:8000 (root/root) |
PHPMyAdmin |
Update the SPRINT in .env to use the proper version that belongs to the sprint.
docker compose exec laravel-api php artisan migrate:fresh --seed
docker compose exec laravel-api php artisan migrate
docker compose exec laravel-api php artisan db:seed
docker-compose exec laravel-api tail -f storage/logs/laravel.log
docker compose exec laravel-api php artisan l5-swagger:generate
docker compose exec laravel-api php artisan order:update
docker compose exec laravel-api php artisan invoice:remove
docker compose exec laravel-api php artisan invoice:generate
./vendor/bin/phpunit
./vendor/bin/pest
XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-html tests/coverage
pact-mock-service start --host localhost --port 7203 --consumer AnyConsumer --provider ProductAPI --pact-dir ./pacts --log ./storage/logs/pact.log
pact-mock-service stop --port 7203
During this initial sprint, we made some architectural decisions. We decided to implement a super-fast Laravel API, as well as an Angular frontend.
Every developer or tester can spin up the environment on its own machine. This makes testing easier, and it allows you to manipulate data.
The deliverable of Sprint0 is a Dockerized environment, just like database seeding scripts. Basically, the result is an empty environment.
If you find this project useful and want to support its ongoing development, please consider supporting it!
I appreciate your support!