@@ -5,7 +5,13 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
5
5
Please see LICENSE in the repository root for full details.
6
6
*/
7
7
8
- import { type Page , test , expect , type JSHandle } from "@playwright/test" ;
8
+ import {
9
+ type Browser ,
10
+ type Page ,
11
+ test ,
12
+ expect ,
13
+ type JSHandle ,
14
+ } from "@playwright/test" ;
9
15
10
16
import type { MatrixClient } from "matrix-js-sdk" ;
11
17
@@ -30,8 +36,8 @@ const PASSWORD = "foobarbaz1!";
30
36
const CONFIG_JSON = {
31
37
default_server_config : {
32
38
"m.homeserver" : {
33
- base_url : "http ://synapse.localhost:8008 " ,
34
- server_name : "synapse.localhost" ,
39
+ base_url : "https ://synapse.m. localhost" ,
40
+ server_name : "synapse.m. localhost" ,
35
41
} ,
36
42
} ,
37
43
@@ -74,6 +80,52 @@ async function setDevToolElementCallDevUrl(page: Page): Promise<void> {
74
80
} ) ;
75
81
}
76
82
83
+ /**
84
+ * Registers a new user and returns page, clientHandle and mxId.
85
+ */
86
+ async function registerUser (
87
+ browser : Browser ,
88
+ username : string ,
89
+ ) : Promise < { page : Page ; clientHandle : JSHandle < MatrixClient > ; mxId : string } > {
90
+ const userContext = await browser . newContext ( {
91
+ reducedMotion : "reduce" ,
92
+ } ) ;
93
+ const page = await userContext . newPage ( ) ;
94
+ await page . goto ( "http://localhost:8081/#/welcome" ) ;
95
+ await page . getByRole ( "link" , { name : "Create Account" } ) . click ( ) ;
96
+ await page . getByRole ( "textbox" , { name : "Username" } ) . fill ( username ) ;
97
+ await page
98
+ . getByRole ( "textbox" , { name : "Password" , exact : true } )
99
+ . fill ( PASSWORD ) ;
100
+ await page . getByRole ( "textbox" , { name : "Confirm password" } ) . click ( ) ;
101
+ await page . getByRole ( "textbox" , { name : "Confirm password" } ) . fill ( PASSWORD ) ;
102
+ await page . getByRole ( "button" , { name : "Register" } ) . click ( ) ;
103
+ const continueButton = page . getByRole ( "button" , { name : "Continue" } ) ;
104
+ try {
105
+ await expect ( continueButton ) . toBeVisible ( { timeout : 5000 } ) ;
106
+ await page
107
+ . getByRole ( "textbox" , { name : "Password" , exact : true } )
108
+ . fill ( PASSWORD ) ;
109
+ await continueButton . click ( ) ;
110
+ } catch {
111
+ // continueButton not visible, continue as normal
112
+ }
113
+ await expect (
114
+ page . getByRole ( "heading" , { name : `Welcome ${ username } ` } ) ,
115
+ ) . toBeVisible ( ) ;
116
+ await setDevToolElementCallDevUrl ( page ) ;
117
+
118
+ const clientHandle = await page . evaluateHandle ( ( ) =>
119
+ window . mxMatrixClientPeg . get ( ) ,
120
+ ) ;
121
+ const mxId = ( await clientHandle . evaluate (
122
+ ( cli : MatrixClient ) => cli . getUserId ( ) ,
123
+ clientHandle ,
124
+ ) ) ! ;
125
+
126
+ return { page, clientHandle, mxId } ;
127
+ }
128
+
77
129
export const widgetTest = test . extend < MyFixtures > ( {
78
130
asWidget : async ( { browser, context } , pUse ) => {
79
131
await context . route ( `http://localhost:8081/config.json*` , async ( route ) => {
@@ -83,61 +135,17 @@ export const widgetTest = test.extend<MyFixtures>({
83
135
const userA = `brooks_${ Date . now ( ) } ` ;
84
136
const userB = `whistler_${ Date . now ( ) } ` ;
85
137
86
- const user1Context = await browser . newContext ( {
87
- reducedMotion : "reduce" ,
88
- } ) ;
89
- const ewPage1 = await user1Context . newPage ( ) ;
90
- // Register the first user
91
- await ewPage1 . goto ( "http://localhost:8081/#/welcome" ) ;
92
- await ewPage1 . getByRole ( "link" , { name : "Create Account" } ) . click ( ) ;
93
- await ewPage1 . getByRole ( "textbox" , { name : "Username" } ) . fill ( userA ) ;
94
- await ewPage1
95
- . getByRole ( "textbox" , { name : "Password" , exact : true } )
96
- . fill ( PASSWORD ) ;
97
- await ewPage1 . getByRole ( "textbox" , { name : "Confirm password" } ) . click ( ) ;
98
- await ewPage1
99
- . getByRole ( "textbox" , { name : "Confirm password" } )
100
- . fill ( PASSWORD ) ;
101
- await ewPage1 . getByRole ( "button" , { name : "Register" } ) . click ( ) ;
102
- await expect (
103
- ewPage1 . getByRole ( "heading" , { name : `Welcome ${ userA } ` } ) ,
104
- ) . toBeVisible ( ) ;
105
- await setDevToolElementCallDevUrl ( ewPage1 ) ;
106
-
107
- const brooksClientHandle = await ewPage1 . evaluateHandle ( ( ) =>
108
- window . mxMatrixClientPeg . get ( ) ,
109
- ) ;
110
- const brooksMxId = ( await brooksClientHandle . evaluate ( ( cli ) => {
111
- return cli . getUserId ( ) ;
112
- } , brooksClientHandle ) ) ! ;
113
-
114
- const user2Context = await browser . newContext ( {
115
- reducedMotion : "reduce" ,
116
- } ) ;
117
- const ewPage2 = await user2Context . newPage ( ) ;
118
- // Register the second user
119
- await ewPage2 . goto ( "http://localhost:8081/#/welcome" ) ;
120
- await ewPage2 . getByRole ( "link" , { name : "Create Account" } ) . click ( ) ;
121
- await ewPage2 . getByRole ( "textbox" , { name : "Username" } ) . fill ( userB ) ;
122
- await ewPage2
123
- . getByRole ( "textbox" , { name : "Password" , exact : true } )
124
- . fill ( PASSWORD ) ;
125
- await ewPage2 . getByRole ( "textbox" , { name : "Confirm password" } ) . click ( ) ;
126
- await ewPage2
127
- . getByRole ( "textbox" , { name : "Confirm password" } )
128
- . fill ( PASSWORD ) ;
129
- await ewPage2 . getByRole ( "button" , { name : "Register" } ) . click ( ) ;
130
- await expect (
131
- ewPage2 . getByRole ( "heading" , { name : `Welcome ${ userB } ` } ) ,
132
- ) . toBeVisible ( ) ;
133
- await setDevToolElementCallDevUrl ( ewPage2 ) ;
134
-
135
- const whistlerClientHandle = await ewPage2 . evaluateHandle ( ( ) =>
136
- window . mxMatrixClientPeg . get ( ) ,
137
- ) ;
138
- const whistlerMxId = ( await whistlerClientHandle . evaluate ( ( cli ) => {
139
- return cli . getUserId ( ) ;
140
- } , whistlerClientHandle ) ) ! ;
138
+ // Register users
139
+ const {
140
+ page : ewPage1 ,
141
+ clientHandle : brooksClientHandle ,
142
+ mxId : brooksMxId ,
143
+ } = await registerUser ( browser , userA ) ;
144
+ const {
145
+ page : ewPage2 ,
146
+ clientHandle : whistlerClientHandle ,
147
+ mxId : whistlerMxId ,
148
+ } = await registerUser ( browser , userB ) ;
141
149
142
150
// Invite the second user
143
151
await ewPage1 . getByRole ( "button" , { name : "Add room" } ) . click ( ) ;
0 commit comments