Page MenuHomePhabricator

Cypress vs. Selenium Performance
Closed, ResolvedPublic

Description

Brief Summary:
The Mediawiki Cite extension currently uses the Cypress framework for the end-to-end tests. This project will take an existing Cypress test, implement the same one with the Selenium framework, and run both tests 100 times in the CI.

Thereby, we want to compare the 2 frameworks on factors such as: execution speed, flakiness, concurrency. The Cypress tests are currently not set up for concurrency. We’ll try looking into the feasibility of that and will document our insights.

Expected outcomes:

  • Set up a metric (Run tests 100 times in the CI), and then report on run time and flakiness rate.
  • Try to get Cypress to run in parallel on the CI
  • Give pros and cons of both frameworks

Skills preferred:
Basic JavaScript, CI

Experience Level:
Anyone is welcome, even devs that have never written an automated test before

Project Leads:
@WMDE-Fisch , @MareikeHeuerWMDE

Starting tasks:
to be created

Why are you proposing this project?
We migrated from Selenium to Cypress for the Mediawiki Cite extension. As other teams might consider switching, we want to compare the performance and provide a comparative assessment. At the end, we will have real numbers, as well as an assessment on concurrency difficulty, which would help Wikimedians make their choice.

What is the expected impact?

  • Helping others make an informed decision when choosing their framework
  • Report on if the switch to Cypress was beneficial despite concurrency limits

Event Timeline

Change #1281342 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Streamlining before steps, removing dead code

https://gerrit.wikimedia.org/r/1281342

Change #1281392 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Merge reuse tests

https://gerrit.wikimedia.org/r/1281392

Change #1281482 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Skip specs when dependencies are missing

https://gerrit.wikimedia.org/r/1281482

Change #1281342 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Streamlining before steps, removing dead code

https://gerrit.wikimedia.org/r/1281342

Change #1281392 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Merge reuse tests

https://gerrit.wikimedia.org/r/1281392

Change #1281492 had a related patch set uploaded (by Mareike Heuer; author: Phedenskog):

[mediawiki/extensions/Cite@master] browsertests: Try implement Cypress browser test in Selenium

https://gerrit.wikimedia.org/r/1281492

Change #1281508 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] [POC] Cypress: Try to run Cypress tests in parallel

https://gerrit.wikimedia.org/r/1281508

Change #1281543 had a related patch set uploaded (by Mareike Heuer; author: Mareike Heuer):

[mediawiki/extensions/Cite@master] Test Cypress test performance

https://gerrit.wikimedia.org/r/1281543

Change #1281615 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Use same cite tool definition in specs

https://gerrit.wikimedia.org/r/1281615

Change #1281765 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Merge template cases to spare setup time

https://gerrit.wikimedia.org/r/1281765

Change #1281766 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Introduce cy.session()

https://gerrit.wikimedia.org/r/1281766

Change #1281615 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Use same cite tool definition in specs

https://gerrit.wikimedia.org/r/1281615

Change #1281801 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Use API to login before editing in MediaWiki namespace

https://gerrit.wikimedia.org/r/1281801

Change #1281766 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Introduce cy.session()

https://gerrit.wikimedia.org/r/1281766

Change #1281921 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Cypress: Only setup pages when really needed

https://gerrit.wikimedia.org/r/1281921

Change #1281921 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Only setup pages when really needed

https://gerrit.wikimedia.org/r/1281921

Change #1281765 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Merge template cases to spare setup time

https://gerrit.wikimedia.org/r/1281765

Change #1281801 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Use API to login before editing in MediaWiki namespace

https://gerrit.wikimedia.org/r/1281801

Change #1281482 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Skip specs when dependencies are missing

https://gerrit.wikimedia.org/r/1281482

Change #1281508 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Cypress: Run Cypress tests in parallel

https://gerrit.wikimedia.org/r/1281508

All results of this can be found in the patches linked to that task. Most notably is the patch introducing cypress-parallel. :-)

Change #1281492 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] browsertests: Try implement Cypress browser test in Selenium

Reason:

cleanup

https://gerrit.wikimedia.org/r/1281492

Change #1281543 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] Test Cypress test performance

Reason:

cleanup

https://gerrit.wikimedia.org/r/1281543