Skip to content

feat(ui): add list-level ui.listView config (initialColumns + initialSort) #1150

feat(ui): add list-level ui.listView config (initialColumns + initialSort)

feat(ui): add list-level ui.listView config (initialColumns + initialSort) #1150

Workflow file for this run

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'