diff --git a/.buildkite/ci.mjs b/.buildkite/ci.mjs index 224642f86f29..aba15736e6bf 100755 --- a/.buildkite/ci.mjs +++ b/.buildkite/ci.mjs @@ -186,8 +186,9 @@ const testPlatforms = [ // The darwin test suite runs on real macOS agents against the Linux-built // artifacts from the `darwin--build-bun` steps (the only darwin build // lanes — see buildPlatforms). - // All three darwin test lanes run on main and on opt-in only for now (see - // darwinTestsEnabled): the mac agent pool cannot keep up with PR volume. + // These three version-specific lanes run on main and on opt-in (see + // darwinTestsEnabled). PR builds instead get one aarch64 lane that any mac + // agent can take (prDarwinTestPlatforms), so the whole arm64 pool serves PRs. { os: "darwin", arch: "aarch64", release: "26", tier: "latest" }, { os: "darwin", arch: "aarch64", release: "14", tier: "previous" }, { os: "darwin", arch: "x64", release: "14", tier: "latest" }, @@ -409,7 +410,7 @@ function getTestAgent(platform, options) { queue: `test-${os}`, os, arch, - ...(arch === "aarch64" ? { "release-tier": tier } : {}), + ...(arch === "aarch64" && tier ? { "release-tier": tier } : {}), }; } @@ -1543,11 +1544,16 @@ async function getPipeline(options = {}) { // Tests run on main too so the canary release step below can gate on them. // ASAN is PR-only (see includeASAN above), so the asan test lane is dropped // on main along with its build. + // Untiered: any arm64 mac agent, whatever macOS it runs, can take it. + /** @type {Platform[]} */ + const prDarwinTestPlatforms = [{ os: "darwin", arch: "aarch64", release: "any" }]; const darwinTestsEnabled = isMainBranch() || isBuildManual() || /\[(macos|darwin) tests?\]/i.test(getCommitMessage()); const relevantTestPlatforms = ( includeASAN ? testPlatforms : testPlatforms.filter(({ profile }) => profile !== "asan") - ).filter(({ os }) => os !== "darwin" || darwinTestsEnabled); + ) + .filter(({ os }) => os !== "darwin" || darwinTestsEnabled) + .concat(darwinTestsEnabled ? [] : prDarwinTestPlatforms); /** @type {string[]} */ const testStepKeys = []; {