Розробка E2E-тестів для сайту (Puppeteer)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка E2E-тестів для сайту (Puppeteer)
Середня
~5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розроблення E2E-тестів для сайтів (Puppeteer)

Puppeteer — Node.js-бібліотека для управління Chrome/Chromium через Chrome DevTools Protocol. Це не повнофункціональний тест-фреймворк, але відлично підходить для скрепінгу, генерування PDF, скриншотів та автоматизації специфічних браузерних завдань.

Встановлення

npm install -D puppeteer jest-puppeteer
# puppeteer включає Chromium автоматично

# Для використання системного Chrome:
npm install -D puppeteer-core

Базові тести

// tests/login.test.ts
import puppeteer, { Browser, Page } from 'puppeteer';

describe('Login flow', () => {
    let browser: Browser;
    let page: Page;

    beforeAll(async () => {
        browser = await puppeteer.launch({
            headless: 'new',
            args: ['--no-sandbox'],
        });
    });

    beforeEach(async () => {
        page = await browser.newPage();
        await page.setViewport({ width: 1280, height: 900 });
    });

    afterEach(async () => await page.close());
    afterAll(async () => await browser.close());

    test('successful login', async () => {
        await page.goto('https://example.com/login');
        await page.type('#email', '[email protected]');
        await page.type('#password', 'password123');
        await page.click('[type="submit"]');

        await page.waitForNavigation({ waitUntil: 'networkidle2' });
        expect(page.url()).toContain('/dashboard');
    });

    test('error on invalid credentials', async () => {
        await page.goto('https://example.com/login');
        await page.type('#email', '[email protected]');
        await page.type('#password', 'wrong');
        await page.click('[type="submit"]');

        await page.waitForSelector('.error-message');
        const errorText = await page.$eval('.error-message', el => el.textContent);
        expect(errorText).toContain('Невірний');
    });
});

Перехоплення запитів

// Мок API
await page.setRequestInterception(true);
page.on('request', request => {
    if (request.url().includes('/api/products')) {
        request.respond({
            status: 200,
            contentType: 'application/json',
            body: JSON.stringify([{ id: 1, name: 'MacBook' }]),
        });
    } else {
        request.continue();
    }
});

Скриншоти та PDF

// Скриншот для візуального тестування
await page.screenshot({
    path: 'screenshots/homepage.png',
    fullPage: true,
    clip: { x: 0, y: 0, width: 1280, height: 900 },
});

// Генерування PDF
await page.goto('https://example.com/invoice/123');
await page.pdf({
    path: 'invoice.pdf',
    format: 'A4',
    printBackground: true,
    margin: { top: '20mm', bottom: '20mm', left: '15mm', right: '15mm' },
});

Емуляція пристроїв

import { KnownDevices } from 'puppeteer';

const iPhone = KnownDevices['iPhone 14'];
await page.emulate(iPhone);
await page.goto('https://example.com');
await page.screenshot({ path: 'mobile.png' });

Продуктивність: коли віддати перевагу Playwright

Puppeteer хорош для: скрепінгу, генерування PDF/скриншотів, автоматизації одного браузера.

Playwright краще для E2E-тестування: мультибраузерність з коробки, краще DX, стабільніші очікування, вбудовані фікстури.

Строк реалізації

Настройка Puppeteer + 20–30 сценаріїв: 3–5 днів.