2025-10-23 12:07:52 +03:00
|
|
|
{
|
|
|
|
|
"$schema": "https://turborepo.com/schema.json",
|
|
|
|
|
"ui": "tui",
|
|
|
|
|
"tasks": {
|
|
|
|
|
"build": {
|
|
|
|
|
"dependsOn": ["^build"],
|
Refactor e2e tests to no longer use "trigger" endpoint (#958)
## Summary
Refactors the E2E tests to call `start()` from `workflow/api` directly instead of going through the `/api/trigger` HTTP endpoint in each workbench app. This removes a layer of indirection — the tests now use the same API that users would use to start workflows programmatically.
### Before
```ts
const run = await triggerWorkflow('addTenWorkflow', [123]);
const returnValue = await getWorkflowReturnValue(run.runId);
```
- `triggerWorkflow()` sent an HTTP POST to `/api/trigger` on the workbench app
- The workbench app looked up the workflow function, called `start()`, and returned the run ID
- `getWorkflowReturnValue()` polled `GET /api/trigger?runId=...` until the workflow completed
### After
```ts
const run = await start(await e2e('addTenWorkflow'), [123]);
const returnValue = await run.returnValue;
```
- `e2e()` / `getWorkflowMetadata()` fetches the manifest from `/.well-known/workflow/v1/manifest.json` to look up the correct `workflowId`
- `start()` is called directly from the test process via the configured World
- `run.returnValue` polls for completion via the World (no HTTP polling endpoint needed)
### Changes
**`packages/core/e2e/e2e.test.ts`**
- Removed `triggerWorkflow()` and `getWorkflowReturnValue()` helpers
- Added `fetchManifest()` to fetch and cache the workflow manifest from the deployment
- Added `getWorkflowMetadata(file, fn)` to look up `{ workflowId }` from the manifest
- Added `e2e(fn)` shorthand for the common case of `workflows/99_e2e.ts`
- All tests call `start()` and `run.returnValue` directly
- Error tests use `.catch()` to inspect `WorkflowRunFailedError`
- Output stream tests use `run.getReadable()` directly (skipped on local world where cross-process streaming isn't supported)
- `beforeAll` configures the local World with the correct data directory and base URL
- Pages Router tests use `startWorkflowViaHttp()` to specifically validate the HTTP trigger path
**Workbench apps (hono, express, fastify, nest)**
- Removed `/api/trigger` route handlers
- Kept `/api/hook`, `/api/test-direct-step-call`, `/api/test-health-check` endpoints
- Re-added `_workflows.js` side-effect import for hono/express/fastify to maintain Nitro's HMR dependency graph
**Deleted trigger-only route files** from: nextjs-turbopack, nextjs-webpack, vite, sveltekit, astro, nuxt, nitro-v2, nitro-v3, example
**`.github/workflows/tests.yml`**
- Added `WORKFLOW_PUBLIC_MANIFEST: '1'` to all E2E test jobs
### Dependencies
Stacked on #963 which adds `WORKFLOW_PUBLIC_MANIFEST` support to all framework builders.
2026-02-06 16:25:47 -08:00
|
|
|
"env": ["WORKFLOW_PUBLIC_MANIFEST"],
|
2026-01-08 14:39:50 -08:00
|
|
|
"inputs": [
|
|
|
|
|
"$TURBO_DEFAULT$",
|
|
|
|
|
"$TURBO_ROOT$/packages/tsconfig/base.json",
|
|
|
|
|
"$TURBO_ROOT$/pnpm-workspace.yaml",
|
|
|
|
|
"$TURBO_ROOT$/.node-version"
|
|
|
|
|
],
|
2025-11-29 21:21:49 -08:00
|
|
|
"outputs": [
|
|
|
|
|
"dist/**",
|
|
|
|
|
"build",
|
|
|
|
|
".svelte-kit",
|
|
|
|
|
".vercel/output",
|
|
|
|
|
".output/**"
|
|
|
|
|
]
|
2025-10-23 12:07:52 +03:00
|
|
|
},
|
|
|
|
|
"dev": {
|
2025-11-24 13:35:43 -08:00
|
|
|
"dependsOn": ["^build"],
|
|
|
|
|
"cache": false
|
2025-10-23 12:07:52 +03:00
|
|
|
},
|
|
|
|
|
"typecheck": {
|
2025-11-24 13:35:43 -08:00
|
|
|
"dependsOn": ["^build"],
|
|
|
|
|
"cache": false
|
2025-10-23 12:07:52 +03:00
|
|
|
},
|
|
|
|
|
"test": {
|
2025-11-24 13:35:43 -08:00
|
|
|
"dependsOn": ["^build"],
|
|
|
|
|
"cache": false
|
2025-10-23 12:07:52 +03:00
|
|
|
},
|
|
|
|
|
"clean": {
|
|
|
|
|
"cache": false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|