Skip to content

ci: fix VERCEL_WORKFLOW_SERVER_* env var ternary on main#1859

Merged
TooTallNate merged 2 commits intomainfrom
ci/fix-workflow-server-env-ternary
Apr 28, 2026
Merged

ci: fix VERCEL_WORKFLOW_SERVER_* env var ternary on main#1859
TooTallNate merged 2 commits intomainfrom
ci/fix-workflow-server-env-ternary

Conversation

@TooTallNate
Copy link
Copy Markdown
Member

Summary

Fixes broken e2e CI on main introduced by #1824.

In GitHub Actions expressions, empty string '' is falsy. The previous expression

${{ github.ref == 'refs/heads/main' && '' || secrets.VERCEL_WORKFLOW_SERVER_URL }}

always fell through to the secret on both branches: on main, true && '' → '', then '' || secrets.X → secrets.X. So pushes to main were sending the preview workflow-server URL/bypass values into production e2e runs, which caused world-vercel to set x-vercel-workflow-api-url: <preview-url> on calls to api.vercel.com. The API rejected those with invalid_url, cascading into ~all e2e tests failing on every push to main since #1824 merged.

Fix

Flip the condition so the secret sits in the truthy branch — || then correctly selects '' on main:

${{ github.ref != 'refs/heads/main' && secrets.VERCEL_WORKFLOW_SERVER_URL || '' }}

Notes

In GitHub Actions expressions, '' is falsy, so the original
`cond && '' || secrets.X` pattern always fell through to the secret
regardless of branch. The result was that pushes to main were sending
preview workflow-server values to production, causing 'invalid_url'
errors on `x-vercel-workflow-api-url` across all e2e jobs.

Flip the condition so the secret sits in the truthy branch and ||
correctly selects '' on main.
Copilot AI review requested due to automatic review settings April 27, 2026 23:24
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Apr 27, 2026 11:33pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Apr 27, 2026 11:33pm
example-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-astro-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-express-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-fastify-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-hono-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-nitro-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-nuxt-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workbench-vite-workflow Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Apr 27, 2026 11:33pm
workflow-swc-playground Ready Ready Preview, Comment Apr 27, 2026 11:33pm
workflow-web Ready Ready Preview, Comment Apr 27, 2026 11:33pm

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 27, 2026

⚠️ No Changeset found

