Skip to content

feat(core): ctx.raw.argv, render helpers, dynamic fullscreen #65

feat(core): ctx.raw.argv, render helpers, dynamic fullscreen

feat(core): ctx.raw.argv, render helpers, dynamic fullscreen #65

Workflow file for this run

# ──────────────────────────────────────────────────────────────
# CI Integration Tests
# ──────────────────────────────────────────────────────────────
#
# Platform notes:
#
# macos-15-intel — Paid runner ($0.062/min, no free tier).
# This is the last Intel macOS image GitHub
# will offer, available until August 2027.
# After that, x86_64 macOS is unsupported.
#
# Missing platforms (not testable with standard GitHub runners):
#
# linux-arm64 — GitHub does not offer ARM64 Linux runners
# in the standard tier. Available only as
# "larger runners" which require a paid
# GitHub Teams or Enterprise plan.
#
# linux-x64-musl — Standard ubuntu-latest runners use glibc.
# Testing musl would require a container-based
# job (e.g. alpine:latest), but kidd produces
# a standalone binary so the glibc test on
# ubuntu-latest provides sufficient coverage
# for the Linux x64 code path. The musl
# binary is a link-time variant, not a
# separate code path.
# ──────────────────────────────────────────────────────────────
name: 'ci-integration'
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- packages/**
- examples/**
- tests/**
- vitest.config.ts
- package.json
- pnpm-lock.yaml
- turbo.json
- .github/workflows/ci-integration.yml
push:
branches: [main]
paths:
- packages/**
- examples/**
- tests/**
- vitest.config.ts
- package.json
- pnpm-lock.yaml
- turbo.json
- .github/workflows/ci-integration.yml
concurrency:
group: ci-integration-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build:
name: 'Setup & Build'
runs-on: macos-latest
if: ${{ !github.event.pull_request.draft }}
timeout-minutes: 15
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
steps:
- name: 'Checkout code'
uses: actions/checkout@v5
- name: 'Setup pnpm'
uses: pnpm/action-setup@v4
- name: 'Setup Node.js'
uses: actions/setup-node@v5
with:
node-version: '24'
cache: 'pnpm'
- name: 'Setup Bun'
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: 'Install dependencies'
run: pnpm install --frozen-lockfile
- name: 'Build packages'
run: pnpm build
- name: 'Rebuild bin links'
run: pnpm install --frozen-lockfile
- name: 'Build examples (all platforms)'
run: pnpm turbo run build --filter='./examples/*'
- name: 'Upload build artifacts'
uses: actions/upload-artifact@v4
with:
name: examples-dist
retention-days: 1
path: |
examples/*/dist
examples/*/cli/dist
test-os:
name: 'Integration / ${{ matrix.name }}'
needs: build
timeout-minutes: 10
strategy:
fail-fast: true
matrix:
include:
- os: macos-latest
name: macOS ARM
- os: macos-15-intel
name: macOS Intel
- os: ubuntu-latest
name: Linux x64
- os: windows-latest
name: Windows x64
runs-on: ${{ matrix.os }}
steps:
- name: 'Checkout code'
uses: actions/checkout@v5
- name: 'Setup pnpm'
uses: pnpm/action-setup@v4
- name: 'Setup Node.js'
uses: actions/setup-node@v5
with:
node-version: '24'
cache: 'pnpm'
- name: 'Install dependencies'
run: pnpm install --frozen-lockfile
- name: 'Download build artifacts'
uses: actions/download-artifact@v4
with:
name: examples-dist
path: examples
- name: 'Restore binary permissions'
if: runner.os != 'Windows'
run: |
find examples -path '*/dist/*' -type f ! -name '*.mjs' ! -name '*.map' ! -name '*.exe' -exec chmod +x {} +
find examples -name '*.mjs' -path '*/dist/*' -type f -exec chmod +x {} +
- name: 'Run integration tests'
run: pnpm test:integration