gitbeaker/docs/TESTING.md

132 lines
2.8 KiB
Markdown

# Testing Guide
This guide covers both containerized testing (recommended) and manual testing approaches.
- **Unit Tests**: Test individual functions and components in isolation
- **Integration Tests**: Test API interactions with a real GitLab instance
- **End-to-End Tests**: Test complete workflows from client to server
## 🐳 Containerized Testing (Recommended)
The easiest way to run the full test suite is using Docker, which provides a consistent, isolated environment.
### Quick Start
Run the complete test suite (unit + integration + e2e):
```bash
yarn test:full
```
This command will:
- Start a GitLab CE instance using Docker Compose
- Wait for GitLab to be healthy and ready
- Set required environment variables
- Clean and build the project
- Run all test types sequentially (types, unit, integration, e2e)
- Keep GitLab running for additional testing (optional cleanup)
### Individual Test Types
You can also run specific test types individually:
```bash
# Type tests only
yarn test:types
# Unit tests only
yarn test:unit
# Integration tests only (requires GitLab running)
yarn test:integration
# End-to-end tests only
yarn test:e2e
```
### Manual GitLab Instance
To start just the GitLab instance for manual testing:
```bash
cd .docker && docker-compose up gitlab
```
GitLab will be available at `http://localhost:8080` with:
- Username: `root`
- Password: `gitbeaker`
- Personal Access Token: `superstrongpassword123`
## 🛠️ Local Testing (Alternative)
For contributors who prefer to test locally without Docker:
### Unit Tests
```bash
yarn test:unit
```
### Integration Tests
1. First, run GitLab in a docker container:
```bash
cd .docker && docker-compose up gitlab
```
2. Once GitLab is up on localhost:8080, set the environment variables:
```bash
export GITLAB_URL="http://localhost:8080"
export GITLAB_PERSONAL_ACCESS_TOKEN="superstrongpassword123"
```
3. Run the integration tests:
```bash
yarn test:integration
```
You can also define them inline:
```bash
GITLAB_URL='http://localhost:8080' GITLAB_PERSONAL_ACCESS_TOKEN='superstrongpassword123' yarn test:integration
```
### End-to-End Tests
```bash
yarn test:e2e
```
> **Note:** It may take about 3 minutes for GitLab to fully start up in the container
## 🔧 Troubleshooting
### Docker Issues
If you encounter Docker build issues:
```bash
# Clean Docker cache
docker system prune -f
# Rebuild containers
cd .docker && docker-compose build --no-cache
```
### SSL Certificate Issues
If you're behind a corporate firewall, you may need to configure Docker to trust your certificates or use alternative registries.
### GitLab Startup
GitLab requires significant resources and startup time. Ensure you have:
- At least 4GB of available RAM
- Docker Desktop running with sufficient memory allocation
- Wait 2-3 minutes for GitLab to be fully ready