Skip to content

Frontend UI/API that permit to view/trigger cypress unit testing and store result in DB

License

Notifications You must be signed in to change notification settings

Lord-Y/cypress-parallel

Repository files navigation

cypress-parallel CircleCI

cypress-parallel is a single binary that hold both frontend UI and API that permit to run cypress unit testing.

It create pods inside your kubernetes cluster triggered by api or via UI.

On this UI you will be able to:

  • create, update and delete teams
  • create, update and delete projects and also trigger new unit testing
  • create, update and delete annotations that will be used by pods
  • create, update and delete environments variables that will be used by pods
  • See execution results of units testing

cypress-parallel use also 2 sub-components:

API

By default, the api url is http://127.0.0.1:8080 but it can be override with os environment variable CYPRESS_PARALLEL_URL.

Database

Our api is developped with PostgresSQL 10+ database so the environment variable CYPRESS_PARALLEL_DB_URI must be set:

export CYPRESS_PARALLEL_DB_URI="postgres://USERNAME:PASSWORD@HOST:PORT/DB_NAME?sslmode=disable"

Development

Running UI and API seperatly during development

In a shell, start the UI:

export CYPRESS_PARALLEL_PORT=8080
cd ui
npm run dev

In an another shell, start the API:

export CYPRESS_PARALLEL_K8S_CLIENT_OUTSIDE=true
export CYPRESS_PARALLEL_PORT=8080
go run main.go

Git hooks

Add githook like so:

git config core.hooksPath .githooks

Kind

During you local development, you must set the variable CYPRESS_PARALLEL_K8S_CLIENT_OUTSIDE in order to make the api loggued in with your .kube/config

export CYPRESS_PARALLEL_K8S_CLIENT_OUTSIDE=true

Please read Kind setup here

Start your postgres sql instance

sudo docker-compose up -d

Debugging

To enable the debug mode on the api:

export CYPRESS_PARALLEL_LOG_LEVEL=debug

To enable the debug mode on the cli:

export CYPRESS_PARALLEL_CLI_LOG_LEVEL=debug

Content types

Supported content types are:

  • application/x-www-form-urlencoded
  • application/json

Unit testing

Make sure to add unit testing for almost every new features in order to ensure the quality of the api.

Run tests with:

go test -v ./... -coverprofile=coverage.out

See covering in the browser with:

go tool cover -html=coverage.out

See covering in the shell with:

go tool cover -func=coverage.out

Linter

# https://golangci-lint.run/usage/install/
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest