test_thread.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from parameterized import parameterized
  2. import pytest
  3. from base import BaseTestCase, Conversation
  4. thread = [
  5. [
  6. "octonion/status/975253897697611777",
  7. [],
  8. "Based",
  9. ["Crystal", "Julia"],
  10. [["yeah,"], ["For", "Then"]],
  11. ],
  12. ["octonion/status/975254452625002496", ["Based"], "Crystal", ["Julia"], []],
  13. ["octonion/status/975256058384887808", ["Based", "Crystal"], "Julia", [], []],
  14. [
  15. "d0m96/status/1141811379407425537",
  16. [],
  17. "I'm",
  18. ["The", "The", "Today", "Some", "If", "There", "Above"],
  19. [["Thank", "Also,"]],
  20. ],
  21. [
  22. "gmpreussner/status/999766552546299904",
  23. [],
  24. "A",
  25. [],
  26. [["I", "Especially"], ["I"]],
  27. ],
  28. ]
  29. class ThreadTest(BaseTestCase):
  30. def find_tweets(self, selector):
  31. return self.find_elements(f"{selector} {Conversation.tweet_text}")
  32. def compare_first_word(self, tweets, selector):
  33. if len(tweets) > 0:
  34. self.assert_element_visible(selector)
  35. for i, tweet in enumerate(self.find_tweets(selector)):
  36. text = tweet.text.split(" ")[0]
  37. self.assert_equal(tweets[i], text)
  38. @parameterized.expand(thread)
  39. @pytest.mark.flaky(reruns=3)
  40. def test_thread(self, tweet, before, main, after, replies):
  41. self.open_nitter(tweet)
  42. self.assert_element_visible(Conversation.main)
  43. self.assert_text(main, Conversation.main)
  44. self.assert_text(main, Conversation.main)
  45. self.compare_first_word(before, Conversation.before)
  46. self.compare_first_word(after, Conversation.after)
  47. for i, reply in enumerate(self.find_elements(Conversation.thread)):
  48. selector = Conversation.replies + f" > div:nth-child({i + 1})"
  49. self.compare_first_word(replies[i], selector)