Skip to content

FOUR-17346 Run Screen Builder tests in VFE #62

FOUR-17346 Run Screen Builder tests in VFE

FOUR-17346 Run Screen Builder tests in VFE #62

Workflow file for this run

name: SonarQube
on:
push:
branches:
- develop
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Scan
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
containers: [0, 1, 2, 3, 4] # Distribuirá la carga entre 5 contenedores para paralelismo
steps:
########################################
# Checkout and Build vue-form-elements
########################################
- uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Setup node env 🏗
uses: actions/setup-node@master
with:
node-version: 20
check-latest: true
cache: 'npm'
- name: Install vfe dependencies
run: npm ci && npm run build-bundle
- name: Link vue-form-elements
run: npm link
########################################
# Checkout and Build screen-builder
########################################
- name: Get screen-builder-version from PR body
uses: actions-ecosystem/action-regex-match@v2
id: screen-builder-version
with:
text: ${{ github.event.pull_request.body }}
regex: 'ci:screen-builder:([^\s]+)'
- name: Set env variable SCREEN_BUILDER_BRANCH (default=develop)
run: |
export SCREEN_BUILDER_BRANCH='develop'
if [[ ${{ contains(github.event.pull_request.body, 'ci:next') }} ]]; then
export SCREEN_BUILDER_BRANCH=next
fi
if [[ ${{ steps.screen-builder-version.outputs.match != '' }} ]]; then
export SCREEN_BUILDER_BRANCH=${{ steps.screen-builder-version.outputs.group1 }}
fi
echo "SCREEN_BUILDER_BRANCH=${SCREEN_BUILDER_BRANCH}" >> $GITHUB_ENV
- name: Checkout screen-builder
uses: actions/checkout@v4
with:
repository: ProcessMaker/screen-builder
path: screen-builder
ref: ${{ env.SCREEN_BUILDER_BRANCH }}
- name: Link vue-form-elements
working-directory: screen-builder
run: npm link @processmaker/vue-form-elements
- name: Install screen-builder dependencies
working-directory: screen-builder
run: npm ci && npm run build-bundle
########################################
# Run Cypress tests in parallel
########################################
- name: Cypress run
uses: cypress-io/github-action@v6
with:
working-directory: screen-builder
browser: chrome
install: false
start: npm run dev
wait-on: 'http://localhost:5173/'
config-file: cypress.config.js
spec: "tests/e2e/**/*"
record: true
parallel: true # Habilita el paralelismo
group: "CI - Chrome - Container ${{ matrix.containers }}" # Identificar grupo de pruebas por contenedor
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }}
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }}
- name: Upload Cypress Screenshots
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: screen-builder/tests/e2e/screenshots
- name: Upload Cypress Videos
uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-videos
path: screen-builder/tests/e2e/videos
- name: Prepare coverage
working-directory: screen-builder
run: cp .nyc_output/out.json coverage/coverage-${{ matrix.containers }}.json
- name: Archive code coverage
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.containers }}
path: ./screen-builder/coverage/coverage-${{ matrix.containers }}.json
- name: Create coverage report
working-directory: screen-builder
run: npx nyc report --reporter html --reporter text --reporter json-summary --reporter lcov --report-dir coverage
- name: Store Artifacts
uses: actions/upload-artifact@v4
with:
name: code-coverage-report
path: |
coverage
.nyc_output
reports
- uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}