aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/tests/test_layout_responsive.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/tests/test_layout_responsive.py')
-rw-r--r--packages/meshbay-hub/tests/test_layout_responsive.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/packages/meshbay-hub/tests/test_layout_responsive.py b/packages/meshbay-hub/tests/test_layout_responsive.py
index bb73557..a44df1a 100644
--- a/packages/meshbay-hub/tests/test_layout_responsive.py
+++ b/packages/meshbay-hub/tests/test_layout_responsive.py
@@ -50,17 +50,28 @@ def _rule(css: str, selector: str) -> str:
@pytest.fixture(scope="module")
def mobile(css):
- """The body of the max-width: 768px block."""
- i = css.index("@media (max-width: 768px)")
- depth, j = 0, css.index("{", i)
- for k in range(j, len(css)):
- if css[k] == "{":
- depth += 1
- elif css[k] == "}":
- depth -= 1
- if depth == 0:
- return css[j:k]
- pytest.fail("the mobile media query is not closed")
+ """The bodies of every block that applies at 768 px and below, joined.
+
+ Every one, not the first: a second block whose condition also names the
+ breakpoint (`(max-width: 768px), (pointer: coarse)`) came first in the file
+ and hid the rules these tests look for.
+ """
+ bodies = []
+ for m in re.finditer(r"@media[^{]*\(max-width: 768px\)[^{]*\{", css):
+ depth, j = 0, m.end() - 1
+ for k in range(j, len(css)):
+ if css[k] == "{":
+ depth += 1
+ elif css[k] == "}":
+ depth -= 1
+ if depth == 0:
+ bodies.append(css[j:k])
+ break
+ else:
+ pytest.fail("a mobile media query is not closed")
+ if not bodies:
+ pytest.fail("no max-width: 768px media query")
+ return "\n".join(bodies)
def test_a_toolbar_group_can_break(css):