Improve CI test transparency with dual-stream output

- Separate progress output (stderr) from JSON results (stdout)
- Add timestamps, test counters, and step progress to executor
- Update CLI to use stderr for progress messages
- Update workflow to capture JSON to file while showing progress
- Add --silent flag to suppress npm banner noise

This allows real-time visibility into test execution during CI runs
while preserving clean JSON output for artifact collection.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Shang Chieh Tseng
2025-12-15 17:50:32 +08:00
parent 45e1e6c8b7
commit 54248f42b0
3 changed files with 83 additions and 34 deletions

View File

@@ -29,7 +29,10 @@ jobs:
id: build-tests
run: |
cd tests
npm run dev -- run --suite build --no-llm --output json > /tmp/build-results.json 2>&1 || true
# Progress goes to stderr (visible), JSON results go to file
npm run --silent dev -- run --suite build --no-llm --output json > /tmp/build-results.json || true
echo "--- JSON Results ---"
cat /tmp/build-results.json
# Check if any tests failed
@@ -73,7 +76,10 @@ jobs:
id: runtime-tests
run: |
cd tests
npm run dev -- run --suite runtime --no-llm --output json > /tmp/runtime-results.json 2>&1 || true
# Progress goes to stderr (visible), JSON results go to file
npm run --silent dev -- run --suite runtime --no-llm --output json > /tmp/runtime-results.json || true
echo "--- JSON Results ---"
cat /tmp/runtime-results.json
- name: Upload runtime results
@@ -104,7 +110,10 @@ jobs:
id: inference-tests
run: |
cd tests
npm run dev -- run --suite inference --no-llm --output json > /tmp/inference-results.json 2>&1 || true
# Progress goes to stderr (visible), JSON results go to file
npm run --silent dev -- run --suite inference --no-llm --output json > /tmp/inference-results.json || true
echo "--- JSON Results ---"
cat /tmp/inference-results.json
- name: Upload inference results
@@ -143,7 +152,10 @@ jobs:
echo "Running LLM judge evaluation..."
# Re-run all tests with LLM judge using local Ollama
npm run dev -- run --output json > /tmp/llm-judged-results.json 2>&1 || true
# Progress goes to stderr (visible), JSON results go to file
npm run --silent dev -- run --output json > /tmp/llm-judged-results.json || true
echo "--- JSON Results ---"
cat /tmp/llm-judged-results.json
- name: Upload final results