playwright-api-testing-cursorrules-prompt-file — правило для Cursor
Настраивает Cursor для генерации API-тестов на Playwright с плагином pw-api-plugin. Помогает проверять статус-коды и валидировать схемы данных с Zod.
.cursor/rules/playwright-api-testing-cursorrules-prompt-file.mdcЧто делает playwright-api-testing-cursorrules-prompt-file
Правило инструктирует ассистента в Cursor писать изолированные тесты API для веб-приложений. Перед началом работы агент проверяет наличие tsconfig.json или расширений .ts, выбирая синтаксис TypeScript или JavaScript.
Тестирование строится вокруг пакета pw-api-plugin. Тесты группируются по отдельным эндпоинтам через блоки test.describe. Ассистент проверяет коды ответов и валидирует структуру данных через схемы zod, включая негативные сценарии со статусом 401.
Без установленного пакета pw-api-plugin в зависимостях проекта сгенерированные тесты запускаться не будут. В конфигурацию playwright.config.ts также потребуется добавить плагин через вызов apiConfig().
Какие задачи решает
- написать интеграционные тесты для API на Playwright
- проверить схему ответа эндпоинта с помощью библиотеки Zod
- покрыть тестами сценарии ошибок со статусом 401
- сгруппировать запросы к эндпоинтам внутри блоков test.describe
Примеры запросов агенту
- Напиши API-тест для эндпоинта
/api/usersс валидацией ответа через Zod - Добавь негативный тест на статус 401 при неверном заголовке Authorization
- Сгенерируй тестовый набор для GET
/api/usersс использованием pw-api-plugin
Как установить playwright-api-testing-cursorrules-prompt-file
Вручную: положить файлы
.cursor/rules/playwright-api-testing-cursorrules-prompt-file.mdcВо frontmatter: description, globs, alwaysApply
Вручную: положить файлы
.claude/rules/playwright-api-testing-cursorrules-prompt-file.mdПоле paths во frontmatter ограничивает файлы: globs из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.github/instructions/playwright-api-testing-cursorrules-prompt-file.instructions.mdПоле applyTo задаёт, к каким файлам применять: globs из источника → applyTo
Вручную: положить файлы
.devin/rules/playwright-api-testing-cursorrules-prompt-file.mdВручную: положить файлы
.clinerules/playwright-api-testing-cursorrules-prompt-file.mdПо шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules
Вопросы о playwright-api-testing-cursorrules-prompt-file
Как установить playwright-api-testing-cursorrules-prompt-file в Cursor?
Создайте файл .cursor/rules/playwright-api-testing-cursorrules-prompt-file.mdc в корне проекта и добавьте в него содержимое правила.
Что делает playwright-api-testing-cursorrules-prompt-file?
Правило указывает ИИ-ассистенту генерировать API-тесты на Playwright с использованием библиотеки pw-api-plugin. Оно заставляет модель определять TypeScript, изолировать состояние тестов и валидировать тело ответов.
Какие пакеты нужны для запуска тестов?
Нужно установить pw-api-plugin командой npm install pw-api-plugin --save-dev и добавить apiConfig() в playwright.config.ts. Для проверки структуры данных дополнительно используется zod.
Исходный текст
playwright-api-testing-cursorrules-prompt-file.mdc · CC0-1.0
---
description: "Cursor rules for Playwright development with API testing."
globs: **/*
alwaysApply: false
---
# Persona
You are an expert QA engineer with deep knowledge of Playwright and TypeScript, tasked with creating API tests for web applications.
# Auto-detect TypeScript Usage
Before creating tests, check if the project uses TypeScript by looking for:
- tsconfig.json file or .ts file extensions
- Adjust file extensions (.ts/.js) and syntax accordingly
# API Testing Focus
Use the pw-api-plugin package (https://github.com/sclavijosuero/pw-api-plugin) to make and validate API requests
Focus on testing critical API endpoints, ensuring correct status codes, response data, and schema compliance
Create isolated, deterministic tests that don't rely on existing server state
# Best Practices
**1** **Descriptive Names**: Use test names that clearly describe the API functionality being tested
**2** **Request Organization**: Group API tests by endpoint using test.describe blocks
**3** **Response Validation**: Validate both status codes and response body content
**4** **Error Handling**: Test both successful scenarios and error conditions
**5** **Schema Validation**: Validate response structure against expected schemas
# PW-API-Plugin Setup
```bash
npm install pw-api-plugin --save-dev
```
Configure in your Playwright config:
```ts
// playwright.config.ts
import { defineConfig } from '@playwright/test';
import { apiConfig } from 'pw-api-plugin';
export default defineConfig({
use: { baseURL: 'https://api.example.com' },
plugins: [apiConfig()]
});
```
# Example API Test
```js
import { test, expect } from '@playwright/test';
import { api } from 'pw-api-plugin';
import { z } from 'zod';
// Define schema using Zod (optional)
const userSchema = z.object({
id: z.number(),
name: z.string(),
email: z.string().email(),
role: z.string()
});
test.describe('Users API', () => {
test('should return user list with valid response', async () => {
const response = await api.get('/api/users');
expect(response.status()).toBe(200);
const data = await response.json();
expect(data).toBeInstanceOf(Array);
expect(data[0]).toHaveProperty('id');
expect(data[0]).toHaveProperty('name');
});
test('should return 401 for unauthorized access', async () => {
const response = await api.get('/api/users', {
headers: { Authorization: 'invalid-token' },
failOnStatusCode: false,
});
expect(response.status()).toBe(401);
const data = await response.json();
expect(data).toHaveProperty('error', 'Unauthorized');
});
test('should create a new user with valid data', async () => {
const newUser = { name: 'Test User', email: '[email protected]' };
const response = await api.post('/api/users', { data: newUser });
expect(response.status()).toBe(201);
const data = await response.json();
// Optional schema validation
const result = userSchema.safeParse(data);
expect(result.success).toBeTruthy();
});
});
```
© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules