name: Tests on: push: branches: [ main, master, develop ] pull_request: branches: [ main, master ] jobs: unit-tests: name: Unit Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Cache Go modules uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Install dependencies run: go mod download - name: Run unit tests run: make test-unit - name: Generate coverage run: make coverage - name: Upload coverage uses: codecov/codecov-action@v3 with: files: ./coverage.out e2e-tests: name: E2E Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Install Chrome run: | wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' sudo apt-get update sudo apt-get install -y google-chrome-stable - name: Install dependencies run: go mod download - name: Build binaries run: make build - name: Run E2E tests run: make test-e2e env: DISPLAY: :99 - name: Upload artifacts on failure if: failure() uses: actions/upload-artifact@v3 with: name: test-artifacts path: | *.png *.log test-profiles/ integration-tests: name: Integration Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Install Chrome run: | wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' sudo apt-get update sudo apt-get install -y google-chrome-stable - name: Install dependencies run: go mod download - name: Build binaries run: make build - name: Run integration tests run: make test-integration lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Run go vet run: make lint - name: Run golangci-lint uses: golangci/golangci-lint-action@v3 with: version: latest