name: Frontend on: push: branches: - "master" - "[0-9].[0-9]" paths: - "superset-frontend/**" pull_request: types: [synchronize, opened, reopened, ready_for_review] paths: - "superset-frontend/**" # cancel previous workflow jobs for PRs concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: true jobs: frontend-build: runs-on: ubuntu-20.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" uses: actions/checkout@v4 with: persist-credentials: false submodules: recursive - name: Check npm lock file version run: ./scripts/ci_check_npm_lock_version.sh ./superset-frontend/package-lock.json - name: Check if frontend changes are present id: check env: GITHUB_REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }} continue-on-error: true run: ./scripts/ci_check_no_file_changes.sh frontend - name: Setup Node.js if: steps.check.outcome == 'failure' uses: actions/setup-node@v4 with: node-version: "16" - name: Install dependencies if: steps.check.outcome == 'failure' uses: ./.github/actions/cached-dependencies with: run: npm-install - name: eslint if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: | npm run eslint -- . --quiet - name: tsc if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: | npm run type - name: prettier if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: | npm run prettier-check - name: Build plugins packages if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: npm run plugins:build - name: Build plugins Storybook if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: npm run plugins:build-storybook - name: superset-ui/core coverage if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: | npm run core:cover - name: unit tests if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: | npm run test -- --coverage --silent # todo: remove this step when fix generator as a project in root jest.config.js - name: generator-superset unit tests if: steps.check.outcome == 'failure' working-directory: ./superset-frontend/packages/generator-superset run: npx jest - name: Upload code coverage if: steps.check.outcome == 'failure' working-directory: ./superset-frontend run: ../.github/workflows/codecov.sh -c -F javascript