1
0

test_node_version.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """Test for latest node version being able to run reflex."""
  2. from __future__ import annotations
  3. from collections.abc import Generator
  4. from typing import Any
  5. import httpx
  6. import pytest
  7. from playwright.sync_api import Page, expect
  8. from reflex.testing import AppHarness
  9. def TestNodeVersionApp():
  10. """A test app for node latest version."""
  11. import reflex as rx
  12. from reflex.utils.prerequisites import get_node_version
  13. class TestNodeVersionConfig(rx.Config):
  14. pass
  15. class TestNodeVersionState(rx.State):
  16. @rx.var
  17. def node_version(self) -> str:
  18. return str(get_node_version())
  19. app = rx.App()
  20. @app.add_page
  21. def index():
  22. return rx.heading("Node Version check v", TestNodeVersionState.node_version)
  23. @pytest.fixture()
  24. def node_version_app(tmp_path) -> Generator[AppHarness, Any, None]:
  25. """Fixture to start TestNodeVersionApp app at tmp_path via AppHarness.
  26. Args:
  27. tmp_path: pytest tmp_path fixture
  28. Yields:
  29. running AppHarness instance
  30. """
  31. with AppHarness.create(
  32. root=tmp_path,
  33. app_source=TestNodeVersionApp,
  34. ) as harness:
  35. yield harness
  36. def test_node_version(node_version_app: AppHarness, page: Page):
  37. """Test for latest node version being able to run reflex.
  38. Args:
  39. node_version_app: running AppHarness instance
  40. page: playwright page instance
  41. """
  42. def get_latest_node_version():
  43. response = httpx.get("https://nodejs.org/dist/index.json")
  44. versions = response.json()
  45. # Assuming the first entry in the API response is the most recent version
  46. if versions:
  47. latest_version = versions[0]["version"]
  48. return latest_version
  49. return None
  50. assert node_version_app.frontend_url is not None
  51. page.goto(node_version_app.frontend_url)
  52. expect(page.get_by_role("heading")).to_have_text(
  53. f"Node Version check {get_latest_node_version()}"
  54. )