test_performance_summary.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from __future__ import absolute_import
  2. import pytz
  3. from six.moves.urllib.parse import urlencode
  4. from mock import patch
  5. from sentry.testutils import AcceptanceTestCase, SnubaTestCase
  6. from sentry.testutils.helpers.datetime import before_now, iso_format
  7. from sentry.utils.samples import load_data
  8. from .page_objects.transaction_summary import TransactionSummaryPage
  9. FEATURE_NAMES = ("organizations:performance-view",)
  10. def make_event(event_data):
  11. event_data["event_id"] = "c" * 32
  12. return event_data
  13. class PerformanceSummaryTest(AcceptanceTestCase, SnubaTestCase):
  14. def setUp(self):
  15. super(PerformanceSummaryTest, self).setUp()
  16. self.org = self.create_organization(owner=self.user, name="Rowdy Tiger")
  17. self.team = self.create_team(
  18. organization=self.org, name="Mariachi Band", members=[self.user]
  19. )
  20. self.project = self.create_project(organization=self.org, teams=[self.team], name="Bengal")
  21. self.group = self.create_group(project=self.project)
  22. self.login_as(self.user)
  23. self.path = u"/organizations/{}/performance/summary/?{}".format(
  24. self.org.slug,
  25. urlencode({"transaction": "/country_by_code/", "project": self.project.id}),
  26. )
  27. self.page = TransactionSummaryPage(self.browser)
  28. @patch("django.utils.timezone.now")
  29. def test_with_data(self, mock_now):
  30. mock_now.return_value = before_now().replace(tzinfo=pytz.utc)
  31. # Create a transaction
  32. event = make_event(load_data("transaction", timestamp=before_now(minutes=1)))
  33. self.store_event(data=event, project_id=self.project.id)
  34. self.wait_for_event_count(self.project.id, 1)
  35. self.store_event(
  36. data={
  37. "transaction": "/country_by_code/",
  38. "message": "This is bad",
  39. "event_id": "b" * 32,
  40. "timestamp": iso_format(before_now(minutes=1)),
  41. },
  42. project_id=self.project.id,
  43. )
  44. with self.feature(FEATURE_NAMES):
  45. self.browser.get(self.path)
  46. self.page.wait_until_loaded()
  47. self.browser.snapshot("performance summary - with data")
  48. @patch("django.utils.timezone.now")
  49. def test_view_details_from_summary(self, mock_now):
  50. mock_now.return_value = before_now().replace(tzinfo=pytz.utc)
  51. event = make_event(load_data("transaction", timestamp=before_now(minutes=1)))
  52. self.store_event(data=event, project_id=self.project.id)
  53. with self.feature(FEATURE_NAMES):
  54. self.browser.get(self.path)
  55. self.page.wait_until_loaded()
  56. # View the first event details.
  57. self.browser.element('[data-test-id="view-details"]').click()
  58. self.page.wait_until_loaded()
  59. self.browser.snapshot("performance event details")