25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
|
|
"""Regression test for #4696 — eliminate the iOS tap delay on interactive buttons.
|
||
|
|
|
||
|
|
iOS Safari adds a ~300ms delay (and a double-tap "select then fire" behavior) on
|
||
|
|
tappable elements unless `touch-action:manipulation` is set. The fix adds that —
|
||
|
|
plus `-webkit-tap-highlight-color:transparent` — to interactive controls in the
|
||
|
|
touch/compact media block so the send button and friends fire on the first tap.
|
||
|
|
"""
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
CSS = (Path(__file__).resolve().parents[1] / "static" / "style.css").read_text(encoding="utf-8")
|
||
|
|
|
||
|
|
|
||
|
|
def test_interactive_buttons_have_touch_action_manipulation():
|
||
|
|
# The rule must cover the common interactive selectors and set both
|
||
|
|
# touch-action:manipulation (kills the 300ms tap delay) and a transparent
|
||
|
|
# tap highlight. We assert the exact rule the fix introduced.
|
||
|
|
rule = (
|
||
|
|
"button,.icon-btn,.panel-icon-btn,.send-btn,.approval-btn,[onclick]"
|
||
|
|
"{touch-action:manipulation;-webkit-tap-highlight-color:transparent;}"
|
||
|
|
)
|
||
|
|
assert rule in CSS, (
|
||
|
|
"interactive controls must declare touch-action:manipulation to remove the "
|
||
|
|
"iOS tap delay (#4696)"
|
||
|
|
)
|