Skip to content

feat: add a multiselect option for lists #1528

feat: add a multiselect option for lists

feat: add a multiselect option for lists #1528

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
lint-typecheck:
name: Lint & Typecheck
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Install web dependencies
# web/ is a separate Bun project with its own lockfile. `tsc -b` follows
# the project reference into web/tsconfig.json, so its node_modules
# (e.g. @testing-library/dom) must be present for the typecheck to resolve.
run: cd web && bun install --frozen-lockfile
- name: Lint (oxlint)
run: oxlint .
- name: Typecheck
run: tsc -b
test-unit:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Run backend unit tests
run: just test-backend
- name: Run web unit tests
run: just test-web
test-build:
name: Build Verification
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build Electron app
run: just build
test-e2e:
name: E2E Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Ensure Electron binary is installed
run: node node_modules/electron/install.js
- name: Fix Electron chrome-sandbox permissions
run: |
sudo chown root:root node_modules/electron/dist/chrome-sandbox
sudo chmod 4755 node_modules/electron/dist/chrome-sandbox
- name: Get Playwright version
id: pw-version
run: echo "version=$(bunx playwright --version | awk '{print $2}')" >> "$GITHUB_OUTPUT"
- name: Cache Playwright browsers
id: pw-cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ steps.pw-version.outputs.version }}
- name: Install Playwright browsers
if: steps.pw-cache.outputs.cache-hit != 'true'
run: bunx playwright install --with-deps chromium
- name: Install Playwright system deps
if: steps.pw-cache.outputs.cache-hit == 'true'
run: bunx playwright install-deps chromium
- name: Build Electron app
run: just build
- name: Install Xvfb
run: sudo apt-get install -y xvfb
- name: Run E2E tests
run: xvfb-run --auto-servernum just test-e2e-run
- name: Upload Playwright report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: ${{ !cancelled() }}
with:
name: playwright-results
path: |
web/test-results/
electron/e2e/test-results/
retention-days: 30
if-no-files-found: ignore
test-runbooks:
name: Runbook Tests
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Compile test CLI
run: just compile-test-cli
- name: Configure AWS credentials via OIDC
uses: aws-actions/configure-aws-credentials@7474bc4690e29a8392af63c5b98e7449536d5c3a # v4.3.1
with:
role-to-assume: ${{ secrets.RUNBOOKS_TEST_AWS_ROLE_ARN }}
aws-region: us-west-2
- name: Export test credentials
env:
ORIG_KEY_ID: ${{ env.AWS_ACCESS_KEY_ID }}
ORIG_SECRET: ${{ env.AWS_SECRET_ACCESS_KEY }}
ORIG_TOKEN: ${{ env.AWS_SESSION_TOKEN }}
ORIG_REGION: ${{ env.AWS_REGION }}
run: |
echo "RUNBOOKS_TEST_AWS_ACCESS_KEY_ID=${ORIG_KEY_ID}" >> "$GITHUB_ENV"
echo "RUNBOOKS_TEST_AWS_SECRET_ACCESS_KEY=${ORIG_SECRET}" >> "$GITHUB_ENV"
echo "RUNBOOKS_TEST_AWS_SESSION_TOKEN=${ORIG_TOKEN}" >> "$GITHUB_ENV"
echo "RUNBOOKS_TEST_AWS_REGION=${ORIG_REGION}" >> "$GITHUB_ENV"
- name: Run runbook tests
env:
RUNBOOKS_GITHUB_TOKEN: ${{ secrets.RUNBOOKS_GITHUB_TOKEN }}
run: resources/bin/runbooks-test test testdata/...
test-runbooks-app-token:
name: Runbook Tests (GitHub App Token)
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Compile test CLI
run: just compile-test-cli
- name: Run GitHub auth flows with installation token
env:
# No RUNBOOKS_GITHUB_TOKEN: force the executor's fallback chain
# (RUNBOOKS_GITHUB_TOKEN -> GITHUB_TOKEN -> GH_TOKEN) to land on the
# ghs_ installation token, exercising validateInstallationToken.
GITHUB_TOKEN: ${{ github.token }}
run: resources/bin/runbooks-test test testdata/feature-demos/github-auth/...
test-docs:
name: Documentation Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: jdx/mise-action@c37c93293d6b742fc901e1406b8f764f6fb19dac # v2.4.4
- name: Run docs tests
run: just test-docs
ci-summary:
name: CI Summary
needs:
[
lint-typecheck,
test-unit,
test-build,
test-e2e,
test-runbooks,
test-runbooks-app-token,
test-docs,
]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check results
env:
LINT_RESULT: ${{ needs.lint-typecheck.result }}
UNIT_RESULT: ${{ needs.test-unit.result }}
BUILD_RESULT: ${{ needs.test-build.result }}
E2E_RESULT: ${{ needs.test-e2e.result }}
RUNBOOKS_RESULT: ${{ needs.test-runbooks.result }}
RUNBOOKS_APP_RESULT: ${{ needs.test-runbooks-app-token.result }}
DOCS_RESULT: ${{ needs.test-docs.result }}
run: |
for result in "$LINT_RESULT" "$UNIT_RESULT" "$BUILD_RESULT" "$E2E_RESULT" "$RUNBOOKS_RESULT" "$RUNBOOKS_APP_RESULT" "$DOCS_RESULT"; do
if [ "$result" != "success" ] && [ "$result" != "skipped" ]; then
echo "CI failed!"
exit 1
fi
done
echo "All checks passed!"