kestra-io/kestra · error · TourSceneError
onboarding.tour.errors.test_event
Error message
onboarding.tour.errors.test_event
What it means
Thrown by the onboarding tour when the test-event webhook send fails. The tour calls actions.sendTestEvent(TOUR_TEST_EVENT_PAYLOAD) and, if the HTTP response is not ok, raises TourSceneError with the i18n key 'onboarding.tour.errors.test_event' and the failing HTTP status. The message key is resolved by vue-i18n at display time; the raw key surfaces only if translation is missing.
Source
Thrown at ui/src/components/onboarding/tour/tourScenes.ts:248
store.setTourState({eventExecutionId: null, eventWatchSince: new Date().toISOString()})
await actions.openTriggersTab()
},
poll: async ({actions, store}) => {
const since = store.state.tour.eventWatchSince
if (!since) {
return false
}
const executionId = await actions.findEventExecution(since)
if (!executionId) {
return false
}
store.setTourState({eventExecutionId: executionId, lastExecutionId: executionId})
return true
},
action: async ({actions}) => {
const result = await actions.sendTestEvent(TOUR_TEST_EVENT_PAYLOAD)
if (!result.ok) {
throw new TourSceneError("onboarding.tour.errors.test_event", {status: result.status})
}
if (result.executionId) {
await actions.waitForExecution(result.executionId)
}
},
completedByUser: ({store}) => Boolean(store.state.tour.eventExecutionId),
},
{
id: "event_execution",
step: 3,
milestone: true,
confetti: true,
offersExit: true,
enter: async ({actions, store}) => {
const executionId = store.state.tour.eventExecutionId
if (executionId) {
await actions.openExecution(executionId)
returnView on GitHub (pinned to 823fada927)
Solutions
- Open browser devtools Network tab and inspect the failing POST to the webhook/trigger URL — read the response status/body for the real cause.
- Verify the Kestra backend is reachable from the browser and the tour flow + webhook trigger exist in the tour namespace.
- If a proxy sits in front, allowlist the webhook trigger path and confirm it does not strip headers or block POSTs.
- Retry the tour scene after fixing backend connectivity; if it persists, file a tour-flow issue with the captured status code.
Defensive patterns
Strategy: try-catch
Validate before calling
// Before sending, sanity-check the tour flow + webhook exist
const flow = await flowStore.loadFlow({namespace: TOUR_NAMESPACE, id: TOUR_FLOW_ID});
if (!flow || !flow.triggers?.some(t => t.type === 'io.kestra.plugin.core.trigger.Webhook')) {
throw new Error('Tour webhook trigger is missing');
} Try / catch
try {
const result = await actions.sendTestEvent(TOUR_TEST_EVENT_PAYLOAD);
if (!result.ok) {
throw new TourSceneError('onboarding.tour.errors.test_event', {status: result.status});
}
} catch (e) {
// surface the status to the user, offer retry
showTourError(t('onboarding.tour.errors.test_event'), {status: e.status, retry: true});
} Prevention
- Verify the tour flow and its webhook trigger are deployed before starting the tour.
- Capture the failing HTTP status so the error message is actionable.
- Offer a retry control in the tour UI rather than dead-ending.
When it happens
Trigger: Tour 'test_event' scene action runs actions.sendTestEvent(...), the backend POST returns a non-2xx status (or network/transport failure yields result.ok === false), and TourSceneError is thrown with {status: result.status}.
Common situations: The tour webhook trigger endpoint is unreachable (backend down, wrong base URL), the webhook key is invalid/expired, the server rejects the test payload (validation, auth, CSRF), or a reverse proxy returns 4xx/5xx for the trigger route.
Related errors
- onboarding.tour.errors.save_flow
- onboarding.tour.errors.no_execution_to_replay
- Couldn't write the request body as YAML
- Unsupported content type
- Failed to execute HTTP Request, server respond with status {
AI-assisted analysis of kestra-io/kestra@823fada927 (2026-08-14).
Data as JSON: /api/errors/340fde584d06d7aa.
Report an issue: GitHub.