diff --git a/sdk/python/examples/controls/slider/__init__.py b/sdk/python/examples/controls/slider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/slider/basic.py b/sdk/python/examples/controls/slider/basic.py index 0bfba42b22..4ba9492c32 100644 --- a/sdk/python/examples/controls/slider/basic.py +++ b/sdk/python/examples/controls/slider/basic.py @@ -10,4 +10,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/slider/custom_label.py b/sdk/python/examples/controls/slider/custom_label.py index dbc543236d..e5de954a77 100644 --- a/sdk/python/examples/controls/slider/custom_label.py +++ b/sdk/python/examples/controls/slider/custom_label.py @@ -10,4 +10,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/slider/handling_events.py b/sdk/python/examples/controls/slider/handling_events.py index e4a1812e06..818c6d7a4f 100644 --- a/sdk/python/examples/controls/slider/handling_events.py +++ b/sdk/python/examples/controls/slider/handling_events.py @@ -9,6 +9,7 @@ def slider_changed(e: ft.Event[ft.Slider]): page.add( ft.Text("Slider with 'on_change' event:"), ft.Slider( + key="slider", min=0, max=100, divisions=10, @@ -19,4 +20,5 @@ def slider_changed(e: ft.Event[ft.Slider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/slider/media/basic.gif b/sdk/python/examples/controls/slider/media/basic.gif deleted file mode 100644 index 276ae39235..0000000000 Binary files a/sdk/python/examples/controls/slider/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/slider/media/custom_label.gif b/sdk/python/examples/controls/slider/media/custom_label.gif deleted file mode 100644 index b7e39a33e2..0000000000 Binary files a/sdk/python/examples/controls/slider/media/custom_label.gif and /dev/null differ diff --git a/sdk/python/examples/controls/slider/media/handling_events.gif b/sdk/python/examples/controls/slider/media/handling_events.gif deleted file mode 100644 index 82a2e6bb70..0000000000 Binary files a/sdk/python/examples/controls/slider/media/handling_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/slider/media/index.png b/sdk/python/examples/controls/slider/media/index.png deleted file mode 100644 index 1ee80479a4..0000000000 Binary files a/sdk/python/examples/controls/slider/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/slider/random_values.py b/sdk/python/examples/controls/slider/random_values.py index 083aba86e5..5e929b3501 100644 --- a/sdk/python/examples/controls/slider/random_values.py +++ b/sdk/python/examples/controls/slider/random_values.py @@ -23,4 +23,5 @@ def handle_slider_change(e: ft.Event[ft.Slider]): slider.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/packages/flet/docs/controls/slider.md b/sdk/python/packages/flet/docs/controls/slider.md index 8ee00a20ec..fb5945c73b 100644 --- a/sdk/python/packages/flet/docs/controls/slider.md +++ b/sdk/python/packages/flet/docs/controls/slider.md @@ -1,14 +1,14 @@ --- class_name: flet.Slider examples: ../../examples/controls/slider -example_images: ../examples/controls/slider/media +example_images: ../test-images/examples/material/golden/macos/slider --- -{{ class_summary(class_name) }} +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Default and disabled sliders") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/slider) +[Live example](https://flet-controls-gallery.fly.dev/input/slider/basic) ### Basic Example @@ -16,7 +16,7 @@ example_images: ../examples/controls/slider/media --8<-- "{{ examples }}/basic.py" ``` -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ image(example_images + "/basic.png", alt="basic", width="80%") }} ### Setting a custom label @@ -25,7 +25,7 @@ example_images: ../examples/controls/slider/media --8<-- "{{ examples }}/custom_label" ``` -{{ image(example_images + "/custom_label.gif", alt="custom-label", width="80%") }} +{{ image(example_images + "/custom_label.png", alt="custom-label", width="80%") }} ### Handling events @@ -34,13 +34,8 @@ example_images: ../examples/controls/slider/media --8<-- "{{ examples }}/handling_events.py" ``` -{{ image(example_images + "/handling_events.gif", alt="handling-events", width="80%") }} +{{ image(example_images + "/handling_events.png", alt="handling-events", width="80%") }} -### Random values - -```python ---8<-- "{{ examples }}/random_values.py" -``` {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/extras/css/mkdocstrings.css b/sdk/python/packages/flet/docs/extras/css/mkdocstrings.css index 98887d803e..b5f7123322 100644 --- a/sdk/python/packages/flet/docs/extras/css/mkdocstrings.css +++ b/sdk/python/packages/flet/docs/extras/css/mkdocstrings.css @@ -86,3 +86,5 @@ code.doc-symbol-command::after { } /* Command symbol */ + + diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/basic.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/basic.png new file mode 100644 index 0000000000..5a144052e4 Binary files /dev/null and b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/basic.png differ diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/custom_label.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/custom_label.png new file mode 100644 index 0000000000..3379212848 Binary files /dev/null and b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/custom_label.png differ diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/handling_events.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/handling_events.png new file mode 100644 index 0000000000..b39b1af790 Binary files /dev/null and b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/handling_events.png differ diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/image_for_docs.png new file mode 100644 index 0000000000..1950d4c999 Binary files /dev/null and b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/slider/image_for_docs.png differ diff --git a/sdk/python/packages/flet/integration_tests/examples/material/test_slider.py b/sdk/python/packages/flet/integration_tests/examples/material/test_slider.py new file mode 100644 index 0000000000..83e5949954 --- /dev/null +++ b/sdk/python/packages/flet/integration_tests/examples/material/test_slider.py @@ -0,0 +1,68 @@ +import pytest + +import flet as ft +import flet.testing as ftt +from examples.controls.slider import ( + custom_label, + basic, + handling_events, + random_values, +) + + +@pytest.mark.asyncio(loop_scope="function") +async def test_image_for_docs(flet_app_function: ftt.FletTestApp, request): + flet_app_function.page.theme_mode = ft.ThemeMode.LIGHT + await flet_app_function.assert_control_screenshot( + request.node.name, + ft.Column( + [ + ft.Slider(label="Defualt Slider"), + ft.Slider(label="Disabled Slider", disabled=True), + ] + ), + ) + + +@pytest.mark.parametrize( + "flet_app_function", + [{"flet_app_main": basic.main}], + indirect=True, +) +@pytest.mark.asyncio(loop_scope="function") +async def test_basic(flet_app_function: ftt.FletTestApp): + flet_app_function.assert_screenshot( + "basic", + await flet_app_function.take_page_controls_screenshot(), + ) + + +@pytest.mark.parametrize( + "flet_app_function", + [{"flet_app_main": custom_label.main}], + indirect=True, +) +@pytest.mark.asyncio(loop_scope="function") +async def test_custom_label(flet_app_function: ftt.FletTestApp): + flet_app_function.assert_screenshot( + "custom_label", + await flet_app_function.take_page_controls_screenshot(), + ) + + +@pytest.mark.parametrize( + "flet_app_function", + [{"flet_app_main": handling_events.main}], + indirect=True, +) +@pytest.mark.asyncio(loop_scope="function") +async def test_handling_events(flet_app_function: ftt.FletTestApp): + scr = await flet_app_function.wrap_page_controls_in_screenshot() + button = await flet_app_function.tester.find_by_key("slider") + await flet_app_function.tester.tap(button) + + await flet_app_function.tester.pump_and_settle() + flet_app_function.assert_screenshot( + "handling_events", + await scr.capture(pixel_ratio=flet_app_function.screenshots_pixel_ratio), + )