- Introduced `render-parity` crate for comparing rendered frames against reference images. - Added command-line options for specifying manifest and output directory. - Implemented image comparison metrics: mean absolute difference, maximum absolute difference, and changed pixel ratio. - Created a configuration file `cases.toml` for defining test cases with global defaults and specific parameters. - Added functionality to capture frames from `render-demo` and save diff images on discrepancies. - Updated documentation to include usage instructions and CI model for automated testing.
56 lines
1.6 KiB
YAML
56 lines
1.6 KiB
YAML
name: Test
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: clippy
|
|
- name: Cargo check
|
|
run: cargo check --workspace --all-targets --all-features
|
|
- name: Clippy (deny warnings)
|
|
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
|
|
test:
|
|
name: Test
|
|
runs-on: ubuntu-latest
|
|
needs: lint
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- name: Cargo test
|
|
run: cargo test --workspace --all-features -- --nocapture
|
|
|
|
render-parity:
|
|
name: Render parity
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- name: Install headless GL runtime
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y xvfb libgl1-mesa-dri libgles2-mesa-dev mesa-utils
|
|
- name: Build render-demo binary
|
|
run: cargo build -p render-demo --features demo
|
|
- name: Run frame parity suite
|
|
run: |
|
|
xvfb-run -s "-screen 0 1280x720x24" cargo run -p render-parity -- \
|
|
--manifest parity/cases.toml \
|
|
--output-dir target/render-parity/current \
|
|
--demo-bin target/debug/parkan-render-demo \
|
|
--keep-going
|
|
- name: Upload parity artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: render-parity-artifacts
|
|
path: target/render-parity/current
|
|
if-no-files-found: ignore
|