Files
orca/config/scripts/pr-workflow-parallelism.test.mjs
T
Neil ac156c0302 perf(ci): overlap Bun typechecking and skip redundant alias scans (#27382)
* perf(ci): skip unnecessary alias scans and compare preflight compilers

* perf(ci): overlap measured Bun typechecking with static checks

* perf(ci): use measured Bun lint runtime and strengthen compiler parity checks
2026-10-10 22:48:25 -07:00

58 lines
2.4 KiB
JavaScript

import { readFileSync } from 'node:fs'
import { runInNewContext } from 'node:vm'
import { parse } from 'yaml'
import { describe, expect, it } from 'vitest'
const workflow = parse(readFileSync('.github/workflows/pr.yml', 'utf8'))
const unitTestWorkflow = parse(readFileSync('.github/workflows/unit-tests.yml', 'utf8'))
describe('PR workflow parallelism', () => {
it('enforces process-host boundaries in the required static-analysis checks', () => {
const guard = workflow.jobs.preflight.steps.find((step) =>
step.run?.includes('bun --bun run check:process-host-imports')
)
expect(guard?.if).toBe('!cancelled()')
expect(guard?.env.PREFLIGHT_PHASE_SELECTED).toBe(
"${{ needs.code_paths.outputs.static_analysis == 'true' }}"
)
expect(guard?.background).toBe(true)
const typecheckIndex = workflow.jobs.preflight.steps.findIndex(
(step) => step.wait === 'typecheck'
)
const waitIndex = workflow.jobs.preflight.steps.findIndex((step) => step.wait === guard.id)
expect(waitIndex).toBeGreaterThan(typecheckIndex)
expect(guard?.['continue-on-error']).toBeUndefined()
})
it('keeps advisory unit-selection evidence off the gate', () => {
// It is continue-on-error, so it can never fail a PR. Living inside unit-tests.yml made a
// caller's `needs: test` wait for it anyway, holding verify ~36s past the last shard. Pinned
// here so it cannot drift back onto the critical path.
const evidence = workflow.jobs.unit_selection_evidence
expect(evidence.uses).toBe('./.github/workflows/unit-selection-evidence.yml')
expect(evidence.needs).toEqual(['test'])
for (const [result, cancelled, expected] of [
['success', false, true],
['failure', false, true],
['skipped', false, false],
['cancelled', false, false],
['success', true, false],
['failure', true, false]
]) {
expect(
runInNewContext(evidence.if.slice(3, -2), {
cancelled: () => cancelled,
needs: { test: { result } }
})
).toBe(expected)
}
expect(workflow.jobs.verify.needs).not.toContain('unit_selection_evidence')
expect(unitTestWorkflow.jobs.selection_evidence).toBeUndefined()
const evidenceWorkflow = parse(
readFileSync('.github/workflows/unit-selection-evidence.yml', 'utf8')
)
const job = evidenceWorkflow.jobs.selection_evidence
expect(job['continue-on-error']).toBe(true)
})
})