Skip to content

0.1.13

0.1.13 #64

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
- master
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Run lint
run: npm run lint
compatibility:
name: Compatibility (Node ${{ matrix.node }})
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
node:
- '18'
- '20'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Run test suite
run: npm test
release-surface:
name: Release Surface (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 20
needs:
- lint
- compatibility
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Typecheck
run: npm run typecheck
- name: Check npm package payload
run: npm run pack:check
- name: Verify VS Code extension scaffold
run: |
node -e "const pkg=require('./packages/themis-vscode/package.json'); if (pkg.main !== './src/extension.js') throw new Error('Unexpected VS Code extension entrypoint'); if (!pkg.contributes?.views?.themis?.length) throw new Error('Missing Themis results view'); console.log('VS Code extension scaffold looks valid.');"
- name: Generate human HTML report and agent payload
run: |
NO_COLOR=1 node bin/themis.js test --reporter html
mkdir -p .themis/runs
NO_COLOR=1 node bin/themis.js test --agent > .themis/runs/agent-result.json
test -f __themis__/reports/report.html
test -f .themis/runs/agent-result.json
test -f .themis/runs/last-run.json
test -f .themis/diffs/run-diff.json
test -f .themis/diffs/contract-diff.json
- name: Upload showcase artifacts
uses: actions/upload-artifact@v4
with:
name: themis-showcase-node20
retention-days: 14
path: |
__themis__/reports/report.html
__themis__/reports/themis-bg.png
__themis__/reports/themis-report.png
.themis/runs/agent-result.json
.themis/runs/last-run.json
.themis/runs/failed-tests.json
.themis/diffs/run-diff.json
.themis/runs/run-history.json
packages/themis-vscode/package.json
packages/themis-vscode/README.md
- name: Benchmark proof
run: npm run benchmark
- name: Upload benchmark artifacts
uses: actions/upload-artifact@v4
with:
name: themis-benchmark-proof
retention-days: 14
path: |
.themis/benchmarks/benchmark-last.json
.themis/benchmarks/migration-proof.json
perf-gate:
name: Perf Gate (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 20
needs:
- lint
- compatibility
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Benchmark regression gate
env:
BENCH_MAX_AVG_MS: '2500'
run: npm run benchmark:gate
migration-proof:
name: Migration Proof (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 20
needs:
- lint
- compatibility
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Verify checked-in Jest/Vitest migration fixtures
run: npm run proof:migration
- name: Upload migration proof artifacts
uses: actions/upload-artifact@v4
with:
name: themis-migration-proof
retention-days: 14
path: |
.themis/migration/fixtures/**
themis-react-showcase:
name: Themis React Showcase (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 20
needs:
- lint
- compatibility
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Verify native Themis React fixture
run: node scripts/verify-showcase-fixture.js themis
- name: Upload Themis showcase summary
uses: actions/upload-artifact@v4
with:
name: themis-react-showcase
retention-days: 14
path: .themis/benchmarks/showcase-comparison/themis*
react-showcase-perf:
name: React Showcase Perf (Node 20)
runs-on: ubuntu-latest
timeout-minutes: 20
needs:
- lint
- compatibility
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
- name: Install dependencies
run: npm ci
- name: Benchmark same-spec React showcase runners
run: npm run benchmark:showcase
- name: Publish runner benchmark summary
run: cat .themis/benchmarks/showcase-comparison/perf-summary.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload React showcase perf artifact
uses: actions/upload-artifact@v4
with:
name: themis-react-showcase-perf
retention-days: 14
path: |
.themis/benchmarks/showcase-comparison/perf-summary.json
.themis/benchmarks/showcase-comparison/perf-summary.md
.themis/benchmarks/showcase-comparison/themis*
.themis/benchmarks/showcase-comparison/jest*
.themis/benchmarks/showcase-comparison/vitest*