Test E2E avec authentification Clerk

VérifiéSûr

Connecter des utilisateurs Clerk programmatiquement pour les tests E2E, sans passer par l'interface. Utiliser la fonction signInClerkUser pour les scénarios mono-utilisateur et multi-utilisateurs.

Spar Skills Guide Bot
TestingIntermédiaire
2030/08/2026
Claude Code
#clerk#e2e-testing#authentication#playwright#replit

Recommandé pour

Notre avis

Cette compétence permet de connecter programmatiquement des utilisateurs Clerk pour des tests e2e, en utilisant la fonction signInClerkUser sans interagir avec l'interface Clerk.

Points forts

  • Évite la fragilité des tests liée à l'interaction manuelle avec l'interface de connexion.
  • Gère facilement les scénarios multi-utilisateurs via des contextes de navigateur indépendants.
  • Permet de configurer le TTL de session et le chemin de redirection après connexion.

Limites

  • Fonctionne uniquement avec le support d'authentification Clerk de Replit, pas avec Clerk générique.
  • Ne couvre pas l'inscription ni les autres flux Clerk.
  • Nécessite de naviguer vers l'URL retournée pour injecter la session.
Quand l'utiliser

Utilisez cette compétence lors de tests e2e d'une application Replit authentifiée par Clerk lorsque vous avez besoin de connecter des utilisateurs sans passer par l'interface utilisateur.

Quand l'éviter

Ne l'utilisez pas pour une authentification non-Clerk, ou lorsque l'objectif du test est de vérifier le fonctionnement de l'interface Clerk elle-même.

Analyse de sécurité

Sûr
Score qualité88/100

The skill documents a helper for programmatic Clerk sign-in during e2e tests. It does not instruct destructive, exfiltrating, or obfuscated actions; it only uses a scoped function within the Playwright test environment. No dangerous shell commands or secret handling are present.

Aucun point d'attention détecté

Exemples

Single user sign-in and dashboard check
Sign in testuser@example.com with firstName Test and lastName User via Clerk programmatically, navigate to the sign-in URL, and verify the admin dashboard appears.
Multi-user data isolation test
Sign in two Clerk users (alice@example.com and bob@example.com) in separate browser contexts and verify each user sees only their own data.
Sign-in with basePath for workspace artifact
Sign in testuser@example.com via Clerk with basePath '/my-app/' and confirm the session redirects to the correct artifact preview page.

name: clerk-auth-e2e-testing-only description: Programmatic Clerk sign-in for e2e testing. Use when the application authenticates with Clerk and you need to sign in test users (including multi-user scenarios) without interacting with the Clerk UI. Note this only works for applications built with Replit's Clerk Authentication support.

Clerk Auth E2E Testing Only

Sign in Clerk users programmatically for e2e tests. Use the signInClerkUser function only — do not interact with the Clerk UI directly.

Available Functions (from ExecutePlaywrightAction)

async function signInClerkUser(
  signInOptions: {
    firstName: string;
    lastName?: string;
    email: string;
    ttl?: number; // TTL in seconds (default: 3600)
    basePath?: string; // Relative URL path appended to the dev domain for the post-sign-in redirect
  }
): Promise<string>

This function is in scope of the code for ExecutePlaywrightAction and can be used directly without any registration.

It returns a sign-in URL; navigate a page to that URL to inject the sign-in session.

Usage

Sign in a single user

const signInUrl = await signInClerkUser({
  firstName: "Test",
  lastName: "User",
  email: "testuser@example.com",
});
// Navigate to the returned sign-in URL to inject the sign-in session.
await page.goto(signInUrl);

Sign in for an artifact in a pnpm workspace

When testing an artifact served under its own preview path (e.g. in a multi-artifact or pnpm workspace repl), set basePath to the artifact's preview URL so the sign-in session redirects to the correct artifact.

// Set basePath to the artifact's preview path so Clerk redirects there after sign-in
const signInUrl = await signInClerkUser({
  firstName: "Test",
  lastName: "User",
  email: "testuser@example.com",
  basePath: "/my-app/",
});
await page.goto(signInUrl);

Sign in multiple users in independent browser contexts

const context = await newBrowserContext({ /* context options */ });
context.setDefaultTimeout(3000);
const newPage = await context.newPage();
const signInUrl = await signInClerkUser({
  firstName: "Bob",
  lastName: "Test",
  email: "bobtest@example.com",
});
await newPage.goto(signInUrl);

Test Plan Examples

  • [Clerk] Sign in admin@example.com programmatically and navigate to the returned sign-in URL
  • [Browser] Verify the admin dashboard appears
  • [Clerk] Sign in a second user in a new browser context
  • [Browser] Verify both users see their own data

Notes

  • Sessions are scoped to the browser context whose page navigates to the sign-in URL
  • Do not interact with the Clerk UI (sign-in forms, modals) — only use signInClerkUser
  • The default session TTL is 3600 seconds; pass ttl to change it
Skills similaires