Latest commit: cecd8b0

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 27, 2026

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.036s (-19.4% 🟢) 1.005s (~) 0.969s 10 1.00x
💻 Local Nitro 0.042s (-3.7%) 1.005s (~) 0.963s 10 1.16x
💻 Local Next.js (Turbopack) 0.047s 1.005s 0.958s 10 1.31x
🐘 Postgres Next.js (Turbopack) 0.059s 1.011s 0.952s 10 1.66x
🐘 Postgres Express 0.061s (+4.7%) 1.009s (~) 0.949s 10 1.70x
🐘 Postgres Nitro 0.064s (-33.1% 🟢) 1.009s (-3.2%) 0.946s 10 1.78x
workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 1.093s (-2.9%) 2.006s (~) 0.913s 10 1.00x
💻 Local Next.js (Turbopack) 1.116s 2.006s 0.890s 10 1.02x
💻 Local Nitro 1.130s (~) 2.005s (~) 0.875s 10 1.03x
🐘 Postgres Nitro 1.140s (~) 2.010s (~) 0.870s 10 1.04x
🐘 Postgres Next.js (Turbopack) 1.143s 2.009s 0.866s 10 1.05x
🐘 Postgres Express 1.149s (~) 2.011s (~) 0.862s 10 1.05x
workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 10.641s (-2.6%) 11.022s (~) 0.381s 3 1.00x
💻 Local Next.js (Turbopack) 10.778s 11.023s 0.245s 3 1.01x
🐘 Postgres Nitro 10.886s (~) 11.024s (~) 0.139s 3 1.02x
🐘 Postgres Next.js (Turbopack) 10.887s 11.019s 0.132s 3 1.02x
🐘 Postgres Express 10.929s (~) 11.026s (~) 0.097s 3 1.03x
💻 Local Nitro 10.941s (~) 11.024s (~) 0.083s 3 1.03x
workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 14.222s (-5.0%) 15.028s (~) 0.806s 4 1.00x
🐘 Postgres Nitro 14.441s (-1.1%) 15.021s (~) 0.581s 4 1.02x
🐘 Postgres Next.js (Turbopack) 14.536s 15.023s 0.488s 4 1.02x
💻 Local Next.js (Turbopack) 14.566s 15.031s 0.465s 4 1.02x
🐘 Postgres Express 14.737s (+1.1%) 15.272s (+1.7%) 0.535s 4 1.04x
💻 Local Nitro 14.979s (-0.6%) 15.280s (-4.7%) 0.301s 4 1.05x
workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 13.901s 14.162s 0.261s 7 1.00x
🐘 Postgres Nitro 13.939s (~) 14.448s (+1.0%) 0.509s 7 1.00x
🐘 Postgres Express 14.386s (+2.7%) 15.024s (+3.0%) 0.638s 6 1.03x
💻 Local Express 14.809s (-10.8% 🟢) 15.027s (-11.8% 🟢) 0.218s 6 1.07x
💻 Local Next.js (Turbopack) 15.865s 16.196s 0.330s 6 1.14x
💻 Local Nitro 16.422s (-2.2%) 17.032s (~) 0.610s 6 1.18x
Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.242s 2.010s 0.767s 15 1.00x
🐘 Postgres Nitro 1.257s (-1.4%) 2.010s (~) 0.753s 15 1.01x
🐘 Postgres Express 1.262s (~) 2.010s (~) 0.748s 15 1.02x
💻 Local Express 1.436s (-3.6%) 2.005s (~) 0.569s 15 1.16x
💻 Local Nitro 1.481s (-9.2% 🟢) 2.005s (-3.3%) 0.524s 15 1.19x
💻 Local Next.js (Turbopack) 1.555s 2.073s 0.517s 15 1.25x
Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.337s (-1.0%) 3.008s (~) 0.671s 10 1.00x
🐘 Postgres Nitro 2.366s (+0.7%) 3.009s (~) 0.642s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.389s 3.009s 0.620s 10 1.02x
💻 Local Express 2.640s (-10.6% 🟢) 3.008s (-12.9% 🟢) 0.368s 10 1.13x
💻 Local Nitro 2.711s (-13.8% 🟢) 3.008s (-22.6% 🟢) 0.297s 10 1.16x
💻 Local Next.js (Turbopack) 2.796s 3.341s 0.546s 9 1.20x
Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.461s (-0.5%) 4.010s (~) 0.550s 8 1.00x
🐘 Postgres Express 3.472s (~) 4.013s (~) 0.541s 8 1.00x
🐘 Postgres Next.js (Turbopack) 3.652s 4.009s 0.357s 8 1.06x
💻 Local Next.js (Turbopack) 6.907s 7.519s 0.611s 4 2.00x
💻 Local Express 7.050s (-15.4% 🟢) 7.515s (-16.7% 🟢) 0.465s 4 2.04x
💻 Local Nitro 7.439s (-10.9% 🟢) 8.023s (-11.1% 🟢) 0.584s 4 2.15x
Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.213s 2.008s 0.796s 15 1.00x
🐘 Postgres Nitro 1.257s (~) 2.007s (~) 0.750s 15 1.04x
🐘 Postgres Express 1.273s (+1.3%) 2.008s (~) 0.735s 15 1.05x
💻 Local Express 1.471s (-22.3% 🟢) 2.005s (-15.2% 🟢) 0.534s 15 1.21x
💻 Local Next.js (Turbopack) 1.513s 2.007s 0.494s 15 1.25x
💻 Local Nitro 1.523s (-18.4% 🟢) 2.006s (-14.3% 🟢) 0.483s 15 1.26x
Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.313s (-1.1%) 3.010s (~) 0.697s 10 1.00x
🐘 Postgres Express 2.343s (~) 3.010s (~) 0.666s 10 1.01x
🐘 Postgres Next.js (Turbopack) 2.393s 3.008s 0.614s 10 1.03x
💻 Local Express 2.784s (-11.1% 🟢) 3.007s (-20.1% 🟢) 0.223s 10 1.20x
💻 Local Nitro 2.886s (-5.8% 🟢) 3.209s (-17.4% 🟢) 0.322s 10 1.25x
💻 Local Next.js (Turbopack) 2.894s 3.454s 0.561s 9 1.25x
Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.462s (-0.5%) 4.011s (~) 0.549s 8 1.00x
🐘 Postgres Express 3.495s (~) 4.012s (~) 0.517s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.662s 4.010s 0.348s 8 1.06x
💻 Local Express 7.862s (-10.7% 🟢) 8.265s (-10.9% 🟢) 0.404s 4 2.27x
💻 Local Next.js (Turbopack) 8.004s 8.266s 0.262s 4 2.31x
💻 Local Nitro 8.179s (-10.6% 🟢) 9.024s (-10.0% 🟢) 0.844s 4 2.36x
workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.697s (-29.2% 🟢) 1.021s (-5.1% 🟢) 0.324s 59 1.00x
🐘 Postgres Next.js (Turbopack) 0.771s 1.006s 0.235s 60 1.11x
🐘 Postgres Nitro 0.827s (+0.9%) 1.023s (+1.6%) 0.195s 59 1.19x
🐘 Postgres Express 0.838s (~) 1.006s (-1.7%) 0.168s 60 1.20x
💻 Local Next.js (Turbopack) 0.845s 1.021s 0.177s 59 1.21x
💻 Local Nitro 1.019s (+4.0%) 1.800s (+64.5% 🔺) 0.780s 34 1.46x
workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.901s 2.030s 0.129s 45 1.00x
🐘 Postgres Nitro 1.933s (~) 2.150s (+2.4%) 0.218s 42 1.02x
🐘 Postgres Express 2.054s (+3.9%) 2.797s (+23.9% 🔺) 0.743s 33 1.08x
💻 Local Express 2.226s (-26.2% 🟢) 3.008s (-16.1% 🟢) 0.782s 30 1.17x
💻 Local Next.js (Turbopack) 2.631s 3.008s 0.377s 30 1.38x
💻 Local Nitro 3.040s (~) 3.729s (-0.8%) 0.688s 25 1.60x
workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.869s (-5.7% 🟢) 4.010s (-12.9% 🟢) 0.141s 30 1.00x
🐘 Postgres Next.js (Turbopack) 3.997s 4.251s 0.254s 29 1.03x
🐘 Postgres Express 4.077s (+2.2%) 4.742s (+8.5% 🔺) 0.664s 26 1.05x
💻 Local Express 7.256s (-21.2% 🟢) 8.015s (-20.0% 🟢) 0.759s 15 1.88x
💻 Local Next.js (Turbopack) 8.342s 8.874s 0.532s 14 2.16x
💻 Local Nitro 9.154s (-1.6%) 9.633s (-3.9%) 0.479s 13 2.37x
workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.255s 1.007s 0.752s 60 1.00x
🐘 Postgres Express 0.282s (~) 1.007s (~) 0.726s 60 1.10x
🐘 Postgres Nitro 0.284s (~) 1.007s (~) 0.723s 60 1.11x
💻 Local Next.js (Turbopack) 0.529s 1.004s 0.475s 60 2.08x
💻 Local Express 0.579s (+3.3%) 1.004s (~) 0.425s 60 2.27x
💻 Local Nitro 0.598s (-1.1%) 1.004s (-1.7%) 0.406s 60 2.34x
workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.476s 1.006s 0.530s 90 1.00x
🐘 Postgres Nitro 0.488s (-1.6%) 1.007s (~) 0.518s 90 1.02x
🐘 Postgres Express 0.505s (-1.0%) 1.007s (~) 0.502s 90 1.06x
💻 Local Nitro 2.358s (-7.1% 🟢) 3.008s (~) 0.650s 30 4.95x
💻 Local Next.js (Turbopack) 2.453s 3.008s 0.555s 30 5.15x
💻 Local Express 2.605s (+3.7%) 3.180s (+5.7% 🔺) 0.575s 29 5.47x
workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.757s 1.006s 0.250s 120 1.00x
🐘 Postgres Nitro 0.790s (~) 1.008s (~) 0.217s 120 1.04x
🐘 Postgres Express 0.802s (-2.0%) 1.008s (-0.9%) 0.206s 120 1.06x
💻 Local Next.js (Turbopack) 10.140s 10.689s 0.549s 12 13.40x
💻 Local Express 10.369s (-7.3% 🟢) 11.022s (-7.7% 🟢) 0.652s 11 13.70x
💻 Local Nitro 10.487s (-6.3% 🟢) 11.028s (-5.5% 🟢) 0.541s 11 13.86x
Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.140s (-29.7% 🟢) 1.004s (~) 0.010s (-19.0% 🟢) 1.015s (~) 0.875s 10 1.00x
💻 Local Next.js (Turbopack) 0.175s 1.002s 0.010s 1.016s 0.841s 10 1.25x
🐘 Postgres Next.js (Turbopack) 0.192s 1.000s 0.001s 1.009s 0.817s 10 1.37x
🐘 Postgres Nitro 0.205s (~) 0.992s (-0.7%) 0.002s (~) 1.010s (~) 0.805s 10 1.46x
💻 Local Nitro 0.206s (-3.6%) 1.004s (~) 0.010s (-18.4% 🟢) 1.016s (~) 0.810s 10 1.47x
🐘 Postgres Express 0.214s (+4.4%) 0.998s (~) 0.001s (-37.5% 🟢) 1.011s (~) 0.797s 10 1.53x
stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.588s (-22.3% 🟢) 1.012s (-1.6%) 0.009s (-1.0%) 1.023s (-1.6%) 0.435s 59 1.00x
🐘 Postgres Nitro 0.605s (-3.1%) 1.023s (+1.6%) 0.004s (-2.9%) 1.039s (+1.6%) 0.434s 58 1.03x
🐘 Postgres Express 0.634s (+0.7%) 1.022s (+1.6%) 0.004s (+4.9%) 1.039s (+1.6%) 0.405s 58 1.08x
🐘 Postgres Next.js (Turbopack) 0.639s 1.026s 0.006s 1.047s 0.408s 58 1.09x
💻 Local Next.js (Turbopack) 0.678s 1.011s 0.009s 1.023s 0.345s 59 1.15x
💻 Local Nitro 0.758s (-9.6% 🟢) 1.012s (~) 0.010s (+3.5%) 1.023s (-8.3% 🟢) 0.265s 59 1.29x
10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.906s 1.072s 0.000s 1.079s 0.172s 56 1.00x
🐘 Postgres Nitro 0.949s (-2.0%) 1.168s (-6.4% 🟢) 0.000s (-52.9% 🟢) 1.184s (-5.9% 🟢) 0.235s 51 1.05x
🐘 Postgres Express 0.960s (~) 1.196s (-6.4% 🟢) 0.000s (-8.0% 🟢) 1.208s (-7.5% 🟢) 0.248s 50 1.06x
💻 Local Express 1.175s (-4.1%) 2.018s (~) 0.000s (+30.0% 🔺) 2.020s (~) 0.845s 30 1.30x
💻 Local Nitro 1.229s (~) 2.021s (~) 0.000s (+233.3% 🔺) 2.023s (~) 0.795s 30 1.36x
💻 Local Next.js (Turbopack) 1.265s 2.021s 0.000s 2.024s 0.759s 30 1.40x
fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 1.719s (-3.0%) 2.067s (-5.1% 🟢) 0.000s (NaN%) 2.104s (-4.3%) 0.385s 29 1.00x
🐘 Postgres Nitro 1.751s (-2.3%) 2.140s (~) 0.000s (-100.0% 🟢) 2.152s (-1.0%) 0.402s 28 1.02x
🐘 Postgres Next.js (Turbopack) 1.856s 2.142s 0.000s 2.149s 0.293s 29 1.08x
💻 Local Nitro 3.400s (~) 4.035s (~) 0.000s (-37.5% 🟢) 4.037s (~) 0.637s 15 1.98x
💻 Local Express 3.508s (+1.2%) 4.031s (~) 0.001s (-8.3% 🟢) 4.034s (~) 0.526s 15 2.04x
💻 Local Next.js (Turbopack) 3.560s 4.101s 0.001s 4.105s 0.545s 15 2.07x

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Express 16/21
🐘 Postgres Next.js (Turbopack) 11/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 14/21
Next.js (Turbopack) 🐘 Postgres 17/21
Nitro 🐘 Postgres 19/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 27, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 978 0 67 1045
❌ 💻 Local Development 900 2 48 950
✅ 📦 Local Production 902 0 48 950
✅ 🐘 Local Postgres 902 0 48 950
✅ 🪟 Windows 95 0 0 95
✅ 📋 Other 267 0 18 285
Total 4044 2 229 4275

❌ Failed Tests

💻 Local Development (2 failed)

vite-stable (2 failed):

  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 88 0 7
✅ example 88 0 7
✅ express 88 0 7
✅ fastify 88 0 7
✅ hono 88 0 7
✅ nextjs-turbopack 93 0 2
✅ nextjs-webpack 93 0 2
✅ nitro 88 0 7
✅ nuxt 88 0 7
✅ sveltekit 88 0 7
✅ vite 88 0 7
❌ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
❌ vite-stable 87 2 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 🪟 Windows
App Passed Failed Skipped
✅ nextjs-turbopack 95 0 0
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 89 0 6
✅ e2e-local-postgres-nest-stable 89 0 6
✅ e2e-local-prod-nest-stable 89 0 6

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: success
  • Local Dev: failure
  • Local Prod: failure
  • Local Postgres: failure
  • Windows: success

Check the workflow run for details.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a GitHub Actions expression bug that caused main branch E2E runs to incorrectly use preview workflow-server override/bypass values, breaking world-vercel-backed E2E CI on main.

Changes:

  • Updates the GitHub Actions expression used to populate VERCEL_WORKFLOW_SERVER_URL and VERCEL_WORKFLOW_SERVER_PROTECTION_BYPASS so that main resolves to '' and non-main resolves to the corresponding secret.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

