We are using Vitest.
Simply run pnpm test
to run all the tests locally.
We are using Vitest to test the following concerns:
- Main application flows and integration of different services
- Containerize execution of all services
- Cross-service network calls
Integration tests are based pre-built Docker images, so you can run it in 2 modes:
TL;DR: Use pnpm integration:prepare
command to setup the complete environment from locally
running integration tests.
To run integration tests locally, from the local source code, you need to build a valid Docker image.
To do so, follow these instructions:
- Install all deps:
pnpm i
- Generate types:
pnpm graphql:generate
- Build source code:
pnpm build
- Set env vars:
export COMMIT_SHA="local"
export RELEASE="local"
export BRANCH_NAME="local"
export BUILD_TYPE=""
export DOCKER_TAG=":local"
- Compile a local Docker image by running:
docker buildx bake -f docker/docker.hcl integration-tests --load
- Use Docker Compose to run the built containers (based on
community
compose file), along with the extra containers:
export DOCKER_TAG=":local"
export DOCKER_REGISTRY=""
docker compose -f ./docker/docker-compose.community.yml -f ./integration-tests/docker-compose.integration.yaml --env-file ./integration-tests/.env up -d --wait
- Run the tests:
pnpm --filter integration-tests test:integration
To run integration tests locally, from the pre-build Docker image, follow:
- Install all deps:
pnpm i
- Generate types:
pnpm graphql:generate
- Build only addition, local CF Workers source code, by running:
pnpm --filter integration-tests prepare:env
- Decide on the commit ID / Docker image tag you would like to use (make sure
build-and-dockerize
is done successfully) - Set the needed env vars, and use Docker Compose to run all local services:
export DOCKER_REGISTRY="ghcr.io/kamilkisiela/graphql-hive/"
export DOCKER_TAG=":IMAGE_TAG_HERE"
docker compose -f ./docker/docker-compose.community.yml -f ./integration-tests/docker-compose.integration.yaml --env-file ./integration-tests/.env up -d --wait
- Run the tests:
pnpm --filter integration-tests test:integration
e2e Tests are based on Cypress, and matches files that ends with .cy.ts
. The tests flow runs from
a pre-build Docker image.
To run e2e tests locally, from the local source code, follow:
- Make sure you have Docker installed. If you are having issues, try to run
docker system prune
to clean the Docker caches. - Install all deps:
pnpm i
- Generate types:
pnpm graphql:generate
- Build source code:
pnpm build
- Set env vars:
export COMMIT_SHA="local"
export RELEASE="local"
export BRANCH_NAME="local"
export BUILD_TYPE=""
export DOCKER_TAG=":local"
- Compile a local Docker image by running:
docker buildx bake -f docker/docker.hcl build --load
- Run the e2e environment, by running:
docker compose -f ./docker/docker-compose.community.yml --env-file ./integration-tests/.env up -d --wait
- Run Cypress:
pnpm test:e2e
To run integration tests locally, from the pre-build Docker image, follow:
- Make sure you have Docker installed. If you are having issues, try to run
docker system prune
to clean the Docker caches. - Install all deps:
pnpm i
- Generate types:
pnpm graphql:generate
- Build source code:
pnpm build
- Decide on the commit ID / Docker image tag you would like to use and set it as env var:
export DOCKER_REGISTRY="ghcr.io/kamilkisiela/graphql-hive/"
export DOCKER_TAG=":IMAGE_TAG_HERE"
- Run the e2e environment, by running:
docker compose -f ./docker/docker-compose.community.yml --env-file ./integration-tests/.env up -d --wait
- Run Cypress:
pnpm test:e2e
Keep in mind that integration tests are running a combination of 2 Docker Compose files:
docker-compose.community.yml
- this is also used for self-hosting Hive, so this file contains all services and configurations needed for running Hive core (without Cloud-specific services, like billing).docker-compose.integration.yaml
- An extension and overrides file: we are using that file to run local services such as CloudFlare CDN mock, external composition service and so on - this is done in order to mock a complete Hive Cloud environment and test all features. This file also includes overrides such as environment variables that are specific only for integration testing - so make sure to choose wisely where to add environment variables!
If you are having issues with running Docker images, follow these instructions:
- Make sure you have the latest Docker installed.
- Make sure no containers are running (
docker ps
and thendocker stop CONTAINER_ID
). - Delete the local volume used for testing, it's located under
.hive
directory. - Try to run
docker system prune
to clean all the Docker images, containers, networks and caches.