@@ -10,7 +10,12 @@ import {
10
10
USERNAME_MIN_LENGTH ,
11
11
} from '#app/utils/user-validation'
12
12
import { readEmail } from '#tests/mocks/utils.ts'
13
- import { createUser , expect , test as base } from '#tests/playwright-utils.ts'
13
+ import {
14
+ createUser ,
15
+ expect ,
16
+ test as base ,
17
+ type AppPages ,
18
+ } from '#tests/playwright-utils.ts'
14
19
15
20
const URL_REGEX = / (?< url > h t t p s ? : \/ \/ [ ^ \s $ . ? # ] .[ ^ \s ] * ) /
16
21
const CODE_REGEX = / H e r e ' s y o u r v e r i f i c a t i o n c o d e : (?< code > [ \d \w ] + ) /
@@ -40,10 +45,10 @@ const test = base.extend<{
40
45
} ,
41
46
} )
42
47
43
- test ( 'onboarding with link' , async ( { page, getOnboardingData } ) => {
48
+ test ( 'onboarding with link' , async ( { page, navigate , getOnboardingData } ) => {
44
49
const onboardingData = getOnboardingData ( )
45
50
46
- await page . goto ( '/' )
51
+ await navigate ( '/' )
47
52
48
53
await page . getByRole ( 'link' , { name : / l o g i n / i } ) . click ( )
49
54
await expect ( page ) . toHaveURL ( `/login` )
@@ -67,9 +72,9 @@ test('onboarding with link', async ({ page, getOnboardingData }) => {
67
72
expect ( email . to ) . toBe ( onboardingData . email . toLowerCase ( ) )
68
73
expect ( email . from ) . toBe ( '[email protected] ' )
69
74
expect ( email . subject ) . toMatch ( / w e l c o m e / i)
70
- const onboardingUrl = extractUrl ( email . text )
75
+ const onboardingUrl = extractUrl ( email . text ) as AppPages
71
76
invariant ( onboardingUrl , 'Onboarding URL not found' )
72
- await page . goto ( onboardingUrl )
77
+ await navigate ( onboardingUrl )
73
78
74
79
await expect ( page ) . toHaveURL ( / \/ v e r i f y / )
75
80
@@ -109,10 +114,14 @@ test('onboarding with link', async ({ page, getOnboardingData }) => {
109
114
await expect ( page ) . toHaveURL ( `/` )
110
115
} )
111
116
112
- test ( 'onboarding with a short code' , async ( { page, getOnboardingData } ) => {
117
+ test ( 'onboarding with a short code' , async ( {
118
+ page,
119
+ navigate,
120
+ getOnboardingData,
121
+ } ) => {
113
122
const onboardingData = getOnboardingData ( )
114
123
115
- await page . goto ( '/signup' )
124
+ await navigate ( '/signup' )
116
125
117
126
const emailTextbox = page . getByRole ( 'textbox' , { name : / e m a i l / i } )
118
127
await emailTextbox . click ( )
@@ -137,6 +146,7 @@ test('onboarding with a short code', async ({ page, getOnboardingData }) => {
137
146
138
147
test ( 'completes onboarding after GitHub OAuth given valid user details' , async ( {
139
148
page,
149
+ navigate,
140
150
prepareGitHubUser,
141
151
} ) => {
142
152
const ghUser = await prepareGitHubUser ( )
@@ -148,7 +158,7 @@ test('completes onboarding after GitHub OAuth given valid user details', async (
148
158
} ) ,
149
159
) . toBeNull ( )
150
160
151
- await page . goto ( '/signup' )
161
+ await navigate ( '/signup' )
152
162
await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
153
163
154
164
await expect ( page ) . toHaveURL ( / \/ o n b o a r d i n g \/ g i t h u b / )
@@ -186,6 +196,7 @@ test('completes onboarding after GitHub OAuth given valid user details', async (
186
196
187
197
test ( 'logs user in after GitHub OAuth if they are already registered' , async ( {
188
198
page,
199
+ navigate,
189
200
prepareGitHubUser,
190
201
} ) => {
191
202
const ghUser = await prepareGitHubUser ( )
@@ -214,7 +225,7 @@ test('logs user in after GitHub OAuth if they are already registered', async ({
214
225
} )
215
226
expect ( connection ) . toBeNull ( )
216
227
217
- await page . goto ( '/signup' )
228
+ await navigate ( '/signup' )
218
229
await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
219
230
220
231
await expect ( page ) . toHaveURL ( `/` )
@@ -235,11 +246,12 @@ test('logs user in after GitHub OAuth if they are already registered', async ({
235
246
236
247
test ( 'shows help texts on entering invalid details on onboarding page after GitHub OAuth' , async ( {
237
248
page,
249
+ navigate,
238
250
prepareGitHubUser,
239
251
} ) => {
240
252
const ghUser = await prepareGitHubUser ( )
241
253
242
- await page . goto ( '/signup' )
254
+ await navigate ( '/signup' )
243
255
await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
244
256
245
257
await expect ( page ) . toHaveURL ( / \/ o n b o a r d i n g \/ g i t h u b / )
@@ -322,11 +334,11 @@ test('shows help texts on entering invalid details on onboarding page after GitH
322
334
await expect ( page . getByText ( / t h a n k s f o r s i g n i n g u p / i) ) . toBeVisible ( )
323
335
} )
324
336
325
- test ( 'login as existing user' , async ( { page, insertNewUser } ) => {
337
+ test ( 'login as existing user' , async ( { page, navigate , insertNewUser } ) => {
326
338
const password = faker . internet . password ( )
327
339
const user = await insertNewUser ( { password } )
328
340
invariant ( user . name , 'User name not found' )
329
- await page . goto ( '/login' )
341
+ await navigate ( '/login' )
330
342
await page . getByRole ( 'textbox' , { name : / u s e r n a m e / i } ) . fill ( user . username )
331
343
await page . getByLabel ( / ^ p a s s w o r d $ / i) . fill ( password )
332
344
await page . getByRole ( 'button' , { name : / l o g i n / i } ) . click ( )
@@ -335,11 +347,15 @@ test('login as existing user', async ({ page, insertNewUser }) => {
335
347
await expect ( page . getByRole ( 'link' , { name : user . name } ) ) . toBeVisible ( )
336
348
} )
337
349
338
- test ( 'reset password with a link' , async ( { page, insertNewUser } ) => {
350
+ test ( 'reset password with a link' , async ( {
351
+ page,
352
+ navigate,
353
+ insertNewUser,
354
+ } ) => {
339
355
const originalPassword = faker . internet . password ( )
340
356
const user = await insertNewUser ( { password : originalPassword } )
341
357
invariant ( user . name , 'User name not found' )
342
- await page . goto ( '/login' )
358
+ await navigate ( '/login' )
343
359
344
360
await page . getByRole ( 'link' , { name : / f o r g o t p a s s w o r d / i } ) . click ( )
345
361
await expect ( page ) . toHaveURL ( '/forgot-password' )
@@ -356,9 +372,9 @@ test('reset password with a link', async ({ page, insertNewUser }) => {
356
372
expect ( email . subject ) . toMatch ( / p a s s w o r d r e s e t / i)
357
373
expect ( email . to ) . toBe ( user . email . toLowerCase ( ) )
358
374
expect ( email . from ) . toBe ( '[email protected] ' )
359
- const resetPasswordUrl = extractUrl ( email . text )
375
+ const resetPasswordUrl = extractUrl ( email . text ) as AppPages
360
376
invariant ( resetPasswordUrl , 'Reset password URL not found' )
361
- await page . goto ( resetPasswordUrl )
377
+ await navigate ( resetPasswordUrl )
362
378
363
379
await expect ( page ) . toHaveURL ( / \/ v e r i f y / )
364
380
@@ -389,9 +405,13 @@ test('reset password with a link', async ({ page, insertNewUser }) => {
389
405
await expect ( page . getByRole ( 'link' , { name : user . name } ) ) . toBeVisible ( )
390
406
} )
391
407
392
- test ( 'reset password with a short code' , async ( { page, insertNewUser } ) => {
408
+ test ( 'reset password with a short code' , async ( {
409
+ page,
410
+ navigate,
411
+ insertNewUser,
412
+ } ) => {
393
413
const user = await insertNewUser ( )
394
- await page . goto ( '/login' )
414
+ await navigate ( '/login' )
395
415
396
416
await page . getByRole ( 'link' , { name : / f o r g o t p a s s w o r d / i } ) . click ( )
397
417
await expect ( page ) . toHaveURL ( '/forgot-password' )
0 commit comments