| # Handling Test Failures | |
| ANGLE is tested by a number of test suites, including by the ANGLE CI and Try testers, and by the | |
| Chromium FYI testers. See pointers and explanations in the | |
| [ANGLE Wrangling](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/infra/ANGLEWrangling.md) documentation. | |
| We run a large number of tests for each ANGLE CL, both in ANGLE standalone and Chromium | |
| configurations, both pre- and post- commit. Some tests will fail, crash, or timeout. If these | |
| cannot be addressed in a timely manner, file a bug and update test expectations files. Timeliness | |
| depends on the context. For example, a Wrangler trying to unblock an AutoRoller will typically | |
| suppress failures immediately; where a developer will typically delay landing their CL in favor of | |
| fixing test failures. | |
| ## Handling a Vulkan Validation Layer error | |
| Many tests are run with an option that enables the Vulkan Validation Layers (sometimes referred to | |
| as VVL). Validation errors will cause an otherwise-passing test to fail. | |
| The [vulkan-deps into ANGLE AutoRoller](https://autoroll.skia.org/r/vulkan-deps-angle-autoroll) | |
| updates ANGLE to the top-of-tree (ToT) upstream Vulkan tools and SDK. Sometimes validation errors | |
| are the result of bugs in the Vulkan Validation Layers, sometimes because of bugs in ANGLE. | |
| Therefore, investigate the cause of the error and determine if it's an ANGLE bug or a Vulkan | |
| Validation Layer bug. For Vulkan Validation Layer bugs, file an | |
| [upstream bug](https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/new), and | |
| suppress the error. The ANGLE Wrangler will also suppress a validation error when the | |
| `vulkan-deps` AutoRoller introduces a new validation error. The ANGLE Wrangler isn't expected to | |
| resolve the error or diagnose an upstream bug (but it is welcome as extra credit). | |
| Handle a validation error by doing the following: | |
| 1. [File an ANGLE bug](http://anglebug.com/new). If this is an active Wrangler issue, set the Label | |
| `Hotlist-Wrangler` on the bug. | |
| 2. Add the VVL error tag to the | |
| [kSkippedMessages](https://chromium.googlesource.com/angle/angle.git/+/8f8ca06dfb903fcc8517c69142c46c05e618f40d/src/libANGLE/renderer/vulkan/RendererVk.cpp#129) | |
| array in `RendererVk.cpp` file. Follow the pattern for adding a comment with the associated bug | |
| in the line above the VVL tag. | |
| ## dEQP test expectations | |
| There are a set of [dEQP](dEQP.md) expectations files in the | |
| [src/tests/deqp_support](../src/tests/deqp_support) directory. Notice the format of a line and | |
| your choices for OS, driver, etc. This is described in the directory's | |
| [README.md](../src/tests/deqp_support/README.md) file. This includes: | |
| - `FLAKY` - For rare flakes | |
| - `FAIL` - For a test that flakes often or persistently fails | |
| - `SKIP` - For a test that crashes | |
| - `TIMEOUT` - For a test that is very slow and may timeout | |
| ## angle_end2end_tests expectations | |
| These expectations all live in the | |
| [angle_end2end_tests_expectations.txt](../src/tests/angle_end2end_tests_expectations.txt) file. The file format | |
| is the same as for the dEQP expectations. However, `FAIL` and `FLAKY` are not valid, and so the choices are: | |
| - `SKIP` - For a test that fails or crashes | |
| - `TIMEOUT` - For a test that is very slow and may timeout | |
| ## Rubber stamping expectations CLs | |
| CLs that only change dEQP or angle_end2end_tests expectations don't require a human reviewer and can be | |
| [Rubber Stamped](https://chromium.googlesource.com/infra/infra/+/refs/heads/main/go/src/infra/appengine/rubber-stamper/README.md). | |
| The procedure is: | |
| 1. Add rubber-stamper@appspot.gserviceaccount.com as the reviewer on the expectations CL. Please also CC a human reviewer for TBR. | |
| 2. After 1 minute, Rubber Stamper should set "Bot-Commit: +1" on the CL. | |
| 3. Now you should be able to "Commit-Queue: +2" your CL. | |
| ## WebGL conformance test expectations | |
| The expectations files are hosted in the `chromium/src` repository under | |
| [content/test/gpu/gpu_tests/test_expectations](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/content/test/gpu/gpu_tests/test_expectations/). | |
| Note that this is not included in local ANGLE-only source tree. | |
| The format of the file, including the different tags, is documented at the top of the file. This | |
| includes the following results: | |
| - `RetryOnFailure` - For a test that rarely flakes | |
| - `Failure` - For a test that fails consistently or flakes often | |
| - `Skip` - For a test that causes catastrophic failures (e.g. ends an entire test run, causes a bot | |
| to BSoD); `Skip` should be used very sparingly | |
| You will need to contact an OWNER of the file to +1 your CL. | |
| You have two options for creating a CL to the expectations files: | |
| 1. For trivial edits, you can edit the expectations files via | |
| [Chromium Code Search](https://source.chromium.org/chromium/chromium/src/+/main:content/test/gpu/gpu_tests/test_expectations/): | |
| - In the browser, press the `Edit code` button. This will bring up a new browser window/tab, | |
| in an editor mode. | |
| - Edit the expecations and then press the `Create change` (or `Update change` button if you | |
| need to change your CL later), which will create a CL. | |
| 2. Otherwise please [check out the code](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/get_the_code.md) | |
| and [upload a CL](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/contributing.md#Creating-a-change) | |
| # Requesting access to the Commit Queue and issue tracker | |
| If you need to request access for a user (or yourself) please ask a project owner to help. Googlers, email | |
| angle-team@google.com. External users, find a couple owners in the [OWNERS](../OWNERS) file and send a | |
| request via email. | |
| If you are an ANGLE owner and you want to grant a user access: | |
| * For the Monorail issue tracker, add users via the ["People" administration console][MonorailPeople]. | |
| * For the ANGLE Commit Queue (CQ), grant try-job access via the [Chrome Infra Auth administration console][ChromeAdmin]. | |
| * The admin console also has a separate group for [CQ access][CQAccessAdmin]. | |
| [MonorailPeople]: https://bugs.chromium.org/p/angleproject/people/list | |
| [ChromeAdmin]: https://chrome-infra-auth.appspot.com/auth/groups/project-angle-tryjob-access | |
| [CQAccessAdmin]: https://chrome-infra-auth.appspot.com/auth/groups/project-angle-committers |