Fileglancer

Fileglancer is a web application for scientific researchers at the Howard Hughes Medical Institute's Janelia Research Campus to browse, share, and visualize large imaging datasets on network file systems. I was responsible for implementing the frontend using React, React Router, and TypeScript, including building frontend unit tests with Vitest and React Testing Library and integration tests using Vitest and Playwright.

Screenshot of Fileglancer's file browser showing the navigation sidebar on the left, a directory listing with files and folders and the Zarr image preview panel in the center, and properties panel displaying file metadata on the right.

Purpose and Goal

Fileglancer is a web application that connects to internal file systems at Janelia Research Campus, designed to reduce friction and activation energy when researchers need to share large imaging datasets with colleagues. Rather than requiring data migration, Fileglancer allows users to keep their data on existing network file systems while providing modern web-based tools for browsing, sharing, and visualization.

My role on this project was implementing all features on the frontend using React, React Router, and TypeScript. As part of this, I was responsible for adding frontend unit testing using Vitest and React Testing Library and end-to-end test suite using Vitest and Playwright.

Spotlight: Migrating from mock APIs to real file system testing

The original Playwright tests used mock API endpoints to simulate file operations, but this approach couldn't catch bugs in the actual backend file system logic. I refactored the test infrastructure to use temporary directories and actual API calls, requiring several technical changes:

Coordinating test environment setup across Playwright configuration

The challenge was that test files needed to exist before the Fileglancer server started, but Playwright fixtures run after the server is already running. I solved this by moving file creation into playwright.config.js, where I create the temporary directories, populate them with test data including minimal Zarr and OME-Zarr data structures, and then pass their paths to the server via the FGC_FILE_SHARE_MOUNTS environment variable. This ensures the server sees the test files when it initializes, enabling true end-to-end testing of file browsing, creation, deletion, and data link operations.

Custom Playwright fixtures for test isolation and reusability

With real file system testing, I needed a way to ensure each test started in a predictable state. I created a custom Playwright fixture called fileglancerPage that handles setup (mock API routes, login, navigation to test directory) and teardown (cleanup of API mocks) automatically. Tests import this fixture and receive a fully-configured page object, eliminating repetitive setup code. The fixture uses Playwright's test.extend() API to wrap the standard page fixture, demonstrating advanced understanding of Playwright's architecture.

Current status

Fileglancer is published on PyPI and deployed in production at Janelia Research Campus, serving dozens of researchers who use it daily to share and visualize large imaging datasets. The frontend test suites I built run in CI/CD via GitHub Actions and have caught multiple regressions before they reached production.

View Project

Contact

If you think I'm a good fit for an open position or you just want to say hello, send a message! I look forward to hearing from you.