Skip to content

Commit ac96685

Browse files
committed
add navigation rail example tests and images
1 parent 5a82343 commit ac96685

File tree

7 files changed

+69
-3
lines changed

7 files changed

+69
-3
lines changed

sdk/python/examples/controls/navigation_rail/__init__.py

Whitespace-only changes.

sdk/python/examples/controls/navigation_rail/basic.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ def main(page: ft.Page):
4949
)
5050

5151

52-
ft.run(main)
52+
if __name__ == "__main__":
53+
ft.run(main)

sdk/python/packages/flet/docs/controls/navigationrail/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
class_name: flet.NavigationRail
33
examples: ../../examples/controls/navigation_rail
4-
example_images: ../../examples/controls/navigation_rail/media
4+
example_images: ../../test-images/examples/material/golden/macos/navigation_rail
55
---
66

77
# NavigationRail
88

9-
{{ class_summary(class_name) }}
9+
{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Navigation rail") }}
1010

1111
## Examples
1212

24.2 KB
Loading
7.47 KB
Loading
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import pytest
2+
3+
import flet as ft
4+
import flet.testing as ftt
5+
6+
from examples.controls.navigation_rail import basic
7+
8+
9+
@pytest.mark.asyncio(loop_scope="function")
10+
async def test_image_for_docs(flet_app_function: ftt.FletTestApp, request):
11+
flet_app_function.page.theme_mode = ft.ThemeMode.LIGHT
12+
await flet_app_function.assert_control_screenshot(
13+
request.node.name,
14+
ft.NavigationRail(
15+
selected_index=0,
16+
destinations=[
17+
ft.NavigationRailDestination(
18+
icon=ft.Icons.STAR,
19+
label="Star",
20+
),
21+
ft.NavigationRailDestination(
22+
icon=ft.Icon(ft.Icons.ADD),
23+
label="Add",
24+
),
25+
ft.NavigationRailDestination(
26+
icon=ft.Icons.DELETE,
27+
label=ft.Text("Delete"),
28+
),
29+
],
30+
height=200,
31+
width=100,
32+
),
33+
)
34+
35+
36+
@pytest.mark.parametrize(
37+
"flet_app_function",
38+
[{"flet_app_main": basic.main}],
39+
indirect=True,
40+
)
41+
@pytest.mark.asyncio(loop_scope="function")
42+
async def test_basic(flet_app_function: ftt.FletTestApp):
43+
flet_app_function.page.theme_mode = ft.ThemeMode.LIGHT
44+
flet_app_function.page.enable_screenshots = True
45+
flet_app_function.resize_page(400, 300)
46+
flet_app_function.page.update()
47+
await flet_app_function.tester.pump_and_settle()
48+
flet_app_function.assert_screenshot(
49+
"basic",
50+
await flet_app_function.page.take_screenshot(),
51+
)

sdk/python/packages/flet/src/flet/controls/material/navigation_rail.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ class NavigationRail(LayoutControl):
8181
"""
8282
A material widget that is meant to be displayed at the left or right of an app to
8383
navigate between a small number of views, typically between three and five.
84+
85+
```python
86+
ft.NavigationRail(
87+
selected_index=0,
88+
destinations=[
89+
ft.NavigationRailDestination(icon=ft.Icons.STAR, label="Star"),
90+
ft.NavigationRailDestination(icon=ft.Icon(ft.Icons.ADD),label="Add"),
91+
ft.NavigationRailDestination(icon=ft.Icons.DELETE, label=ft.Text("Delete")
92+
],
93+
height=200,
94+
width=100,
95+
)
96+
```
97+
8498
"""
8599

86100
destinations: list[NavigationRailDestination] = field(default_factory=list)

0 commit comments

Comments
 (0)