1
- from selenium . common . exceptions import TimeoutException
1
+ import pytest
2
2
3
3
from sentry .models .project import Project
4
+ from sentry .testutils .asserts import assert_existing_projects_status
4
5
from sentry .testutils .cases import AcceptanceTestCase
5
6
from sentry .testutils .silo import no_silo_test
6
- from sentry .utils .retries import TimedRetryPolicy
7
+
8
+ pytestmark = pytest .mark .sentry_metrics
7
9
8
10
9
11
@no_silo_test
@@ -18,55 +20,69 @@ def setUp(self):
18
20
)
19
21
self .login_as (self .user )
20
22
21
- def test_onboarding (self ):
23
+ def start_onboarding (self ):
22
24
self .browser .get ("/onboarding/%s/" % self .org .slug )
23
-
24
- # Welcome step
25
25
self .browser .wait_until ('[data-test-id="onboarding-step-welcome"]' )
26
26
self .browser .click ('[aria-label="Start"]' )
27
-
28
- # Platform selection step
29
27
self .browser .wait_until ('[data-test-id="onboarding-step-select-platform"]' )
30
28
31
- @TimedRetryPolicy .wrap (timeout = 5 , exceptions = ((TimeoutException ,)))
32
- def click_platform_select_name (browser ):
33
- # Select and create React project
34
- browser .click ('[data-test-id="platform-javascript-react"]' )
35
-
36
- # Project getting started loads
37
- browser .wait_until (xpath = '//h2[text()="Configure React SDK"]' )
38
-
39
- click_platform_select_name (self .browser )
40
-
41
- # Verify project was created for org
42
- project = Project .objects .get (organization = self .org )
29
+ def test_onboarding_happy_path (self ):
30
+ self .start_onboarding ()
31
+ self .browser .click ('[data-test-id="platform-javascript-react"]' )
32
+ self .browser .wait_until (xpath = '//h2[text()="Configure React SDK"]' )
33
+ project = Project .objects .get (organization = self .org , slug = "javascript-react" )
43
34
assert project .name == "javascript-react"
44
35
assert project .platform == "javascript-react"
45
-
46
- # Click on back button
36
+ assert_existing_projects_status (self .org , [project .id ], [])
37
+
38
+ def test_project_deletion_on_going_back (self ):
39
+ self .start_onboarding ()
40
+ self .browser .click ('[data-test-id="platform-javascript-nextjs"]' )
41
+ self .browser .wait_until (xpath = '//h2[text()="Configure Next.js SDK"]' )
42
+ project1 = Project .objects .get (organization = self .org , slug = "javascript-nextjs" )
43
+ assert project1 .name == "javascript-nextjs"
44
+ assert project1 .platform == "javascript-nextjs"
47
45
self .browser .click ('[aria-label="Back"]' )
48
-
49
- # Assert no deletion confirm dialog is shown
50
- assert not self .browser .element_exists ("[role='dialog']" )
51
-
52
- # Platform selection step
53
- self .browser .wait_until ('[data-test-id="onboarding-step-select-platform"]' )
54
-
55
- # Select generic platform
46
+ self .browser .click ('[data-test-id="platform-javascript-react"]' )
47
+ self .browser .wait_until (xpath = '//h2[text()="Configure React SDK"]' )
48
+ project2 = Project .objects .get (organization = self .org , slug = "javascript-react" )
49
+ assert project2 .name == "javascript-react"
50
+ assert project2 .platform == "javascript-react"
51
+ self .browser .back ()
52
+ self .browser .click (xpath = '//a[text()="Skip Onboarding"]' )
53
+ self .browser .get ("/organizations/%s/projects/" % self .org .slug )
54
+ self .browser .wait_until (xpath = '//h1[text()="Remain Calm"]' )
55
+ assert_existing_projects_status (self .org , [], [project1 .id , project2 .id ])
56
+
57
+ def test_framework_modal_open_by_selecting_vanilla_platform (self ):
58
+ self .start_onboarding ()
56
59
self .browser .click ('[data-test-id="platform-javascript"]' )
57
-
58
- # Modal is shown prompting to select a framework
59
60
self .browser .wait_until (xpath = '//h6[text()="Do you use a framework?"]' )
60
-
61
- # Close modal
62
61
self .browser .click ('[aria-label="Close Modal"]' )
63
-
64
- # Platform is not selected
65
62
assert not self .browser .element_exists ('[aria-label="Clear"]' )
66
-
67
- # Click again on the modal and continue with the vanilla project
68
63
self .browser .click ('[data-test-id="platform-javascript"]' )
69
64
self .browser .click ('[aria-label="Configure SDK"]' )
70
-
71
- # Project getting started loads
72
65
self .browser .wait_until (xpath = '//h2[text()="Configure Browser JavaScript SDK"]' )
66
+ project = Project .objects .get (organization = self .org , slug = "javascript" )
67
+ assert project .name == "javascript"
68
+ assert project .platform == "javascript"
69
+ assert_existing_projects_status (self .org , [project .id ], [])
70
+
71
+ def test_create_delete_create_same_platform (self ):
72
+ "This test ensures that the regression fixed in PR https://github.com/getsentry/sentry/pull/87869 no longer occurs."
73
+ self .start_onboarding ()
74
+ self .browser .click ('[data-test-id="platform-javascript-nextjs"]' )
75
+ self .browser .wait_until (xpath = '//h2[text()="Configure Next.js SDK"]' )
76
+ project1 = Project .objects .get (organization = self .org , slug = "javascript-nextjs" )
77
+ assert project1 .name == "javascript-nextjs"
78
+ assert project1 .platform == "javascript-nextjs"
79
+ self .browser .click ('[aria-label="Back"]' )
80
+ self .browser .click ('[data-test-id="platform-javascript-nextjs"]' )
81
+ self .browser .wait_until (xpath = '//h2[text()="Configure Next.js SDK"]' )
82
+ project2 = Project .objects .get (organization = self .org , slug = "javascript-nextjs" )
83
+ assert project2 .name == "javascript-nextjs"
84
+ assert project2 .platform == "javascript-nextjs"
85
+ self .browser .click (xpath = '//a[text()="Skip Onboarding"]' )
86
+ self .browser .get ("/organizations/%s/projects/" % self .org .slug )
87
+ self .browser .wait_until ("[data-test-id='javascript-nextjs']" )
88
+ assert_existing_projects_status (self .org , [project2 .id ], [project1 .id ])
0 commit comments