test_timeline.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from base import BaseTestCase, Timeline
  2. from parameterized import parameterized
  3. normal = [['jack'], ['elonmusk']]
  4. after = [['jack', '1681686036294803456'],
  5. ['elonmusk', '1681686036294803456']]
  6. no_more = [['mobile_test_8?cursor=DAABCgABF4YVAqN___kKAAICNn_4msIQAAgAAwAAAAIAAA']]
  7. empty = [['emptyuser'], ['mobile_test_10']]
  8. protected = [['mobile_test_7'], ['Empty_user']]
  9. photo_rail = [['mobile_test', ['Bo0nDsYIYAIjqVn', 'BoQbwJAIUAA0QCY', 'BoQbRQxIIAA3FWD', 'Bn8Qh8iIIAABXrG']]]
  10. class TweetTest(BaseTestCase):
  11. @parameterized.expand(normal)
  12. def test_timeline(self, username):
  13. self.open_nitter(username)
  14. self.assert_element_present(Timeline.older)
  15. self.assert_element_absent(Timeline.newest)
  16. self.assert_element_absent(Timeline.end)
  17. self.assert_element_absent(Timeline.none)
  18. @parameterized.expand(after)
  19. def test_after(self, username, cursor):
  20. self.open_nitter(f'{username}?cursor={cursor}')
  21. self.assert_element_present(Timeline.newest)
  22. self.assert_element_present(Timeline.older)
  23. self.assert_element_absent(Timeline.end)
  24. self.assert_element_absent(Timeline.none)
  25. @parameterized.expand(no_more)
  26. def test_no_more(self, username):
  27. self.open_nitter(username)
  28. self.assert_text('No more items', Timeline.end)
  29. self.assert_element_present(Timeline.newest)
  30. self.assert_element_absent(Timeline.older)
  31. @parameterized.expand(empty)
  32. def test_empty(self, username):
  33. self.open_nitter(username)
  34. self.assert_text('No items found', Timeline.none)
  35. self.assert_element_absent(Timeline.newest)
  36. self.assert_element_absent(Timeline.older)
  37. self.assert_element_absent(Timeline.end)
  38. @parameterized.expand(protected)
  39. def test_protected(self, username):
  40. self.open_nitter(username)
  41. self.assert_text('This account\'s tweets are protected.', Timeline.protected)
  42. self.assert_element_absent(Timeline.newest)
  43. self.assert_element_absent(Timeline.older)
  44. self.assert_element_absent(Timeline.end)
  45. def test_media_view_tabs(self):
  46. self.open_nitter('mobile_test/media')
  47. self.assert_element_present(Timeline.media_view_tabs)
  48. self.assert_text('Timeline', Timeline.media_view_timeline)
  49. self.assert_text('Grid', Timeline.media_view_grid)
  50. self.assert_text('Gallery', Timeline.media_view_gallery)
  51. self.assert_text('Timeline', Timeline.media_view_active)
  52. def test_media_view_grid_tab(self):
  53. self.open_nitter('mobile_test/media?view=grid')
  54. self.assert_element_present(Timeline.grid_view)
  55. self.assert_text('Grid', Timeline.media_view_active)
  56. def test_media_view_gallery_tab(self):
  57. self.open_nitter('mobile_test/media?view=gallery')
  58. self.assert_element_present(Timeline.gallery_view)
  59. self.assert_text('Gallery', Timeline.media_view_active)
  60. def test_media_view_tabs_not_on_posts(self):
  61. self.open_nitter('mobile_test')
  62. self.assert_element_absent(Timeline.media_view_tabs)
  63. #@parameterized.expand(photo_rail)
  64. #def test_photo_rail(self, username, images):
  65. #self.open_nitter(username)
  66. #self.assert_element_visible(Timeline.photo_rail)
  67. #for i, url in enumerate(images):
  68. #img = self.get_attribute(Timeline.photo_rail + f' a:nth-child({i + 1}) img', 'src')
  69. #self.assertIn(url, img)