1
- import { expect , test } from "@playwright/test" ;
1
+ import { expect , type Page , test } from "@playwright/test" ;
2
2
import { users } from "../constants" ;
3
3
import {
4
4
createTemplate ,
5
5
createWorkspace ,
6
+ currentUser ,
6
7
login ,
7
8
requiresLicense ,
8
9
} from "../helpers" ;
@@ -13,32 +14,46 @@ test.beforeEach(async ({ page }) => {
13
14
await login ( page , users . auditor ) ;
14
15
} ) ;
15
16
16
- test . skip ( "inspecting and filtering audit logs" , async ( { page } ) => {
17
+ async function resetSearch ( page : Page ) {
18
+ const clearButton = page . getByLabel ( "Clear search" ) ;
19
+ if ( await clearButton . isVisible ( ) ) {
20
+ await clearButton . click ( ) ;
21
+ }
22
+
23
+ // Filter by the auditor test user to prevent race conditions
24
+ const user = currentUser ( page ) ;
25
+ await expect ( page . getByText ( "All users" ) ) . toBeVisible ( ) ;
26
+ await page . getByPlaceholder ( "Search..." ) . fill ( `username:${ user . username } ` ) ;
27
+ await expect ( page . getByText ( "All users" ) ) . not . toBeVisible ( ) ;
28
+ }
29
+
30
+ test ( "inspecting and filtering audit logs" , async ( { page } ) => {
17
31
requiresLicense ( ) ;
18
32
19
- const userName = "admin" ;
20
33
// Do some stuff that should show up in the audit logs
21
34
const templateName = await createTemplate ( page ) ;
22
35
const workspaceName = await createWorkspace ( page , templateName ) ;
23
36
24
37
// Go to the audit history
25
38
await page . goto ( "/audit" ) ;
26
39
40
+ const user = currentUser ( page ) ;
41
+ const loginMessage = `${ user . username } logged in` ;
42
+ const startedWorkspaceMessage = `${ user . username } started workspace ${ workspaceName } ` ;
43
+
27
44
// Make sure those things we did all actually show up
28
- await expect ( page . getByText ( `${ userName } logged in` ) ) . toBeVisible ( ) ;
29
- await expect (
30
- page . getByText ( `${ userName } created template ${ templateName } ` ) ,
31
- ) . toBeVisible ( ) ;
45
+ await resetSearch ( page ) ;
46
+ await expect ( page . getByText ( loginMessage ) . first ( ) ) . toBeVisible ( ) ;
32
47
await expect (
33
- page . getByText ( `${ userName } created workspace ${ workspaceName } ` ) ,
48
+ page . getByText ( `${ user . username } created template ${ templateName } ` ) ,
34
49
) . toBeVisible ( ) ;
35
50
await expect (
36
- page . getByText ( `${ userName } started workspace ${ workspaceName } ` ) ,
51
+ page . getByText ( `${ user . username } created workspace ${ workspaceName } ` ) ,
37
52
) . toBeVisible ( ) ;
38
53
39
54
// Make sure we can inspect the details of the log item
40
55
const createdWorkspace = page . locator ( ".MuiTableRow-root" , {
41
- hasText : `${ userName } created workspace ${ workspaceName } ` ,
56
+ hasText : `${ user . username } created workspace ${ workspaceName } ` ,
42
57
} ) ;
43
58
await createdWorkspace . getByLabel ( "open-dropdown" ) . click ( ) ;
44
59
await expect (
@@ -48,10 +63,10 @@ test.skip("inspecting and filtering audit logs", async ({ page }) => {
48
63
createdWorkspace . getByText ( `name: "${ workspaceName } "` ) ,
49
64
) . toBeVisible ( ) ;
50
65
51
- const startedWorkspaceMessage = `${ userName } started workspace ${ workspaceName } ` ;
52
- const loginMessage = `${ userName } logged in` ;
66
+ await expect ( page . getByText ( startedWorkspaceMessage ) ) . toBeVisible ( ) ;
53
67
54
68
// Filter by resource type
69
+ await resetSearch ( page ) ;
55
70
await page . getByText ( "All resource types" ) . click ( ) ;
56
71
const workspaceBuildsOption = page . getByText ( "Workspace Build" ) ;
57
72
await workspaceBuildsOption . scrollIntoViewIfNeeded ( { timeout : 5000 } ) ;
@@ -60,19 +75,15 @@ test.skip("inspecting and filtering audit logs", async ({ page }) => {
60
75
await expect ( page . getByText ( startedWorkspaceMessage ) ) . toBeVisible ( ) ;
61
76
// Logins should no longer be visible
62
77
await expect ( page . getByText ( loginMessage ) ) . not . toBeVisible ( ) ;
63
-
64
- // Clear filters, everything should be visible again
65
78
await page . getByLabel ( "Clear search" ) . click ( ) ;
66
- await expect ( page . getByText ( startedWorkspaceMessage ) ) . toBeVisible ( ) ;
67
- await expect ( page . getByText ( loginMessage ) ) . toBeVisible ( ) ;
79
+ await expect ( page . getByText ( "All resource types" ) ) . toBeVisible ( ) ;
68
80
69
81
// Filter by action type
82
+ await resetSearch ( page ) ;
70
83
await page . getByText ( "All actions" ) . click ( ) ;
71
- const loginOption = page . getByText ( "Login" ) ;
72
- await loginOption . scrollIntoViewIfNeeded ( { timeout : 5000 } ) ;
73
- await loginOption . click ( ) ;
84
+ await page . getByText ( "Login" , { exact : true } ) . click ( ) ;
74
85
// Logins should be visible
75
- await expect ( page . getByText ( loginMessage ) ) . toBeVisible ( ) ;
86
+ await expect ( page . getByText ( loginMessage ) . first ( ) ) . toBeVisible ( ) ;
76
87
// Our workspace build should no longer be visible
77
88
await expect ( page . getByText ( startedWorkspaceMessage ) ) . not . toBeVisible ( ) ;
78
89
} ) ;
0 commit comments