CommunityToolkit / CommunityToolkit/Tooling-Windows-Submodule

Tests time-out instead of failing when exceptions thrown during layout pass

Aperta
#278 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug :bug: regression testing 🏗
Lingua principale
C#
Stelle
55
Fork
19
Merge medio
40m
PR unite (30g)
1

Descrizione

### Describe the bug

# Background

This was found while investigating [Fix: DockPanel measure fix #618](https://github.com/CommunityToolkit/Windows/pull/618)

# Problem

If an exception is thrown during a XAML measure pass, the tests stall out and do not report the answer.

This seems to happen whether using the `[UIThreadTestMethod]` attribute from our TestGen tooling or when using `[TestMethod]`, `EnqueueAsync`, `LoadTestContentAsync` and `UnloadTestContentAsync` piecemeal. The effect is the same.

# Solution

This needs investigation and fixing. It's not helpful to simply time out when a control throws during a layout or measure pass, and it can become an active problem if unexpected errors aren't being bubbled up to CI.

### Steps to reproduce

```text
This can be reproduced by throwing an exception during the `Measure` or `Arrange` pass while running in a unit test.

This can either be set up manually for a long-term repro, or it can be temporarily reintroduced by reverting https://github.com/CommunityToolkit/Windows/pull/618 and running.
```

### Expected behavior

Tests should catch exceptions thrown during XAML layout and bubble them up instead of timing out.

### Screenshots

_No response_

### Code Platform

- [ ] UWP
- [ ] WinAppSDK / WinUI 3
- [ ] Web Assembly (WASM)
- [ ] Android
- [ ] iOS
- [ ] MacOS
- [ ] Linux / GTK

### Windows Build Number

- [ ] Windows 10 1809 (Build 17763)
- [ ] Windows 10 1903 (Build 18362)
- [ ] Windows 10 1909 (Build 18363)
- [ ] Windows 10 2004 (Build 19041)
- [ ] Windows 10 20H2 (Build 19042)
- [ ] Windows 10 21H1 (Build 19043)
- [ ] Windows 11 21H2 (Build 22000)
- [ ] Other (specify)

### Other Windows Build number

_No response_

### App minimum and target SDK version

- [ ] Windows 10, version 1809 (Build 17763)
- [ ] Windows 10, version 1903 (Build 18362)
- [ ] Windows 10, version 1909 (Build 18363)
- [ ] Windows 10, version 2004 (Build 19041)
- [ ] Other (specify)

### Other SDK version

_No response_

### Visual Studio Version

_No response_

### Visual Studio Build Number

_No response_

### Device form factor

_No response_

### Additional context

_No response_

### Help us help you

Yes, I'd like to be assigned to work on this item.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia riproducendo il fallimento con un'eccezione durante Measure o Arrange, utilizzando UIThreadTestMethod oppure la sequenza TestMethod, EnqueueAsync, LoadTestContentAsync e UnloadTestContentAsync. Confronta il comportamento dopo aver ripristinato Fix: DockPanel measure fix #618. Il lavoro è completato quando le eccezioni di layout vengono intercettate e segnalate dai test invece di causare un timeout, con una copertura di regressione per il percorso che fallisce.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp
Ambito
testing-qa
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.