feat(test): expose stable JUnit and Allure artifacts - #52
Conversation
- specify native JUnit and Allure contracts - define report-authoritative terminal classification
- define TDD implementation tasks - require independent verification and Rust review
- distinguish JUnit and Allure outputs - retain supported test artifacts on success
- configure simultaneous native reports - inventory only materialized run outputs
- materialize JUnit and Allure fixture outputs\n- expose only existing retained artifact paths
- aggregate deterministic JUnit summaries - preserve test failures across nonzero exits
- attach existing run artifacts to post-setup interruptions - make test completion policies exhaustive
- cover CLI and MCP artifact contracts - document retained test diagnostics
- restore legacy artifact compatibility and retain build failures - secure runner log materialization and iterative artifact discovery - inventory optional diagnostics with deterministic typed paths
- reject source reparse points through verified no-follow handles - atomically replace logs with write-through MoveFileExW - preserve extended-length paths and add Windows guard coverage
- preserve no-build preflight before artifact allocation - retain build-first artifacts across infrastructure failures - align typed test errors and external artifact documentation
- publish timeout logs only when the regular file exists - validate exact text and JSON artifact paths across platforms
- expose Allure artifacts in text output and strengthen inventory assertions - run targeted Windows materialization and atomic replacement tests - document the expanded Windows contract coverage
- bound optional diagnostic inventory with directory fallbacks - document fixture hardening and lifetime waiver
- define TDD steps for bounded diagnostics - cover fixture hardening and verification gates
- cap diagnostic files across error details and screenshots - retain truncated category directories and document the contract
- remove positional assumptions from CLI and MCP fixtures
- fail fast when Vanessa fixture templates drift - remove duplicated setup and snapshot normalization
- propagate selector failures before artifact writes - cover reordered and missing report formats - document shared diagnostic inventory bounds
Warning Review limit reached
Next review available in: 36 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
WalkthroughИзменён контракт результатов тестов для YaXUnit и Vanessa: добавлены одновременные JUnit и Allure, стабильная инвентаризация артефактов, report-first классификация исходов, сохранение run-директорий и расширенные CLI/MCP-тесты. ChangesКонтракт и статусы
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Дополнительные review nitpicks исправлены в
Замечание по lifetime Targeted verification: artifact collector 5/5, CLI suite 30/30, затронутые MCP contracts 3/3. Полный результат Linux/Windows подтвердит CI ветки. |
Финальный review выявил и исправил ещё один fixture-safety edge case в Свежая локальная проверка HEAD: artifact collector 5/5, CLI suite 32/32, затронутые MCP contracts 3/3, |
Actionable comments posted: 1 🧹 Nitpick comments (8)
🤖 Prompt for all review comments with AI agents🪄 Autofix (Beta)Fix all unresolved CodeRabbit comments on this PR:
ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (19)
|
|
|
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
rg -n 'windows|cfg\(windows\)' .github/workflows -g '*.yml' | head -30Repository: alkoleft/v8-runner-rust Length of output: 642 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== workflow windows references =="
sed -n '20,135p' .github/workflows/ci.yml
sep='---'
sed -n '35,60p' .github/workflows/release.yml
echo
echo "== inspect materialize code context =="
fd -a 'run_tests.rs$|Cargo.toml$' . | sed 's#^\./##'
rg -n "materialize_vanessa_runner_log|open_file_no_follow|create_private_file|replace_file|windows-latest|windows" .github/src | head -200Repository: alkoleft/v8-runner-rust Length of output: 5113 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== run_tests outline/size =="
wc -l src/use_cases/run_tests.rs
ast-grep outline src/use_cases/run_tests.rs --match materialize_vanessa_runner_log --view expanded || true
echo
echo "== relevant run_tests.rs lines =="
sed -n '190,430p' src/use_cases/run_tests.rs
echo
echo "== CI script references =="
rg -n "run_tests|materialize|V8TR_CI_.*windows|windows|contract|happy" .github src scripts Cargo.toml | head -250Repository: alkoleft/v8-runner-rust Length of output: 30404 Добавьте Windows-coverage для Контур CI на 🤖 Prompt for AI Agents✅ Confirmed as addressed by @korolevpavel |
Исправлено в b5e5dff. Windows contract теперь не ограничивается cargo check: он запускает targeted runtime-тесты materialize_vanessa_runner_log и windows_atomic_replace_supports_extended_length_paths. Первый фильтр покрывает копирование байтов, fallback с заменой существующего runner.log через MoveFileExW и новый Windows-only reparse-source test, который проверяет отказ materialization и InvalidInput от open_file_no_follow; второй проверяет atomic replace на extended-length paths. Окончательное подтверждение даст Windows CI этого коммита. |
🐇 ✅ If you found this review helpful, would you consider giving us a shout-out on X? Thank you for using CodeRabbit! |
Summary
--no-buildcontract: file-infobase preflight runs before artifact allocation, while MCP remains build-firstCloses upstream #26
Verification
cargo fmt --all -- --checkcargo check --lockedcargo test --locked --test cli_test— 30 passedcargo test --locked --bin v8-runner use_cases::run_tests— 30 passedcargo test --locked --test architecture_guardrails— 5 passedcargo test --locked --bin v8-runner mcp::service::tests— 36 passedcargo test --locked --test mcp_stdio mcp_stdio_run_— 2 passedcargo test --locked --all-targets— 718 passed; the same 48 known macOS/sandbox-sensitive baseline failures remain (/private/varcanonicalization, denied local binds, EDT/interactive timing, and launch temp-log races); no issue test: возвращать JUnit/Allure/log как стабильные artifacts #26 test failedReview notes
windows-sys 0.61.2and covered by architecture guards; this macOS host could not execute the Windows path, so the repository Windows CI job is the runtime gateSummary by CodeRabbit