Picture this: a control tower orchestrating dozens of airports simultaneously with flawless precision. Sounds impressive, right? That's exactly what KubeStellar does for Kubernetes clusters and it makes complex multi cluster management look effortless.
I spent the last three months as an IFOS Intern building the E2E testing framework for the KubeStellar UI.
Spoiler alert: it was harder than I expected, more fun than I imagined, and taught me way more than any tutorial ever could.
Let me walk you through what I learned, the stack I worked with, and why automated testing isn't just nice-to-have it's essential.
Quick Intro
Hey! I'm Arpit Srivastava, studying Information Science at DSCE, Bengaluru. I'm deep into cloud-native tech and Agentic AI these days. I'm into competitive programming as well, and I've won a couple of national hackathons along the way. I work primarily with Go and TypeScript, building with Kubernetes and DevOps tooling.
I've contributed to CNCF projects like KubeStellar and Meshery, built some drift detection systems, and I honestly just enjoy making complex backend systems work reliably. That's what led me here.
Find me on LinkedIn or GitHub.
So, What's KubeStellar btw?
KubeStellar is a CNCF Sandbox project focused on multi-cluster configuration management. Here's the deal: if you're managing 50 Kubernetes clusters (and trust me, some folks are), you don't want to SSH into each one to deploy your app.
KubeStellar lets you define your workload once, and it handles distribution to all the right clusters automatically. Pretty slick, right?
The Real Problem
The KubeStellar UI is basically the cockpit for this whole operation. It visualizes the complex relationships between clusters, workloads, and binding policies in realtime. But here's the catch a UI dealing with live cluster data is incredibly hard to test properly.
How do you make sure nothing breaks when you're dealing with:
- WebSockets streaming real-time status updates
- Complex forms for creating binding policies
- Dynamic loading of potentially thousands of resources
Manual testing? Not scalable. We needed automation that could catch bugs before users ever saw them.
Why This Was Tricky
The KubeStellar UI isn't your typical static website. We're talking about:
- Realtime WebSocket connections updating cluster states
- Forms with nested validation logic
- Dynamic resource loading that could easily race condition us into oblivion
Manual testing worked for a while, but as features piled up, it became clear we needed something better. Something that could simulate actual user behavior, catch regressions early, and run automatically on every PR.
The Team Behind This
Open source is never a solo gig. I was lucky to work with some incredible people:
Nupur Shivani (Team Lead): Nupur was the glue that held everything together. She didn't just review code she jumped in and wrote it with us. Her attention to detail and ability to keep us on track made hitting deadlines feel achievable, even during intense sprints.
Alok Danger: Alok was a fantastic teammate to collaborate with. Navigating complex UI flows is way easier when you've got someone solid working alongside you.
Shivam Kumar (Mentor): Shivam didn't just give me answers he taught me how to find them myself. That kind of mentorship is rare and incredibly valuable. His guidance genuinely accelerated my growth during this internship.
Enter Playwright
Playwright is an open-source end-to-end testing framework developed by Microsoft. Think of it as a browser automation tool on steroids. Unlike traditional testing frameworks, Playwright provides a unified API to automate Chromium, Firefox, and WebKit with a single codebase.
At its core, Playwright launches real browser instances and controls them programmatically. You can simulate user interactions like clicks, form submissions, navigation, and even complex scenarios like file uploads or drag-and-drop operations. But it goes far beyond simple automation.
Why Playwright Won
It's not just about simulating clicks. Here's what made Playwright the right choice:
Auto-waiting: Playwright automatically waits for elements to be ready before interacting with them (network idle, animations complete, etc.). This eliminated the flaky tests that haunted us with Selenium-style frameworks.
WebSocket Interception: This was huge. I could mock WebSocket connections to simulate cluster updates without needing a full 50 cluster environment during testing. Game changer.
Cross-Browser Testing: We now verify KubeStellar works correctly on Chromium, Firefox, and WebKit all in one test run.
What I Shipped
Over the internship, here's what I built:
- 30+ Pull Requests raised and merged
- End-to-End Coverage for critical user flows: auth, cluster management, and binding policy creation
- CI/CD Integration: These tests now run automatically on GitHub Actions, protecting the codebase from regressions
More Than Just Code
The technical work was rewarding, but honestly, the mentorship was what made this experience special.
Working with Andy Anderson, Shivam Kumar, Onkar Shelke, and Rishi Mondal taught me how real open-source collaboration works. Every code review was a lesson in writing cleaner, more maintainable code.
Special thanks again to Nupur Shivani. Your constant clarity, trust, and willingness to let me take ownership made all the difference. You showed me that being senior isn't just about technical chops, it's about enabling your team to succeed.
Wrapping Up
If you're working in DevOps or the cloud-native space, I'd seriously recommend checking out KubeStellar. It solves real problems that teams face when managing multiple clusters.
Want to chat about Playwright, multi-cluster Kubernetes, or how to get started with LFX internships? Hit me up I'm always happy to talk shop.
Oh, and if you want to hear more about my experience, I did a podcast about it.
Help Us Build Better Tools
KubeStellar is community-driven, which means your feedback actually matters. We're constantly trying to make multi-cluster management better, but we need input from folks using these tools in the real world.
If you've got 5 minutes, we'd love to hear your thoughts:
Your input shapes what we build next.




Top comments (0)