clerk-testing

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Testing

测试

Decision Tree

决策树

Mental Model

核心思路

Test auth = isolated session state. Each test needs fresh auth context.
  • clerkSetup()
    initializes test environment
  • setupClerkTestingToken()
    bypasses bot detection
  • storageState
    persists auth between tests for speed
测试认证 = 独立会话状态。每个测试都需要全新的认证上下文。
  • clerkSetup()
    初始化测试环境
  • setupClerkTestingToken()
    绕过机器人检测
  • storageState
    在测试间持久化认证信息以提升测试速度

Workflow

工作流程

  1. Identify test framework (Playwright or Cypress)
  2. WebFetch the appropriate URL from decision tree above
  3. Follow official setup instructions
  4. Use
    pk_test_*
    and
    sk_test_*
    keys only
  1. 确定测试框架(Playwright或Cypress)
  2. 从上方决策树中获取对应的URL
  3. 遵循官方设置指南
  4. 仅使用
    pk_test_*
    sk_test_*
    密钥

Best Practices

最佳实践

  • Use
    setupClerkTestingToken()
    before navigating to auth pages
  • Use test API keys:
    pk_test_xxx
    ,
    sk_test_xxx
  • Save auth state with
    storageState
    for faster tests
  • Use
    page.waitForSelector('[data-clerk-component]')
    for Clerk UI
  • 在导航到认证页面之前使用
    setupClerkTestingToken()
  • 使用测试API密钥:
    pk_test_xxx
    ,
    sk_test_xxx
  • 使用
    storageState
    保存认证状态以加快测试速度
  • 针对Clerk UI使用
    page.waitForSelector('[data-clerk-component]')

Anti-Patterns

反模式

PatternProblemFix
Production keys in testsSecurity riskUse
pk_test_*
keys
No
setupClerkTestingToken()
Auth failsCall before navigation
UI-based sign-in every testSlow testsUse
storageState
不良模式问题解决方案
测试中使用生产密钥安全风险使用
pk_test_*
密钥
未使用
setupClerkTestingToken()
认证失败导航前调用该函数
每次测试都基于UI登录测试速度慢使用
storageState

Framework-Specific

框架专属配置

Playwright: Use
globalSetup
for auth state Cypress: Add
addClerkCommands({ Cypress, cy })
to support file
Playwright:使用
globalSetup
管理认证状态 Cypress:在支持文件中添加
addClerkCommands({ Cypress, cy })

See Also

相关链接