@@ -90,5 +90,50 @@ test.describe.serial("Rubrics creation workflow", () => {
90
90
await expect (
91
91
rubricRow . getByRole ( "link" , { name : `Edit ${ rubricName } ` , exact : true } )
92
92
) . toBeVisible ( ) ;
93
+ await expect (
94
+ rubricRow . getByRole ( "button" , {
95
+ name : `Delete ${ rubricName } ` ,
96
+ exact : true
97
+ } )
98
+ ) . toBeVisible ( ) ;
99
+ } ) ;
100
+
101
+ test ( "Teachers can delete rubrics" , async ( { page } ) => {
102
+ // Login as the teacher
103
+ await page . goto ( "/login" ) ;
104
+ await page . getByLabel ( "Email" ) . fill ( teacherEmail ) ;
105
+ await page . getByLabel ( "Password" ) . fill ( teacherPassword ) ;
106
+ await page . getByRole ( "button" , { name : "Submit" } ) . click ( ) ;
107
+
108
+ // Go to the rubrics page
109
+ await page . getByRole ( "link" , { name : "Rubrics" , exact : true } ) . click ( ) ;
110
+ await page . waitForURL ( / \/ r u b r i c s $ / ) ;
111
+
112
+ // Delete the rubric
113
+ await page
114
+ . getByRole ( "button" , { name : `Delete ${ rubricName } ` , exact : true } )
115
+ . click ( ) ;
116
+
117
+ // Assert the confirmation dialog is open
118
+ const confirmationModalText =
119
+ "Are you sure you want to delete this rubric?" ;
120
+ await expect (
121
+ page . getByText ( confirmationModalText , { exact : true } )
122
+ ) . toBeVisible ( ) ;
123
+
124
+ // Confirm the deletion
125
+ await page . getByRole ( "button" , { name : "Proceed" , exact : true } ) . click ( ) ;
126
+
127
+ // Assert the alert is shown
128
+ await expect ( page . getByText ( "The rubric has been deleted" ) ) . toBeVisible ( ) ;
129
+
130
+ // Assert the rubric is not shown in the table
131
+ const rubricRow = page . getByRole ( "row" , {
132
+ name : / D a t a s t r u c t u r e s r u b r i c / i
133
+ } ) ;
134
+ await expect ( rubricRow ) . not . toBeVisible ( ) ;
135
+
136
+ // Assert the empty state is shown
137
+ await expect ( page . getByText ( "No results." ) ) . toBeVisible ( ) ;
93
138
} ) ;
94
139
} ) ;
0 commit comments