|
1 | 1 | import logging |
| 2 | +from typing import Literal |
2 | 3 |
|
3 | 4 | from selenium.common.exceptions import TimeoutException |
4 | 5 | from selenium.webdriver import ActionChains, Firefox |
@@ -659,10 +660,40 @@ def expect_bookmarks_toolbar_visibility(self, expected: bool) -> None: |
659 | 660 | self.bookmarks_toolbar, "collapsed", expected_value |
660 | 661 | ) |
661 | 662 |
|
662 | | - def open_audio_video_permission(self) -> BasePage: |
663 | | - """Open the Site information panel and select "Allow Audio and Video" """ |
| 663 | + # |
| 664 | + def set_site_autoplay_permission(self, settings: Literal["allow-audio-video", "block-audio-video", "allow-audio-only"]) -> BasePage: |
| 665 | + """ |
| 666 | + Open the Site audio-video permission panel and set a specific autoplay setting. |
| 667 | +
|
| 668 | + Arguments: |
| 669 | + settings: "allow-audio-video" → Allow Audio and Video, "block-audio-video" → Block Audio and Video, |
| 670 | + "allow-audio-only" → Allow Audio but block Video |
| 671 | + """ |
664 | 672 | self.click_on("autoplay-icon-blocked") |
665 | | - self.element_clickable("permission-popup-audio-blocked") |
666 | | - self.click_on("permission-popup-audio-blocked") |
667 | | - self.click_and_hide_menu("allow-audio-video-menuitem") |
| 673 | + |
| 674 | + if settings == "allow-audio-video": |
| 675 | + self.element_clickable("permission-popup-audio-blocked") |
| 676 | + self.click_on("permission-popup-audio-blocked") |
| 677 | + self.click_and_hide_menu("allow-audio-video-menuitem") |
| 678 | + |
| 679 | + elif settings == "block-audio-video": |
| 680 | + self.element_clickable("permission-popup-audio-video-allowed") |
| 681 | + self.click_and_hide_menu("block-audio-video-menuitem") |
| 682 | + |
| 683 | + elif settings == "allow-audio-only": |
| 684 | + self.element_clickable("permission-popup-audio-video-allowed") |
| 685 | + self.click_and_hide_menu("allow-audio-only-menuitem") |
668 | 686 | return self |
| 687 | + |
| 688 | + def verify_autoplay_state(self, expected: Literal["allow", "block"]) -> None: |
| 689 | + """ Verify the current state of the autoplay permission panel and icon. |
| 690 | + Arguments: |
| 691 | + expected: "allow" → Allow Audio and Video, "block" → Block Audio and Video |
| 692 | + """ |
| 693 | + if expected == "allow": |
| 694 | + self.element_visible("permission-popup-audio-video-allowed") |
| 695 | + self.element_not_visible("autoplay-icon-blocked") |
| 696 | + else: |
| 697 | + self.element_visible("permission-popup-audio-video-blocked") |
| 698 | + self.element_visible("autoplay-icon-blocked") |
| 699 | + |
0 commit comments