Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reporting rendering regression on PRs #15918

Open
mockersf opened this issue Oct 15, 2024 · 4 comments
Open

Reporting rendering regression on PRs #15918

mockersf opened this issue Oct 15, 2024 · 4 comments
Labels
A-Build-System Related to build systems or continuous integration A-Rendering Drawing game state to the screen S-Needs-Design This issue requires design work to think about how it would best be accomplished

Comments

@mockersf
Copy link
Member

Good news! Since #13248 (and #15894, #15911 and #15914) CI is now checking screenshots taken during example runs on macOS and Linux for changes.

The list of examples that are executed can be found there: https://github.com/bevyengine/bevy/tree/main/.github/example-run. At the moment, only 2 examples take a screenshot: breakout and load_gltf

The macOS run is done on every push to a PR, in the merge queue, and on main. You can find an example run there: https://github.com/bevyengine/bevy/actions/runs/11339649537/job/31534799604

The Linux run is done in the merge queue and on main. You can find an example run there: https://github.com/bevyengine/bevy/actions/runs/11339392720/job/31534437159

As you may have noticed, they both fail: this is because the example load_gltf is a tiny bit time dependent for the light movement, so not fully deterministic. Failures are currently not reported or blocking for PRs.

It is possible to make examples deterministic even when relying on time by applying the patches there, or using the example-showcase tool.

You can see a list of run here: https://pixel-eagle.com/project/B04F67C0-C054-4A6F-92EC-F599FEC2FD1D

I have some improvements planned for the reporting, but now my question to you, dear contributors: which examples should be ran and checked for changes in CI?

This issue will be fixed by changing the list of screenshots compared to a fully deterministic one (either by selecting deterministic examples, or by enabling stable time with the patches), and changes being reported by a comment on PRs (not blocking merging yet)

@mockersf mockersf added A-Build-System Related to build systems or continuous integration A-Rendering Drawing game state to the screen labels Oct 15, 2024
@ickshonpe
Copy link
Contributor

ickshonpe commented Oct 16, 2024

Really like having this.

I think the bevy_ui examples that would be the most valuable to watch are:

  • pbr
  • borders
  • ui
  • text_wrap_debug
  • grid
  • overflow
  • ui_texture_slice_flp_and_tile
  • z_index
  • box_shadow

We could add some extra elements to the ui example if that list is a bit long.

@rparrett
Copy link
Contributor

rparrett commented Oct 16, 2024

Do we have a target for the amount of examples we want to run?

It would be nice to have more "roll-up examples" like ui that show off many features of an engine area. Beyond ui, the following might be nice IMO:

  • lighting
  • split_screen
  • breakout
  • animated_fox (unfortunately this became non-deterministic at some point)

Maybe our game examples could be fleshed out to use more features, or some additional purpose-built examples could be made.

edit: Totally missed the "testbed" stuff that was just linked here. Seems like a great idea.

@mockersf
Copy link
Member Author

mockersf commented Oct 16, 2024

I'm trying "testbed" examples, see #15954

I would like to have one for 2d, one for 3d and one for UI, at least as a starting point. Once we have ones for 2d and UI we can remove the "breakout" example running in CI, once we have 3d we can remove "load_gltf" and "alien_cake_addict" to keep the execution time under control

github-merge-queue bot pushed a commit that referenced this issue Oct 16, 2024
# Objective

- Make progress for #15918 
- Start with 2d

## Solution

- Remove screenshots for existing examples as they're not deterministic
- Create new "testbed" example category, with a 2d one to start

## Testing

- Run `CI_TESTING_CONFIG=.github/example-run/testbed_2d.ron cargo run
--example testbed_2d --features "bevy_ci_testing"`
- ???
- Check the screenshots
@alice-i-cecile alice-i-cecile added the S-Needs-Design This issue requires design work to think about how it would best be accomplished label Oct 17, 2024
github-merge-queue bot pushed a commit that referenced this issue Oct 19, 2024
# Objective

- Progress towards #15918 
- Add tests for 3d

## Solution

- Add tests that cover lights, bloom, gltf and animation
- Removed examples `contributors` and `load_gltf` as they don't
contribute additional checks to CI

## Testing

- `CI_TESTING_CONFIG=.github/example-run/testbed_3d.ron cargo run
--example testbed_3d --features "bevy_ci_testing"`
github-merge-queue bot pushed a commit that referenced this issue Oct 20, 2024
# Objective

- Checks screenshots on Windows
- Progress towards #15918 

## Solution

- Checks screenshots on Windows
- Also disable the helmet gltf scene in windows ci as it doesn't work
@mockersf
Copy link
Member Author

@ickshonpe could you do an example for UI in the spirit of the 2d/3d testbeds?

github-merge-queue bot pushed a commit that referenced this issue Nov 23, 2024
# Objective

- Progress towards #15918 
- Add test on UI

## Solution

- Get a single screenshot from the UI testbed example
- Remove older examples from runs in CI as they're covered by the
testbed to reduce CI duration
github-merge-queue bot pushed a commit that referenced this issue Nov 23, 2024
# Objective

- Rendering on Windows in CI is unreliable
- Screenshots are compared but results are not usable
- Related to #15918 

## Solution

- Remove the check on windows screenshots
ecoskey pushed a commit to ecoskey/bevy that referenced this issue Dec 2, 2024
# Objective

- Progress towards bevyengine#15918 
- Add test on UI

## Solution

- Get a single screenshot from the UI testbed example
- Remove older examples from runs in CI as they're covered by the
testbed to reduce CI duration
ecoskey pushed a commit to ecoskey/bevy that referenced this issue Dec 2, 2024
# Objective

- Rendering on Windows in CI is unreliable
- Screenshots are compared but results are not usable
- Related to bevyengine#15918 

## Solution

- Remove the check on windows screenshots
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Build-System Related to build systems or continuous integration A-Rendering Drawing game state to the screen S-Needs-Design This issue requires design work to think about how it would best be accomplished
Projects
None yet
Development

No branches or pull requests

4 participants