← ClerkCONTENT HISTORY

Update to Clerk

Snapshot Nov 6, 2026 · 00:16 UTC · version 0.3.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Clerk and check future changes in Following.

Up to 3 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "E2E testing for Clerk apps. Use with Playwright or Cypress for auth flow tests.",
  "included_files": [],
  "name": "clerk-testing",
  "skill_md_contents": "---\nname: clerk-testing\ndescription: E2E testing for Clerk apps. Use with Playwright or Cypress for auth flow\n  tests.\nallowed-tools: WebFetch\nlicense: MIT\nmetadata:\n  author: clerk\n  version: 1.2.1\ncompatibility: Requires a publishable key and either CLERK_SECRET_KEY or CLERK_TESTING_TOKEN. Keys can be auto-generated by `clerk init` (temporary development keys, no Clerk account required), or pulled from the Clerk Dashboard.\n---\n\n# Testing\n\n## Decision Tree\n\n| Framework | Documentation |\n|-----------|---------------|\n| Overview | https://clerk.com/docs/guides/development/testing/overview |\n| Playwright | https://clerk.com/docs/guides/development/testing/playwright/overview |\n| Cypress | https://clerk.com/docs/guides/development/testing/cypress/overview |\n\n## Mental Model\n\nTest auth = isolated session state. Each test needs fresh auth context.\n- `clerkSetup()` initializes test environment\n- `setupClerkTestingToken()` bypasses bot detection\n- `storageState` persists auth between tests for speed\n\n## Workflow\n\n1. Identify test framework (Playwright or Cypress)\n2. WebFetch the appropriate URL from decision tree above\n3. Follow official setup instructions\n4. Use development-instance keys only (`pk_test_*` / `sk_test_*`). If the project has no keys yet, `npx clerk@latest init` (the Clerk CLI; see `clerk-setup`) creates a Clerk application and writes development-instance keys to the env file. No Clerk account or Dashboard visit is needed.\n\n## Best Practices\n\n- Use `setupClerkTestingToken()` before navigating to auth pages\n- Use test API keys: `pk_test_xxx`, `sk_test_xxx`\n- Save auth state with `storageState` for faster tests\n- Use `page.waitForSelector('[data-clerk-component]')` for Clerk UI\n\n## Anti-Patterns\n\n| Pattern | Problem | Fix |\n|---------|---------|-----|\n| Production keys in tests | Security risk | Use `pk_test_*` keys |\n| No `setupClerkTestingToken()` | Auth fails | Call before navigation |\n| UI-based sign-in every test | Slow tests | Use `storageState` |\n\n## Framework-Specific\n\n**Playwright**: Use `globalSetup` for auth state\n**Cypress**: Add `addClerkCommands({ Cypress, cy })` to support file\n\n## See Also\n\n- `clerk-setup` - Install Clerk before adding tests\n- `clerk-nextjs-patterns` - Next.js patterns being tested\n- [Demo Repo](https://github.com/clerk/clerk-playwright-nextjs/tree/main/e2e)\n"
}

SHA-256 of public snapshot: 99d696999c0b332bc718812d95643ec3ad600335b858e7092cafcdeb5500c6c2