GSoc 2026 - Interested to Contribute on Switch to Playwright tests for integration testing

Hi everyone,

I’m interested in the GSoC 2026 project “Switch to Playwright tests for integration testing” and I’m currently setting up Django locally to understand the existing Selenium-based integration tests.

My background is mainly Python and web development, and I’m especially interested in contributing around testing infrastructure and developer experience.

Before drafting a proposal, I wanted to ask a few focused questions so I can scope the work realistically:

  1. Is the expected GSoC scope mainly:

    • introducing Playwright infrastructure + CI support, and

    • migrating a meaningful subset of tests,
      rather than fully removing Selenium within 175 hours?

  2. Are there particular test modules or test classes that would be the best first migration targets (for example around admin integration tests)?

  3. Is the preferred direction to create a Playwright-based counterpart/replacement for AdminSeleniumTestCase, or would maintainers prefer a more generic abstraction layer first?

  4. Would a small proof-of-concept PR (for example adding a minimal Playwright test utility or porting one isolated test module) be considered a useful first contribution before the proposal period?

I’m currently studying the test suite and would appreciate any pointers to the most relevant files or prior discussions.

Thanks!

1 Like

Playwright works best when used with Pytest. Since the Django test suite is based on Python’s unit test framework, switching to Playwright would be a significant undertaking. I also doubt that the Django community would accept a migration to PyTest.

Nevertheless, I strongly recommend using Playwright with Pytest for all Django based projects.

1 Like

2 posts were split to a new topic: GSoC - Interesting to Contribute on Switch to Playwright tests

Hi everyone,

I am Manas Madeshiya from India, a GSoC 2026
applicant interested in this project.

My Django contribution:
→ PR #20883 (ticket #36979): Fixed
GenericInlineModelAdmin.get_formset()
to use get_exclude() hook
All 33 CI checks passing, under review.
Link: Fixed #36979 -- Made GenericInlineModelAdmin.get_formset() use get_exclude(). by MANAS225 · Pull Request #20883 · django/django · GitHub

I have studied the existing test suite:
→ 142 Selenium import statements
→ 16 test classes across 11 files to migrate
→ Largest: admin_widgets (7 classes)

GitHub: MANAS225 (MANAS MADESHIYA) · GitHub

Looking forward to working on this!