test_onboarding.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. from selenium.common.exceptions import TimeoutException
  2. from sentry.models.project import Project
  3. from sentry.testutils.cases import AcceptanceTestCase
  4. from sentry.testutils.helpers.features import with_feature
  5. from sentry.testutils.silo import no_silo_test
  6. from sentry.utils.retries import TimedRetryPolicy
  7. @no_silo_test
  8. class OrganizationOnboardingTest(AcceptanceTestCase):
  9. def setUp(self):
  10. super().setUp()
  11. self.user = self.create_user("foo@example.com")
  12. self.org = self.create_organization(name="Rowdy Tiger", owner=None)
  13. self.team = self.create_team(organization=self.org, name="Mariachi Band")
  14. self.member = self.create_member(
  15. user=self.user, organization=self.org, role="owner", teams=[self.team]
  16. )
  17. self.login_as(self.user)
  18. def test_onboarding(self):
  19. self.browser.get("/onboarding/%s/" % self.org.slug)
  20. # Welcome step
  21. self.browser.wait_until('[data-test-id="onboarding-step-welcome"]')
  22. self.browser.click('[aria-label="Start"]')
  23. # Platform selection step
  24. self.browser.wait_until('[data-test-id="onboarding-step-select-platform"]')
  25. # Select and create nest JS project
  26. self.browser.click('[data-test-id="platform-node-nestjs"]')
  27. self.browser.wait_until_not('[data-test-id="platform-select-next"][aria-disabled="true"]')
  28. self.browser.wait_until('[data-test-id="platform-select-next"][aria-disabled="false"]')
  29. @TimedRetryPolicy.wrap(timeout=5, exceptions=((TimeoutException,)))
  30. def click_platform_select_name(browser):
  31. browser.click('[data-test-id="platform-select-next"]')
  32. # Project getting started
  33. browser.wait_until('[data-test-id="onboarding-step-setup-docs"]')
  34. click_platform_select_name(self.browser)
  35. # Verify project was created for org
  36. project = Project.objects.get(organization=self.org)
  37. assert project.name == "node-nestjs"
  38. assert project.platform == "node-nestjs"
  39. # Click on back button
  40. self.browser.click('[aria-label="Back"]')
  41. # Assert deletion confirm dialog is shown
  42. assert self.browser.element_exists("[role='dialog']")
  43. # Confirm deletion
  44. self.browser.click('[aria-label="Yes I\'m sure"]')
  45. # Platform selection step
  46. self.browser.wait_until('[data-test-id="onboarding-step-select-platform"]')
  47. # Select generic platform
  48. self.browser.click('[data-test-id="platform-javascript"]')
  49. # Click on primary button
  50. self.browser.click('[data-test-id="platform-select-next"]')
  51. # Modal is shown prompting to select a framework
  52. self.browser.wait_until(xpath='//h6[text()="Do you use a framework?"]')
  53. # Close modal
  54. self.browser.click('[aria-label="Close Modal"]')
  55. # Platform is selected
  56. assert self.browser.element_exists('[aria-label="Clear"]')
  57. # Click again on the modal and continue with the vanilla project
  58. self.browser.click('[data-test-id="platform-javascript"]')
  59. # Click on primary button
  60. self.browser.click('[data-test-id="platform-select-next"]')
  61. # Confirm in the modal
  62. self.browser.click('[role="dialog"] [aria-label="Configure SDK"]')
  63. # Project getting started loads
  64. self.browser.wait_until(xpath='//h2[text()="Configure Browser JavaScript SDK"]')
  65. @with_feature("organizations:onboarding-load-docs-on-platform-click-and-silent-delete-on-back")
  66. def test_click_platform_load_doc_and_silently_delete_inactive_project(self):
  67. self.browser.get("/onboarding/%s/" % self.org.slug)
  68. # Welcome step
  69. self.browser.wait_until('[data-test-id="onboarding-step-welcome"]')
  70. self.browser.click('[aria-label="Start"]')
  71. # Platform selection step
  72. self.browser.wait_until('[data-test-id="onboarding-step-select-platform"]')
  73. # Select and create React project
  74. self.browser.click('[data-test-id="platform-javascript-react"]')
  75. # Project getting started loads
  76. self.browser.wait_until(xpath='//h2[text()="Configure React SDK"]')
  77. # Verify project was created for org
  78. project = Project.objects.get(organization=self.org)
  79. assert project.name == "javascript-react"
  80. assert project.platform == "javascript-react"
  81. # Click on back button
  82. self.browser.click('[aria-label="Back"]')
  83. # Assert no deletion confirm dialog is shown
  84. assert not self.browser.element_exists("[role='dialog']")
  85. # Platform selection step
  86. self.browser.wait_until('[data-test-id="onboarding-step-select-platform"]')
  87. # Select generic platform
  88. self.browser.click('[data-test-id="platform-javascript"]')
  89. # Modal is shown prompting to select a framework
  90. self.browser.wait_until(xpath='//h6[text()="Do you use a framework?"]')
  91. # Close modal
  92. self.browser.click('[aria-label="Close Modal"]')
  93. # Platform is not selected
  94. assert not self.browser.element_exists('[aria-label="Clear"]')
  95. # Click again on the modal and continue with the vanilla project
  96. self.browser.click('[data-test-id="platform-javascript"]')
  97. self.browser.click('[aria-label="Configure SDK"]')
  98. # Project getting started loads
  99. self.browser.wait_until(xpath='//h2[text()="Configure Browser JavaScript SDK"]')