
Playwright overgikk Cypress i ukentlige npm-nedlastinger rundt midten av 2024, og tidlig i 2026 har gapet vokst til omtrent 30 millioner mot 6,5 millioner ukentlige nedlastinger. Det skjedde ikke tilfeldig. Nesten alle andre sammenligninger på Googles første side er skrevet av QA-verktøyleverandører eller testing-SaaS-selskaper. Denne er fra et team som bygger produksjonsnettapper og velger testautomatiseringsverktøy for virkelige prosjekter -- ikke for å promotere et produkt.
Her passer Selenium inn: det er fortsatt det mest utbredte E2E-rammeverket globalt, særlig i Java- og Python-miljøer. Det forsvinner ikke med det første. Men for nye JavaScript/TypeScript-prosjekter i 2026 handler det egentlig om Playwright vs Cypress -- med Selenium som legacy-alternativet.
Kort oppsummert
Velg Playwright hvis du vil ha det beste testverktøyet totalt sett i 2026: raskest kjøring, gratis parallellisering, støtte for flere språk og utmerket TypeScript-DX. Velg Cypress hvis teamet ditt setter interaktiv feilsøking og komponenttesting over alt annet. Velg Selenium hvis du er i et Java/Python enterprise-miljø med eksisterende Selenium-infrastruktur.
| Funksjon | Playwright | Cypress | Selenium |
|---|---|---|---|
| Laget av | Microsoft | Cypress.io | Selenium-fellesskapet |
| Første utgivelse | 2020 | 2014 | 2004 |
| Arkitektur | WebSocket (CDP) | I nettleseren | WebDriver-protokoll |
| Språk | JS/TS, Python, Java, C# | Kun JS/TS | JS, Python, Java, C#, Ruby, PHP, Kotlin |
| Nettleserstøtte | Chromium, Firefox, WebKit | Chrome, Firefox, Edge, Electron, WebKit (eksperimentell) | Chrome, Firefox, Safari, Edge, IE |
| Kjøringshastighet | Raskest (~4,5 sek) | Middels (~9,4 sek) | Tregeste (~14,5 sek) |
| Parallellisering | Innebygd, gratis (sharding) | Betalt (Cypress Cloud) eller community-verktøy | Selenium Grid (selvdriftet) |
| Sky/dashbord-kostnad | kr 0 | ~700--2 800 kr/mnd (årsavtale) | kr 0 (+ infrastrukturkostnad) |
| TypeScript-DX | Førsteklasses | Bra (noen quirks) | Community-drevet |
| Komponenttesting | Eksperimentell | Moden (førsteklasses) | Ingen |
| Læringskurve | Moderat | Lav (for JS-utviklere) | Bratt |
| Best for | De fleste nye prosjekter | Frontend-team som vil ha interaktiv DX | Enterprise Java/Python-miljøer |
Det er oppsummeringen. Resten av artikkelen forklarer bevisene bak hver rad -- med kode, benchmarks og ærlige meninger.
Arkitektur -- Hvordan hvert verktøy snakker med nettleseren
Arkitektur er grunnårsaken til nesten alle forskjellene du vil se i denne sammenligningen. Se det slik: Playwright snakker med nettleseren som en regissør som hvisker instruksjoner direkte til skuespillerne. Cypress sitter på scenen med skuespillerne og kjører i samme rom. Selenium sender instruksjoner gjennom et mellomledd som står i gangen.
<!-- IMAGE: Architecture comparison showing Playwright WebSocket connection, Cypress in-browser execution, and Selenium WebDriver intermediary layer -->Playwright: Direkte nettleserkontroll via WebSocket
Playwright kommuniserer med nettlesere gjennom WebSocket-tilkoblinger ved hjelp av Chrome DevTools Protocol (CDP) for Chromium og tilsvarende protokoller for Firefox og WebKit. Det er ingen mellommann -- testkoden sender kommandoer direkte til nettlesermotoren. Dette gir lavere latens, flere muligheter (fler faner, fler opprinnelser, nettverksavskjæring) og færre bevegelige deler som kan gå i stykker.
Cypress: Kjøring inne i nettleseren
Cypress tar en fundamentalt annerledes tilnærming. Det injiserer seg selv inn i nettleseren og kjører testkoden din i samme JavaScript-event-loop som applikasjonen din. Derfor føles Cypress så raskt for enkle tester -- det er null nettverksoverhead mellom testen og appen. Men denne arkitekturen forklarer også Cypress sine begrensninger: ingen støtte for flere faner, begrenset testing på tvers av opprinnelser, og kun JavaScript/TypeScript (siden testene må kjøre i en nettleser-kontekst).
Selenium: WebDriver-mellomleddet
Selenium bruker WebDriver-protokollen. Testkoden din sender HTTP-forespørsler til en nettleserdriverbinær (chromedriver, geckodriver), som oversetter dem til nettleserkommandoer. Hver kommando er en tur-retur: test til driver til nettleser og tilbake. Denne indirektionen legger til latens og skaper flere mulige feilpunkter. Selenium er gradvis i ferd med å ta i bruk BiDi-protokollen for å redusere dette, men er ikke helt der ennå.
Konklusjon: Playwright vinner på arkitektur. Direkte WebSocket-kommunikasjon betyr raskere kjøring, flere muligheter og færre ustabile feil. Cypress sin in-browser-modell er genuint smart for enkle single-origin-tester, men den skaper harde tak som Playwright ikke har. Selenium sin arkitektur viser sin alder.
Språk- og nettleserstøtte
Dette er ofte det første filteret. Hvis teamet ditt ikke skriver JavaScript, er Cypress utelukket umiddelbart.
| Kategori | Playwright | Cypress | Selenium |
|---|---|---|---|
| JavaScript / TypeScript | Ja | Ja | Ja |
| Python | Ja (offisiell) | Nei | Ja (offisiell) |
| Java | Ja (offisiell) | Nei | Ja (offisiell) |
| C# / .NET | Ja (offisiell) | Nei | Ja (offisiell) |
| Ruby | Nei | Nei | Ja (offisiell) |
| PHP | Nei | Nei | Ja (community) |
| Kotlin | Nei | Nei | Ja (community) |
| Chromium / Chrome | Ja (medfølger) | Ja | Ja (via chromedriver) |
| Firefox | Ja (medfølger) | Ja | Ja (via geckodriver) |
| WebKit / Safari | Ja (medfølger, plattformuavhengig) | Eksperimentell | Ja (kun macOS, via SafariDriver) |
| Edge | Ja (Chromium-basert) | Ja | Ja |
| IE | Nei | Nei | Ja |
Hva betyr dette i praksis? Hvis du er en Java-bedrift med 20 QA-ingeniører, er Cypress ikke et alternativ -- ferdig snakket. Hvis testing på tvers av nettlesere inkludert Safari er viktig (og det bør det være -- Safari har rundt 18 % av global nettleserandel), håndterer Playwright det rett ut av esken på alle operativsystemer, mens Cypress fortsatt merker WebKit-støtten som "eksperimentell."
Selenium vinner på ren bredde. Det støtter flere språk og nettlesere enn begge alternativene. Men for de språkene og nettleserne som betyr mest i 2026 -- JavaScript/TypeScript, Python og Chromium/Firefox/WebKit-trioen -- dekker Playwright alt med null konfigurasjon og medfølgende nettleserbinærfiler.
Konklusjon: Selenium vinner på bredde (flest språk, flest nettlesere, inkludert IE). Playwright vinner på praktisk dekning -- nettleserne og språkene som betyr noe i 2026, innebygd og uten konfigurasjon. Cypress er det smaleste alternativet.
Skrive tester -- Kode-til-kode-sammenligning
Nok teori. Her er den samme testen skrevet i alle tre rammeverk. Her kjenner du DX-forskjellen.
Innloggingsflyt-test
En standard innloggingstest: naviger til en side, fyll inn legitimasjon, send inn og verifiser omdirigeringen.
// Playwright
import { test, expect } from '@playwright/test';
test('user can log in', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('s3cureP@ss');
await page.locator('button[type="submit"]').click();
await expect(page).toHaveURL('/dashboard');
await expect(page.locator('h1')).toContainText('Welcome');
});// Cypress
describe('Login', () => {
it('user can log in', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('s3cureP@ss');
cy.get('button[type="submit"]').click();
cy.url().should('include', '/dashboard');
cy.get('h1').should('contain', 'Welcome');
});
});// Selenium (with WebDriver)
const { Builder, By, until } = require('selenium-webdriver');
describe('Login', function () {
let driver;
before(async () => {
driver = await new Builder().forBrowser('chrome').build();
});
after(async () => {
await driver.quit();
});
it('user can log in', async () => {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('s3cureP@ss');
await driver.findElement(By.css('button[type="submit"]')).click();
await driver.wait(until.urlContains('/dashboard'), 5000);
const heading = await driver.findElement(By.css('h1')).getText();
expect(heading).to.include('Welcome');
});
});Legg merke til forskjellene. Playwright sin async/await med page.locator() er lesbar og venter automatisk til elementer er klare for interaksjon. Cypress sitt kjedingsAPI (cy.get().type().click()) er konsist og genuint behagelig for enkle flyter. Selenium krever eksplisitte ventinger (driver.wait(until.urlContains(...))), manuell nettleser-livssyklushåndtering og mer kjelekode.
API-mocking og nettverksavskjæring
Dette scenariet avslører et mye større gap. Avskjær et API-kall, returner mock-data og verifiser at grensesnittet gjengis korrekt.
// Playwright -- native network interception
test('shows mocked user list', async ({ page }) => {
await page.route('**/api/users', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify([{ id: 1, name: 'Alice' }]),
});
});
await page.goto('/users');
await expect(page.locator('.user-card')).toHaveCount(1);
await expect(page.locator('.user-card')).toContainText('Alice');
});// Cypress -- native network interception
it('shows mocked user list', () => {
cy.intercept('GET', '/api/users', {
statusCode: 200,
body: [{ id: 1, name: 'Alice' }],
}).as('getUsers');
cy.visit('/users');
cy.wait('@getUsers');
cy.get('.user-card').should('have.length', 1);
cy.get('.user-card').should('contain', 'Alice');
});// Selenium -- no native network interception
// You need a separate proxy tool like BrowserMob Proxy
// or mock your API server directly. There is no built-in
// equivalent to page.route() or cy.intercept().
// Typical workaround: start a mock server before the test
const mockServer = require('./helpers/mock-server');
before(async () => {
await mockServer.start({ port: 4000 });
mockServer.stub('GET', '/api/users', [{ id: 1, name: 'Alice' }]);
});
it('shows mocked user list', async () => {
await driver.get('http://localhost:3000/users');
// ... assert using findElement
});Dette er viktig. API-mocking er avgjørende for pålitelige E2E-tester, og både Playwright og Cypress håndterer det innebygd. Selenium krever en separat mock-server eller proxy-verktøy -- mer infrastruktur, mer kompleksitet, flere ting som kan gå galt. Se også vår TypeScript vs JavaScript-sammenligning.
Konklusjon: Playwright vinner på kodekvalitet og kapasitet. Dens async/await-syntaks er renere enn Cypress sin kjedingsmodell for komplekse scenarioer, og den håndterer API-mocking, fler faner og fler opprinnelser innebygd. Cypress vinner på enkelhet for rette single-page-flyter -- kjedingsAPIet er genuint behagelig. Selenium er mest ordrik og krever mest kjelekode.
Playwright vs Cypress vs Selenium: Hastighetsbenchmarks
"Hvilket er raskest?" er ett av de mest søkte spørsmålene i denne sammenligningen. Her er faktiske tall fra Checkly sin benchmark-studie og BetterStack sine målinger, kryssreferert for konsistens.
"Kjøringstid for testpakke (sekunder)"
Datatabell
| "Rammeverk" | "Execution Time" |
|---|---|
| "Playwright" | 4.5 |
| "Cypress" | 9.4 |
| "Selenium" | 14.5 |
Playwright fullfører tilsvarende testpakker på omtrent 4,5 sekunder, mot 9,4 sekunder for Cypress og 14,5 sekunder for Selenium. Det er ikke en marginal forskjell -- det er et 2x og 3x gap.
Hvorfor er Playwright raskere? Tre grunner: WebSocket-kommunikasjon eliminerer HTTP-overheaden Selenium bærer. Playwright sin nettleserkontekst-modell skaper isolerte testmiljøer uten å starte hele nettleserprosesser. Og parallellkjøringen skjer på rammeverknivå -- du trenger ikke eksterne verktøy.
Hastighetsgapet øker med større testpakker. Playwright sine nettleserkontekster skalerer effektivt fordi de deler én enkelt nettleserprosess. Selenium starter nye nettleserinstanser per parallell arbeider. Cypress kjører tester i serie i sin åpen kildekode-versjon, så en voksende testpakke betyr lineært voksende kjøringstid med mindre du betaler for Cypress Cloud.
Én migreringscase setter tall på dette: BigBinary rapporterte 89 % reduksjon i testkjøringstid etter å ha byttet fra Cypress til Playwright -- hele pakken falt fra 2 timer 27 minutter til 16 minutter ved hjelp av Playwright sin sharding.
Konklusjon: Playwright vinner klart på hastighet. Det kjører testpakker 2x raskere enn Cypress og 3x raskere enn Selenium. Dette gapet øker med større testpakker fordi Playwright sin nettleserkontekstmodell skalerer bedre enn å starte nye nettleserinstanser.
Feilsøking og utvikleropplevelse
Her begynner det å bli nyansert. Playwright er teknisk overlegen, men Cypress har en genuint bedre DX som holder team lojale.
Interaktiv feilsøking
Cypress Test Runner er fortsatt gullstandarden for interaktiv feilsøking. Du ser testen kjøre i sanntid inne i en ekte nettleser, med tidsreisefeilsøking -- klikk på et hvilket som helst steg i kommandaloggen for å se den eksakte DOM-tilstanden på det tidspunktet. For frontend-utviklere som feilsøker visuelle regresjoner eller layoutproblemer, er dette vanskelig å slå. Ærlig talt er det den beste enkeltfunksjonen i hele Cypress sin verktøykasse.
Playwright Trace Viewer tar en annen tilnærming. Det tar opp sporinger under testkjøringer -- skjermbilder, DOM-øyeblikksbilder, nettverksforespørsler og konsolllogger ved hvert steg. Du åpner disse sporingene i en nettleserbasert visning i etterkant. For CI-feilsøking (finne ut hvorfor en test feilet i en headless pipeline) er Trace Viewer faktisk mer nyttig enn Cypress sin interaktive kjøring, fordi du får hele konteksten uten å trenge å reprodusere det lokalt.
Playwright sin --ui-modus la til en interaktiv opplevelse nærmere Cypress sin Test Runner i nyere versjoner, men den er ikke like polert. Den er funksjonell, ikke herlig.
Selenium IDE finnes men er begrenset. Det meste av Selenium-feilsøking er console.log og skjermbilder. Det fungerer, men det føles som 2012.
TypeScript-first-utvikling
Playwright er TypeScript-first. Det leveres med autogenererte typer, konfigurasjonsfilen er playwright.config.ts som standard, og VS Code-autofullfør fungerer utmerket. Når du skriver page. og trykker autofullfør, får du alle metoder med fullstendige typesignaturer.
Cypress støtter TypeScript, men det er friksjonspunkter. Egendefinerte kommandoer trenger manuelle typedeklarasjoner (utvidelsen av Cypress.Chainable-grensesnittet), og kjedingsAPIet forvirrer noen ganger TypeScript-inferens. cypress.config.ts-filen fungerer, men DX-en er ikke like sømløs.
Selenium sin TypeScript-støtte er et community-bidrag og føles tappet på sammenlignet med Playwright sin naturlige opplevelse.
Konklusjon: Cypress vinner på interaktiv DX -- Test Runneren er genuint herlig for frontend-utviklere som feilsøker visuelle tester. Playwright vinner på CI-feilsøking og TypeScript -- Trace Viewer er laget for å diagnostisere feil i headless CI-miljøer, og TypeScript-støtten er best i klassen. Selenium sin feilsøkingshistorie er den svakeste.
CI/CD-integrasjon og parallellisering
Her gjelder det å sette teorien ut i praksis. Testpakken din kjøres i CI hundrevis av ganger per dag, ikke på laptopen din. Her er en klar-til-bruk GitHub Actions-konfigurasjon for hvert rammeverk -- noe ingen konkurrent på første side av Google tilbyr.
GitHub Actions-konfigurasjon
# Playwright -- built-in parallelization, zero cost
name: Playwright Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install --with-deps
- run: npx playwright test --shard=${{ matrix.shard }}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report-${{ matrix.shard }}
path: playwright-report/# Cypress -- parallel requires Cypress Cloud (paid)
name: Cypress Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
containers: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
record: true
parallel: true
group: 'CI'
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}# Selenium -- requires browser service container
name: Selenium Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
selenium:
image: selenium/standalone-chrome:latest
ports:
- 4444:4444
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npm test
env:
SELENIUM_REMOTE_URL: http://localhost:4444/wd/hubParallellisering: Gratis vs betalt
Playwright-konfigurasjonen ovenfor deler testpakken på tvers av 4 parallelle shards med --shard=1/4. En 10-minutters pakke kjøres på 2,5 minutter. Null kostnad. Ingen skytjeneste nødvendig. Du kan også være interessert i beste AI-kodegrannskingsverktøy.
Cypress sin gratis Starter-plan inkluderer nå parallellisering, men med en grense på 500 testresultater per måned -- som de fleste team bruker opp i løpet av en dag eller to med aktiv utvikling. For seriøs CI-bruk trenger du Cypress Cloud (fra omtrent 700 kr/mnd på årsavtale for Team-planen med 120 000 resultater per år) eller community-alternativer som sorry-cypress. Flaggene record: true og parallel: true i YAML-en ovenfor krever en Cypress Cloud-tilkobling.
Selenium-parallellisering krever Selenium Grid (selvdriftet, driftskostnader) eller en skyleverandør som BrowserStack. Det er det mest komplekse oppsettet av de tre.
Konklusjon: Playwright vinner på CI/CD. Gratis, ubegrenset parallellisering uten infrastruktur er vanskelig å slå. Cypress sin gratis tier inkluderer parallellisering men begrenser til 500 resultater per måned -- virkelige team trenger en betalt plan. Selenium krever mest driftsarbeid.
Kostnads- og prisanalyse
Dette er det største innholdsgapet på hele SERP-en for dette søkeordet. Alle konkurrenter hopper over det, men kostnader spiller en rolle -- særlig i stor skala.
Lisenser og prisnivåer
| Funksjon | Playwright | Cypress (Gratis) | Cypress Cloud Team | Cypress Cloud Business | Selenium + Grid |
|---|---|---|---|---|---|
| Lisens | MIT (gratis) | MIT (gratis) | ~700 kr/mnd (årsavtale) | ~2 800 kr/mnd (årsavtale) | Apache 2.0 (gratis) |
| Parallellkjøring | Innebygd | Ja (500 resultater/mnd grense) | Ja (120 000 resultater/år) | Ja (ubegrenset) | Selvdriftet Grid |
| Testresultat-dashbord | HTML-rapporter (gratis) | Nei | Ja (120 000 resultater/år) | Ja (ubegrenset) | Tredjepartsverktøy |
| Flakiness-deteksjon | Innebygde forsøk på nytt | Enkle forsøk på nytt | Ja | Ja | Nei |
| Testanalyse | Innebygd rapportering | Nei | Begrenset | Full | Tredjepartsverktøy |
| Spec-prioritering | Nei | Nei | Nei | Ja | Nei |
Reelle kostnader etter teamstørrelse
| Teamstørrelse | Playwright | Cypress (med Cloud Team) | Selenium (med BrowserStack) |
|---|---|---|---|
| Solo-utvikler | kr 0 | kr 0 (gratis tier) | kr 0 (lokalt) |
| 5-persons team | kr 0 | ~700 kr/mnd (8 400 kr/år) | ~1 600 kr/mnd (19 200 kr/år) |
| 20-persons QA-team | kr 0 | ~2 800 kr/mnd (33 600 kr/år) | ~6 300 kr/mnd (75 600 kr/år) |
| Enterprise (50+) | kr 0 | Tilpasset (Enterprise) | Tilpasset (BrowserStack/Sauce Labs) |
Playwright er gratis for alt Cypress tar betalt for. Parallellisering, testanalyse via HTML-rapporter, Trace Viewer for feilsøking, codegen for testkode -- alt inkludert uten kostnad. Det eneste Playwright ikke tilbyr er et vertsbasert sky-dashbord med teamsamarbeidsfunksjoner, og for mange team er den innebygde HTML-rapporten og CI-artefaktene nok.
Selenium er også gratis, men infrastrukturkostnaden ved å kjøre Selenium Grid i stor skala er ikke ubetydelig. Noen på teamet ditt må vedlikeholde Grid-nodene, håndtere nettleserversjonoppdateringer og feilsøke infrastrukturfeil.
Konklusjon: Playwright vinner på kostnad -- det er ikke engang i nærheten. Alle funksjoner Cypress låser bak betalingsmur (parallellisering, testanalyse, flakiness-deteksjon) er inkludert i Playwright gratis. Selenium er gratis på verktøynivå, men infrastrukturregningen legger seg opp.
Komponenttesting
Komponenttesting lar deg montere én enkelt React-, Vue- eller Angular-komponent isolert og teste den uten å starte en hel applikasjon. Cypress var pioneren for denne tilnærmingen, og det er en av de sterkeste grunnene til å velge Cypress i dag.
Cypress har førsteklasses komponenttesting for React (18-19), Vue 3, Angular (18-21) og Svelte 5. Du bruker det samme cy.mount()-APIet og den samme Test Runneren du allerede kjenner fra E2E-tester. Dokumentasjonen er moden, økosystemet er solid, og det fungerer pålitelig. For team som vil ha ett enkelt verktøy for både komponent- og E2E-testing, er Cypress sin komponenttesting en genuint differensierende faktor.
Playwright la til eksperimentell komponenttesting i nyere versjoner, med støtte for React, Vue og Svelte. Det er funksjonelt men mindre polert enn Cypress sin implementasjon. Hvis komponenttesting er en dag-én-prioritet, har Cypress fordelen. Men Playwright sin raske utgivelseskadens (månedlig) betyr at dette gapet lukker seg.
Selenium har ingen komponenttestingsstøtte. Det opererer på nettlesernivå, ikke komponentnivå. Hvis du trenger komponenttesting ved siden av Selenium E2E-tester, bruker du et separat verktøy som React Testing Library eller Vitest.
Konklusjon: Cypress vinner på komponenttesting -- det var pioneren, har den mest modne implementasjonen og dekker det bredeste spekteret av rammeverk. Playwright er en sterk toer. Selenium er ikke en konkurrent her.
Fellesskap, økosystem og adopsjonstrender
Tallene forteller en historie her. Playwright overgikk Cypress i npm-nedlastinger rundt midten av 2024, og i februar 2026 er gapet betydelig: Playwright trekker omtrent 30 millioner ukentlige nedlastinger mot Cypress sine 6,5 millioner og Selenium WebDriver sine 1,8 millioner.
"Ukentlige npm-nedlastinger (tusener)"
Datatabell
| "Kvartal" | "Playwright" | "Cypress" | "Selenium WebDriver" |
|---|---|---|---|
| "Q1 2024" | 8000 | 6500 | 2200 |
| "Q3 2024" | 14000 | 6600 | 2100 |
| "Q1 2025" | 19000 | 6500 | 2000 |
| "Q3 2025" | 25000 | 6400 | 1900 |
| "Q1 2026" | 30000 | 6500 | 1800 |
GitHub-stjerner følger et lignende mønster: Playwright ligger på omtrent 82 800, Cypress på 49 461 og Selenium på 33 769 per februar 2026. State of JavaScript-undersøkelsen rangerer konsekvent Playwright høyest i utviklertilfredshet og interesse.
Men npm forteller bare JavaScript-historien. Selenium sin reelle installerte base spenner over Java-, Python-, C#- og Ruby-økosystemer der npm-nedlastinger ikke gjelder. I Java enterprise-verdenen er Selenium fortsatt det dominerende rammeverket med god margin.
Hvorfor vokser Playwright så raskt? Microsofts støtte gir det jevnlige månedlige utgivelser og langsiktig stabilitet. TypeScript-first-design samsvarer med retningen frontend-utvikling går. Gratis parallellisering fjerner friksjonen som Cypress Cloud-prising skaper. Og flerspråklig støtte betyr at Python- og Java-team kan migrere fra Selenium uten å bytte språk.
Cypress er ikke i absolutt nedgang -- nedlastingene har platået rundt 6-7 millioner per uke. Men den relative andelen krymper ettersom Playwright absorberer både nye prosjekter og Cypress/Selenium-migrasjoner.
Konklusjon: Playwright vinner på momentum. Det har den raskeste veksten, høyest utviklertilfredshet og sterkest bane. Selenium vinner på installert base. Cypress beholder et lojalt fellesskap, men veksten har platået. Les mer om Claude Code vs Cursor vs Copilot-sammenligning.
Migrasjonsguide -- Bytte rammeverk
Hvis du vurderer å bytte, er her den praktiske oversettelsesguiden.
Cypress til Playwright: API-oversettelse
// BEFORE: Cypress login test
describe('Login', () => {
it('logs in successfully', () => {
cy.visit('/login');
cy.get('#email').type('[email protected]');
cy.get('#password').type('password123');
cy.get('form').submit();
cy.url().should('include', '/dashboard');
});
});// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});Nøkkeloversettelseser: cy.visit() blir page.goto(). cy.get() blir page.locator(). cy.intercept() blir page.route(). cy.wait('@alias') blir page.waitForResponse(). Cypress sin implisitte kjedemodell blir eksplisitt async/await.
Selenium til Playwright: API-oversettelse
// BEFORE: Selenium login test
const { Builder, By, until } = require('selenium-webdriver');
async function loginTest() {
const driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('http://localhost:3000/login');
await driver.findElement(By.id('email')).sendKeys('[email protected]');
await driver.findElement(By.id('password')).sendKeys('password123');
await driver.findElement(By.css('form')).submit();
await driver.wait(until.urlContains('/dashboard'), 10000);
} finally {
await driver.quit();
}
}// AFTER: Same test in Playwright
import { test, expect } from '@playwright/test';
test('logs in successfully', async ({ page }) => {
await page.goto('/login');
await page.locator('#email').fill('[email protected]');
await page.locator('#password').fill('password123');
await page.locator('form').evaluate(form => form.submit());
await expect(page).toHaveURL(/dashboard/);
});Den største forskjellen? Playwright håndterer nettleser-livssyklusen og automatisk venting for deg. Ikke mer driver.quit() i finally-blokker. Ikke mer driver.wait(until.urlContains(...), 10000) -- Playwright venter automatisk på navigasjon. Fjern alle dine implisitte og eksplisitte ventinger; Playwright sin autoventefunksjon erstatter dem.
Migrasjonssjekkliste
- Revider den eksisterende testpakken -- tell tester, identifiser egendefinerte kommandoer (Cypress) eller kompleks ventelogikk (Selenium)
- Installer Playwright ved siden av det nåværende rammeverket -- kjør begge i CI under overgangen
- Oversett tester gradvis -- start med de enkleste, mest verdifulle testene
- Erstatt egendefinerte kommandoer med page objects eller fixtures -- Cypress egendefinerte kommandoer har ikke en 1:1 Playwright-ekvivalent
- Oppdater CI-konfigurasjonen -- legg til Playwright sin sharding-konfig, fjern Cypress Cloud-nøkler om aktuelt
- Kjør begge rammeverk parallelt i 1-2 sprinter for å fange regresjoner
- Avvikle det gamle rammeverket når alle tester er migrert og stabile
En typisk 200-tester Cypress-pakke kan migreres på 1-2 sprinter av én ingeniør. Selenium-til-Playwright-migrasjonen tar litt lenger tid fordi Selenium-tester har en tendens til å ha mer kompleks ventelogikk som må tenkes om. Hvis du migrerer, er Playwright destinasjonen 90 % av teamene velger i 2026. Selve migrasjonen er grei -- det vanskeligste er vanligvis egendefinerte Cypress-kommandoer eller kompleks Selenium-ventelogikk.
Stakk-spesifikke anbefalinger -- React, Next.js og mer
Generiske "det kommer an på"-råd er ubrukelige. Her er hva vi ville valgt for spesifikke teknologistakker, basert på å bygge produksjonsapper med disse rammeverk.
| Stakk | Beste valg | Nest beste | Hvorfor |
|---|---|---|---|
| React / Next.js | Playwright | Cypress | Next.js har offisiell Playwright-integrasjon. API-rute-testing, serverkomponent-testing og gratis parallellisering gjør Playwright til det klare valget. |
| Vue / Nuxt | Playwright eller Cypress | -- | Genuint jevnt løp. Cypress har moden Vue-komponenttesting. Playwright utmerker seg på E2E. Ingen galt valg. |
| Angular | Playwright | Selenium | Angulars offisielle anbefalinger inkluderer nå Playwright blant de moderne alternativene etter Protractors utfasing. |
| Java / Python backend | Playwright eller Selenium | -- | Hvis teamet har Selenium-kompetanse, behold det. Ellers gjør Playwright sine flerspråklige bindinger det til et naturlig alternativ. |
| Legacy enterprise (IE-støtte) | Selenium | -- | Det eneste alternativet. Playwright droppet IE. Cypress hadde det aldri. |
Hvis teamet ditt bygger med Next.js og evaluerer rammeverk, dekker vår Next.js vs Remix-sammenligning hvordan rammeverksarkitektur påvirker teststrategien din. Playwright sin evne til å teste API-ruter og serverkomponenter innebygd gjør det særlig kraftfullt i Next.js-økosystemet.
AI-assistert testing i 2026
AI-assistert testing er ikke lenger hypotetisk -- verktøy som GitHub Copilot, Cursor og Claude Code genererer testkode daglig for tusenvis av utviklere. Valg av rammeverk påvirker hvor godt disse verktøyene fungerer.
Playwright har den beste AI-kompatibiliteten. Dens TypeScript-first-API med sterke typedefinisjoner betyr at AI-assistenter genererer mer nøyaktig testkode. De strukturerte async/await-mønstrene er lettere for LLM-er å resonnere om enn Cypress sin kjedemodell. Og Playwright sitt eget npx playwright codegen-verktøy tar opp nettleserinteraksjoner og genererer komplette testfiler med intelligent lokatorvalg -- ingen AI-abonnement nødvendig.
Cypress fungerer rimelig bra med AI-verktøy. Dets deklarative kjedingsAPI er konsist og godt representert i treningsdata. Men cy.-navnerommet og mønstrene for egendefinerte kommandoer kan snuble kodegenereringen, og produsere tester som ser korrekte ut men feiler på grunn av Cypress-spesifikke quirks.
Selenium er den svakeste matchen for AI-assistert testing. Ordrik kjelekode, flere språkbindinger med forskjellige APIer og inkonsistente mønstre på tvers av Java/Python/JS betyr at AI-generert Selenium-kode krever mest manuell opprydding.
Ikke overdriv AIens rolle her -- det er en produktivitetsmultiplikator, ikke en erstatning for testdesign. Men hvis teamet ditt bruker AI-kodingsassistenter (og de fleste gjør i 2026), produserer Playwright de mest pålitelige genererte testene.
Konklusjon: Playwright vinner for AI-assistert testgenerering. Dens typede API og strukturerte mønstre gir de beste resultatene med moderne AI-kodingsassistenter.
Beslutningsrammeverk -- Hvilket verktøy bør du velge?
Her er seksjonen du kom for. Konkrete scenarioer, konkrete anbefalinger.
| Hvis prosjektet ditt trenger... | Velg | Hvorfor | Alternativ |
|---|---|---|---|
| Beste E2E-rammeverk totalt | Playwright | Raskest, mest kapabelt, gratis, sterkt fellesskap | Cypress (hvis DX er avgjørende) |
| Interaktiv feilsøking for frontend | Cypress | Test Runnerens tidsreisefeilsøking er uslåelig | Playwright (UI-modus forbedres) |
| Flerspråklig team (Java/Python/C#) | Playwright | Offisielle bindinger for 4 språk | Selenium (bredest språkstøtte) |
| Budsjettbevisst team | Playwright | kr 0 for alt, inkludert parallellisering | Selenium (gratis men infrastrukturkostnader) |
| Komponenttesting som prioritet | Cypress | Mest moden komponenttestimplementasjon | Playwright (eksperimentell) |
| Enterprise Java/Python-miljø | Selenium eller Playwright | Eksisterende investering teller; Playwright ved migrering | -- |
| Solo frontend-utvikler | Cypress eller Playwright | Cypress for raskest onboarding; Playwright for kraft | -- |
| Safari/WebKit-testing nødvendig | Playwright | Førsteklasses WebKit-støtte, plattformuavhengig | Selenium (kun macOS Safari) |
| Legacy IE-støtte nødvendig | Selenium | Det eneste alternativet | -- |
| Raskeste CI/CD-pipelines | Playwright | Gratis sharding, raskest kjøring | -- |
| Team som migrerer fra Selenium | Playwright | Enkleste migreringssti, de fleste teams destinasjon | -- |
| 20+ persons QA-team | Playwright | Skalerer uten betalte tjenester | Selenium (hvis allerede investert) |
Når du IKKE bør bruke hvert verktøy
- Ikke velg Playwright hvis hele teamet kjenner Cypress inngående, har omfattende egendefinerte kommandoer og ingen smertepunkter. Migreringskosnader eksisterer, og "nyere" betyr ikke "bedre for din situasjon."
- Ikke velg Cypress hvis du trenger flerspråklig støtte, testing med flere faner, eller gratis parallellkjøring i stor skala. Dette er arkitektoniske begrensninger, ikke funksjoner på en veikart.
- Ikke velg Selenium for nye JavaScript/TypeScript-prosjekter. Både Playwright og Cypress tilbyr dramatisk bedre DX, hastighet og pålitelighet for JS-team.
Slik tilnærmer Techsy seg testautomatisering
Hos Techsy har vi implementert E2E-testing på dusinvis av produksjonsnettapplikasjoner. Her er vår faktiske prosess:
-
Standard er Playwright for nye prosjekter. Dens hastighet, gratis parallellisering og TypeScript-first-DX samsvarer med vår Next.js/React-stakk. Vi skriver E2E-tester parallelt med funksjoner -- ikke etter sprinten, ikke "når vi har tid," men som en del av definisjonen av ferdig.
-
Vi bruker Cypress når et klientteam har eksisterende Cypress-infrastruktur og migrering ikke er berettiget. Vi presser ikke team til å migrere for migrerinas skyld. Hvis Cypress fungerer og teamet er produktivt, hjelper vi dem å få mer ut av det.
-
Vi hjelper team å migrere fra Selenium når vedlikeholdsbyrden overstiger migreringskosnaden -- noe som skjer oftere enn du skulle tro. Selenium-testpakker har en tendens til å akkumulere kompleks ventelogikk og skjøre selektorer over år. Sjekk ut vår Next.js vs React + Vite-sammenligning.
Vår typiske testingstakk: Playwright for E2E, React Testing Library for komponentnivå-tester og GitHub Actions for CI. Denne kombinasjonen dekker hele testingspyramiden med minimal verktøykompleksitet.
Trenger du hjelp til å sette opp automatisert testing for nettappen din? Teamet vårt implementerer Playwright- og Cypress-testing for React-, Next.js- og Node.js-prosjekter. Få en gratis testingkonsultasjon.
Endelig konklusjon
| Kategori | Vinner | Merknader |
|---|---|---|
| Hastighet | Playwright | 2x raskere enn Cypress, 3x raskere enn Selenium |
| Nettleserstøtte | Playwright | Inkluderer Chromium, Firefox og WebKit på alle plattformer |
| Språkstøtte | Selenium | Flest språk (6+ offisielle bindinger) |
| DX / Feilsøking | Cypress | Interaktiv Test Runner er fortsatt den beste feilsøkingsopplevelsen |
| CI/CD-integrasjon | Playwright | Gratis parallellisering via sharding, null infrastruktur |
| Kostnad | Playwright | kr 0 for alt. Cypress Cloud starter på ~700 kr/mnd |
| Komponenttesting | Cypress | Førsteklasses støtte for React, Vue, Angular, Svelte |
| Fellesskapsvekst | Playwright | ~30M ukentlige npm-nedlastinger, ~82 800 GitHub-stjerner |
| TypeScript-DX | Playwright | TypeScript-first-design, beste autofullfør og typesikkerhet |
| Migreringsmål | Playwright | Der 90 % av migrerende team lander i 2026 |
| AI-kompatibilitet | Playwright | Typet API gir de mest pålitelige AI-genererte testene |
| Totalt (2026) | Playwright | Beste balanse av hastighet, kapasitet, kostnad og fellesskap |
For de fleste team som starter et nytt prosjekt i 2026, er Playwright standardvalget. Det er det raskeste, mest kapable og helt gratis. Det vinner 9 av 12 kategorier i tabellen ovenfor.
Men standardvalg er ikke universelle. Cypress er fortsatt det rette valget for frontend-team som prioriterer interaktiv feilsøking og komponenttesting -- og som kan leve med dets arkitektoniske begrensninger. Selenium forblir essensielt for Java/Python enterprise-miljøer med eksisterende testinfrastruktur og for de stadig sjeldnere tilfellene der IE-støtte er nødvendig.
Den verste beslutningen er analyselammelse. Vurder teamets språk, nettleserkravene dine, CI-budsjettet og feilsøkingspreferansene dine. Velg ett. Begynn å skrive tester. Du kan alltid migrere senere -- og som vi viste ovenfor, er migreringsveien godt dokumentert.
Kilder
- Playwright-dokumentasjon
- Cypress Cloud-prising
- npm Trends -- Playwright vs Cypress vs Selenium
- Checkly -- Hastighetsbenchmark-sammenligning
- Next.js -- Testing med Playwright
- State of JavaScript 2024 -- Testbiblioteker
- BigBinary -- Hvorfor vi byttet fra Cypress til Playwright
Playwright vs Cypress vs Selenium: Vanlige spørsmål
Er Playwright bedre enn Cypress?
For de fleste team i 2026, ja. Playwright er raskere (2x i benchmarks), støtter flere nettlesere og språk, har gratis parallellisering og bedre TypeScript-støtte. Cypress vinner på interaktiv feilsøkings-DX og modenhet i komponenttesting. Hvis de to tingene er din toppprioritet, er Cypress fortsatt et sterkt valg.
Er Playwright i ferd med å erstatte Selenium?
I JavaScript/TypeScript-økosystemet, i stor grad ja. Playwright sine npm-nedlastinger er omtrent 4,5 ganger Cypress og 17 ganger Selenium WebDriver. Men Selenium forblir dominerende i Java- og Python enterprise-miljøer der dens flerspråklige støtte og tiårs ecosystem-verktøy er essensielle. Selenium er ikke død -- det snevrer inn til sin nisje.
Hva er raskest, Playwright eller Cypress?
Playwright kjører testpakker omtrent 2x raskere -- 4,5 sekunder mot 9,4 sekunder i sammenlignbare benchmarks. Gapet øker med større testpakker fordi Playwright sin nettleserkontekstmodell er mer effektiv enn Cypress sin prosessmodell. Ett team rapporterte 89 % reduksjon i total CI-tid etter migrering.
Støtter Cypress Safari?
Cypress har eksperimentell WebKit-støtte, men den anses ikke som produksjonsklar. Playwright inkluderer WebKit (Safaris renderingsmotor) som en førsteklasses, fullt støttet nettleser som kjører på alle operativsystemer. Hvis Safari-testing er kritisk for brukerne dine, er Playwright det tryggere valget.
Er Selenium død i 2026?
Nei. Selenium forblir det mest utbredte E2E-rammeverket globalt, særlig i Java- og Python-økosystemer. Det er det eneste alternativet for IE/legacy-nettlesertesting. Men for nye JavaScript/TypeScript-prosjekter er Playwright og Cypress bedre valg på alle praktiske måler.
Kan Playwright teste mobilapper?
Playwright kan emulere mobile nettlesere (Chrome for Android, Safari for iOS via WebKit) med nøyaktig viewport-, berørings- og brukerагент-simulering. Det kan ikke automatisere native mobilapper. For native apptesting trenger du Appium (som bruker Selenium sin WebDriver-protokoll) eller et dedikert mobiltestingverktøy som Detox.
Bør jeg lære Playwright eller Cypress først?
Hvis du er ny på E2E-testing i 2026, start med Playwright. Det har den sterkeste vekstbanen, det mest omfattende funksjonssettet, og ferdighetene overfører til alle JavaScript/TypeScript-prosjekter. Cypress er verdt å lære hvis teamet ditt allerede bruker det eller hvis interaktiv feilsøking er din primære bekymring.
Hva er ulempene med Playwright?
Playwright sin interaktive feilsøkingsopplevelse er mindre polert enn Cypress sin Test Runner (selv om Playwright UI-modus lukker gapet). Komponenttestingen er mindre moden enn Cypress sin. Og den raske månedlige utgivelseskadenset betyr at API-overflaten endrer seg hyppig -- du må holde deg oppdatert med oppdateringer.
Hvor mye koster Cypress Cloud?
Cypress Cloud starter på omtrent 700 kr/mnd (fakturert årlig) for Team-planen med 120 000 testresultater per år, og går til omtrent 2 800 kr/mnd for Business med ubegrensede resultater. Enterprise-prising er tilpasset. Playwright tilbyr tilsvarende funksjoner -- parallellisering, testanalyse via HTML-rapporter og flakiness-deteksjon via forsøk på nytt -- gratis.
Hvilket E2E-rammeverk fungerer best med GitHub Actions?
Alle tre fungerer med GitHub Actions, men Playwright krever minst konfigurasjon. Playwright sine offisielle Docker-bilder og innebygd sharding (--shard=1/4) gjør CI-oppsett til én enkelt YAML-fil. Cypress trenger sin offisielle GitHub Action og et Cypress Cloud-abonnement for parallellisering. Selenium trenger en tjenestebeholder for nettleserdriveren.
Fungerer Playwright med Java eller Python?
Ja. Playwright har offisielle Java-, Python-, C#- og JavaScript/TypeScript-bindinger vedlikeholdt av Microsoft. Cypress er kun JavaScript/TypeScript. Dette gjør Playwright til et overbevisende Selenium-alternativ for ikke-JS-team som vil ha moderne verktøy uten å bytte språk.
Hvordan migrerer jeg fra Selenium til Playwright?
Start med å installere Playwright ved siden av Selenium. Oversett tester gradvis: page.locator() erstatter driver.findElement(), page.goto() erstatter driver.get(), og du kan fjerne alle eksplisitte ventinger fordi Playwright automatisk venter. Oppdater CI-konfigurasjonen, kjør begge rammeverk parallelt under overgangen, og avvikl deretter Selenium når alle tester er grønne. En typisk 200-tester pakke tar 1-2 sprinter for én ingeniør.