name: frontend on: push: branches: - master paths: - ".github/workflows/ci-frontend.yml" - "frontend/**" - "!**.md" pull_request: paths: - ".github/workflows/ci-frontend.yml" - "frontend/**" - "!**.md" jobs: translations-check: name: Translations check runs-on: ubuntu-latest permissions: contents: read strategy: matrix: node: [24] steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6.0.10 with: version: 10.10.0 run_install: false - name: Install node uses: actions/setup-node@v7 with: node-version: ${{ matrix.node }} cache: "pnpm" cache-dependency-path: frontend/pnpm-lock.yaml - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: ./frontend - name: Translations check run: pnpm translation-check working-directory: ./frontend/apps/remark42 type-check: name: Type check runs-on: ubuntu-latest permissions: contents: read strategy: matrix: node: [24] steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6.0.10 with: version: 10.10.0 run_install: false - name: Install node uses: actions/setup-node@v7 with: node-version: ${{ matrix.node }} cache: "pnpm" cache-dependency-path: frontend/pnpm-lock.yaml - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: ./frontend - name: Run type check run: pnpm type-check working-directory: ./frontend/apps/remark42 lint: name: Eslint & Stylelint runs-on: ubuntu-latest permissions: contents: read strategy: matrix: node: [24] steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6.0.10 with: version: 10.10.0 run_install: false - name: Install node uses: actions/setup-node@v7 with: node-version: ${{ matrix.node }} cache: "pnpm" cache-dependency-path: frontend/pnpm-lock.yaml - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: ./frontend - name: Run linters run: pnpm lint working-directory: ./frontend/apps/remark42 size-limit: name: Size limit runs-on: ubuntu-latest if: github.event_name == 'pull_request' permissions: contents: read pull-requests: write env: CI_JOB_NUMBER: 1 steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6.0.10 with: version: 10.10.0 run_install: false - name: Check bundle size uses: andresz1/size-limit-action@94bc357df29c36c8f8d50ea497c3e225c3c95d1d with: github_token: ${{ secrets.GITHUB_TOKEN }} directory: ./frontend/apps/remark42 package_manager: pnpm test: name: Tests & Coverage runs-on: ubuntu-latest permissions: contents: read strategy: matrix: node: [24] steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6.0.10 with: version: 10.10.0 run_install: false - name: Install node uses: actions/setup-node@v7 with: node-version: ${{ matrix.node }} cache: "pnpm" cache-dependency-path: frontend/pnpm-lock.yaml - name: Install dependencies run: pnpm install --frozen-lockfile working-directory: ./frontend - name: Test & Coverage run: pnpm coverage working-directory: ./frontend/apps/remark42 - name: Upload coverage to Codecov uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} working-directory: ./frontend/apps/remark42 codecov_yml_path: ./frontend/apps/remark42/codecov.yml