1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
from textual.app import App, ComposeResult
from textual.containers import VerticalScroll
from textual.widget import Widget
async def test_visibility_changes() -> None:
"""Test changing visibility via code and CSS.
See https://github.com/Textualize/textual/issues/1355 as the motivation for these tests.
"""
class VisibleTester(App[None]):
"""An app for testing visibility changes."""
CSS = """
Widget {
height: 1fr;
}
.hidden {
visibility: hidden;
}
"""
def compose(self) -> ComposeResult:
yield VerticalScroll(
Widget(id="keep"), Widget(id="hide-via-code"), Widget(id="hide-via-css")
)
async with VisibleTester().run_test() as pilot:
assert pilot.app.query_one("#keep").visible is True
assert pilot.app.query_one("#hide-via-code").visible is True
assert pilot.app.query_one("#hide-via-css").visible is True
pilot.app.query_one("#hide-via-code").styles.visibility = "hidden"
await pilot.pause(0)
assert pilot.app.query_one("#keep").visible is True
assert pilot.app.query_one("#hide-via-code").visible is False
assert pilot.app.query_one("#hide-via-css").visible is True
pilot.app.query_one("#hide-via-css").set_class(True, "hidden")
await pilot.pause(0)
assert pilot.app.query_one("#keep").visible is True
assert pilot.app.query_one("#hide-via-code").visible is False
assert pilot.app.query_one("#hide-via-css").visible is False
async def test_visible_is_inherited() -> None:
"""Regression test for https://github.com/Textualize/textual/issues/3071"""
class InheritedVisibilityApp(App[None]):
CSS = """
#four {
visibility: visible;
}
#six {
visibility: hidden;
}
"""
def compose(self):
yield Widget(id="one")
with VerticalScroll(id="two"):
yield Widget(id="three")
with VerticalScroll(id="four"):
yield Widget(id="five")
with VerticalScroll(id="six"):
yield Widget(id="seven")
app = InheritedVisibilityApp()
async with app.run_test():
assert app.query_one("#one").visible
assert app.query_one("#two").visible
assert app.query_one("#three").visible
assert app.query_one("#four").visible
assert app.query_one("#five").visible
assert not app.query_one("#six").visible
assert not app.query_one("#seven").visible
|