@@ -44,6 +44,18 @@ def record_download(request: Request) -> None:
4444 browser_page .goto (f'{ server } /index.html' )
4545 button : Locator = browser_page .locator ('.home-quickstart .demo-button' )
4646 playwright_api .expect (button ).to_be_visible ()
47+ source : Locator = browser_page .locator ('.home-quickstart .demo-source' )
48+ playwright_api .expect (source ).to_be_visible ()
49+ theme : str
50+ for theme in ('light' , 'dark' ):
51+ browser_page .locator ('body' ).evaluate (
52+ '(body, theme) => body.dataset.theme = theme' , theme
53+ )
54+ assert source .locator ('.kn' ).first .evaluate (
55+ '(node) => getComputedStyle(node).color'
56+ ) != source .locator ('pre' ).evaluate (
57+ '(node) => getComputedStyle(node).color'
58+ )
4759 assert _worker_count (browser_page ) == 0
4860 assert not downloads
4961 button .click ()
@@ -52,6 +64,34 @@ def record_download(request: Request) -> None:
5264 assert not page [1 ]
5365
5466
67+ def test_homepage_can_edit_run_and_reset_the_example (
68+ server : str ,
69+ page : tuple [Page , list [str ]],
70+ ) -> None :
71+ browser_page : Page = page [0 ]
72+ browser_page .goto (f'{ server } /index.html' )
73+ source : Locator = browser_page .locator ('.home-quickstart .demo-source' )
74+ editor : Locator = browser_page .get_by_role (
75+ 'textbox' , name = 'Python example source'
76+ )
77+ edit : Locator = browser_page .get_by_role ('button' , name = 'Edit code' )
78+ edit .click ()
79+ playwright_api .expect (editor ).to_be_focused ()
80+ playwright_api .expect (source ).to_be_hidden ()
81+ original : str = editor .input_value ()
82+ editor .fill ("print('Edited example ran')" )
83+ browser_page .get_by_role ('button' , name = 'Run' , exact = True ).click ()
84+ _wait_for_terminal_text (
85+ browser_page , 'Edited example ran' , BOOT_TIMEOUT_MS
86+ )
87+ browser_page .get_by_role ('button' , name = 'Reset example' ).click ()
88+ playwright_api .expect (source ).to_be_visible ()
89+ playwright_api .expect (editor ).to_be_hidden ()
90+ playwright_api .expect (edit ).to_be_focused ()
91+ assert browser_page .locator ('.demo-editor' ).input_value () == original
92+ assert not page [1 ]
93+
94+
5595def test_showcase_keyboard_updates_recording_title_and_guide (
5696 server : str ,
5797 page : tuple [Page , list [str ]],
0 commit comments