👨‍🏫 Porady

Cypress vs Playwright - analiza popularności

Language
date
Aug 28, 2023
slug
cypress-playwright-statystyki-popularnosc
author
status
Public
tags
Playwright
Cypress
Porady
summary
Przeanalizujmy oficjalne pobrania Cypress i Playwright - jak wygląda ich popularność? Jak wyglądają trendy i przyszłość?
type
Post
thumbnail
statystki-playwright-vs-cypress.jpg
updatedAt
Oct 11, 2023 09:13 AM
category
👨‍🏫 Porady

Popularność Cypress vs Playwright

 
W tym poście przyjrzę się popularności narzędzi Cypress oraz Playwright.
Odpowiem na pytanie:
  • Jak wyglądają twarde dane i wykresy popularności?
  • Dlaczego wykresy są często błędnie odczytywane?🤯
 

Liczba pobrań

 
Przeanalizujmy oficjalne pobrania Cypress i Playwright w tygodniowych odstępach (stan na 2023Q3).
Na poniższych wykresach uwzględniamy tylko języki JavaScript/TypeScript! Playwright jest dostępny również z Pythonem, Javą i C#.

Ostatni Rok

Porównanie bibliotek cypress oraz playwright-core:
notion image
 

Całkiem niezły wynik Playwright👏

 
Playwright tylko w JS/TS w 3 lata osiągną 75% popularności Cypress.
 
Przypomnijmy, że Cypress jest z nami od 2017 (wersja stabilna 1.0.0 wydana 10.2017 - źródło: 🔗https://www.npmjs.com/package/cypress/v/1.0.0 )
Z kolei Playwright od 2020 (wersja stabilna 1.0.0 wydana 05.2020 - źródło 🔗https://www.npmjs.com/package/playwright/v/1.0.0)
 
Gdyby można doliczyć pobrania Playwright w Java, Python i .NET (źródła na końcu wpisu) moglibyśmy spekulować, że oba frameworki są bardzo zbliżone co do popularności.
 

Czemu playwright-core, a nie playwright lub @playwright/test?

 
Zobaczmy porównanie wszystkich paczek, które wchodzą w skład projektu Playwright (playwright, @playwright/test oraz playwright-test) z paczką cypress:
notion image
 

Objaśnienie paczek

 
Czym są te wszystkie paczki/moduły związane z Cypress i Playwright na powyższym wykresie?🤔
  • cypress - paczka z Cypressem - zawiera w sobie test runner oraz cały kod wykorzystywany przez podstawę Cypressa (może być rozszerzona o wiele pluginów)
  • @playwright/test - najpopularniejsza edycja projektu Playwright: Playwright Test. Jest to paczka, framework w którym znajdziemy mnóstwo gotowych elementów jak konfiguracja, raporty, zrównoleglenie testów etc. Jest ona pobierana przy tworzeniu projektu (przy wykorzystaniu polecenia npm init playwright@latest)
  • playwright - biblioteka do obsługi czystego Playwright. Wartościowa gdy chcemy samodzielnie użyć innego runnera (np. do BDD jak Cucumber), lub zaimplementować samodzielnie inne funkcje, które są nam potrzebne w ramach pracy z Playwright a kolidują one z elementami z @playwright/test.
  • playwright-core - paczka, która zawiera core kodu Playwright (bez przeglądarek), który jest wykorzystywany zarówno przez @playwright/test, jak i playwright
 
Często osoby nie mające doświadczenia z Playwright mogą mylnie interpretować dane co do pobrań, nie wiedząc jakie metryki śledzić. Np. widzimy, że w stosie Node.js najczęściej wykorzystywany jest @playwright/test i z tego powodu biblioteka playwright jest raczej rzadko wykorzystywana. Również Max Schmitt, jeden z twórców PW, wyjaśnił, że paczki playwright oraz @playwright/test zależą od playwright-core (🔗https://github.com/microsoft/playwright/discussions/11523).
 
Aby obiektywnie stwierdzić ile pobrań w JS/TS ma Playwright należy albo dodać do siebie pobrania @playwright/test i playwrigh lub po prostu sprawdzić liczbę pobrań playwright-core.
 
💡 Dlatego osobiście sugerowałbym porównywanie playwright-core vs cypress 😉
 

Ostatnie 5 lat

 
Na tym wykresie możemy jasno zobaczyć wypłaszczony trend pobrań Cypress z ostatnich miesięcy i rewolucję jaką zapoczątkował Playwright:
notion image
 

Dane z npmjs

 
Wcześniejsze wykresy są oparte o pochodzące ze strony 🔗 https://www.npmjs.com.
Możemy też śledzić liczbę pobrań danej paczki bezpośrednio z jej strony (wykres z ostatniego roku). Dodatkowo nanieśliśmy linię która pokazuje trend dla liczby pobrań.
notion image
notion image
 

Popularność repozytoriów

 
Popularność repozytoriów (stan na 2023Q3):
 
notion image
 

Popularność wg. State of JS

State of JS jest ankietą prowadzoną wśród developerów, którzy pracują w ekosystemie JavaScript. W 2022 w ankietach zebrano 39,472 odpowiedzi, a następnie zostały one przeanalizowane. Odpowiedzi dotyczą wykorzystywanych narzędzi, trendów, popularności, przyzwyczajeń itp.
W raporcie znajduje się też sekcja poświęcona narzędziom do testowania: 🔗https://2022.stateofjs.com/en-US/libraries/testing/
Znajdują się tam biblioteki do powszechnie wykorzystywane przez programistów np. do unit testów (mocha, chai, jasmine) oraz biblioteki wykorzystywane przez testerów (Cypress, Playwright, Selenium, Puppeteer, WebdriverIO).
 
Na poniższych wykresach możecie prześledzić rożne wskaźniki powiązane z danym narzędziem. Co ważne - dane pochodzą z pewnego wycinka społeczności. Myślę, że mogą być traktowane bardziej jako ogólny trend niż pełny wyznacznik aktualnej sytuacji😉
 
Retention - wskaźnik, który mierzy, jak często ludzie chcieliby skorzystać z danej usługi, produktu lub doświadczenia ponownie
notion image
 
Interest - jakie jest zainteresowanie daną usługą, produktem lub doświadczeniem wśród respondentów (Playwright zalicza tutaj jako jedyny duży wzrost)
notion image
 
Usage - informuje nas o częstotliwości użycia danej usługi, produktu lub doświadczenia
notion image
 
Awareness - mierzy, ile osób jest świadomych danej usługi, produktu lub doświadczenia w stosunku do całkowitej liczby respondentów
notion image

Przyszłość

 
Na koniec możemy jeszcze pospekulować kiedy Playwright przeskoczy Cypress w liczbie pobrań😉
 
Weź proszę pod uwagę, że są to czyste spekulacje i bardzo ogólne przyjrzenie się trendom. Nie stosujemy tu żadnych zaawansowanych technik i analizy danych😉
 
Biorąc pod uwagę maksymalną liczbę pobrań w tym roku to nastąpi to w okolicach połowy 2024 (jest to bardzo optymistyczne założenie!):
 
notion image
Bazując na statystykach maksów z początku 2022 i ostatnich z 2023 możemy się spodziewać takiego wydarzenia pod koniec 2024.
notion image
Możemy też przyjrzeć się trendom ze średnich z 2023.
Z nich również wynika, że przy utrzymaniu trendów - przecięcie nastąpi w 2024:
 
notion image
 
 
Czas pokaże, czy te estymaty pokryją się z rzeczywistością📈
 

Popularność Playwright w innych językach

 
Oficjalne pobrania PW (tygodniowo) (stan na 2023Q3):
 

Podsumowanie

 
Czy statystyka liczby pobrań bibliotek jest poprawna i można się na niej opierać?
 
Przy analizowaniu i opieraniu się o tego typu dane trzeba brać różne czynniki pod uwagę. Moduły są wykorzystywane zarówno w codziennej pracy, nauce, jak i w procesie CI/CD. Tam nawet kilkadziesiąt razy dziennie moduły są pobierane podczas budowania wersji i uruchamiania testów. To może powodować dodatkowe podbijanie statystyk.
 
Myślę, że można brać pod uwagę ogólny trend.
Może on pokazać, w którą stronę zmierza popularność danej biblioteki😉
 
PS. Czy to znaczy, że Cypress umiera i czas na Playwright?
Rzuć okiem na nasz artykuł i analizę tego tematu😉
 

Bonus

 
Do reprezentacji liczby pobrań najczęściej stosowana jest agregacja tygodniowej liczba pobrań. Dzieje się tak z powodu przestojów w pobraniach mających miejsce w dni wolne, które najczęściej przypadają na weekendy😊
Sprawdź sam wykres dzienny wspomnianych paczek z npmcharts:
notion image