unbreak link _hover (#4537)
* unbreak link _hover * add a test to catch the error * change tmp path for harness * add () to fixture * add spacer to avoid initial hover * only install chromium browser for faster ci --------- Co-authored-by: Lendemor <thomas.brandeho@gmail.com>
This commit is contained in:
parent
72d7616726
commit
08d9fbf9bc
@ -53,7 +53,7 @@ jobs:
|
||||
SCREENSHOT_DIR: /tmp/screenshots/${{ matrix.state_manager }}/${{ matrix.python-version }}/${{ matrix.split_index }}
|
||||
REDIS_URL: ${{ matrix.state_manager == 'redis' && 'redis://localhost:6379' || '' }}
|
||||
run: |
|
||||
poetry run playwright install --with-deps
|
||||
poetry run playwright install chromium
|
||||
poetry run pytest tests/integration --splits 2 --group ${{matrix.split_index}}
|
||||
- uses: actions/upload-artifact@v4
|
||||
name: Upload failed test screenshots
|
||||
|
@ -76,7 +76,7 @@ class Link(RadixThemesComponent, A, MemoizationLeaf, MarkdownComponentMap):
|
||||
Returns:
|
||||
Component: The link component
|
||||
"""
|
||||
props.setdefault(":hover", {"color": color("accent", 8)})
|
||||
props.setdefault("_hover", {"color": color("accent", 8)})
|
||||
href = props.get("href")
|
||||
|
||||
is_external = props.pop("is_external", None)
|
||||
|
46
tests/integration/tests_playwright/test_link_hover.py
Normal file
46
tests/integration/tests_playwright/test_link_hover.py
Normal file
@ -0,0 +1,46 @@
|
||||
from typing import Generator
|
||||
|
||||
import pytest
|
||||
from playwright.sync_api import Page, expect
|
||||
|
||||
from reflex.testing import AppHarness
|
||||
|
||||
|
||||
def LinkApp():
|
||||
import reflex as rx
|
||||
|
||||
app = rx.App()
|
||||
|
||||
def index():
|
||||
return rx.vstack(
|
||||
rx.box(height="10em"), # spacer, so the link isn't hovered initially
|
||||
rx.link(
|
||||
"Click me",
|
||||
href="#",
|
||||
color="blue",
|
||||
_hover=rx.Style({"color": "red"}),
|
||||
),
|
||||
)
|
||||
|
||||
app.add_page(index, "/")
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def link_app(tmp_path_factory) -> Generator[AppHarness, None, None]:
|
||||
with AppHarness.create(
|
||||
root=tmp_path_factory.mktemp("link_app"),
|
||||
app_source=LinkApp, # type: ignore
|
||||
) as harness:
|
||||
assert harness.app_instance is not None, "app is not running"
|
||||
yield harness
|
||||
|
||||
|
||||
def test_link_hover(link_app: AppHarness, page: Page):
|
||||
assert link_app.frontend_url is not None
|
||||
page.goto(link_app.frontend_url)
|
||||
|
||||
link = page.get_by_role("link")
|
||||
expect(link).to_have_text("Click me")
|
||||
expect(link).to_have_css("color", "rgb(0, 0, 255)")
|
||||
link.hover()
|
||||
expect(link).to_have_css("color", "rgb(255, 0, 0)")
|
Loading…
Reference in New Issue
Block a user