|
| 1 | +"""See https://github.com/Textualize/textual/issues/1355 as the motivation for these tests.""" |
| 2 | + |
| 3 | +from textual.app import App, ComposeResult |
| 4 | +from textual.containers import Vertical |
| 5 | +from textual.widget import Widget |
| 6 | + |
| 7 | + |
| 8 | +class VisibleTester(App[None]): |
| 9 | + """An app for testing visibility changes.""" |
| 10 | + |
| 11 | + CSS = """ |
| 12 | + Widget { |
| 13 | + height: 1fr; |
| 14 | + } |
| 15 | + .hidden { |
| 16 | + visibility: hidden; |
| 17 | + } |
| 18 | + """ |
| 19 | + |
| 20 | + def compose(self) -> ComposeResult: |
| 21 | + yield Vertical( |
| 22 | + Widget(id="keep"), Widget(id="hide-via-code"), Widget(id="hide-via-css") |
| 23 | + ) |
| 24 | + |
| 25 | + |
| 26 | +async def test_visibility_changes() -> None: |
| 27 | + """Test changing visibility via code and CSS.""" |
| 28 | + async with VisibleTester().run_test() as pilot: |
| 29 | + assert len(pilot.app.screen.visible_widgets) == 5 |
| 30 | + assert pilot.app.query_one("#keep").visible is True |
| 31 | + assert pilot.app.query_one("#hide-via-code").visible is True |
| 32 | + assert pilot.app.query_one("#hide-via-css").visible is True |
| 33 | + |
| 34 | + pilot.app.query_one("#hide-via-code").styles.visibility = "hidden" |
| 35 | + await pilot.pause(0) |
| 36 | + assert len(pilot.app.screen.visible_widgets) == 4 |
| 37 | + assert pilot.app.query_one("#keep").visible is True |
| 38 | + assert pilot.app.query_one("#hide-via-code").visible is False |
| 39 | + assert pilot.app.query_one("#hide-via-css").visible is True |
| 40 | + |
| 41 | + pilot.app.query_one("#hide-via-css").set_class(True, "hidden") |
| 42 | + await pilot.pause(0) |
| 43 | + assert len(pilot.app.screen.visible_widgets) == 3 |
| 44 | + assert pilot.app.query_one("#keep").visible is True |
| 45 | + assert pilot.app.query_one("#hide-via-code").visible is False |
| 46 | + assert pilot.app.query_one("#hide-via-css").visible is False |
0 commit comments