@@ -2,32 +2,25 @@ import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/r
22import { expect , test } from "@playwright/test" ;
33import resourcesRealm from "./realms/resources-realm.json" with { type : "json" } ;
44import { login } from "./support/actions.ts" ;
5- import { createTestBed , type TestBed } from "./support/testbed.ts" ;
5+ import { createTestBed } from "./support/testbed.ts" ;
66
77test . describe ( "Resources" , ( ) => {
8- // The test cases in this suite depend on state created in previous tests.
9- // Therefore, we run them in serial mode.
10- // TODO: Refactor tests to be independent and run in parallel.
11- test . describe . configure ( { mode : "serial" } ) ;
12-
13- let testBed : TestBed ;
14-
15- test . beforeAll ( async ( ) => {
16- testBed = await createTestBed ( resourcesRealm as RealmRepresentation ) ;
17- } ) ;
18-
19- test . afterAll ( async ( ) => {
20- await testBed [ Symbol . asyncDispose ] ( ) ;
21- } ) ;
22-
238 test ( "shows the resources owned by the user" , async ( { page } ) => {
9+ await using testBed = await createTestBed (
10+ resourcesRealm as RealmRepresentation ,
11+ ) ;
12+
2413 await login ( page , testBed . realm ) ;
2514 await page . getByTestId ( "resources" ) . click ( ) ;
2615
2716 await expect ( page . getByRole ( "gridcell" , { name : "one" } ) ) . toBeVisible ( ) ;
2817 } ) ;
2918
3019 test ( "shows no resources are shared with another user" , async ( { page } ) => {
20+ await using testBed = await createTestBed (
21+ resourcesRealm as RealmRepresentation ,
22+ ) ;
23+
3124 await login ( page , testBed . realm , "alice" , "alice" ) ;
3225 await page . getByTestId ( "resources" ) . click ( ) ;
3326
@@ -36,44 +29,61 @@ test.describe("Resources", () => {
3629 expect ( tableData ) . toBe ( 0 ) ;
3730 } ) ;
3831
39- test ( "shares a recourse with another user" , async ( { page } ) => {
40- await login ( page , testBed . realm ) ;
41- await page . getByTestId ( "resources" ) . click ( ) ;
42-
43- await page . getByTestId ( "expand-one" ) . click ( ) ;
44- await expect ( page . getByText ( "This resource is not shared." ) ) . toBeVisible ( ) ;
45-
46- await page . getByTestId ( "share-one" ) . click ( ) ;
47- await page . getByTestId ( "users" ) . click ( ) ;
48- await page . getByTestId ( "users" ) . fill ( "alice" ) ;
49- await page . getByTestId ( "add" ) . click ( ) ;
50-
51- await expect ( page . getByRole ( "group" , { name : "Share with" } ) ) . toHaveText (
52- "Share with alice" ,
32+ test ( "shares a resource with another user" , async ( { browser } ) => {
33+ await using testBed = await createTestBed (
34+ resourcesRealm as RealmRepresentation ,
5335 ) ;
5436
55- await page
56- . getByTestId ( "permissions" )
57- . getByRole ( "button" , { expanded : false } )
58- . click ( ) ;
59- await page . getByRole ( "option" , { name : "album:view" } ) . click ( ) ;
60- await page
61- . getByTestId ( "permissions" )
62- . getByRole ( "button" , { expanded : true } )
63- . click ( ) ;
64-
65- await page . getByTestId ( "done" ) . click ( ) ;
66-
67- await page . getByTestId ( "expand-one" ) . click ( ) ;
68- await expect ( page . getByTestId ( "shared-with-alice" ) ) . toBeVisible ( ) ;
69- } ) ;
70-
71- test ( "shows the resources shared with another user" , async ( { page } ) => {
72- await login ( page , testBed . realm , "alice" , "alice" ) ;
73- await page . getByTestId ( "resources" ) . click ( ) ;
74-
75- await page . getByTestId ( "sharedWithMe" ) . click ( ) ;
76- const rowData = page . getByTestId ( "row[0].name" ) ;
77- await expect ( rowData ) . toHaveText ( "one" ) ;
37+ const context1 = await browser . newContext ( ) ;
38+ const context2 = await browser . newContext ( ) ;
39+
40+ try {
41+ const page1 = await context1 . newPage ( ) ;
42+ const page2 = await context2 . newPage ( ) ;
43+
44+ // Share a resource as the main user
45+ await login ( page1 , testBed . realm ) ;
46+ await page1 . getByTestId ( "resources" ) . click ( ) ;
47+
48+ await page1 . getByTestId ( "expand-one" ) . click ( ) ;
49+ await expect (
50+ page1 . getByText ( "This resource is not shared." ) ,
51+ ) . toBeVisible ( ) ;
52+
53+ await page1 . getByTestId ( "share-one" ) . click ( ) ;
54+ await page1 . getByTestId ( "users" ) . click ( ) ;
55+ await page1 . getByTestId ( "users" ) . fill ( "alice" ) ;
56+ await page1 . getByTestId ( "add" ) . click ( ) ;
57+
58+ await expect ( page1 . getByRole ( "group" , { name : "Share with" } ) ) . toHaveText (
59+ "Share with alice" ,
60+ ) ;
61+
62+ await page1
63+ . getByTestId ( "permissions" )
64+ . getByRole ( "button" , { expanded : false } )
65+ . click ( ) ;
66+ await page1 . getByRole ( "option" , { name : "album:view" } ) . click ( ) ;
67+ await page1
68+ . getByTestId ( "permissions" )
69+ . getByRole ( "button" , { expanded : true } )
70+ . click ( ) ;
71+
72+ await page1 . getByTestId ( "done" ) . click ( ) ;
73+
74+ await page1 . getByTestId ( "expand-one" ) . click ( ) ;
75+ await expect ( page1 . getByTestId ( "shared-with-alice" ) ) . toBeVisible ( ) ;
76+
77+ // Verify that alice can see the shared resource
78+ await login ( page2 , testBed . realm , "alice" , "alice" ) ;
79+ await page2 . getByTestId ( "resources" ) . click ( ) ;
80+
81+ await page2 . getByTestId ( "sharedWithMe" ) . click ( ) ;
82+ const rowData = page2 . getByTestId ( "row[0].name" ) ;
83+ await expect ( rowData ) . toHaveText ( "one" ) ;
84+ } finally {
85+ await context1 . close ( ) ;
86+ await context2 . close ( ) ;
87+ }
7888 } ) ;
7989} ) ;
0 commit comments