feat(ui): add list-level ui.listView config (initialColumns + initialSort) #1150
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| pull_request: | |
| branches: [main] | |
| # Cancel any in-progress run for the same PR/branch when a new push arrives. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup project | |
| uses: ./.github/actions/setup | |
| - name: Ensure package version consistency | |
| run: pnpm manypkg check | |
| - name: Lint codebase | |
| run: pnpm lint | |
| - name: Check format | |
| run: pnpm format:check | |
| - name: Run tests | |
| run: turbo run test | |
| env: | |
| OPENAI_API_KEY: 'sk-testing-key' | |
| DATABASE_URL: 'file:./dev.db' | |
| - name: Run tests with coverage | |
| run: turbo run test:coverage | |
| env: | |
| OPENAI_API_KEY: 'sk-testing-key' | |
| DATABASE_URL: 'file:./dev.db' | |
| - name: Install Playwright browsers | |
| uses: ./.github/actions/playwright | |
| - name: Run browser tests with coverage | |
| working-directory: ./packages/ui | |
| run: pnpm test:browser:coverage | |
| - name: Upload coverage artifacts | |
| if: github.event_name == 'pull_request' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-reports | |
| path: | | |
| packages/*/coverage/ | |
| retention-days: 1 | |
| - name: Upload browser test screenshots | |
| if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: browser-test-screenshots | |
| path: packages/ui/tests/browser/**/__screenshots__/ | |
| retention-days: 7 | |
| e2e: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup project | |
| uses: ./.github/actions/setup | |
| - name: Build packages | |
| run: > | |
| turbo run build | |
| --filter=@opensaas/stack-core | |
| --filter=@opensaas/stack-auth | |
| --filter=@opensaas/stack-ui | |
| --filter=@opensaas/stack-cli | |
| --filter=create-opensaas-app | |
| # Isolated first-run guard: scaffold the real CLI into an OS temp dir and | |
| # run generate + db:push against the workspace toolchain (no network | |
| # install). Opt-in via RUN_SCAFFOLD_GUARD so it stays out of the fast unit | |
| # lane. See ADR-0002 and packages/create-opensaas-app/tests/scaffold-first-run-guard.test.ts. | |
| - name: Run scaffold first-run guard | |
| run: pnpm --filter create-opensaas-app test run scaffold-first-run-guard | |
| env: | |
| RUN_SCAFFOLD_GUARD: '1' | |
| DATABASE_URL: 'file:./dev.db' | |
| - name: Install Playwright browsers | |
| uses: ./.github/actions/playwright | |
| # Cache the starter-auth Next.js build that Playwright's webServer compiles, | |
| # so the production build is incremental instead of a full ~3 min build each run. | |
| - name: Cache Next.js build | |
| uses: actions/cache@v5 | |
| with: | |
| path: examples/starter-auth/.next/cache | |
| key: ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('examples/starter-auth/**/*.{js,jsx,ts,tsx}') }} | |
| restore-keys: | | |
| ${{ runner.os }}-nextjs-${{ hashFiles('pnpm-lock.yaml') }}- | |
| - name: Run E2E tests | |
| run: pnpm test:e2e | |
| env: | |
| CI: true | |
| DATABASE_URL: 'file:./dev.db' | |
| BETTER_AUTH_URL: http://localhost:3000 | |
| BETTER_AUTH_SECRET: 'secret-for-teating-in-github-actions-with-numbers1234' | |
| NEXT_PUBLIC_APP_URL: 'http://localhost:3000' | |
| - name: Upload Playwright report | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 7 | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: test-results | |
| path: test-results/ | |
| retention-days: 7 | |
| coverage: | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| needs: test | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Download coverage artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: coverage-reports | |
| path: packages/ | |
| - name: Report coverage for Core Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/core | |
| name: 'Core Package Coverage' | |
| - name: Report coverage for UI Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/ui | |
| name: 'UI Package Coverage' | |
| - name: Report coverage for CLI Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/cli | |
| name: 'CLI Package Coverage' | |
| - name: Report coverage for Auth Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/auth | |
| name: 'Auth Package Coverage' | |
| - name: Report coverage for Storage Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/storage | |
| name: 'Storage Package Coverage' | |
| - name: Report coverage for RAG Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/rag | |
| name: 'RAG Package Coverage' | |
| - name: Report coverage for Storage S3 Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/storage-s3 | |
| name: 'Storage S3 Package Coverage' | |
| - name: Report coverage for Storage Vercel Package | |
| uses: davelosert/vitest-coverage-report-action@v2 | |
| with: | |
| working-directory: ./packages/storage-vercel | |
| name: 'Storage Vercel Package Coverage' |