const { test, expect } = require('@playwright/test');
const baseUrl = "https://api.pingera.ru/v1";
const authToken = "YOUR_AUTH_TOKEN"; // Замените на ваш реальный токен
test("Auth + CRUD - Create, Read, Delete Page", async ({ request }) => {
const headers = {
"Authorization": authToken,
"Content-Type": "application/json"
};
// Создание новой страницы
const page = await test.step("Create new page", async () => {
console.log('Попытка отправить POST-запрос на:', `${baseUrl}/pages/`);
try {
const response = await request.post(`${baseUrl}/pages/`, {
headers,
data: {
name: "Test Page " + Date.now(),
page_description: "This is a test page created via API"
}
});
console.log('Успешно получен ответ со статусом:', response.status());
expect(response.ok()).toBe(true);
const pageData = await response.json();
expect(pageData).toHaveProperty("id");
console.log("Создана страница с ID:", pageData.id);
return pageData;
} catch (e) {
console.error('Произошла ошибка во время вызова request.post:', e);
throw e;
}
});
// Получение созданной страницы по ID
await test.step("Get page by ID", async () => {
const response = await request.get(`${baseUrl}/pages/${page.id}`, {
headers
});
expect(response).toBeOK();
const pageData = await response.json();
expect(pageData.id).toBe(page.id);
expect(pageData.name).toBe(page.name);
console.log("Успешно получена страница:", pageData.name);
});
// Удаление страницы
await test.step("Delete page", async () => {
const response = await request.delete(`${baseUrl}/pages/${page.id}`, {
headers
});
expect(response).toBeOK();
console.log("Успешно удалена страница с ID:", page.id);
});
// Проверка удаления страницы
await test.step("Verify page deletion", async () => {
const response = await request.get(`${baseUrl}/pages/${page.id}`, {
headers
});
// Ожидаем 404 или аналогичную ошибку
expect(response.status()).toBe(404);
console.log("Удаление страницы подтверждено - страница не найдена");
});
});
{
"name": "My On-Demand Web Check",
"type": "multistep",
"timeout": 10,
"parameters": {
"pw_script": "ВАШ_PLAYWRIGHT_СКРИПТ_ЗДЕСЬ"
}
}
{
"job_id": "masked_job_id",
"message": "Custom check execution queued successfully",
"status": "queued"
}
{
"check_id": null,
"check_parameters": {
"interval": 300,
"name": "Test",
"parameters": {
"pw_script": "// Импортируем необходимые модули из библиотеки Playwright...\n"
},
"timeout": 30,
"type": "multistep"
},
"completed_at": "masked_timestamp",
"created_at": "masked_timestamp",
"error_message": null,
"id": "masked_id",
"job_type": "custom_check",
"result": {
"check_id": null,
"check_metadata": {
"execution_time": 2260,
"logs": [
{
"level": "log",
"message": "✅ Тест успешно пройден! Эндпоинт доступен и возвращает непустой результат.",
"timestamp": "masked_timestamp"
}
],
"test_results": [
{
"duration": 130,
"error": null,
"name": "должен успешно получить данные и убедиться, что они не пустые",
"softAssertionErrors": 0,
"status": "passed",
"steps": []
}
],
"test_summary": {
"duration": 130,
"failed": 0,
"passed": 1,
"total": 1
}
},
...
"check_server_id": "masked_server_id",
"error_message": null,
"job_id": "masked_job_id",
"response_time": 2260,
"status": "ok"
},
"started_at": "masked_timestamp",
"status": "completed"
}