Write end-to-end browser tests using Playwright.
New E2E tests should be created in apps/prairielearn/src/tests/e2e. Each test file should be named *.spec.{ts,tsx} and contain tests for a specific feature or user flow.
expect and test should be imported from apps/prairielearn/src/tests/e2e/fixtures.ts. These include fixtures to start the PrairieLearn server and provide an editable test course.
Prefer using selectors that use user-facing content, such as getByRole, getByText, and getByLabel. If that's impractical, consider using getByTestId instead. Add data-testid attributes or aria-label to page components when needed. Avoid using locator() with implementation details like CSS classes or IDs unless absolutely necessary.
Playwright e2e tests run fully in parallel (fullyParallel: true). Each test must be self-contained — set up its own state (users, enrollments, etc.) rather than relying on shared mutable state from beforeAll. Use the courseInstance fixture for the default course instance. Don't use module-level variables to share state between tests.
npx skills add PrairieLearn/playwright-testing下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer