RI-7390 Add Vector Set browser support E2E tests #6405
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ✅ Tests | |
| on: | |
| push: | |
| branches-ignore: | |
| - main | |
| - latest | |
| - 'release/**' | |
| pull_request: | |
| types: [labeled] | |
| workflow_dispatch: | |
| inputs: | |
| redis_client: | |
| description: Library to use for redis connection | |
| default: 'ioredis' | |
| type: choice | |
| options: | |
| - ioredis | |
| - node-redis | |
| short_rte_list: | |
| description: Use short RTE list for IT | |
| type: boolean | |
| default: true | |
| debug: | |
| description: Enable SSH Debug (IT and E2E) | |
| default: false | |
| type: boolean | |
| workflow_call: | |
| inputs: | |
| short_rte_list: | |
| description: Use short rte list | |
| type: boolean | |
| default: true | |
| pre_release: | |
| description: Is pre-release | |
| default: false | |
| type: boolean | |
| debug: | |
| description: Enable SSH Debug | |
| default: false | |
| type: boolean | |
| # Cancel a previous run workflow | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| backend: ${{ steps.filter.outputs.backend }} | |
| desktop: ${{ steps.filter.outputs.desktop }} | |
| docker: ${{ steps.filter.outputs.docker }} | |
| infra: ${{ steps.filter.outputs.infra }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: dorny/paths-filter@v4.0.1 | |
| id: filter | |
| with: | |
| # Compare against main so each push's gating reflects the | |
| # cumulative branch diff, not just the latest commit. Keeps | |
| # the merge-gate aligned with what would actually land. | |
| base: main | |
| filters: | | |
| frontend: | |
| - 'redisinsight/ui/**' | |
| backend: | |
| - 'redisinsight/api/**' | |
| desktop: | |
| - 'redisinsight/desktop/**' | |
| docker: | |
| - 'Dockerfile*' | |
| - '.dockerignore' | |
| - '*docker*.sh' | |
| # Shared toolchain / CI config — when these change, run everything. | |
| infra: | |
| - 'package.json' | |
| - 'yarn.lock' | |
| - '.yarnrc' | |
| - '.nvmrc' | |
| - '.eslintrc*' | |
| - '.eslintignore' | |
| - 'babel.config*' | |
| - 'jest.config*' | |
| - 'jest-resolver.js' | |
| - 'configs/**' | |
| - 'scripts/**' | |
| - '.github/workflows/**' | |
| - '.github/actions/**' | |
| # Compute per-consumer "should this run" decisions from changes, labels, | |
| # pre-release input, and manual dispatch. One job, one source of truth. | |
| should-run: | |
| needs: changes | |
| runs-on: ubuntu-latest | |
| outputs: | |
| ui: ${{ steps.eval.outputs.ui }} | |
| api: ${{ steps.eval.outputs.api }} | |
| desktop: ${{ steps.eval.outputs.desktop }} | |
| integration: ${{ steps.eval.outputs.integration }} | |
| docker: ${{ steps.eval.outputs.docker }} | |
| steps: | |
| - id: eval | |
| env: | |
| PRE_RELEASE: ${{ inputs.pre_release == true }} | |
| DISPATCH: ${{ github.event_name == 'workflow_dispatch' }} | |
| LABEL_ALL: ${{ contains(github.event.pull_request.labels.*.name, 'run-all-tests') }} | |
| LABEL_FE: ${{ contains(github.event.pull_request.labels.*.name, 'run-frontend-tests') }} | |
| LABEL_BE: ${{ contains(github.event.pull_request.labels.*.name, 'run-backend-tests') }} | |
| LABEL_IT: ${{ contains(github.event.pull_request.labels.*.name, 'run-integration-tests') }} | |
| CHG_FRONTEND: ${{ needs.changes.outputs.frontend }} | |
| CHG_BACKEND: ${{ needs.changes.outputs.backend }} | |
| CHG_DESKTOP: ${{ needs.changes.outputs.desktop }} | |
| CHG_DOCKER: ${{ needs.changes.outputs.docker }} | |
| CHG_INFRA: ${{ needs.changes.outputs.infra }} | |
| run: | | |
| # "Run everything" — pre-release builds, manual dispatch, the | |
| # run-all-tests label, or shared toolchain/CI changes. | |
| if [[ "$PRE_RELEASE" == "true" || "$DISPATCH" == "true" || "$LABEL_ALL" == "true" || "$CHG_INFRA" == "true" ]]; then | |
| ALL=true | |
| else | |
| ALL=false | |
| fi | |
| ui=$ALL | |
| api=$ALL | |
| desktop=$ALL | |
| integration=$ALL | |
| docker=$ALL | |
| [[ "$CHG_FRONTEND" == "true" || "$LABEL_FE" == "true" ]] && ui=true | |
| [[ "$CHG_BACKEND" == "true" || "$LABEL_BE" == "true" ]] && api=true | |
| [[ "$CHG_DESKTOP" == "true" ]] && desktop=true | |
| [[ "$CHG_BACKEND" == "true" || "$LABEL_IT" == "true" ]] && integration=true | |
| [[ "$CHG_FRONTEND" == "true" || "$CHG_BACKEND" == "true" || "$CHG_DOCKER" == "true" ]] && docker=true | |
| { | |
| echo "ui=$ui" | |
| echo "api=$api" | |
| echo "desktop=$desktop" | |
| echo "integration=$integration" | |
| echo "docker=$docker" | |
| } >> "$GITHUB_OUTPUT" | |
| lint: | |
| uses: ./.github/workflows/lint.yml | |
| secrets: inherit | |
| type-check: | |
| needs: should-run | |
| uses: ./.github/workflows/type-check.yml | |
| with: | |
| run-ui: ${{ needs.should-run.outputs.ui == 'true' }} | |
| run-api: ${{ needs.should-run.outputs.api == 'true' }} | |
| run-desktop: ${{ needs.should-run.outputs.desktop == 'true' }} | |
| secrets: inherit | |
| docker-build: | |
| needs: should-run | |
| if: needs.should-run.outputs.docker == 'true' | |
| uses: ./.github/workflows/docker-build.yml | |
| frontend-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.ui == 'true' | |
| uses: ./.github/workflows/tests-frontend.yml | |
| secrets: inherit | |
| frontend-tests-coverage: | |
| needs: frontend-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: report-fe | |
| type: unit | |
| backend-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.api == 'true' | |
| uses: ./.github/workflows/tests-backend.yml | |
| secrets: inherit | |
| backend-tests-coverage: | |
| needs: backend-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: report-be | |
| type: unit | |
| integration-tests: | |
| needs: [should-run, lint, type-check] | |
| if: needs.should-run.outputs.integration == 'true' | |
| uses: ./.github/workflows/tests-integration.yml | |
| secrets: inherit | |
| permissions: | |
| actions: write | |
| contents: read | |
| checks: write | |
| with: | |
| short_rte_list: ${{ inputs.short_rte_list || true }} | |
| redis_client: ${{ inputs.redis_client || '' }} | |
| debug: ${{ inputs.debug || false }} | |
| integration-tests-coverage: | |
| needs: integration-tests | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| uses: ./.github/workflows/code-coverage.yml | |
| secrets: inherit | |
| with: | |
| resource_name: integration-coverage | |
| type: integration | |
| clean: | |
| uses: ./.github/workflows/clean-deployments.yml | |
| if: ${{ always() && github.actor != 'dependabot[bot]' }} | |
| permissions: | |
| actions: write | |
| contents: read | |
| deployments: write | |
| needs: | |
| [ | |
| frontend-tests, | |
| backend-tests, | |
| integration-tests, | |
| ] | |
| # Remove artifacts from github actions | |
| remove-artifacts: | |
| name: Remove artifacts | |
| if: ${{ github.actor != 'dependabot[bot]' }} | |
| needs: | |
| [ | |
| frontend-tests, | |
| backend-tests, | |
| integration-tests, | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Remove all artifacts | |
| uses: ./.github/actions/remove-artifacts |