Skip to content
Pradip Subedi
All work

ownCloud Infinite Scale

Kubernetes-based CI and a fully parallel Playwright suite for an open-source file-sync platform, with API tests across its Go backend.

Role
Software Developer
Company
JankariTech
Period
Apr 2024 – now

ownCloud Infinite Scale is an open-source file sync and collaboration platform with a Go backend and a TypeScript web client. At JankariTech I wrote and maintained its acceptance and end-to-end tests and the CI that runs them. 144 of my pull requests were merged across the two repositories.

Tests that run like production

I set up Kubernetes (K3s) test environments in Drone CI for more than ten API acceptance suites (Spaces, Graph users, SharingNG, Core API, WOPI, collaboration, previews), replacing Docker, so the tests run on infrastructure that matches how the product is deployed. I wrote the docs for running the suites on Kubernetes.

A fully parallel Playwright suite

The web E2E suite shared state by threading a world object through about 90 TypeScript files, so tests could not run in parallel. I replaced it with a module-level context store and gave each worker its own test data, and the suite now runs fully in parallel with no name collisions.

I also rewrote the Cucumber feature suites in native Playwright, standardised step definitions, fixed flaky tests and merged accessibility checks into one shared assertion.

Illustration, not measured timings: twelve tests on one runner, then the same tests spread over four workers that each have their own context and test data.
Before: one shared world objectqueued
worker 1
After: isolated context per workerqueued
worker 1
worker 2
worker 3
worker 4

Protocols and edge cases

I added acceptance tests for LDAP, OIDC transient failures, WOPI lock modes, TUS uploads, federation, notifications, replay and idempotency, and CLI commands. I fixed a production bug in Go where text-file previews failed on libvips builds without ImageMagick.

Before features shipped I tested them by hand too: password-protected folders alone produced about twelve bug reports.

Releases and documentation

I kept oCIS versions in step across master and the 5.0, 7.0, 7.1 and 11.0 stable branches, upgraded Go and Playwright, and removed SonarCloud from nightly runs to cut CI cost. I wrote the project's end-to-end testing guide.

Next case studyOpenCloud Desktop