beeware / beeware/toga

Intermittent hang in CI on textual-macOS testbed tests.

Open
#4,569 0 comments 0 reactions 0 assignees View on GitHub
bug macOS textual
Dominant language
Python
Stars
5.4k
Forks
827
Avg merge
9h 45m
Merged PRs (30d)
58

Description

### Describe the bug

We are seeing an intermittent hang in the textual-macOS tests in CI.

The CI pass is terminated after 20 minutes; when the suite passes, it runs in under a minute.

### How to reproduce the bug

Run the testbed test suite using the Textual backend under macOS.

### Minimum example code

```shell
briefcase dev -a testbed-textual
```

### Screenshots

_No response_

### Environment details

- Operating system and version: macOS 15
- Python version: 3.12
- Software versions:
- Toga: main as of July 17 2026

### Logs

The test suite fails after the text input `test_quote_dash_substitution_disabled` tests:
```
tests/widgets/test_textinput.py::test_value_not_hidden PASSED [ 81%]
tests/widgets/test_textinput.py::test_on_change_programmatic[True-] PASSED [ 82%]
tests/widgets/test_textinput.py::test_on_change_programmatic[True-placeholder] PASSED [ 83%]
tests/widgets/test_textinput.py::test_on_change_programmatic[False-] PASSED [ 83%]
tests/widgets/test_textinput.py::test_on_change_programmatic[False-placeholder] PASSED [ 84%]
tests/widgets/test_textinput.py::test_on_change_user PASSED [ 85%]
tests/widgets/test_textinput.py::test_on_change_user_after_initial_value PASSED [ 85%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[""] PASSED [ 86%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[''] PASSED [ 87%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[--] PASSED [ 87%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[---] PASSED [ 88%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[Humorless "test" input] PASSED [ 89%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[Can't 'bee' bothered] PASSED [ 89%]
tests/widgets/test_textinput.py::test_quote_dash_substitution_disabled[Bee dashing--or fail miserably. --- No One Ever] PASSED [ 90%]
Error: The action 'Test App' has timed out after 20 minutes.

```

### Additional context

_No response_

Contributor guide

Open the contributing guide

Research direction

Run `briefcase dev -a testbed-textual` on macOS and inspect the testbed run around `tests/widgets/test_textinput.py`, especially after `test_quote_dash_substitution_disabled`. Reproduce the intermittent timeout and use the reported test boundary to narrow down where the suite stops progressing. Done means the textual-macOS testbed suite completes reliably without the 20-minute CI timeout.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ci-cd, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.