Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GSOC IDEA] Migrate Jitsi Meet Electron to TypeScript and Add Comprehensive Testing #43

Open
naman9271 opened this issue Mar 3, 2025 · 8 comments

Comments

@naman9271
Copy link

naman9271 commented Mar 3, 2025

Summary

This proposal aims to migrate the Jitsi Meet Electron repository from JavaScript to TypeScript, improving code maintainability, scalability, and developer experience. Additionally, we will introduce unit tests and end-to-end (E2E) tests to enhance software reliability.

Motivation

  • Type Safety: TypeScript will prevent many runtime errors by enforcing strong typing.
  • Better Developer Experience: Improved autocompletion, better IDE support, and easier refactoring.
  • Maintainability: A strongly-typed codebase makes contributions and long-term maintenance easier.
  • Testing Coverage: Adding unit tests and E2E tests will increase stability and ensure a more reliable application.

Project Scope

  1. Migrate Codebase to TypeScript

    • Convert all .js and .jsx files to .ts and .tsx.
    • Define proper types for existing components and modules.
    • Introduce a tsconfig.json with strict type-checking.
  2. Unit Testing

    • Use Jest and React Testing Library for testing React components.
    • Write unit tests for utility functions and core logic.
    • Ensure at least 80%+ code coverage.
  3. End-to-End (E2E) Testing

    • Use Playwright for automated E2E testing.
    • Cover major user workflows, including:
      • Joining a meeting
      • Audio/video functionality
      • Screen sharing
    • Integrate E2E tests into the CI/CD pipeline.
  4. CI/CD Integration

    • Configure GitHub Actions for running tests automatically on PRs.
    • Lint and type-check during the build process.

Expected Outcomes

✅ Full TypeScript migration with no breaking changes.
✅ Increased maintainability and developer productivity.
✅ High test coverage, improving software stability.
✅ Automated tests integrated into the CI/CD pipeline.

Estimated Time : 350 Hours

@naman9271
Copy link
Author

naman9271 commented Mar 3, 2025

@bgrozev @saghul please review this GSOC2025 PROJECT IDEA

@naman9271 naman9271 changed the title Migrate Jitsi Meet Electron to TypeScript and Add Comprehensive Testing [GSOC IDEA] Migrate Jitsi Meet Electron to TypeScript and Add Comprehensive Testing Mar 3, 2025
@saghul
Copy link
Member

saghul commented Mar 3, 2025

👍

1 similar comment
@saghul
Copy link
Member

saghul commented Mar 3, 2025

👍

@naman9271
Copy link
Author

naman9271 commented Mar 3, 2025

Thank you @saghul for acknowledging this idea! I would love to get your guidance on how best to approach this migration and testing implementation. Are there any key considerations or existing plans I should be aware of before getting started? Although I have setup typescript in jitsi-meet-electron repo

@saghul
Copy link
Member

saghul commented Mar 4, 2025

An important consideration is that this won't be a migration from JS to TS but from JS using Flow to TS.

The repo currently uses AtlasKit with Flow so I'd assume a good way forward would be to upgrade the AtlasKit dependencies and move to TS.

All the non-ui code could be migrated beforehand perhaps, to make things easier.

It's not a particularly UI heavy project though.

@naman9271
Copy link
Author

@saghul Thank You for clarification! i now understand that the migration is from JavaScript with Flow to TypeScript. Since the repo currently uses AtlasKit with Flow, I think a good plan would be:

  • Upgrading AtlasKit dependencies – i will check if TypeScript types exist for the components and move to TS.

  • Migrating non-UI code first – Converting Flow types to TypeScript for logic-based files should make things smoother before handling the UI.

  • Refactoring UI components gradually – Since the project isn’t very UI-heavy, i can update the UI elements step by step while keeping everything working properly.

  • Ensuring type safety & testing - i will enable strict TypeScript settings and use Jest for unit tests (80%+ coverage), Playwright for E2E tests (covering major workflows), and GitHub Actions to automate testing and type-checking on PRs.

Would love to hear your thoughts on this plan. Looking forward to your guidance!

@damencho
Copy link
Member

damencho commented Mar 4, 2025

End-to-End (E2E) Testing

  • Use Playwright for automated E2E testing.

  • Cover major user workflows, including:

    • Joining a meeting
    • Audio/video functionality
    • Screen sharing
  • Integrate E2E tests into the CI/CD pipeline.

This will be interesting, but we have switched to using webdriverio in jitsi-meet and I prefer to stick to that for now.

@naman9271
Copy link
Author

@damencho thanks for letting me know i will stick to webdriverio for e2e testing in jisti-meet-electron. And please let me know any other changes and things should i consider in this project

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants