-
Notifications
You must be signed in to change notification settings - Fork 295
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(clerk-js): Update props while respecting defaults set by Clerk.lo…
…ad() Support remounting ClerkProvider multiple times by making sure that the `updateProps` call during the loading phase does not override any defaults set by `Clerk.load()` for values that are missing
- Loading branch information
1 parent
ef8ef17
commit 58cee3c
Showing
3 changed files
with
53 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@clerk/clerk-js': patch | ||
--- | ||
|
||
Support remounting ClerkProvider multiple times by making sure that the `updateProps` call during the loading phase does not override any defaults set by `Clerk.load()` for values that are missing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
import { test } from '@playwright/test'; | ||
|
||
import type { FakeUser } from '../testUtils'; | ||
import { createTestUtils, testAgainstRunningApps } from '../testUtils'; | ||
|
||
testAgainstRunningApps({ withPattern: ['react.vite.withEmailCodes'] })('sign in flow @generic', ({ app }) => { | ||
test.describe.configure({ mode: 'serial' }); | ||
|
||
let fakeUser: FakeUser; | ||
|
||
test.beforeAll(async () => { | ||
const u = createTestUtils({ app }); | ||
fakeUser = u.services.users.createFakeUser({ | ||
fictionalEmail: true, | ||
withPassword: true, | ||
}); | ||
await u.services.users.createBapiUser(fakeUser); | ||
}); | ||
|
||
test.afterAll(async () => { | ||
await fakeUser.deleteIfExists(); | ||
await app.teardown(); | ||
}); | ||
|
||
test('updating props after initial loading does not override defaults set by Clerk.load()', async ({ | ||
page, | ||
context, | ||
}) => { | ||
const u = createTestUtils({ app, page, context }); | ||
await u.po.signIn.goTo({ searchParams: new URLSearchParams({ redirect_url: 'https://www.clerk.com' }) }); | ||
await u.page.waitForFunction(async () => { | ||
// Emulate ClerkProvider being unmounted and mounted again | ||
// as updateProps is going to be called without the default options set by window.Clerk.load() | ||
await (window.Clerk as any).__unstable__updateProps({ options: {} }); | ||
}); | ||
await u.po.signIn.setIdentifier(fakeUser.email); | ||
await u.po.signIn.continue(); | ||
await u.po.signIn.setPassword(fakeUser.password); | ||
await u.po.signIn.continue(); | ||
await u.po.expect.toBeSignedIn(); | ||
// allowedRedirectOrigins should still be respected here | ||
// even after the above updateProps invocation | ||
await u.page.waitForURL(`${app.serverUrl}`); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters