5 причин почему Playwright лучше Cypress

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Перевод статьи Alister ScottFive reasons why Playwright is better than Cypress

Очевидно, что я не фанат Cypress, о чем, собственно, 2 года назад написал пост. За это время мое внимание привлек Playwright. Я специально вернулся к Cypress, чтобы сравнить его с Playwright и посмотреть, были ли исправлены претензии по отношению к первому фреймворку. На основании проведенного сравнения, могу смело рассказать о причинах, почему Cypress все еще проигрывает конкуренцию.

Сравниваемые версии:
Cypress: 8.7.0 on Electron 93
Playwright: 1.16.0

Причина 1: Playwright быстрее чем Cypress

Зафиксированный результат — до 4-х раз быстрее!
Берем простой пример из документации Cypress:

describe('My First Test', () => {
    it('clicking "type" shows the right headings', () => {
      cy.visit('https://example.cypress.io')
      cy.contains('type').click()
      // Should be on a new URL which includes '/commands/actions'
      cy.url().should('include', '/commands/actions')
      // Get an input, type into it and verify that the value has been updated
      cy.get('.action-email')
        .type('fake@email.com')
        .should('have.value', 'fake@email.com')
    })
})

Работает 8 секунд на моем M1 Macbook Air

✔  demo-spec.js                             
00:08

Тот же пример на Playwright:

import { test, expect } from '@playwright/test'
 
test.describe.parallel('My First Test', () => {
  test('clicking "type" shows the right headings', async ({ page }) => {
    await page.goto('https://example.cypress.io')
    await page.click('a:has-text("type")')
    // Should be on a new URL which includes '/commands/actions'
    await page.waitForURL(/.+\/commands\/actions$/)
    // Get an input, type into it and verify that the value has been updated
    await page.fill('.action-email', 'fake@email.com')
    await expect(page.locator('.action-email')).toHaveValue('fake@email.com')
  })
})
Running 1 test using 1 worker
  ✓  scenarios/compare.cypress.spec.ts:4:3 › My First Test › clicking "type" shows the right headings (1s)
  1 passed (2s)

В 4 раза быстрее!

Источник: https://habr.com/ru/post/593577/


Интересные статьи

Интересные статьи

ВведениеВ данной статье я бы хотел рассмотреть проблему обновления PHP в виртуальной машине BitrixVM, и действия, которые возможно применить если выполнение переезда на машину с обновленным ПО невозмо...
10 июня From Software наконец-то показала долгожданный геймплейный трейлер Elden Ring и объявила дату релиза. Если вспомнить, что игру анонсировали 9 июня 2019 года и кро...
В языках программирования меня всегда интересовало их внутреннее устройство. Как работает тот или иной оператор? Почему лучше писать так, а не иначе? Подобные вопросы не всегда помога...
Перевод Becoming a better front-end developer using fundamentals instead of heuristics Наш опыт показывает, что не имеющие технического образования разработчики и самоучки чаще полагаются ...
В последнее время появилось много фантастических исследований по 2D-рендерингу. Пётр Кобаличек и Фабиан Айзерман работают над Blend2D: это один из самых быстрых и точных CPU-растеризаторов на рын...