1
1
import { expect , test } from "@playwright/test" ;
2
2
import { navigateToRepositories } from "../UI/helpers/navHelpers" ;
3
+ import { randomName , randomUrl } from "../UI/helpers/repoHelpers" ;
4
+ import { closePopupsIfExist , getRowByNameOrUrl } from "../UI/helpers/helpers" ;
5
+ import fs from "fs" ;
6
+ import { deleteAllRepos } from "../UI/helpers/deleteRepositories" ;
3
7
import { switchToUser } from "../helpers/loginHelpers" ;
4
- import { randomName , randomUrl } from '../UI/helpers/repoHelpers' ;
5
- import { closePopupsIfExist , getRowByNameOrUrl } from '../UI/helpers/helpers' ;
6
- import fs from 'fs' ;
7
- import { deleteAllRepos } from '../UI/helpers/deleteRepositories' ;
8
8
9
-
10
-
11
- const repoNamePrefix = 'Repo-RBAC' ;
12
- const repoNameFile = 'repoName.txt' ;
9
+ const repoNamePrefix = "Repo-RBAC" ;
10
+ const repoNameFile = "repoName.txt" ;
13
11
14
12
// Function to get or generate repo name using file persistence
15
13
const getRepoName = ( ) : string => {
16
14
if ( fs . existsSync ( repoNameFile ) ) {
17
- const repoName = fs . readFileSync ( repoNameFile , ' utf8' ) ;
15
+ const repoName = fs . readFileSync ( repoNameFile , " utf8" ) ;
18
16
console . log ( `Loaded repo name from file: ${ repoName } ` ) ;
19
17
return repoName ;
20
18
}
@@ -28,66 +26,89 @@ const getRepoName = (): string => {
28
26
test . beforeAll ( async ( ) => {
29
27
if ( fs . existsSync ( repoNameFile ) ) {
30
28
fs . unlinkSync ( repoNameFile ) ;
31
- console . log ( ' Cleaned up repoName.txt' ) ;
29
+ console . log ( " Cleaned up repoName.txt" ) ;
32
30
}
33
31
} ) ;
34
32
35
33
const url = randomUrl ( ) ;
36
34
37
- test . describe . serial ( "Combined user tests" , ( ) => {
38
- test ( "Login as user 1 (admin)" , { tag : "@admin" } , async ( { page } ) => {
39
- await test . step ( 'Navigate to the repository page' , async ( ) => {
40
- await switchToUser ( page , process . env . USER1USERNAME ! ) ;
41
- console . log ( '\n Try to delete old repos\n' ) ;
35
+ test . describe ( "Combined user tests" , ( ) => {
36
+ test ( "Login as user 1 (admin)" , async ( { page } ) => {
37
+ await test . step ( "Navigate to the repository page" , async ( ) => {
38
+ console . log ( "\n Try to delete old repos\n" ) ;
42
39
await deleteAllRepos ( page , `&search=${ repoNamePrefix } ` ) ;
43
40
await navigateToRepositories ( page ) ;
44
41
await closePopupsIfExist ( page ) ;
45
42
} ) ;
46
43
47
- await test . step ( 'Create a repository' , async ( ) => {
48
- await page . getByRole ( 'button' , { name : 'Add repositories' } ) . first ( ) . click ( ) ;
49
- await expect ( page . getByRole ( 'dialog' , { name : 'Add custom repositories' } ) ) . toBeVisible ( ) ;
44
+ await test . step ( "Create a repository" , async ( ) => {
45
+ await page
46
+ . getByRole ( "button" , { name : "Add repositories" } )
47
+ . first ( )
48
+ . click ( ) ;
49
+ await expect (
50
+ page . getByRole ( "dialog" , { name : "Add custom repositories" } )
51
+ ) . toBeVisible ( ) ;
50
52
51
53
const repoName = getRepoName ( ) ;
52
- await page . getByLabel ( ' Name' ) . fill ( repoName ) ;
53
- await page . getByLabel ( ' Introspect only' ) . click ( ) ;
54
- await page . getByLabel ( ' URL' ) . fill ( url ) ;
55
- await page . getByRole ( ' button' , { name : ' Save' , exact : true } ) . click ( ) ;
54
+ await page . getByLabel ( " Name" ) . fill ( repoName ) ;
55
+ await page . getByLabel ( " Introspect only" ) . click ( ) ;
56
+ await page . getByLabel ( " URL" ) . fill ( url ) ;
57
+ await page . getByRole ( " button" , { name : " Save" , exact : true } ) . click ( ) ;
56
58
} ) ;
57
59
58
- await test . step ( ' Read the repo' , async ( ) => {
60
+ await test . step ( " Read the repo" , async ( ) => {
59
61
const repoName = getRepoName ( ) ;
60
62
const row = await getRowByNameOrUrl ( page , repoName ) ;
61
- await expect ( row . getByText ( 'Valid' ) ) . toBeVisible ( ) ;
62
- await row . getByLabel ( 'Kebab toggle' ) . click ( ) ;
63
- await row . getByRole ( 'menuitem' , { name : 'Edit' } ) . click ( ) ;
64
- await expect ( page . getByRole ( 'dialog' , { name : 'Edit custom repository' } ) ) . toBeVisible ( ) ;
65
- await expect ( page . getByPlaceholder ( 'Enter name' , { exact : true } ) ) . toHaveValue ( repoName ) ;
66
- await expect ( page . getByPlaceholder ( 'https://' , { exact : true } ) ) . toHaveValue ( url ) ;
63
+ await expect ( row . getByText ( "Valid" ) ) . toBeVisible ( ) ;
64
+ await row . getByLabel ( "Kebab toggle" ) . click ( ) ;
65
+ await row . getByRole ( "menuitem" , { name : "Edit" } ) . click ( ) ;
66
+ await expect (
67
+ page . getByRole ( "dialog" , { name : "Edit custom repository" } )
68
+ ) . toBeVisible ( ) ;
69
+ await expect (
70
+ page . getByPlaceholder ( "Enter name" , { exact : true } )
71
+ ) . toHaveValue ( repoName ) ;
72
+ await expect (
73
+ page . getByPlaceholder ( "https://" , { exact : true } )
74
+ ) . toHaveValue ( url ) ;
67
75
} ) ;
68
76
69
- await test . step ( ' Update the repository' , async ( ) => {
77
+ await test . step ( " Update the repository" , async ( ) => {
70
78
const repoName = getRepoName ( ) ;
71
- await page . getByPlaceholder ( 'Enter name' , { exact : true } ) . fill ( `${ repoName } -Edited` ) ;
72
- await page . getByRole ( 'button' , { name : 'Save changes' , exact : true } ) . click ( ) ;
79
+ await page
80
+ . getByPlaceholder ( "Enter name" , { exact : true } )
81
+ . fill ( `${ repoName } -Edited` ) ;
82
+ await page
83
+ . getByRole ( "button" , { name : "Save changes" , exact : true } )
84
+ . click ( ) ;
73
85
} ) ;
74
86
} ) ;
75
87
76
- test ( "Login as user 2 (read-only)" , { tag : "@read-only" } , async ( { page } ) => {
77
- await test . step ( 'Navigate to the repository page' , async ( ) => {
78
- await switchToUser ( page , process . env . RO_USER_USERNAME ! ) ;
79
- await navigateToRepositories ( page ) ;
80
- await closePopupsIfExist ( page ) ;
81
- } ) ;
88
+ test (
89
+ "Login as user 2 (read-only)" ,
90
+ { tag : "@read-only" } ,
91
+ async ( { page } ) => {
92
+ await test . step ( "Navigate to the repository page" , async ( ) => {
93
+ await navigateToRepositories ( page ) ;
94
+ await closePopupsIfExist ( page ) ;
95
+ } ) ;
82
96
83
- await test . step ( 'Read the repo' , async ( ) => {
84
- const repoName = getRepoName ( ) ;
85
- const row = await getRowByNameOrUrl ( page , `${ repoName } -Edited` ) ;
86
- await expect ( row . getByText ( 'Valid' ) ) . toBeVisible ( { timeout : 60000 } ) ;
87
- await row . getByLabel ( 'Kebab toggle' ) . click ( ) ;
88
- await row . getByRole ( 'menuitem' , { name : 'Edit' } ) . click ( ) ;
89
- await expect ( page . getByText ( 'You do not have the required permissions to perform this action' ) ) . toBeVisible ( ) ;
90
- await expect ( page . getByRole ( 'dialog' , { name : 'Edit custom repository' } ) ) . not . toBeVisible ( ) ;
91
- } ) ;
92
- } ) ;
93
- } ) ;
97
+ await test . step ( "Read the repo" , async ( ) => {
98
+ const repoName = getRepoName ( ) ;
99
+ const row = await getRowByNameOrUrl ( page , `${ repoName } -Edited` ) ;
100
+ await expect ( row . getByText ( "Valid" ) ) . toBeVisible ( { timeout : 60000 } ) ;
101
+ await row . getByLabel ( "Kebab toggle" ) . click ( ) ;
102
+ await row . getByRole ( "menuitem" , { name : "Edit" } ) . click ( ) ;
103
+ await expect (
104
+ page . getByText (
105
+ "You do not have the required permissions to perform this action"
106
+ )
107
+ ) . toBeVisible ( ) ;
108
+ await expect (
109
+ page . getByRole ( "dialog" , { name : "Edit custom repository" } )
110
+ ) . not . toBeVisible ( ) ;
111
+ } ) ;
112
+ }
113
+ ) ;
114
+ } ) ;
0 commit comments