test.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. from seleniumbase import BaseCase
  2. from seleniumbase import config as sb_config
  3. import pytest
  4. import time
  5. class BaseFunctions(BaseCase):
  6. __test__ = False
  7. def start(self, browser):
  8. sb_config.browser = browser
  9. sb_config._browser_shortcut = browser
  10. sb_config.servername = "127.0.0.1"
  11. sb_config.port = 4444
  12. sb_config.settings_file = "settings.py"
  13. super().setUp()
  14. self.set_default_timeout(10)
  15. self.set_window_size(1920, 1080)
  16. self.open("https://musare.dev")
  17. pass
  18. def tearDown(self):
  19. self.save_screenshot_to_logs("Final")
  20. super().tearDown()
  21. pass
  22. def login(self):
  23. self.click(".header .content-container .content .buttons .login", scroll=False)
  24. self.type(".modal .modal-card-body form .control .input[type='email']", "Test66@diffey.dev")
  25. self.type(".modal .modal-card-body form #password-visibility-container .input[type='password']", "Test66@diffey.dev")
  26. self.save_screenshot_to_logs("Login Input")
  27. self.click(".modal .modal-card-foot #actions .button.is-primary", scroll=False)
  28. self.save_screenshot_to_logs("Login Submit")
  29. self.assert_element(".nav .nav-right a[href='/settings']")
  30. pass
  31. def test_login(self):
  32. self.login()
  33. pass
  34. def test_go_to_station(self):
  35. self.login()
  36. self.click(".station-card[href='/music']", scroll=False)
  37. self.assert_element("#station-inner-container #video-container #stationPlayer")
  38. self.save_screenshot_to_logs("Go to station")
  39. pass
  40. def test_go_to_station_logged_out(self):
  41. self.click(".station-card[href='/music']", scroll=False)
  42. self.assert_element("#station-inner-container #video-container #stationPlayer")
  43. self.save_screenshot_to_logs("Go to station logged out")
  44. pass
  45. def test_player_controls(self):
  46. self.login()
  47. self.click(".station-card[href='/music']", scroll=False)
  48. buttonContainer = "#station-inner-container #station-right-column #control-bar-container "
  49. self.click(f"{buttonContainer}#left-buttons button#local-pause", scroll=False)
  50. self.save_screenshot_to_logs("Local pause")
  51. self.click(f"{buttonContainer}#left-buttons button#local-resume", scroll=False)
  52. self.save_screenshot_to_logs("Local resume")
  53. self.click(f"{buttonContainer}#left-buttons button[content='Vote to Skip Song']", scroll=False)
  54. self.assert_text("Successfully voted to skip the current song.", "#toasts-container #toasts-content")
  55. self.save_screenshot_to_logs("Vote to skip song")
  56. self.click(f"{buttonContainer}#ratings button#like-song", scroll=False)
  57. self.sleep(3)
  58. self.save_screenshot_to_logs("Like song")
  59. self.click(f"{buttonContainer}#ratings.liked button#like-song", scroll=False)
  60. self.sleep(3)
  61. self.save_screenshot_to_logs("Unlike song")
  62. self.click(f"{buttonContainer}#ratings button#dislike-song", scroll=False)
  63. self.sleep(3)
  64. self.save_screenshot_to_logs("Dislike song")
  65. self.click(f"{buttonContainer}#ratings.disliked button#dislike-song", scroll=False)
  66. self.sleep(3)
  67. self.save_screenshot_to_logs("Undislike song")
  68. self.assert_element("#ratings button#dislike-song :not(.disliked)")
  69. pass
  70. def test_playlist_station(self):
  71. self.login()
  72. self.click(".station-card[href='/music']", scroll=False)
  73. self.click("#station-inner-container #station-left-column #sidebar-container #tabs-container #tab-selection .button:nth-child(3)", scroll=False)
  74. self.assert_element("#station-inner-container #station-left-column #sidebar-container #tabs-container #my-playlists")
  75. self.save_screenshot_to_logs("Open My Playlists")
  76. self.click("#station-inner-container #station-left-column #sidebar-container #tabs-container #my-playlists .create-playlist", scroll=False)
  77. self.type(".modal .modal-card-body .control .input[placeholder='Enter display name...']", f"Test - {int(time.time())}")
  78. self.sleep(5)
  79. self.save_screenshot_to_logs("Create Playlist Input")
  80. self.click(".modal .modal-card-foot .button.is-info", scroll=False)
  81. self.assert_element(".modal.is-active.edit-playlist-modal")
  82. self.assert_text("Successfully created playlist", "#toasts-container #toasts-content")
  83. pass
  84. @pytest.mark.flaky(reruns=3)
  85. class Firefox(BaseFunctions):
  86. __test__ = True
  87. def setUp(self):
  88. self.start("firefox")
  89. pass
  90. @pytest.mark.flaky(reruns=3)
  91. class Chrome(BaseFunctions):
  92. __test__ = True
  93. def setUp(self):
  94. self.start("chrome")
  95. pass