From 5a1aa9a0fee15b836ccfc2d93f32c0efe360b69a Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 14 Oct 2025 09:54:44 -0700 Subject: [PATCH 1/6] Add Markdown example and integration test Updated Markdown documentation to include a new example image and code snippet. Added an integration test and golden image for Markdown rendering to improve test coverage and documentation clarity. --- .../packages/flet/docs/controls/markdown.md | 7 ++++--- .../golden/macos/markdown/image_for_docs.png | Bin 0 -> 13233 bytes .../examples/core/test_markdown.py | 16 ++++++++++++++++ .../flet/src/flet/controls/core/markdown.py | 7 +++++++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 sdk/python/packages/flet/integration_tests/examples/core/golden/macos/markdown/image_for_docs.png create mode 100644 sdk/python/packages/flet/integration_tests/examples/core/test_markdown.py diff --git a/sdk/python/packages/flet/docs/controls/markdown.md b/sdk/python/packages/flet/docs/controls/markdown.md index ba761f464c..571e51640f 100644 --- a/sdk/python/packages/flet/docs/controls/markdown.md +++ b/sdk/python/packages/flet/docs/controls/markdown.md @@ -1,10 +1,11 @@ --- class_name: flet.Markdown examples: ../../examples/controls/markdown -example_images: ../examples/controls/markdown/media +example_images: ../test-images/examples/core/golden/macos/markdown +example_media: ../examples/controls/markdown/media --- -{{ class_summary(class_name) }} +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Markdown") }} ## Examples @@ -16,7 +17,7 @@ example_images: ../examples/controls/markdown/media --8<-- "{{ examples }}/basic.py" ``` -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} ### Code syntax highlight diff --git a/sdk/python/packages/flet/integration_tests/examples/core/golden/macos/markdown/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/core/golden/macos/markdown/image_for_docs.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4217cb792680cd4d5f1814aa4751d1a771f306 GIT binary patch literal 13233 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 literal 0 HcmV?d00001 diff --git a/sdk/python/packages/flet/integration_tests/examples/core/test_markdown.py b/sdk/python/packages/flet/integration_tests/examples/core/test_markdown.py new file mode 100644 index 0000000000..7e4135c9f8 --- /dev/null +++ b/sdk/python/packages/flet/integration_tests/examples/core/test_markdown.py @@ -0,0 +1,16 @@ +import pytest + +import flet as ft +import flet.testing as ftt + + +@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.Markdown( + value="# Welcome\n\nThis is **Markdown** rendered in Flet.", + width=260, + ), + ) diff --git a/sdk/python/packages/flet/src/flet/controls/core/markdown.py b/sdk/python/packages/flet/src/flet/controls/core/markdown.py index 05e6af9c9a..6e50b8d802 100644 --- a/sdk/python/packages/flet/src/flet/controls/core/markdown.py +++ b/sdk/python/packages/flet/src/flet/controls/core/markdown.py @@ -233,6 +233,13 @@ class MarkdownCustomCodeTheme: class Markdown(LayoutControl): """ Renders text in markdown format. + + ```python + ft.Markdown( + value="# Welcome\\n\\nThis is **Markdown** rendered in Flet.", + width=260, + ) + ``` """ value: str = "" From f4ac5a581790028451265eebb0f13d1453db97c0 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 14 Oct 2025 10:19:43 -0700 Subject: [PATCH 2/6] Add AlertDialog example and integration test Updated AlertDialog documentation to include a new example image and code snippet. Added an integration test and golden image for AlertDialog to improve test coverage and documentation clarity. --- .../flet/docs/controls/alertdialog.md | 7 +++-- .../macos/alert_dialog/image_for_docs.png | Bin 0 -> 24300 bytes .../examples/material/test_alert_dialog.py | 27 ++++++++++++++++++ .../flet/controls/material/alert_dialog.py | 9 ++++++ 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/golden/macos/alert_dialog/image_for_docs.png create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/test_alert_dialog.py diff --git a/sdk/python/packages/flet/docs/controls/alertdialog.md b/sdk/python/packages/flet/docs/controls/alertdialog.md index 23c4d06562..aff62f9ea1 100644 --- a/sdk/python/packages/flet/docs/controls/alertdialog.md +++ b/sdk/python/packages/flet/docs/controls/alertdialog.md @@ -1,10 +1,11 @@ --- class_name: flet.AlertDialog examples: ../../examples/controls/alert_dialog -example_images: ../examples/controls/alert_dialog/media +example_images: ../test-images/examples/material/golden/macos/alert_dialog +example_media: ../examples/controls/alert_dialog/media --- -{{ class_summary(class_name) }} +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic AlertDialog") }} ## Examples @@ -16,7 +17,7 @@ example_images: ../examples/controls/alert_dialog/media --8<-- "{{ examples }}/modal_and_non_modal.py" ``` -{{ image(example_images + "/modal_and_non_modal.gif", alt="modal-and-non-modal", width="80%") }} +{{ image(example_media + "/modal_and_non_modal.gif", alt="modal-and-non-modal", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/alert_dialog/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/alert_dialog/image_for_docs.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d03d385e23032e4f321a861b581140794c5704 GIT binary patch literal 24300 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 literal 0 HcmV?d00001 diff --git a/sdk/python/packages/flet/integration_tests/examples/material/test_alert_dialog.py b/sdk/python/packages/flet/integration_tests/examples/material/test_alert_dialog.py new file mode 100644 index 0000000000..acc687e0b7 --- /dev/null +++ b/sdk/python/packages/flet/integration_tests/examples/material/test_alert_dialog.py @@ -0,0 +1,27 @@ +import pytest + +import flet as ft +import flet.testing as ftt + + +@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 + dialog = ft.AlertDialog( + title=ft.Text("Session expired"), + content=ft.Text("Please sign in again to continue."), + actions=[ft.TextButton("Dismiss")], + open=True, + ) + flet_app_function.page.enable_screenshots = True + flet_app_function.page.window.width = 350 + flet_app_function.page.window.height = 300 + flet_app_function.page.add(dialog) + flet_app_function.page.update() + await flet_app_function.tester.pump_and_settle() + flet_app_function.assert_screenshot( + "test_image_for_docs", + await flet_app_function.page.take_screenshot( + pixel_ratio=flet_app_function.screenshots_pixel_ratio + ), + ) diff --git a/sdk/python/packages/flet/src/flet/controls/material/alert_dialog.py b/sdk/python/packages/flet/src/flet/controls/material/alert_dialog.py index 76b7ec70b1..e3058a2b9b 100644 --- a/sdk/python/packages/flet/src/flet/controls/material/alert_dialog.py +++ b/sdk/python/packages/flet/src/flet/controls/material/alert_dialog.py @@ -27,6 +27,15 @@ class AlertDialog(DialogControl): It has an optional [`title`][(c).] and an optional list of [`actions`][(c).] . The `title` is displayed above the [`content`][(c).] and the `actions` are displayed below the `content`. + + ```python + ft.AlertDialog( + title=ft.Text("Session expired"), + content=ft.Text("Please sign in again to continue."), + actions=[ft.TextButton("Dismiss")], + open=True, + ) + ``` """ content: Optional[Control] = None From d3d7fa7de38e377cde7d53fdbb63cfc654d8c389 Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 14 Oct 2025 10:37:30 -0700 Subject: [PATCH 3/6] Update AppBar docs and add integration test Improved AppBar documentation with new example image and code snippet. Updated image paths in appbar.md and dropdownm2.md. Added an integration test for AppBar and a corresponding golden image for documentation. --- .../packages/flet/docs/controls/appbar.md | 7 +++--- .../packages/flet/docs/controls/dropdownm2.md | 2 +- .../golden/macos/app_bar/image_for_docs.png | Bin 0 -> 9045 bytes .../examples/material/test_app_bar.py | 21 ++++++++++++++++++ .../src/flet/controls/material/app_bar.py | 12 ++++++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/golden/macos/app_bar/image_for_docs.png create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/test_app_bar.py diff --git a/sdk/python/packages/flet/docs/controls/appbar.md b/sdk/python/packages/flet/docs/controls/appbar.md index 3315749766..205c076c7b 100644 --- a/sdk/python/packages/flet/docs/controls/appbar.md +++ b/sdk/python/packages/flet/docs/controls/appbar.md @@ -1,10 +1,11 @@ --- class_name: flet.AppBar examples: ../../examples/controls/app_bar -example_images: ../examples/controls/app_bar/media +example_images: ../test-images/examples/material/golden/macos/app_bar +example_media: ../examples/controls/app_bar/media --- -{{ class_summary(class_name) }} +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic AppBar", image_width="100%") }} ## Examples @@ -16,7 +17,7 @@ example_images: ../examples/controls/app_bar/media --8<-- "{{ examples }}/actions_and_popup_menu.py" ``` -{{ image(example_images + "/actions_and_popup_menu.gif", alt="actions-and-popup-menu", width="80%") }} +{{ image(example_media + "/actions_and_popup_menu.gif", alt="actions-and-popup-menu", width="80%") }} ### Theme and Material Mode Toggles diff --git a/sdk/python/packages/flet/docs/controls/dropdownm2.md b/sdk/python/packages/flet/docs/controls/dropdownm2.md index 75f745752a..ce4315e4f0 100644 --- a/sdk/python/packages/flet/docs/controls/dropdownm2.md +++ b/sdk/python/packages/flet/docs/controls/dropdownm2.md @@ -45,7 +45,7 @@ example_media: ../examples/controls/dropdown_m2/media --8<-- "{{ examples }}/add_and_delete_options.py" ``` -{{ image(example_images + "/add_and_delete_options.gif", alt="add-and-delete-options", width="80%") }} +{{ image(example_media + "/add_and_delete_options.gif", alt="add-and-delete-options", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/app_bar/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/app_bar/image_for_docs.png new file mode 100644 index 0000000000000000000000000000000000000000..60e853b38b549e077c7e5a8958870ab4c5c6a92a GIT binary patch literal 9045 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%0AmK=8twf^C{`0 z0%-YG{-mU^R&S^Qx_yOsqdLjmm62W^fHBjB)PiQd;xS4W@yBY+8CoX;929x$Fh zV*h=R?X`*WlIv`;&f+O4Da9;O_4vct7Rqu8VA|LK88YA=%jvT*sovVUZ`F(Rv2Zx} zA;v5!aCX0?{!Gk9IxNE4t@(jzXB5LJ)fh0NH}~Q>LhOJ3vyBYgE3H5C_S%(;B$X_THtqvw;EZ3u1v}LM*c>v znD1o@6Jh!0Gl54NhPW_|=|EOT+i9`6w|A(8hm&}8y@KwZ2EolE$h)^;;WlSZEdqTyJL|_MAfOSF zbD)dzJ^A*->g3%=MfEu;I3ONeckX}(EDAFa>4L5prgHO^V?E4_nIX({c$3X<>SUS$ z*fL-m;0Z`zTwoiC-S}`i$W)Bm1X9VQ-c=hcMNdXhi>Idt8MIi_dP;(1%R(pJv%%W6 zQwPkLXK|$^IimlFTLd45*SpOX12?K%r&Bd5_RZMemygZND-)&w;1Kpr3Pwx4lu_GX zzWgqOZpoZKAq6jMC_N$V=BjippU2G|mCqd}r#HHzD=(FkJFdLT&ya8`o@oS~1uV=gb7Cjm@m=8lM|>(~ zy79*!-w0dAzFQ5zJS)~nFP4Q`e2wHir|3Jme7D2EzQ+G>k(2uhr&5IYC<$ucBr3;O2vb}%Ut&K^9S;kzY zi5Rdx4h6tNpn^Er;v%(_-jZg``rR`+P^xR{=8guci7MFVb*ZtZBFc9|*e@2}!Uig2 zssH3D4X@sp|6EfFW8W#RQ3{F#x5ZvE9mC*r_ME--N(emCNX<=MqB9Wu3ww*tH?{N- zNE`j~qf&)%iZY|>_iJON0C$W_AHVri%sT|gK}J%SJDC9-c6g0;+~uKHOT9}j=9?jT zx#wap(sMCt{=m#n;#5L4RiF|$JEb;#%5?x6&KyB2CB-Wi78Wx5Lc_uk zHoFGU-3_s$pSy$E!JD-W3;F4x|3OP0JU{eAGUkB-XOs>4hY{oU zm&(r95koFKByk>wl3q8@q*8@p-z#0)7$;>Lz)bVOG}?5>2l`3wT)1#)_w2U-Kz+YY zH4l6~xbJTOo)V%bYVD}JvY@T!*xJCW%*WtJM&>}6a-%^;t_76-`|ySKzFEeh=@&3n z@9%F`0vmwFJK&1zgZh7f-GAxJHQ?Gx`fX-`vMH{s(>pXMeb3vf@7dDh85Gpa&aScY zDLfjP;;nAJ*xTb+X=(2sRQ?nw(Da9PLLu>~ceND&7fl#->`%5>T3ua@dh(;Uz=5jioLG4NRTm8SGGjy;$O{yWSS~Is Date: Tue, 14 Oct 2025 11:16:52 -0700 Subject: [PATCH 4/6] Update Badge docs and add integration test Enhanced Badge documentation with example images and media references. Added an integration test and golden image for Badge control, and included a usage example in the Badge class docstring. --- sdk/python/packages/flet/docs/types/badge.md | 16 +++++-- .../golden/macos/badge/image_for_docs.png | Bin 0 -> 3564 bytes .../examples/material/test_badge.py | 45 ++++++++++++++++++ .../flet/src/flet/controls/material/badge.py | 7 +++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/image_for_docs.png create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/test_badge.py diff --git a/sdk/python/packages/flet/docs/types/badge.md b/sdk/python/packages/flet/docs/types/badge.md index 4fe124087f..94599d9e97 100644 --- a/sdk/python/packages/flet/docs/types/badge.md +++ b/sdk/python/packages/flet/docs/types/badge.md @@ -1,4 +1,11 @@ -{{ class_all_options("flet.Badge") }} +--- +class_name: flet.Badge +examples: ../../examples/controls/badge +example_images: ../test-images/examples/material/golden/macos/badge +example_media: ../examples/controls/badge/media +--- + +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Badge") }} ## Examples @@ -42,7 +49,8 @@ def main(page: ft.Page): ft.run(main) ``` - - - + +{{ image(example_media + "/badge-navigation-bar.png", alt="badge-navigation-bar", width="80%") }} + +{{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/image_for_docs.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4386a912e56f598ceca772e275983434df69f3 GIT binary patch literal 3564 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 Date: Tue, 14 Oct 2025 11:52:23 -0700 Subject: [PATCH 5/6] Add badge example and update documentation/tests Introduced a new badge example in sdk/python/examples/controls/badge/basic.py and referenced it in the documentation. Updated integration tests to use the new example and added a corresponding golden image for screenshot comparison. --- .../examples/controls/badge/__init__.py | 0 sdk/python/examples/controls/badge/basic.py | 31 +++++++++++++ sdk/python/packages/flet/docs/types/badge.md | 38 +--------------- .../macos/badge/badge-navigation-bar.png | Bin 0 -> 16336 bytes .../examples/material/test_badge.py | 43 ++++++++---------- 5 files changed, 52 insertions(+), 60 deletions(-) create mode 100644 sdk/python/examples/controls/badge/__init__.py create mode 100644 sdk/python/examples/controls/badge/basic.py create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/badge-navigation-bar.png diff --git a/sdk/python/examples/controls/badge/__init__.py b/sdk/python/examples/controls/badge/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/badge/basic.py b/sdk/python/examples/controls/badge/basic.py new file mode 100644 index 0000000000..2c2972e81e --- /dev/null +++ b/sdk/python/examples/controls/badge/basic.py @@ -0,0 +1,31 @@ +import flet as ft + + +def main(page: ft.Page): + page.title = "Badge example" + page.navigation_bar = ft.NavigationBar( + destinations=[ + ft.NavigationBarDestination( + icon=ft.Icon( + ft.Icons.EXPLORE, + badge=ft.Badge(small_size=10), + ), + label="Explore", + ), + ft.NavigationBarDestination( + icon=ft.Icons.COMMUTE, + label="Commute", + ), + ft.NavigationBarDestination( + icon=ft.Icon( + ft.Icons.PHONE, + badge="10", + ) + ), + ] + ) + page.add(ft.Text("Body!")) + + +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/packages/flet/docs/types/badge.md b/sdk/python/packages/flet/docs/types/badge.md index 94599d9e97..323cc6c871 100644 --- a/sdk/python/packages/flet/docs/types/badge.md +++ b/sdk/python/packages/flet/docs/types/badge.md @@ -2,7 +2,6 @@ class_name: flet.Badge examples: ../../examples/controls/badge example_images: ../test-images/examples/material/golden/macos/badge -example_media: ../examples/controls/badge/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Badge") }} @@ -13,44 +12,11 @@ example_media: ../examples/controls/badge/media ### Badge decorating an icon on a NavigationBar - - - ```python -import flet as ft - - -def main(page: ft.Page): - page.title = "Badge example" - - page.navigation_bar = ft.NavigationBar( - destinations=[ - ft.NavigationBarDestination( - icon_content=ft.Icon( - ft.Icons.EXPLORE, - badge=ft.Badge(small_size=10), - ), - label="Explore", - ), - ft.NavigationBarDestination( - icon=ft.Icons.COMMUTE, - label="Commute", - ), - ft.NavigationBarDestination( - icon_content=ft.Icon( - ft.Icons.PHONE, - badge="10", - ) - ), - ] - ) - page.add(ft.Text("Body!")) - - -ft.run(main) +--8<-- "{{ examples }}/basic.py" ``` -{{ image(example_media + "/badge-navigation-bar.png", alt="badge-navigation-bar", width="80%") }} +{{ image(example_images + "/badge-navigation-bar.png", alt="badge-navigation-bar", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/badge-navigation-bar.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/badge/badge-navigation-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..05e2ca02c564858058de9632e5d8e015698c933b GIT binary patch literal 16336 zcmeIZXH=72*Di|K3*e)a2N19TiZm4g=@yCssS+Xtf=X|p_pSm8QVdO{N$&*d1QJjb z6r__xYCwbl0Rn^&Lfwn+?DO;dI6wB--yZvABqJl?F6&-%uDPyx&1=3f(9>c&#dnH@ zg@q0BP~C`yg|!*HFP=CCez6n81cHx4o<>^tSt@!i%!4mSJnut{Pk_Im6V|U;ST3?a z)bAPlr7w;9dKu%twom!qnm@#PGVku3g+X*!SoEpr=!cJ^u{@RX#vi>5qMuU{^yn7> zT$S0E=L)?fuF0-nhJ@X{$cFmB+`Gto%Nq3v1^JLcs^)geP_WAi_Ib!kT^#<7^8Y$@ z7To*kwU%fk_+&9iIRQq=a)U3N2YhH=Sz%>iX|+Fs0AK!%Z9NS>a{uu=1WvfkDho2N9%PHEi*d3nO+ zX0_T*#PVce$tMkWzkK=fQPm~D|90`$C*>yO&n>n0Nv_~TLAE)y)}>l$ zo}gkaK^58csZw;yK+@00=J&H5SXo)qJN6D8*e$HeWUBP`nK`w)D$?^}5N#cu!P)M# zm}c^icUQLT+SIm~sadsqRJyjFo)kf5$*0MOI$S;@p5io4r6i$HMt@biO4i7qd+t0^QygNpl_)GGE?(N|0k1>$mzh?t zx5cadZSq;w;GwK`2*T3jTuucOs*)35c0;O^{&z@3X~Ab!ck<4q~-7AJlB?O6Br$f$efpXc}KOkGLcu@n{_5%ubQ3S1AQ)NDnCU`_c7?`We zUGEvCHVobL@3gi%yW|hi$I@rvJ&Gf>PKD1NL^=GXx2<;wg>r6suj9(cR|Lqo{t*VHTDmiB6G~g8cmX{8Y>9D_eb+9)R)0H?W0)k#22K z&?1m`@7{e>uqu!#nyq>w0bCqID6`0Y_3FrO&H7aV1rPOFN4!UhX`@Geb=+{ZExGi{ zjT;7N+*%37+gIR40u227w%g?0;MMOug^{w0!{w1|e2VDNC7<98rX4Ep7@fZ;czc7n z;P#>BzoOGM&l$PAOQNFf%&WI<4a|%*GigJ$fw1m$Ss79=zdX`Q(3eWEkaZk#gNNGN z7fCI+zoXH&T8K*ViHV6B*d~i6AE=*S!?v7eM^Rw?azuy#@yvz4%6lQJ3@IW3ZAlI4 z>C1jFzI>r00fhFjHK~ErCDIV19 z2T|!AlJGi-bp?Mk`I!Dp*>XZDw96!dVAz+}Xbx`cd2Ayhh8ttvrIemc!tahv=pRJe zYnEJc4&5Y@B^$roK;^Txn!iyZJ+$hqEXk<0si5G+-#5wbSPcDCxs03~!9U&CWxQEj z`Wrq*ye4kTJ;Jiytej8I>wQv_SzG3~QI8_lQfku(HAHW&h!+1Om}>KLhj#!hX#>Lb z?^V{iA8)%$F_TkL3dWm!mCzAHWtE+$R2(*fkSPC~P~so3gPd@$YfL1astVMfB8n7; z?(g+Xk3D0f5Ye#v_g{FmJF?p?1R!9#ACxs7i|QL%TQ6PCI@mG>iaEn!D8AeFlgfJ9 z+8%<$ieN=f#ynxR`(r5x4Mv&I*hrFl zJ^m_GaCOJws{D$U=qe*`1m<%u>7vSJH^oq;vpYcUm(Vd&6IsR%Xe;}S@7Js94B<6Nhj~}%H#u%PTT6n zp=Z^@>vLA|ifwLLs=;gJvwh|8`umh0KYsLK+o<%0@!*QZY30mY-X)%Q9!x+lj4_d` zzIhsl}U_1mV}+R=Nv49neyzgpzk^Qha-zbk_n@%&19 z`_7wMY4WawHLfn%xsiJdo;E_Y&cjBltE*dk+tga0aWja~bbG9<%|KF+_gh|BO>vVl z17IGL3bW#SM0O*RYB0XcRL13Z!@biyQeI6nZuc%}X}0xT2yNP4z<|II{t(`m~j$d*2$jfEV|huOgJgo%WiU3tq^=AYvpt zZ%Krul(BKfHL^mf6)NNUT-USy<%zfrTTG%y+3&5q)ZW- zdZvbJ@V7VTuO=n9-R*e%7>YHM)zHuo7Z%QY;w>x$A$-YuxmLYZ{Oo1qsWWFJe3aq@ zRZ7^&J_*9LE`ug9+)`_ExWgxpbDq2Kr|v2rxah=8B0Tu$(WAxB+BEY^uH=}!y6mWt zR1%kp2>IzBM6~er53+QARCYWc96QOT%IhaS030^?eNs`rPO4)4J)}WPc*TMzR70K( z9DzLR7vu0Z@k;F?*+z=ot|o))`{@XNFS^5pV@FFnO_VjNX6zSBHU33KBM)%usma7d z!gV7Lk1D-%vT)BjOP z?tdKiKMwnUr^D_K)zm~I0T5v^u$`OwZ@@SG|67VQ^xUz{9OottQ=gx<^*?M=o!Mh9 zuxD&N?vE`MmPmO_E!dG@H{BI3&3dpGVicD3fLlkSo}Gn-dI#sx7+3zJV!eeZ?#Ym{ zxhj-$MZAl4N`l+;K^y1U^SKG!lF;($##2=HH>?!Ac$Y0qA?3l(V(Z%+=|Ae`UUlb4 zq-pr#R5_jxbS*}M3aF8sgp21KX$}*Z-xLr(6 z+En60E>v9B%HZnxkVl%O>bI&S6j4)!&PuL#Sy;I2_GvQS>m5{a46k03W~{O14j~#D z*;_miPMl4Mv%U2yyQ;Ge?sdB@{__w^*eUm*84nR0&GrM{^|KkY+}nu>LoctY#Fa@b z1^PICsQqaS^%0l=*6z5qYh9Xy#SHH+Ki={^oz%DmvvDC^-~OCib>wK5T1EDY5nm&F zwCX9vdM6F}$Lx>}z0Kl}Z50V&*SES^S&UyFM&tgv4;SbwXK&SyT{e}_CgChfx9Q@Q z&VMy{in|wwPes3R&#cZbbRu?1J9VThXsA*)J7*M|Cr@i^2+g@~mtd|dI7lklrQ1UV zzPfq!7z<==>%E(K(X?UEy`5=rH>SEX-$J99`{CSCmZbQke4U!z@F|Uy({JAz7xt>b zp3r7{JWaLY9Zl2ZkX;??l)`GuVCd1MuSu0|*?WSBb!5$nGVcb_3s4876YSrf()%cygzicsb0Kl%x0UR6n~ya(#VU1Lwz@T%0V@iu`8MI zCPGlRe5eHUc#{&k_Fpvw8x^C2^16J}u*GZf$zK}9JT!43o{zFhgeF6aZ#H-6Z-)H# zzH=cuo>W2#*@mj^uIJXd#4zS?Ki_3Ly1TU;7a7;dRMfsn_DYhi(tAT$NtwR7V=VK# zz3v-J*sXUMpV$tYrK|dmyI97;tXX*rN)b)o(iDQQMvNs)TUbd6-m*hNkKlsg;Wn&?Uk;VSVYSz+|GmGJqARFE z{ZRtlqSTEhC8PcrGC$4Pi`l&x>BpB^R46#h30PEXzEcT!$Q@Hs>zF^(op!oh`btRY z;#IvL(${|El3_N`%PY2{lG?PX*fVl2BSoo}nYpA;OIXgfH2x&I<_et_&#AiO&V-_; zlDD*{^SX1^C1UP>_;!rt$4&D0)S3X@erz=6lAQAXO8>RR0*f0e_dbQ zJ>*eTeWlB3>8CmFQFbbi%6pu0UdH<41iVzKP&UsD84!9S%{DQArt8I2RIuvaucD&F zOY{W1=lT%d3&uM)F0~$!OY6?9OmkYocpp867+tkOI1h{AN9()=vmQS3f{S`n=GjCX zYh0;@Set&6^SnZS`qpr-f!V-td2vdf?Jqx&|0g4VzH6`YFV{tRdC=67MOUud6=~Bi zvPySmcH0hiWc?b<0lX(7p9)De5Bj`}qv$c2%;iFZyEX=6BtRc>B%8v=R?#Ni{)<06 zNdMUM{_+xpKe!K8H8f&1TwbM%v3LGwry?j11V5xi-?YbFlogm@ds+8#nUrjj^vgNs z#jfP3r}$$@pI6U|IyyDmC920*%~#oUcJ>S$W{i{RnDCNs&p-cgtnIX=mE~TYvHvoS zEVsGgB|XC+WpwzLKIrCwd+h%*RxxlpA)=y;7go{^I zmG_@y(jRJzbYf*1g=iT%2(t{eu%#b{Y8c!Ub<>aD;)f=&Iku8#I)Ue81%38-pAL@jbuJ4@oOh*IqFb{C@5fKr|C5TVg zV~U_UQSAP5a`NKhI>*^B7?h<=nwCE%-?Gn0!q~*Tpb(NJxNH4aHOl#wfBTm&CtN!9 z%QTdj^3iPaj%BKkk1G1nh{I*8K)+!3?(tMh|9*|!%znt^66*KGoaD@H4(shfb8pbXo15IJ$ zFAxmf$>z4|P>d3_UL4L9sE$U&-OhtLL8&9%6qnn{@51Frk?*=YM3-82)-G^pb6J*~ z{ezkOa+UKpt`5hFZgs?h> zlFdutLdnJR<&V2IUmB)ywCR}E>vc)vp0LXkdpNxZ%SD{vTsD9IohVzQB&CzSBXLYQ`f_k1D5KfvFBRsED<#zi>%3Wr`BxT7_|b{Ii$e#K3~ND!@ZSFJ zWN@nIp+gh=AxDfgysfNaYHttwletun$@zRc9NjWVd&+#UyCs-Bs_35M)4cM+k+G2P z*qugEH$t&X!wbONC}Uazh|4wuhh1*T97d1V2W*9GFTv1weBIJ8hB-Uxwa4UXkodX; zE01*S4R{=-rSd6}pU6|%^W#mg_+L~Pme5}H$BE=?tUFrgN{r?bPyX=1FlT#r_wW!6 z6@#yQ_5fYaw&Kklqe1proa>Ksa(8#ftVMs_cP*W$ZOWlGz~4}t=f9g|qJkISpTk|- zD|wU>#`0Z7p_8(7GvmM@9WQzZ@^!Q=I*#(J_r=Ojl=&>3nuzXGlhf;`250wfAKH1OY0jV77K$tQfr}9+zr<`>`wHSFXuziJ?)@YdoyPh04 zqT{Xm+4yl#ooj@a<<>;*0&~5(7i$y`0P!>jtUK@gD^PhS>Pes5f|E#&{#T~@07;%>a^)?HMRuv#$k zB!QgrHFWCyIrgNI;F)fssCdo-VEl)+=!KEzj~+QPx67DF#+x;JR|&93Au%&1Ha0d6 z(*?SqFbjL~o_u=gF!Y{*!6!wZ#Uc{T+2U-23k!=7@<0nPlU6GHOdd7}o9N4YGwo%+ zcNO7SOfHjkESk!5C>f?yd4$%9y`@amZax7uiVxZ7)l#zDINQOw)QOMvIlD>8o#e z5NqQBd63Yly@oHuIsvk-lJ@-qet}J)fm;D4~MdL-gO|wZ!Ymt9H-QV3D z)bE+rk-`*xqniiy&v#pRUhNk=8|d{rX1`olty!CTMrqj@DTl%%Zp5VyQ2!;x~1a-1S^+yf00V2T?@j zmQE3twES$I%GlWBE($|Ckt#CyWF7M??8;oW*Tm6twJ=NQ-7w$F2K0(?DAvgrJrq%8 zWj-l6vwvkqN>sG&H)E(2rq6?z+j=)wOJpZVw@3^EAj!$cR}v)@@~d&Ib9K67eJYB| zV*sDZ$+gn5)T)zS$uTTo{7MzRIW;ECGwow14M z5VN{PJ636fu;bJg{dm>AS6z+M#l-=;vGVJ!yA0@)CWF0Sr<=LP!=6V=eQ9ODk&WXv zk558MESlnGdos{KAb~G|K0b7)u>P7w!DEW*Tv>P5l5=5$a?vCdDoPc$DF)b3yNUq%q@g>GHz?jDV5f;w~@Ah zFD<-x__*Qz&Mv*U7{8Y0b7uU==pTWUFS>NSQoiSWd(KQZj zs9*@U=4y_|@cfiXcK&DIELUBrqn(45*$+4oxtcf{ZMK)#nOx>&1pSxCuUxgR%f#N^ z{&V|Jgzq?;;L;i3gE*1wyGi#!rWv+v26}><3u{tro8`((0YXHmaUu12()SgjytVePq@<Y9pw4A=YjZk&y<6VWzucnxqpWm)9wz!P z)kv;v0{hr`FL-&|Xd)rgT zw_KQLBvmXHp;}j}!}5&B=96BAVvo10r^{%auKc)%<8*4-Wx{C9-w#hJorqH7el$sx za9X#?Vx9A7UAZyiFm#-aXo;SjJlnm$J{Uxt?cO&IWGoH74y1O=ThINf3@rHd>(SD1 z6Ktf3=#T7&SvvgLTm?mN4c;J;Yf@L#SlF-a#bt1H{vj7SRqz_we<b?fPJ=44w!k(4ZJXF{VjX<<4 zWB9%Qd^;IT$KPk;y=9=U%4`7H-xJ#u+$6xyP!8Ed=Z2z9s>Xlq zJQ3$8@{($vWR2yY4!JxEfVGN}Rb;`Vv-zkkOM(yDE*UoX+qkUwhk>j%WC^Fu4=Q}1hCvv8rSaTl01dz;e?kJI&bd|-ky zLiZxL))og&Y%sFD=O(L5VCaf8WV0cCfiTGLik z1aLH4-DT6R?U?RI<$QGp>kqVT_s5USu`@s!Lk7#xP(%K>&9}LVsHZ}U^wS(1#OmH2 z34$%>#6S~+3o~B;2h3bP*I(+>U5lhN-86af=_a60>3e)7%S|ch%O9svHCCtrz$VCs zJw@!!K#U`)!s6hPt#j|sE>aU(I6@+Tv@mWWfTDsg;W9+_HvfrM1^bUPj&}xk@!N6I z?^a*1W*VB2Lq+e};{=y{)?$P~dNiX1`zT*?FP!OXc7~l@${lQPrH`BHGD8+1u>vw? zK<836H`^K$bc3B+-#*MWWN17O@;G?qiRR$)3?{hZzIQ!#MenwIKS8xcx3XR z5!Bng1c{|^*!fIe*qn9Umb<&-;H(6h0%oMxCI*G>8qR}Q;Y;B}CdQ_VTLQ`9XF4k9 zvOc!%@KMF7K#Dq^R^H6^R3RzdG05!U&-Fow5Pw&ixTK`6jGZcFmC*Lxu+-#L`&+@n zWwPZY9n+QfqW5(`+S!*P$-LUi2?M$$WXrCe zg=hEKti5ZuCHgA*Sf)dR4zVQv`fSxv<31?rGFAh5^9G`rg37V#h!>ZYg?{+(0hM3lOItLwTCLkus>s5s%lMWAebK*oi_ZTE7%U0G z-=zZ>t)h!N0ok+GdlGAMAKiQL;80WvDje3BE&r{(;Arw#@w02MEI{GF11h(ojly5X zpQ#gnU+y3-0(fc1$lqMw7(o1)#0p=3SR!Z*3!@JyVtuNh`Df2f8r0q;41;1rzSd;- zKZ{gApcm96hIHPxE=O2$PLd7mKfO%;7sw%qXZ>g^)#(dMZ0wcSu5>;BCCY_sCG}<} zupDpGIr#rSe&Z)rJg;5+k-frj{q?y*?UC16GsZ==TMB=vz9o#YuMhtL4fjw&-L1t6%{L=t`==HeQ^%@P)WafSQY`g=pOYTH;X8?`N}mLfUb$7Z4+=l7x< z`SbWQbYC5dNbR#}P3&GfzqYpGoX1|%_ZSi2i-e)M{#;`msgVG zP>~_HEerbD!^2_PWU^&Q|2Ie?En>Vm?t)6m)vN$BCqjiJvF^h{hlrZPuLgHM8Dx40 zvt_?@Zk8ns*53v{lbb1+|6`=~bn`@!;k1Vf$J3nMZ3YETMEK&^+1T(JDgi}sV#O&A z4%kkeU+{Xrxqw1|v0NI69^C}b!9pPLiR2nVvfQ1~n3Rl+k-|LjrV!{wWo=Ul;3aGd zN<0!NK{ksUgKca(J3C{Du0U#ku2%B<_eDQ`Jk-$C#FSSH1JP&=P^!r~jHv^yuwbY~ zqf6be^GKspA?smQ{HJ?|>lp`PXh1b3bR!=F-4F%ILo*n@mcfy(&r;-fPYM zZ{NHzA?sz_wpqCC5*wc?986pC@Q*LvBEY;RiHL~7aUeJRm6aXdX_wV1uBqWCNgKTXJHkL@}z61k&IX}EC z;PiFRS^DD^V&T3@)#%dEly1uAsXVXJNI|sP%z!O1 zh>^PbE8Om^Qbc6tUc57qlVPTNMnxbX!fY*%eqUp#(U+d!f*O|_8A!-L8;44nXYW#8 z@!)?2sGeI{Cu5I4+W4z+o`O6 zdsvIaW7LKW=YcpET2Jyxd+~zRqSMCK zb|JS>h|=4#=fx}d4=7n|ERD=ZQqZuwclSb%kwVB8yA9TFgdNrg^&RjFcr(nR-LSJ9 znI;r4dB}V5_dVdG_);{sVtw6|#Uu9}(!NbK$qHTdNgUH17mH=uQe zN3jcdq|6UAR%@OSl1h_=Q=7LlQ_xSQnz_%O1-^3JzOOZ$Iil>nRc+Q1f)#e?q4kQ3 zijK@|>8nZN0q78cV35CWu+4=!KBuIf=3bcAS9KTL?jMV%gSQAo`d4QD?Ir%qJw>g!C`}OP0I9MtA|=i3(}lrcw7tIdPNGs_JU` z@9Fr3RLhW`zDo=eaUQ%K$UPY!6>UD2nGiGW;F*YdkXk`YP0-g@6u|Qj99-esw{Jm2 zLYZmqD6$DkBL|y3Mc*jN1P3X_TRqRg7Y{ZbO^JQ;hJa;^l^=-xQJ}BDoYnPUaF5dS z1eAPdn;5O(hZR9=+gKhg?AKRIrk+n}#^%#hcO@(f*UQ5ulydq0NSt0Q^sH zTsxKOr9>qr%G!>}bpHC~we79{{tl#9H>;wdAs~Wqnq}rq zD_j#?3~2rCrCRpGQR^F{uJa2xSSch?bZav)zBZ5{1sMREY@p^OvQmC7@e16wPr!ID zRe)6++&Fof9Qukw*{x-^ciR|W3S%_5On0bFpJ_T^45uRb@ffK1?k+@7v5aeJQ0QSpc z@ku~Y9Jq{y194{WTepWOFq33uk2n>tdshE^vT+a8a|@xDHTgGrEeC77qlxe|z^ zpxm-DiCtQ+TEI*#alJK|!S$rK&Si8c&)v$x{rgNOpxHXIg8rNdY7M2RITpZM1prBM|2y(HP9Ra3jqlD~HvZcOY<G<5XOxs$)9V*v zqb+WEZ#$*_v$QSZ_Vd z!F@;YCg5ACI2r;Muaqn!amDw9CUqjUX`S15VF-e{?YpcsQtz5|(6%C8vCbs zRy@e$)SF98}r z=*l2Rum_ANDsP2P_O>_ZNoZ2c7=_f6{0oJ}E?qJ-H8n*>32?zOMrxsjJ}ygRwOzb^ z{PK=@aRN$z#hU`U9R>9CQiMUDKxe*h^MmaTRNf4TH7Y6=AYww%nJPNtsw^wVQbcGd z;7;}A<7^l5kmDGLf=Ujc+p1|JNn($opcUsn#pQS9J0y0-B-K;ai7@m-Sp^N^5WOJ- zc%z3P$(wA^0}5JY1UrYhglzwX38SYL4j*OAgN2rV6&ZJEd5@cK1#4KS=)nq z?p8iyM!qnYu}`4+b#eFZTd;;zX>z#U9CPo;h`wWWPP;;}meQaS3c!4@g3vHKzv3e@ z@Rc8SnVvnvNIOWqegA-ey8Jh8o3_ZosVaX@#(AAJ0@i)7fK`6*4yCO6RFK~CUtS2G zlF!?(U%#4Hj5=3LCmn*6ytA|KY1!X{{|Q)&EN_oZYmgiSiI!dbY)UyCUl6;UMZP1? z58q@mf7(|6bgZ4F@T$`6uouB@&g?l#9xnc@m$4JB<~lxMnw#$@M`i{F??v!%axP-3 zttURW`IEd@?rL0F;Rd|x17$>t1R4W&nAtQW;kZ!9q_S@tn|y$mtGRh_J=yB{^YjiS zAI>o)?}D+| z^`R}aJBrskT|N{Q4TgJyc88;c8FK#2{-Xq6)`fSuTBjw`d}mIw6xkn{@JR5w0m<5@ zdZv1U4vcaha`ThF*gytmKmLyITC^}&0=VN{8O>={7w)*-UGi)n=Q8$%$Pe0sUMZAk z`xbWdkIt!6XF6fC-`+d|!f((ewl8a}t4rIF$ZEVFt_0NbzIuBLUdxR=T>mU|d{LdF%|Efgv(i2Q8+INByp0`M4Q6iWyIo!}ljx-Gfu^Wk699T_vKf0!vJgOJ%=S)~iRNK{^YmJ0 z8vBFad@cATT77$#V11wo1y!CHxG_w&2ZWrFUi?kU(%17AioQO}RVf~e@4>EKw70v} zC>aR)@N_@OS#%D6`jb&V;e~MO&uPS|%DOHNUA>51)6eYO{`vYOrF~YwuGz+^d4cH5 zw(3v%!To)_%C^&VUrByNQ$wp*gElLIlx9h~Dq5cW8I9Z0?g~MOLilc3zec3fP_&U( zZ>BSxUUOTMaKQmotgl6nfC8#)zE{r^r|Jo*{Q8$I6FggrPv&RM`A87zL-%%+z3Yu3 zH9uwC$+7YXU#Z_&6jJCuK2cw#_}!JPzOhE36O`VSw1P^7Bz&S|+L%RVOU(#?+e z!Ud*sR)QCWfVaVpHs5ppsjue1SRR*RxQ;ZNmU>PkK#T?pGDEeEOl5my4$ zYio>Ww)s;=lTWb@SxV7w?i079+1v%GvphV7NCk>bz~x)FjCQv<`d%Eh)JAEJ$(s|| zn)HATi3Qzh>tBvjmAWQ^Xp$PpFJ=kL;~1sD>Qo8SoDRWIV;Ezpu%Y1&a0rMrb_Yef zG9#!Wb-iEaX+hI+^MlYGW})XyqI>UKSha1pR|o?c{rWXfo;0nG|M@P(FSOn=Qp~Z&%e>piYlu<z~~JSw1!6(_3hZJs~a-pf~4 z`P81}NMUPI7upHXojR9~@}W4|wg=**Z}^e0s=Hw4^{0`!0Pn~RD;OE%%D!* z6jv-=?x1_@U{__3qzN2qi0m#Y>@SxLYyf=#C8AUF^h;__!bhTxG}gRK_o}eNj?8qj z$9hr9Zu27$v%aaD^M9ac&-_#{dtJHNo>KwaE zL-!9Y3>NCY$vR8}S?GgY#MHMtT=f@@krn1F!G`19vay7-rLrY|=?KYXq-vd(4XzXTiAAi&OV z3x)JC)OJ1%%h(kmu#cMx0M6BYT=0l6t^d{-BxiN)9ZeRo*&xST2>!4gI>_?r@{PRg z6Co+jcerMl58ZyEM0&E%kkbeCcDLxhh|}!sgoe+(cP!%tl-if%GEhUaWpy97`#T%~ zciqK2aJr0ol6O;iC7!y@m(497!^7O(c4~k7f$wI}D@89i3v-+&xhG&HJnFXpz~7+h z$YdFlTQI{=c|-4{dk8=-R;_zad4-3W^M;gF5Agd z8)eW<=HhFO$O^K8okH$%SQv}0pRGC0y%r?HpoV0!yR{)%vkaD)<9bmcO|s2r7Ff^6 zMK|-#m!-`EG&=4<>*ix_S|PIzv2cC&xTa9M5<6tL9J0FvW9yywK6oxK(4_-G0VGlY z%nlND?gl|Oh_$t~{eH_f7Y~eNBVgbPO1+PtKhIfYZ_3Hdi5VAiCQ z%hsA2F9Bsg1NJBj0PX=-9O0UG7)1R`Y^r&hv3xdF^1&dojb=V~J$3rDIAP7V9RSKbw^!qx?Ceu1?+hk4h)1gnzE2g&qef0l! zeE-`9KY73ccJw@s`P1?3+qIIo?Q%oVA7}7CJHy)#x*`7?H;w;)i+DHo58)-B#~l*} RT16HXh=!he#r>x*{s$zQiERJ? literal 0 HcmV?d00001 diff --git a/sdk/python/packages/flet/integration_tests/examples/material/test_badge.py b/sdk/python/packages/flet/integration_tests/examples/material/test_badge.py index 1f1bd08a5a..a1de4abd87 100644 --- a/sdk/python/packages/flet/integration_tests/examples/material/test_badge.py +++ b/sdk/python/packages/flet/integration_tests/examples/material/test_badge.py @@ -2,6 +2,7 @@ import flet as ft import flet.testing as ftt +from examples.controls.badge import basic @pytest.mark.asyncio(loop_scope="function") @@ -19,27 +20,21 @@ async def test_image_for_docs(flet_app_function: ftt.FletTestApp, request): ) -# @pytest.mark.asyncio(loop_scope="function") -# async def test_image_for_docs(flet_app_function: ftt.FletTestApp, request): -# page = flet_app_function.page -# page.theme_mode = ft.ThemeMode.LIGHT -# page.add( -# ft.Container( -# width=160, -# height=120, -# alignment=ft.alignment.center, -# bgcolor=ft.Colors.SURFACE, -# content=ft.IconButton( -# icon=ft.Icons.PHONE, -# badge=ft.Badge(label="3"), -# ), -# ) -# ) -# page.update() -# screenshot = await flet_app_function.wrap_page_controls_in_screenshot(margin=12) -# flet_app_function.assert_screenshot( -# request.node.name, -# await screenshot.capture( -# pixel_ratio=flet_app_function.screenshots_pixel_ratio -# ), -# ) +@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.page.enable_screenshots = True + flet_app_function.page.window.width = 350 + flet_app_function.page.window.height = 300 + flet_app_function.page.update() + await flet_app_function.tester.pump_and_settle() + flet_app_function.assert_screenshot( + "badge-navigation-bar", + await flet_app_function.page.take_screenshot( + pixel_ratio=flet_app_function.screenshots_pixel_ratio + ), + ) From 573c10eaaf799db4a36423b25965e2fc8dacedfb Mon Sep 17 00:00:00 2001 From: InesaFitsner Date: Tue, 14 Oct 2025 12:16:34 -0700 Subject: [PATCH 6/6] Add Banner example and integration test Updated Banner documentation to include a new example image and code snippet. Added an integration test and golden image for Banner control to improve test coverage and documentation clarity. --- .../packages/flet/docs/controls/banner.md | 7 ++-- .../golden/macos/banner/image_for_docs.png | Bin 0 -> 13537 bytes .../examples/material/test_banner.py | 30 ++++++++++++++++++ .../flet/src/flet/controls/material/banner.py | 11 +++++++ 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/golden/macos/banner/image_for_docs.png create mode 100644 sdk/python/packages/flet/integration_tests/examples/material/test_banner.py diff --git a/sdk/python/packages/flet/docs/controls/banner.md b/sdk/python/packages/flet/docs/controls/banner.md index 7a55786ebd..242aad0e43 100644 --- a/sdk/python/packages/flet/docs/controls/banner.md +++ b/sdk/python/packages/flet/docs/controls/banner.md @@ -1,10 +1,11 @@ --- class_name: flet.Banner examples: ../../examples/controls/banner -example_images: ../examples/controls/banner/media +example_images: ../test-images/examples/material/golden/macos/banner +example_media: ../examples/controls/banner/media --- -{{ class_summary(class_name) }} +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Banner") }} ## Examples @@ -16,7 +17,7 @@ example_images: ../examples/controls/banner/media --8<-- "{{ examples }}/basic.py" ``` -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/banner/image_for_docs.png b/sdk/python/packages/flet/integration_tests/examples/material/golden/macos/banner/image_for_docs.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f39edd15ce2eeb6c9519a7608b6fb900d33fe0 GIT binary patch literal 13537 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 literal 0 HcmV?d00001 diff --git a/sdk/python/packages/flet/integration_tests/examples/material/test_banner.py b/sdk/python/packages/flet/integration_tests/examples/material/test_banner.py new file mode 100644 index 0000000000..b7a6b5a3ce --- /dev/null +++ b/sdk/python/packages/flet/integration_tests/examples/material/test_banner.py @@ -0,0 +1,30 @@ +import pytest + +import flet as ft +import flet.testing as ftt + + +@pytest.mark.asyncio(loop_scope="function") +async def test_image_for_docs(flet_app_function: ftt.FletTestApp, request): + page = flet_app_function.page + page.theme_mode = ft.ThemeMode.LIGHT + page.enable_screenshots = True + page.window.width = 400 + page.window.height = 200 + banner = ft.Banner( + leading=ft.Icon(ft.Icons.INFO_OUTLINED, color=ft.Colors.PRIMARY), + content=ft.Text("Backup completed successfully."), + actions=[ft.TextButton("Dismiss")], + bgcolor=ft.Colors.SURFACE_CONTAINER_LOW, + open=True, + ) + page.add(banner) + page.update() + await flet_app_function.tester.pump_and_settle() + flet_app_function.assert_screenshot( + "test_image_for_docs", + await flet_app_function.page.take_screenshot( + pixel_ratio=flet_app_function.screenshots_pixel_ratio + ), + ) + page.update() diff --git a/sdk/python/packages/flet/src/flet/controls/material/banner.py b/sdk/python/packages/flet/src/flet/controls/material/banner.py index 0d6046b10b..1305677b56 100644 --- a/sdk/python/packages/flet/src/flet/controls/material/banner.py +++ b/sdk/python/packages/flet/src/flet/controls/material/banner.py @@ -26,6 +26,17 @@ class Banner(DialogControl): Banners are displayed at the top of the screen, below a top app bar. They are persistent and non-modal, allowing the user to either ignore them or interact with them at any time. + + ```python + banner = ft.Banner( + leading=ft.Icon(ft.Icons.INFO_OUTLINED, color=ft.Colors.PRIMARY), + content=ft.Text("Backup completed successfully."), + actions=[ft.TextButton("Dismiss")], + bgcolor=ft.Colors.SURFACE_CONTAINER_LOW, + open=True, + ) + page.show_dialog(banner) + ``` """ content: StrOrControl