Sobes.tech
Middle+

JavaScriptте колдонуучу интерфейсинин автоматташтырылышы үчүн тест рамкаларын салыштырыңыз.

sobes.tech AI

AIден жооп

JavaScript-та UI автоматташтыруу үчүн бир нече популярдуу frameworkтер бар:

  • Selenium WebDriver (мисалы, Selenium-Webdriver-JS китепканасы аркылуу): Кеңири колдонулат, көп браузерлерде иштейт, чоң коомчулук колдоосу бар. WebDriver протоколу аркылуу иштейт. Башталгандар үчүн орнотуу кыйын болушу мүмкүн:
  • Cypress: Жылдам, ички (сырткы WebDriver серверлерсиз). Браузер ичинде тест жүргүзүүгө багытталган, натыйжалар үчүн мыкты панел бар. Бир нече вкладкаларда же кросс-домен тесттерди колдобойт:
  • Playwright: Microsoft тарабынан иштелип чыккан. Жылдам, ишенимдүү, тесттерди параллелдүү иштетүүгө ылайыктуу, бардык заманбап браузерлер менен иштейт. JavaScript жана башка тилдерди колдойт. Cypress жана Seleniumго салыштырмалуу "заманбап" деп эсептелет:
  • TestCafe: WebDriver же башка плагиндерди талап кылбайт. Тесттерди браузерде түздөн-түз иштетет. Орнотуу оңой, параллелдүү иштетүүгө мүмкүнчүлүк берет. Айрым DOM элементтери же иш-чаралар менен иштөөдө чектөөлөр болушу мүмкүн:

Төмөндө салыштыруу таблицасы:

Критерий Selenium WebDriver Cypress Playwright TestCafe
Архитектура WebDriver протоколу Браузер ичинде Браузер ичинде / Out-of-process Браузер ичинде
Ылдамдык Орто Жогорку Өте жогорку Жогорку
Параллелдүү иштетүү Орнотуулар талап кылынат Орточо колдоо Жогорку, алдын ала орнотулган Жакшы
Кросс-браузер колдоо Жакшы Чектелген (негизгиси) Жакшы Жакшы
Орнотуу оңойлуулугу Орто Жогорку Жогорку Жогорку
iFrames колдоо Жакшы Чектелген Жакшы Жакшы
Отчеттук берүү Негизги (плагиндер талап кылынат) Жакшы (Dashboard) Жакшы (Hooks, Reporters) Жакшы
Коомчулук Өтө чоң Ички Тез өсүүдө Орто

Ар бир framework үчүн мисал коду:

// Selenium WebDriver (selenium-webdriver колдонуп)
const { Builder, By, Key, until } = require('selenium-webdriver');

(async function example() {
  let driver = await new Builder().forBrowser('chrome').build();
  try {
    await driver.get('http://www.example.com');
    let title = await driver.getTitle();
    if (title === 'Example Domain') {
      console.log('Титул туура!');
    } else {
      console.error('Титул туура эмес:', title);
    }
  } finally {
    await driver.quit();
  }
})();
// Cypress
describe('Example Domain', () => {
  it('титул туура болушу керек', () => {
    cy.visit('http://www.example.com');
    cy.title().should('eq', 'Example Domain');
  });
});
// Playwright (Playwright Test колдонуп)
const { test, expect } = require('@playwright/test');

test('титул туура болушу керек', async ({ page }) => {
  await page.goto('http://www.example.com');
  await expect(page).toHaveTitle(/Example Domain/);
});
// TestCafe
fixture('Example Domain')
    .page('http://www.example.com');

test('титул туура болушу керек', async t => {
    await t.expect(t.title).eql('Example Domain');
});

Фреймворк тандоодо долбоор талаптары, команда тажрыйбасы, параллелдүү иштетүү зарылдыгы, кросс-браузер колдоо жана бюджет эске алынсын.