1
1
import { createClerkClient as backendCreateClerkClient } from '@clerk/backend' ;
2
+ import { setupClerkTestingToken } from '@clerk/testing/playwright' ;
2
3
import type { Browser , BrowserContext , Page , Response } from '@playwright/test' ;
3
4
import { expect } from '@playwright/test' ;
4
5
@@ -75,55 +76,65 @@ const createClerkUtils = ({ page }: TestArgs) => {
75
76
} ;
76
77
} ;
77
78
79
+ const createTestingTokenUtils = ( { page } : TestArgs ) => {
80
+ return {
81
+ setup : async ( ) => setupClerkTestingToken ( { page } ) ,
82
+ } ;
83
+ } ;
84
+
78
85
export type CreateAppPageObjectArgs = { page : Page ; context : BrowserContext ; browser : Browser } ;
79
86
80
87
export const createTestUtils = <
81
- Params extends { app : Application } & Partial < CreateAppPageObjectArgs > ,
88
+ Params extends { app : Application ; useTestingToken ?: boolean } & Partial < CreateAppPageObjectArgs > ,
82
89
Services = typeof services ,
83
90
PO = typeof pageObjects ,
84
91
BH = typeof browserHelpers ,
85
- FullReturn = { services : Services ; po : PO ; tabs : BH ; page : EnchancedPage ; nexJsVersion : string } ,
92
+ FullReturn = { services : Services ; po : PO ; tabs : BH ; page : EnchancedPage ; nextJsVersion : string } ,
86
93
OnlyAppReturn = { services : Services } ,
87
94
> (
88
95
params : Params ,
89
96
) : Params extends Partial < CreateAppPageObjectArgs > ? FullReturn : OnlyAppReturn => {
90
- const { app, context, browser } = params || { } ;
97
+ const { app, context, browser, useTestingToken = true } = params || { } ;
91
98
92
99
const clerkClient = createClerkClient ( app ) ;
93
100
const services = {
101
+ clerk : clerkClient ,
94
102
email : createEmailService ( ) ,
95
103
users : createUserService ( clerkClient ) ,
96
104
invitations : createInvitationService ( clerkClient ) ,
97
105
organizations : createOrganizationsService ( clerkClient ) ,
98
- clerk : clerkClient ,
99
106
} ;
100
107
101
108
if ( ! params . page ) {
102
109
return { services } as any ;
103
110
}
104
111
105
- const page = createAppPageObject ( { page : params . page } , app ) ;
112
+ const page = createAppPageObject ( { page : params . page , useTestingToken } , app ) ;
106
113
const testArgs = { page, context, browser } ;
107
114
108
115
const pageObjects = {
116
+ clerk : createClerkUtils ( testArgs ) ,
117
+ expect : createExpectPageObject ( testArgs ) ,
109
118
keylessPopover : createKeylessPopoverPageObject ( testArgs ) ,
110
- signUp : createSignUpComponentPageObject ( testArgs ) ,
111
- signIn : createSignInComponentPageObject ( testArgs ) ,
112
- userProfile : createUserProfileComponentPageObject ( testArgs ) ,
113
119
organizationSwitcher : createOrganizationSwitcherComponentPageObject ( testArgs ) ,
120
+ sessionTask : createSessionTaskComponentPageObject ( testArgs ) ,
121
+ signIn : createSignInComponentPageObject ( testArgs ) ,
122
+ signUp : createSignUpComponentPageObject ( testArgs ) ,
123
+ testingToken : createTestingTokenUtils ( testArgs ) ,
114
124
userButton : createUserButtonPageObject ( testArgs ) ,
125
+ userProfile : createUserProfileComponentPageObject ( testArgs ) ,
115
126
userVerification : createUserVerificationComponentPageObject ( testArgs ) ,
116
127
waitlist : createWaitlistComponentPageObject ( testArgs ) ,
117
- sessionTask : createSessionTaskComponentPageObject ( testArgs ) ,
118
- expect : createExpectPageObject ( testArgs ) ,
119
- clerk : createClerkUtils ( testArgs ) ,
120
128
} ;
121
129
122
130
const browserHelpers = {
123
131
runInNewTab : async (
124
132
cb : ( u : { services : Services ; po : PO ; page : EnchancedPage } , context : BrowserContext ) => Promise < unknown > ,
125
133
) => {
126
- const u = createTestUtils ( { app, page : createAppPageObject ( { page : await context . newPage ( ) } , app ) } ) ;
134
+ const u = createTestUtils ( {
135
+ app,
136
+ page : createAppPageObject ( { page : await context . newPage ( ) , useTestingToken } , app ) ,
137
+ } ) ;
127
138
await cb ( u as any , context ) ;
128
139
return u ;
129
140
} ,
@@ -134,7 +145,10 @@ export const createTestUtils = <
134
145
throw new Error ( 'Browser is not defined. Did you forget to pass it to createPageObjects?' ) ;
135
146
}
136
147
const context = await browser . newContext ( ) ;
137
- const u = createTestUtils ( { app, page : createAppPageObject ( { page : await context . newPage ( ) } , app ) } ) ;
148
+ const u = createTestUtils ( {
149
+ app,
150
+ page : createAppPageObject ( { page : await context . newPage ( ) , useTestingToken } , app ) ,
151
+ } ) ;
138
152
await cb ( u as any , context ) ;
139
153
return u ;
140
154
} ,
@@ -146,7 +160,7 @@ export const createTestUtils = <
146
160
po : pageObjects ,
147
161
tabs : browserHelpers ,
148
162
// eslint-disable-next-line turbo/no-undeclared-env-vars
149
- nexJsVersion : process . env . E2E_NEXTJS_VERSION ,
163
+ nextJsVersion : process . env . E2E_NEXTJS_VERSION ,
150
164
} as any ;
151
165
} ;
152
166
0 commit comments