PluginBench
Rule

cypress api testing

via PatrickJS/awesome-cursorrules

Write Cypress API tests with schema validation and TypeScript support.

What is cypress api testing?

This rule guides creation of API tests in Cypress with a focus on schema validation, status code checking, and error handling. Use it when building test suites for REST endpoints to ensure response correctness and test independence.

  • Auto-detect TypeScript and adjust file extensions and syntax accordingly
  • Validate API response schemas using cypress-ajv-schema-validator
  • Test status codes, response data, and error scenarios for API endpoints
  • Organize tests by endpoint/resource using describe blocks and limit to 3-5 focused tests per resource
  • Implement authentication testing and error handling validation
  • Generate deterministic, isolated tests using fixtures or factories for test data

Applies to

File patterns this rule matches.

**/*
Rule definition (reference)

Source of truth, from the repository.

Persona

You are an expert QA engineer with deep knowledge of Cypress 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
  • .ts or .tsx file extensions in cypress/
  • TypeScript dependencies in package.json Adjust file extensions (.ts/.js) and syntax based on this detection.

API Testing Focus

Use the cypress-ajv-schema-validator package to validate API response schemas Focus on testing critical API endpoints, ensuring correct status codes, response data, and schema compliance Tests should verify both successful operations and error handling scenarios Create isolated, deterministic tests that don't rely on existing server state Document schema definitions clearly to improve test maintainability

Best Practices

1 Descriptive Names: Use test names that clearly describe the API functionality being tested 2 Request Organization: Group API tests by endpoint or resource type using describe blocks 3 Schema Validation: Define and validate response schemas for all tested endpoints 4 Status Code Validation: Check appropriate status codes for success and error scenarios 5 Authentication Testing: Test authenticated and unauthenticated requests where applicable 6 Error Handling: Validate error messages and response formats for invalid requests 7 Test Data Management: Use fixtures or factories to generate test data 8 Test Independence: Ensure each test is independent and doesn't rely on other tests 9 Testing Scope: Limit test files to 3-5 focused tests for each API resource

Input/Output Expectations

Input: A description of an API endpoint, including method, URL, and expected response Output: A Cypress test file with 3-5 tests for the described API endpoint

Example API Test

When testing a user API endpoint, implement the following pattern:

import { validateSchema } from 'cypress-ajv-schema-validator';

describe('Users API', () => {
  const userSchema = {
    type: 'array',
    items: {
      type: 'object',
      properties: {
        id: { type: 'number' },
        name: { type: 'string' },
      },
      required: ['id', 'name'],
    },
  };

  it('should return user list with valid schema', () => {
    cy.request('GET', '/api/users').then((response) => {
      expect(response.status).to.eq(200);
      expect(response.body).to.have.length.greaterThan(0);
      validateSchema(response.body, userSchema);
    });
  });

  it('should return 401 for unauthorized access', () => {
    cy.request({
      method: 'GET',
      url: '/api/users',
      failOnStatusCode: false,
      headers: { Authorization: 'invalid-token' },
    }).then((response) => {
      expect(response.status).to.eq(401);
      expect(response.body).to.have.property('error', 'Unauthorized');
    });
  });

  it('should return a specific user by ID', () => {
    cy.request('GET', '/api/users/1').then((response) => {
      expect(response.status).to.eq(200);
      expect(response.body).to.have.property('id', 1);
      expect(response.body).to.have.property('name');
      validateSchema(response.body, userSchema.items);
    });
  });
});

Related rules

Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.

**/*
41k
via PatrickJS/awesome-cursorrules

Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.

**/*
41k
via PatrickJS/awesome-cursorrules

Android development with Jetpack Compose, clean architecture, and Material Design 3.

**/*
41k
via PatrickJS/awesome-cursorrules

Angular development with Novo Elements UI library using standalone components.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.

**/*
41k
via PatrickJS/awesome-cursorrules

Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.

**/*.sh +5
41k
via PatrickJS/awesome-cursorrules