Adds upload-artifact steps after each test run to preserve test results as GitHub artifacts. Each job uploads its report.xml with a unique name based on the job and matrix configuration. Artifacts are uploaded even when tests fail (if: always()) to ensure test results are available for debugging. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>