fix: 修復 E2E 測試 - 添加 xvfb-run server-args 和改進錯誤處理
This commit is contained in:
parent
699fca4e78
commit
2b584dc909
1 changed files with 21 additions and 11 deletions
32
.github/workflows/release.yml
vendored
32
.github/workflows/release.yml
vendored
|
|
@ -343,9 +343,10 @@ jobs:
|
||||||
# 測試 1: Inkscape SVG → PNG(使用 xvfb-run)
|
# 測試 1: Inkscape SVG → PNG(使用 xvfb-run)
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔄 測試 Inkscape: SVG → PNG"
|
echo "🔄 測試 Inkscape: SVG → PNG"
|
||||||
|
INKSCAPE_RESULT="❌"
|
||||||
docker exec verify-test sh -c '
|
docker exec verify-test sh -c '
|
||||||
echo "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"red\"/></svg>" > /tmp/test.svg
|
echo "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"red\"/></svg>" > /tmp/test.svg
|
||||||
xvfb-run -a inkscape --export-type=png --export-filename=/tmp/test.png /tmp/test.svg 2>/dev/null
|
timeout 120 xvfb-run -a --server-args="-screen 0 1024x768x24" inkscape --export-type=png --export-filename=/tmp/test.png /tmp/test.svg 2>&1 || true
|
||||||
if [ -f /tmp/test.png ]; then
|
if [ -f /tmp/test.png ]; then
|
||||||
echo "✅ Inkscape SVG → PNG 成功"
|
echo "✅ Inkscape SVG → PNG 成功"
|
||||||
ls -la /tmp/test.png
|
ls -la /tmp/test.png
|
||||||
|
|
@ -353,7 +354,7 @@ jobs:
|
||||||
echo "❌ Inkscape SVG → PNG 失敗"
|
echo "❌ Inkscape SVG → PNG 失敗"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
' || FAILED=1
|
' && INKSCAPE_RESULT="✓" || FAILED=1
|
||||||
|
|
||||||
# 測試 2: Pandoc Markdown → HTML(純 CLI,不需要 xvfb)
|
# 測試 2: Pandoc Markdown → HTML(純 CLI,不需要 xvfb)
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -373,9 +374,10 @@ jobs:
|
||||||
# 測試 3: LibreOffice TXT → PDF(使用 xvfb-run)
|
# 測試 3: LibreOffice TXT → PDF(使用 xvfb-run)
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔄 測試 LibreOffice: TXT → PDF"
|
echo "🔄 測試 LibreOffice: TXT → PDF"
|
||||||
|
LIBREOFFICE_RESULT="❌"
|
||||||
docker exec verify-test sh -c '
|
docker exec verify-test sh -c '
|
||||||
echo "Test document content" > /tmp/test.txt
|
echo "Test document content" > /tmp/test.txt
|
||||||
xvfb-run -a libreoffice --headless --convert-to pdf --outdir /tmp /tmp/test.txt 2>/dev/null
|
timeout 120 xvfb-run -a --server-args="-screen 0 1024x768x24" libreoffice --headless --convert-to pdf --outdir /tmp /tmp/test.txt 2>&1 || true
|
||||||
if [ -f /tmp/test.pdf ]; then
|
if [ -f /tmp/test.pdf ]; then
|
||||||
echo "✅ LibreOffice TXT → PDF 成功"
|
echo "✅ LibreOffice TXT → PDF 成功"
|
||||||
ls -la /tmp/test.pdf
|
ls -la /tmp/test.pdf
|
||||||
|
|
@ -383,7 +385,7 @@ jobs:
|
||||||
echo "❌ LibreOffice TXT → PDF 失敗"
|
echo "❌ LibreOffice TXT → PDF 失敗"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
' || FAILED=1
|
' && LIBREOFFICE_RESULT="✓" || FAILED=1
|
||||||
|
|
||||||
# 測試 4: FFmpeg 音頻轉換(純 CLI)
|
# 測試 4: FFmpeg 音頻轉換(純 CLI)
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -402,9 +404,10 @@ jobs:
|
||||||
# 測試 5: Calibre HTML → EPUB(使用 xvfb-run)
|
# 測試 5: Calibre HTML → EPUB(使用 xvfb-run)
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔄 測試 Calibre: HTML → EPUB"
|
echo "🔄 測試 Calibre: HTML → EPUB"
|
||||||
|
CALIBRE_RESULT="❌"
|
||||||
docker exec verify-test sh -c '
|
docker exec verify-test sh -c '
|
||||||
echo "<!DOCTYPE html><html><body><h1>Test Book</h1><p>Content</p></body></html>" > /tmp/book.html
|
echo "<!DOCTYPE html><html><body><h1>Test Book</h1><p>Content</p></body></html>" > /tmp/book.html
|
||||||
xvfb-run -a ebook-convert /tmp/book.html /tmp/book.epub 2>/dev/null
|
timeout 120 xvfb-run -a --server-args="-screen 0 1024x768x24" ebook-convert /tmp/book.html /tmp/book.epub 2>&1 || true
|
||||||
if [ -f /tmp/book.epub ]; then
|
if [ -f /tmp/book.epub ]; then
|
||||||
echo "✅ Calibre HTML → EPUB 成功"
|
echo "✅ Calibre HTML → EPUB 成功"
|
||||||
ls -la /tmp/book.epub
|
ls -la /tmp/book.epub
|
||||||
|
|
@ -412,7 +415,7 @@ jobs:
|
||||||
echo "❌ Calibre HTML → EPUB 失敗"
|
echo "❌ Calibre HTML → EPUB 失敗"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
' || FAILED=1
|
' && CALIBRE_RESULT="✓" || FAILED=1
|
||||||
|
|
||||||
# 測試 6: Tesseract OCR(純 CLI)
|
# 測試 6: Tesseract OCR(純 CLI)
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -461,10 +464,17 @@ jobs:
|
||||||
# 測試 9: API 健康檢查
|
# 測試 9: API 健康檢查
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔄 測試 API 端點"
|
echo "🔄 測試 API 端點"
|
||||||
if docker exec verify-test curl -sf http://localhost:3000/healthcheck | grep -q "OK"; then
|
API_RESULT="❌"
|
||||||
|
HEALTH_RESPONSE=$(docker exec verify-test curl -sf http://localhost:3000/healthcheck 2>/dev/null || echo "")
|
||||||
|
if echo "$HEALTH_RESPONSE" | grep -qi "ok\|healthy\|success"; then
|
||||||
echo "✅ Healthcheck API 正常"
|
echo "✅ Healthcheck API 正常"
|
||||||
|
echo "Response: $HEALTH_RESPONSE"
|
||||||
|
API_RESULT="✓"
|
||||||
else
|
else
|
||||||
echo "❌ Healthcheck API 失敗"
|
echo "❌ Healthcheck API 失敗"
|
||||||
|
echo "Response: $HEALTH_RESPONSE"
|
||||||
|
# 嘗試顯示更多調試信息
|
||||||
|
docker exec verify-test curl -v http://localhost:3000/healthcheck 2>&1 || true
|
||||||
FAILED=1
|
FAILED=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -473,14 +483,14 @@ jobs:
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo "📊 E2E 測試摘要"
|
echo "📊 E2E 測試摘要"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo "✓ Inkscape: SVG → PNG (xvfb-run)"
|
echo "${INKSCAPE_RESULT:-❌} Inkscape: SVG → PNG (xvfb-run)"
|
||||||
echo "✓ Pandoc: Markdown → HTML"
|
echo "✓ Pandoc: Markdown → HTML"
|
||||||
echo "✓ LibreOffice: TXT → PDF (xvfb-run)"
|
echo "${LIBREOFFICE_RESULT:-❌} LibreOffice: TXT → PDF (xvfb-run)"
|
||||||
echo "✓ FFmpeg: 音頻 + 影片"
|
echo "✓ FFmpeg: 音頻 + 影片"
|
||||||
echo "✓ Calibre: HTML → EPUB (xvfb-run)"
|
echo "${CALIBRE_RESULT:-❌} Calibre: HTML → EPUB (xvfb-run)"
|
||||||
echo "✓ Tesseract: OCR"
|
echo "✓ Tesseract: OCR"
|
||||||
echo "✓ Resvg: SVG → PNG"
|
echo "✓ Resvg: SVG → PNG"
|
||||||
echo "✓ API: Healthcheck"
|
echo "${API_RESULT:-❌} API: Healthcheck"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
if [ $FAILED -eq 0 ]; then
|
if [ $FAILED -eq 0 ]; then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue