clerk-testing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTesting
测试
Decision Tree
决策树
Mental Model
核心思路
Test auth = isolated session state. Each test needs fresh auth context.
- initializes test environment
clerkSetup() - bypasses bot detection
setupClerkTestingToken() - persists auth between tests for speed
storageState
测试认证 = 独立会话状态。每个测试都需要全新的认证上下文。
- 初始化测试环境
clerkSetup() - 绕过机器人检测
setupClerkTestingToken() - 在测试间持久化认证信息以提升测试速度
storageState
Workflow
工作流程
- Identify test framework (Playwright or Cypress)
- WebFetch the appropriate URL from decision tree above
- Follow official setup instructions
- Use and
pk_test_*keys onlysk_test_*
- 确定测试框架(Playwright或Cypress)
- 从上方决策树中获取对应的URL
- 遵循官方设置指南
- 仅使用 和
pk_test_*密钥sk_test_*
Best Practices
最佳实践
- Use before navigating to auth pages
setupClerkTestingToken() - Use test API keys: ,
pk_test_xxxsk_test_xxx - Save auth state with for faster tests
storageState - Use for Clerk UI
page.waitForSelector('[data-clerk-component]')
- 在导航到认证页面之前使用
setupClerkTestingToken() - 使用测试API密钥:,
pk_test_xxxsk_test_xxx - 使用 保存认证状态以加快测试速度
storageState - 针对Clerk UI使用
page.waitForSelector('[data-clerk-component]')
Anti-Patterns
反模式
| Pattern | Problem | Fix |
|---|---|---|
| Production keys in tests | Security risk | Use |
No | Auth fails | Call before navigation |
| UI-based sign-in every test | Slow tests | Use |
| 不良模式 | 问题 | 解决方案 |
|---|---|---|
| 测试中使用生产密钥 | 安全风险 | 使用 |
未使用 | 认证失败 | 导航前调用该函数 |
| 每次测试都基于UI登录 | 测试速度慢 | 使用 |
Framework-Specific
框架专属配置
Playwright: Use for auth state
Cypress: Add to support file
globalSetupaddClerkCommands({ Cypress, cy })Playwright:使用 管理认证状态
Cypress:在支持文件中添加
globalSetupaddClerkCommands({ Cypress, cy })