|
| 1 | +import { expect, test } from '@playwright/test'; |
| 2 | + |
| 3 | +import { appConfigs } from '../presets'; |
| 4 | +import { createTestUtils, testAgainstRunningApps } from '../testUtils'; |
| 5 | + |
| 6 | +testAgainstRunningApps({ withEnv: [appConfigs.envs.withSharedUIVariant] })( |
| 7 | + 'shared React variant @nextjs', |
| 8 | + ({ app }) => { |
| 9 | + test.describe.configure({ mode: 'parallel' }); |
| 10 | + |
| 11 | + test('loads without __clerkSharedModules error when using shared UI variant', async ({ page, context }) => { |
| 12 | + const u = createTestUtils({ app, page, context }); |
| 13 | + const errors: string[] = []; |
| 14 | + |
| 15 | + page.on('console', msg => { |
| 16 | + if (msg.type() === 'error') { |
| 17 | + errors.push(msg.text()); |
| 18 | + } |
| 19 | + }); |
| 20 | + |
| 21 | + page.on('pageerror', error => { |
| 22 | + errors.push(error.message); |
| 23 | + }); |
| 24 | + |
| 25 | + await page.route('**/ui.browser.js', async route => { |
| 26 | + const url = route.request().url().replace('ui.browser.js', 'ui.shared.browser.js'); |
| 27 | + const response = await page.request.fetch(url); |
| 28 | + await route.fulfill({ response }); |
| 29 | + }); |
| 30 | + |
| 31 | + await page.route('**/_next/static/**/*.js', async route => { |
| 32 | + await new Promise(resolve => setTimeout(resolve, 300)); |
| 33 | + await route.continue(); |
| 34 | + }); |
| 35 | + |
| 36 | + await u.page.goToRelative('/clerk-status'); |
| 37 | + |
| 38 | + await expect(page.getByText('Status: ready')).toBeVisible({ timeout: 30_000 }); |
| 39 | + await u.po.clerk.toBeLoaded(); |
| 40 | + |
| 41 | + const sharedModulesError = errors.find(e => e.includes('__clerkSharedModules')); |
| 42 | + expect(sharedModulesError).toBeUndefined(); |
| 43 | + }); |
| 44 | + }, |
| 45 | +); |
0 commit comments