Skip to content

Implement E2E UI tests for the website critical flows #210

@ankitkumar748846

Description

@ankitkumar748846

@aaronbrethorst To implement E2E testing for the website, we can approach this by selecting a suitable testing framework that best aligns with the project’s tech stack and requirements.

Choosing a Testing Framework

For E2E testing, we have several options:

Cypress: Easy to set up and provides great debugging tools but runs only in a browser environment, limiting backend interaction and often leading to flaky tests.

Selenium: A powerful cross-browser testing tool but requires more setup and is slower compared to modern alternatives.

Jest: Primarily a unit testing framework, not ideal for full-fledged E2E testing.

Playwright (Recommended): Supports multiple browsers and languages, offers great debugging tools, handles complex user interactions, runs efficiently in headless mode, and allows parallel execution.

Why Playwright?

Playwright is well-suited for this project because:

  1. It supports Chromium, Firefox, and WebKit, ensuring cross-browser compatibility.
  2. It allows testing of multiple user interactions, including authentication, navigation, and form handling.
  3. It integrates seamlessly with CI/CD pipelines using GitHub Actions.
  4. Parallel execution in pipelines optimizes time and resource usage.
  5. It is fully open-source, unlike Cypress, which requires a paid plan for cloud dashboard testing. Playwright allows testing in all environments without restrictions.
  6. It handles flaky tests better than any other framework.
  7. The Codegen feature in Playwright makes test writing more efficient by automatically generating scripts.

@aaronbrethorst @Ahmedhossamdev Would love to hear your feedback on whether this approach aligns with the project’s vision. Am I heading in the right direction? If this works for you, I will proceed with submitting a formal proposal and PR also.
Looking forward to your response!
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions