@@ -10,7 +10,12 @@ import {
1010 USERNAME_MIN_LENGTH ,
1111} from '#app/utils/user-validation'
1212import { 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'
1419
1520const URL_REGEX = / (?< url > h t t p s ? : \/ \/ [ ^ \s $ . ? # ] .[ ^ \s ] * ) /
1621const 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<{
4045 } ,
4146} )
4247
43- test ( 'onboarding with link' , async ( { page, getOnboardingData } ) => {
48+ test ( 'onboarding with link' , async ( { page, navigate , getOnboardingData } ) => {
4449 const onboardingData = getOnboardingData ( )
4550
46- await page . goto ( '/' )
51+ await navigate ( '/' )
4752
4853 await page . getByRole ( 'link' , { name : / l o g i n / i } ) . click ( )
4954 await expect ( page ) . toHaveURL ( `/login` )
@@ -67,9 +72,9 @@ test('onboarding with link', async ({ page, getOnboardingData }) => {
6772 expect ( email . to ) . toBe ( onboardingData . email . toLowerCase ( ) )
6873 expect ( email . from ) . toBe ( '[email protected] ' ) 6974 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
7176 invariant ( onboardingUrl , 'Onboarding URL not found' )
72- await page . goto ( onboardingUrl )
77+ await navigate ( onboardingUrl )
7378
7479 await expect ( page ) . toHaveURL ( / \/ v e r i f y / )
7580
@@ -109,10 +114,14 @@ test('onboarding with link', async ({ page, getOnboardingData }) => {
109114 await expect ( page ) . toHaveURL ( `/` )
110115} )
111116
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+ } ) => {
113122 const onboardingData = getOnboardingData ( )
114123
115- await page . goto ( '/signup' )
124+ await navigate ( '/signup' )
116125
117126 const emailTextbox = page . getByRole ( 'textbox' , { name : / e m a i l / i } )
118127 await emailTextbox . click ( )
@@ -137,6 +146,7 @@ test('onboarding with a short code', async ({ page, getOnboardingData }) => {
137146
138147test ( 'completes onboarding after GitHub OAuth given valid user details' , async ( {
139148 page,
149+ navigate,
140150 prepareGitHubUser,
141151} ) => {
142152 const ghUser = await prepareGitHubUser ( )
@@ -148,7 +158,7 @@ test('completes onboarding after GitHub OAuth given valid user details', async (
148158 } ) ,
149159 ) . toBeNull ( )
150160
151- await page . goto ( '/signup' )
161+ await navigate ( '/signup' )
152162 await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
153163
154164 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 (
186196
187197test ( 'logs user in after GitHub OAuth if they are already registered' , async ( {
188198 page,
199+ navigate,
189200 prepareGitHubUser,
190201} ) => {
191202 const ghUser = await prepareGitHubUser ( )
@@ -214,7 +225,7 @@ test('logs user in after GitHub OAuth if they are already registered', async ({
214225 } )
215226 expect ( connection ) . toBeNull ( )
216227
217- await page . goto ( '/signup' )
228+ await navigate ( '/signup' )
218229 await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
219230
220231 await expect ( page ) . toHaveURL ( `/` )
@@ -235,11 +246,12 @@ test('logs user in after GitHub OAuth if they are already registered', async ({
235246
236247test ( 'shows help texts on entering invalid details on onboarding page after GitHub OAuth' , async ( {
237248 page,
249+ navigate,
238250 prepareGitHubUser,
239251} ) => {
240252 const ghUser = await prepareGitHubUser ( )
241253
242- await page . goto ( '/signup' )
254+ await navigate ( '/signup' )
243255 await page . getByRole ( 'button' , { name : / s i g n u p w i t h g i t h u b / i } ) . click ( )
244256
245257 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
322334 await expect ( page . getByText ( / t h a n k s f o r s i g n i n g u p / i) ) . toBeVisible ( )
323335} )
324336
325- test ( 'login as existing user' , async ( { page, insertNewUser } ) => {
337+ test ( 'login as existing user' , async ( { page, navigate , insertNewUser } ) => {
326338 const password = faker . internet . password ( )
327339 const user = await insertNewUser ( { password } )
328340 invariant ( user . name , 'User name not found' )
329- await page . goto ( '/login' )
341+ await navigate ( '/login' )
330342 await page . getByRole ( 'textbox' , { name : / u s e r n a m e / i } ) . fill ( user . username )
331343 await page . getByLabel ( / ^ p a s s w o r d $ / i) . fill ( password )
332344 await page . getByRole ( 'button' , { name : / l o g i n / i } ) . click ( )
@@ -335,11 +347,15 @@ test('login as existing user', async ({ page, insertNewUser }) => {
335347 await expect ( page . getByRole ( 'link' , { name : user . name } ) ) . toBeVisible ( )
336348} )
337349
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+ } ) => {
339355 const originalPassword = faker . internet . password ( )
340356 const user = await insertNewUser ( { password : originalPassword } )
341357 invariant ( user . name , 'User name not found' )
342- await page . goto ( '/login' )
358+ await navigate ( '/login' )
343359
344360 await page . getByRole ( 'link' , { name : / f o r g o t p a s s w o r d / i } ) . click ( )
345361 await expect ( page ) . toHaveURL ( '/forgot-password' )
@@ -356,9 +372,9 @@ test('reset password with a link', async ({ page, insertNewUser }) => {
356372 expect ( email . subject ) . toMatch ( / p a s s w o r d r e s e t / i)
357373 expect ( email . to ) . toBe ( user . email . toLowerCase ( ) )
358374 expect ( email . from ) . toBe ( '[email protected] ' ) 359- const resetPasswordUrl = extractUrl ( email . text )
375+ const resetPasswordUrl = extractUrl ( email . text ) as AppPages
360376 invariant ( resetPasswordUrl , 'Reset password URL not found' )
361- await page . goto ( resetPasswordUrl )
377+ await navigate ( resetPasswordUrl )
362378
363379 await expect ( page ) . toHaveURL ( / \/ v e r i f y / )
364380
@@ -389,9 +405,13 @@ test('reset password with a link', async ({ page, insertNewUser }) => {
389405 await expect ( page . getByRole ( 'link' , { name : user . name } ) ) . toBeVisible ( )
390406} )
391407
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+ } ) => {
393413 const user = await insertNewUser ( )
394- await page . goto ( '/login' )
414+ await navigate ( '/login' )
395415
396416 await page . getByRole ( 'link' , { name : / f o r g o t p a s s w o r d / i } ) . click ( )
397417 await expect ( page ) . toHaveURL ( '/forgot-password' )
0 commit comments