Проект для тестирования API управления финансовыми транзакциями.
Вы будете писать автотести для эндпоинтов для операций CRUD, аутентификации и обработки ошибок.
Transaction Manager — веб-приложение для управления финансовыми транзакциями
Приложение предоставляет пользователям возможность:
Создавать, просматривать, редактировать и удалять транзакции
Следить за текущим состоянием операций (в ожидании, завершены, неудачные)
Отслеживать общую сумму отправленных и полученных средств
Использовать встроенный интерфейс для тестирования API-запросов (REST Tester)
Перед тестированием проекта давайте ознакомимся с документацией.
Этот API предоставляет функциональность для управления финансовыми транзакциями между пользователями в приложении. Поддерживаются операции создания, получения, обновления и удаления транзакций.
Версия: 1.0.0
Шаг 1: Установка Node.js
Перейдите на официальный сайт: https://nodejs.org
Загрузите LTS-версию (рекомендуемую).
Установите Node.js (включая npm — Node Package Manager).
Проверьте установку в терминале (PowerShell, Terminal, Bash):
node -v
npm -v
Шаг 2: Установка Git (для Windows)
Загрузите Git: https://git-scm.com/downloads
Установите Git, оставляя настройки по умолчанию.
Проверьте установку:
git –version
Шаг 4: Инициализация проекта
Создание проекта playwright-tests
Шаг 5: Установка Playwright из TypeScript
npm init playwright@latest
Шаг 6: Создание Page Object структуры
/tests
└── api
├── pages
│ ├── auth.api.ts
│ └── transaction.api.ts
├── utils
│ └── types.ts
├── create-user.spec.ts
├── login-user.spec.ts
└── create-transaction.spec.ts
/playwright.config.ts
types.ts – описание типов
export interface AuthResponse {
access_token: string;
refresh_token: string;
expires_at: number;
user: {
id: string;
email: string;
};
}
export interface TransactionResponse {
id: string;
from_user: string;
to_user: string;
amount: number;
status: string;
created_at: string;
}
auth.api.ts – API Page Object для автоматизации
import { request } from ‘@playwright/test’;
import { AuthResponse } from ‘../utils/types’;
const BASE_URL = process.env.BASE_URL || ‘https://wfeyphieqwpnkkqgyvci.supabase.co’;
const API_KEY = process.env.API_KEY || ‘eyJhbGciOiJIUzI1NiIsInR5cCI…’;
export class AuthAPI {
static async registerUser(email: string, password: string): Promise<AuthResponse> {
const context = await request.newContext();
const response = await context.post(`${BASE_URL}/auth/v1/signup`, {
headers: {
apikey: API_KEY,
‘Content-Type’: ‘application/json’
},
data: { email, password }
});
return response.json();
}
static async loginUser(email: string, password: string): Promise<AuthResponse> {
const context = await request.newContext();
const response = await context.post(`${BASE_URL}/auth/v1/token?grant_type=password`, {
headers: {
apikey: API_KEY,
‘Content-Type’: ‘application/json’
},
data: { email, password }
});
return response.json();
}
}
transaction.api.ts – Page Object для транзакций
import { request } from ‘@playwright/test’;
import { TransactionResponse } from ‘../utils/types’;
const BASE_URL = process.env.BASE_URL || ‘https://wfeyphieqwpnkkqgyvci.supabase.co’;
const API_KEY = process.env.API_KEY || ‘eyJhbGciOiJIUzI1NiIsInR5cCI…’;
export class TransactionAPI {
static async createTransaction(token: string, fromUser: string): Promise<TransactionResponse> {
const context = await request.newContext();
const response = await context.post(`${BASE_URL}/rest/v1/transactions`, {
headers: {
apikey: API_KEY,
Authorization: `Bearer ${token}`,
Prefer: ‘return=representation’,
‘Content-Type’: ‘application/json’
},
data: {
from_user: fromUser,
to_user: ‘recipient@test.com’,
amount: 10.5,
status: ‘pending’
}
});
return response.json();
}
}
create-user.spec.ts – тест создания пользователя
import { test, expect } from ‘@playwright/test’;
import { AuthAPI } from ‘./pages/auth.api’;
test(‘Пользователь успешно регистрируется’, async () => {
const email = `test+${Date.now()}@gmail.com`;
const password = ‘123456’;
const response = await AuthAPI.registerUser(email, password);
expect(response.access_token).toBeTruthy();
expect(response.user.email).toBe(email);
});
login-user.spec.ts – тест логина
import { test, expect } from ‘@playwright/test’;
import { AuthAPI } from ‘./pages/auth.api’;
test(‘Пользователь успешно авторизуется’, async () => {
const email = ‘test+user1@gmail.com’;
const password = ‘123456’;
const response = await AuthAPI.loginUser(email, password);
expect(response.access_token).toBeTruthy();
expect(response.user.email).toBe(email);
});
create-transaction.spec.ts – создание транзакций
import { test, expect } from ‘@playwright/test’;
import { AuthAPI } from ‘./pages/auth.api’;
import { TransactionAPI } from ‘./pages/transaction.api’;
test(‘Успешное создание транзакции’, async () => {
const email = ‘test+user1@gmail.com’;
const password = ‘123456’;
const auth = await AuthAPI.loginUser(email, password);
const transaction = await TransactionAPI.createTransaction(auth.access_token, auth.user.id);
expect(transaction.to_user).toBe(‘recipient@test.com’);
expect(transaction.amount).toBe(10.5);
expect(transaction.status).toBe(‘pending’);
expect(transaction.created_at).toBeTruthy();
});
Цель: Научиться отправлять GET-запрос на получение одной транзакции по id.
Цель: Получить массив всех созданных транзакций.
Цель: Научиться удалять транзакции по ID.

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.
Коллекция в Postman — это набор API-запросов, сгруппированных по смыслу. Она упрощает тестирование и автоматизацию работы с API.
Скачайте файл коллекции в формате .json, откройте Postman, нажмите Import, выберите файл и нажмите Open.
Да, после импорта вы можете изменять запросы, добавлять новые, сохранять переменные и делиться коллекцией с коллегами.
После завершения практикума вы сможете продолжить обучение на углублённом месячном курсе по REST API.
Мы также присутствуем в социальных сетях! Подписывайтесь на нас и получайте последние новости, акции, скидки, бесплатные тренинги и участие в марафонах.
Будем рады видеть вас в нашем сообществе!
Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков