feat: track generation jobs
This commit is contained in:
@@ -72,23 +72,26 @@ story_json="$(post_json "$APP_URL/api/generations" '{
|
||||
}')"
|
||||
story_id="$(jq -r '.id' <<<"$story_json")"
|
||||
assert_jq "$story_json" '.mode == "generated" and .generation_status == "narrative_ready"' "story should be readable before assets"
|
||||
echo "$story_json" | jq '{id,title,mode,generation_status,image_status,audio_status}'
|
||||
assert_jq "$story_json" '(.retryable_assets | index("image")) != null and (.retryable_assets | index("audio")) != null' "story should expose image/audio as retryable assets"
|
||||
echo "$story_json" | jq '{id,title,mode,generation_status,image_status,audio_status,retryable_assets}'
|
||||
|
||||
say "Retrying story cover image"
|
||||
story_image_json="$(post_json "$APP_URL/api/generations/$story_id/retry-assets" '{"assets":["image"]}')"
|
||||
assert_jq "$story_image_json" '.image_status == "ready" and (.image_url != null)' "story cover should be ready after retry"
|
||||
echo "$story_image_json" | jq '{id,title,generation_status,image_status,audio_status}'
|
||||
assert_jq "$story_image_json" '(.retryable_assets | index("image")) == null and (.retryable_assets | index("audio")) != null' "story image retry should leave only audio retryable"
|
||||
echo "$story_image_json" | jq '{id,title,generation_status,image_status,audio_status,retryable_assets}'
|
||||
|
||||
if [[ "$SMOKE_AUDIO" == "1" ]]; then
|
||||
say "Retrying story audio"
|
||||
story_audio_json="$(post_json "$APP_URL/api/generations/$story_id/retry-assets" '{"assets":["audio"]}')"
|
||||
assert_jq "$story_audio_json" '.audio_status == "ready"' "story audio should be ready after retry"
|
||||
assert_jq "$story_audio_json" '(.retryable_assets | length) == 0' "story should have no retryable assets after image and audio are ready"
|
||||
audio_probe="$(curl -fsS -b "$COOKIE_JAR" -o /tmp/dreamweaver-smoke-audio.mp3 -w '%{http_code} %{content_type} %{size_download}' "$APP_URL/api/audio/$story_id")"
|
||||
if [[ "$audio_probe" != 200\ audio/mpeg* ]]; then
|
||||
echo "Unexpected audio response: $audio_probe" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "$story_audio_json" | jq '{id,title,generation_status,image_status,audio_status}'
|
||||
echo "$story_audio_json" | jq '{id,title,generation_status,image_status,audio_status,retryable_assets}'
|
||||
else
|
||||
say "Skipping audio smoke; set SMOKE_AUDIO=1 to include TTS"
|
||||
fi
|
||||
@@ -104,17 +107,19 @@ storybook_json="$(post_json "$APP_URL/api/generations" '{
|
||||
}')"
|
||||
storybook_id="$(jq -r '.id' <<<"$storybook_json")"
|
||||
assert_jq "$storybook_json" '.mode == "storybook" and .image_status == "not_requested" and (.pages | length) >= 4' "storybook should be readable before images"
|
||||
echo "$storybook_json" | jq '{id,title,mode,generation_status,image_status,audio_status,pages:(.pages | length)}'
|
||||
assert_jq "$storybook_json" '(.retryable_assets | index("image")) != null and (.retryable_assets | index("audio")) == null' "storybook should expose images as retryable assets"
|
||||
echo "$storybook_json" | jq '{id,title,mode,generation_status,image_status,audio_status,retryable_assets,pages:(.pages | length)}'
|
||||
|
||||
say "Retrying storybook images"
|
||||
storybook_image_json="$(post_json "$APP_URL/api/generations/$storybook_id/retry-assets" '{"assets":["image"]}')"
|
||||
assert_jq "$storybook_image_json" '.image_status == "ready" and (.pages | length) >= 4 and ([.pages[] | select(.image_url != null)] | length) == (.pages | length)' "storybook images should be ready after retry"
|
||||
echo "$storybook_image_json" | jq '{id,title,generation_status,image_status,audio_status,pages:(.pages | length), ready_pages:([.pages[] | select(.image_url != null)] | length)}'
|
||||
assert_jq "$storybook_image_json" '(.retryable_assets | length) == 0' "storybook should have no retryable assets after images are ready"
|
||||
echo "$storybook_image_json" | jq '{id,title,generation_status,image_status,audio_status,retryable_assets,pages:(.pages | length), ready_pages:([.pages[] | select(.image_url != null)] | length)}'
|
||||
|
||||
say "Checking story list"
|
||||
list_json="$(get_json "$APP_URL/api/stories?limit=5")"
|
||||
assert_jq "$list_json" "map(.id) | index($story_id) != null" "story list should include generated story"
|
||||
assert_jq "$list_json" "map(.id) | index($storybook_id) != null" "story list should include generated storybook"
|
||||
echo "$list_json" | jq '.[] | {id,title,mode,generation_status,image_status,audio_status}'
|
||||
echo "$list_json" | jq '.[] | {id,title,mode,generation_status,image_status,audio_status,retryable_assets}'
|
||||
|
||||
say "DreamWeaver demo smoke passed"
|
||||
|
||||
Reference in New Issue
Block a user