The Get Test Matrix and Get Community Worlds Matrix jobs only run a
small Node script to emit a JSON matrix; they never run `pnpm install`.
With `cache: 'pnpm'` set on actions/setup-node, the post-job cache save
step fails with 'Path Validation Error' because the pnpm store path was
never created, marking the whole job as failed.

Add a cache-pnpm input to setup-workflow-dev (default true) and opt out
in the two matrix-generation jobs.
@TooTallNate TooTallNate merged commit 28dc089 into main Apr 28, 2026
344 of 475 checks passed
@TooTallNate TooTallNate deleted the ci/fix-workflow-server-env-ternary branch April 28, 2026 17:26
ijjk pushed a commit that referenced this pull request Apr 28, 2026
* ci: fix VERCEL_WORKFLOW_SERVER_* ternary so main actually unsets them

In GitHub Actions expressions, '' is falsy, so the original
`cond && '' || secrets.X` pattern always fell through to the secret
regardless of branch. The result was that pushes to main were sending
preview workflow-server values to production, causing 'invalid_url'
errors on `x-vercel-workflow-api-url` across all e2e jobs.

Flip the condition so the secret sits in the truthy branch and ||
correctly selects '' on main.

* ci: skip pnpm cache in matrix-generation jobs

The Get Test Matrix and Get Community Worlds Matrix jobs only run a
small Node script to emit a JSON matrix; they never run `pnpm install`.
With `cache: 'pnpm'` set on actions/setup-node, the post-job cache save
step fails with 'Path Validation Error' because the pnpm store path was
never created, marking the whole job as failed.

Add a cache-pnpm input to setup-workflow-dev (default true) and opt out
in the two matrix-generation jobs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants