render: add renderer baseline sweep reports#1312
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds baseline capture + parity reporting tooling for renderer transition hardening, and optimizes layered rendering by skipping replay planes that are not present in a layer tree.
Changes:
- Centralize “layer tree contains replay plane” detection in
paintand use it in both WebCanvas and Skia renderers. - Add baseline capture tooling (manifest + Python driver + Studio E2E scripts) to generate multi-backend artifacts and parity reports.
- Add a GitHub Actions workflow to run a full renderer sweep and upload artifacts.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/renderer/web_canvas.rs | Switches replay-plane presence check to shared paint helper. |
| src/renderer/skia/renderer.rs | Skips rendering replay planes that aren’t present in the layer tree. |
| src/paint/replay_order.rs | Introduces shared layer-tree replay-plane scan helpers + tests. |
| src/paint/mod.rs | Re-exports new replay-plane scan helpers from paint. |
| scripts/renderer_baseline_manifest.json | Adds representative baseline corpus manifest and per-sample thresholds. |
| scripts/renderer_baseline.py | Adds baseline capture driver (native exports + browser captures + reports). |
| rhwp-studio/package.json | Adds baseline E2E script and PNG diff dependencies. |
| rhwp-studio/e2e/renderer-baseline.mjs | Captures per-backend screenshots and generates Canvas2D↔CanvasKit parity report. |
| rhwp-studio/e2e/renderer-baseline-native-diff.mjs | Generates native-skia↔canvaskit parity report from captured artifacts. |
| rhwp-studio/e2e/helpers.mjs | Adds Chrome path resolution, canvas screenshot capture, and PNG diff utilities. |
| .github/workflows/full-renderer-sweep.yml | Adds workflow to run sweep + baseline capture and upload artifacts. |
Files not reviewed (1)
- rhwp-studio/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Owner
|
@seo-rii 감사합니다. PR #1312 검토 및 로컬 검증을 완료했습니다. 확인한 내용:
로컬 검증:
GitHub checks도 모두 통과 상태로 확인했습니다. 이 PR은 수용 방향으로 처리하겠습니다. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 내용
Full Renderer Sweepworkflow와scripts/renderer_baseline.py를 추가해서 legacy SVG, layer SVG, native Skia PNG, browser Canvas2D/CanvasKit 산출물을 같은 manifest 기준으로 수집할 수 있게 했습니다.scripts/renderer_baseline_manifest.json에는 리뷰 가능한 크기의 대표 샘플 20개만 남겼습니다. 문단/표/이미지/수식/머리말/각주/미주/field/control/exam/form/HWPX/mixed document를 최소 범위로 덮습니다.paint::replay_order의 shared helper로 옮기고, Skia/WebCanvas 경로가 같은 기준으로 empty replay plane을 건너뛰도록 정리했습니다.의도
P21은 빠른 PR gate를 더 무겁게 만드는 단계가 아니라, 큰 renderer 전환에서 문제가 났을 때 같은 입력 corpus를 기준으로 결과물을 모아 비교할 수 있는 수동 진단 파이프라인을 만드는 단계입니다. 기본 렌더링 경로를 바꾸지는 않고, 수동 workflow artifact와 로컬 baseline runner로 drift를 추적할 수 있게 하는 쪽에 초점을 뒀습니다.
비범위
pkg/,rhwp-studio/dist/, baseline output은 커밋하지 않습니다.검증
cargo fmt --all -- --checkcargo check --libcargo test replay_order --libnode --check rhwp-studio/e2e/helpers.mjsnode --check rhwp-studio/e2e/renderer-baseline.mjsnode --check rhwp-studio/e2e/renderer-baseline-native-diff.mjspython3 -m json.tool scripts/renderer_baseline_manifest.jsonpython3 scripts/renderer_baseline.py --helppython3 scripts/renderer_baseline.py --skip-browser --skip-native --filter paragraph-basic --output /tmp/rhwp-renderer-baseline-smoke-rescopedwasm-pack build --target web --release --no-optnpm --prefix rhwp-studio run buildRefs #536