name: CI UI on: pull_request: merge_group: push: branches: [main] permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: changed-files-check: if: github.event_name == 'pull_request' uses: ./.github/workflows/changed-files.yaml with: files: | package.json yarn.lock packages/twenty-ui-deprecated/** packages/twenty-shared/** ui-task: needs: changed-files-check if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest strategy: matrix: task: [lint, typecheck, test] steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Run ${{ matrix.task }} run: npx nx ${{ matrix.task }} twenty-ui-deprecated ui-sb-build: needs: changed-files-check if: >- always() && (github.event_name == 'push' || needs.changed-files-check.outputs.any_changed == 'true') timeout-minutes: 30 runs-on: ubuntu-latest steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Build storybook run: npx nx storybook:build twenty-ui-deprecated - name: Upload storybook build uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: storybook-twenty-ui path: packages/twenty-ui-deprecated/storybook-static retention-days: 1 ui-sb-test: timeout-minutes: 30 runs-on: ubuntu-latest needs: ui-sb-build if: always() && needs.ui-sb-build.result == 'success' steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Build dependencies run: npx nx build twenty-shared - name: Download storybook build uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: name: storybook-twenty-ui path: packages/twenty-ui-deprecated/storybook-static - name: Install Playwright run: | cd packages/twenty-ui-deprecated npx playwright install - name: Run storybook tests run: npx nx storybook:test twenty-ui-deprecated - name: Upload screenshots for visual regression if: always() && !cancelled() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: argos-screenshots-twenty-ui path: packages/twenty-ui-deprecated/screenshots retention-days: 1 ci-ui-status-check: if: always() && !cancelled() timeout-minutes: 5 runs-on: ubuntu-latest needs: [changed-files-check, ui-task, ui-sb-build, ui-sb-test] steps: - name: Fail job if any needs failed if: contains(needs.*.result, 'failure') run: exit 1