| name: Frontend |
| |
| on: |
| push: |
| branches: |
| - "master" |
| - "[0-9].[0-9]*" |
| pull_request: |
| types: [synchronize, opened, reopened, ready_for_review] |
| |
| # 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-22.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 for file changes |
| id: check |
| uses: ./.github/actions/change-detector/ |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| - name: Setup Node.js |
| if: steps.check.outputs.frontend |
| uses: actions/setup-node@v4 |
| with: |
| node-version: "20" |
| - name: Install dependencies |
| if: steps.check.outputs.frontend |
| uses: ./.github/actions/cached-dependencies |
| with: |
| run: npm-install |
| - name: eslint |
| if: steps.check.outputs.frontend |
| working-directory: ./superset-frontend |
| run: | |
| npm run eslint -- . --quiet |
| - name: tsc |
| if: steps.check.outputs.frontend |
| working-directory: ./superset-frontend |
| run: | |
| npm run type |
| - name: Build plugins packages |
| if: steps.check.outputs.frontend |
| working-directory: ./superset-frontend |
| run: npm run plugins:build |
| - name: Build plugins Storybook |
| if: steps.check.outputs.frontend |
| working-directory: ./superset-frontend |
| run: npm run plugins:build-storybook |
| - name: superset-ui/core coverage |
| if: steps.check.outputs.frontend |
| working-directory: ./superset-frontend |
| run: | |
| npm run core:cover |
| - name: unit tests |
| if: steps.check.outputs.frontend |
| 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.outputs.frontend |
| working-directory: ./superset-frontend/packages/generator-superset |
| run: npm run test |
| - name: Upload code coverage |
| uses: codecov/codecov-action@v4 |
| with: |
| flags: javascript |
| token: ${{ secrets.CODECOV_TOKEN }} |
| verbose: true |