Skip to content

guidewire-oss/fern-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fern Platform

Go Version License Go Report Card codecov CI Status

A unified test intelligence platform that transforms fragmented test data into actionable insights.

What is Fern Platform?

Fern Platform aggregates test results from any CI/CD pipeline and testing framework (Jest, pytest, JUnit, etc.) into a centralized dashboard. It automatically detects flaky tests, tracks performance trends, and provides the visibility engineering teams need to maintain healthy test suites.

Think of it as a specialized analytics platform for your tests - like Datadog or Grafana, but purpose-built for test intelligence. We're on a mission to make test failures predictable and preventable through AI-powered insights.

Fern Platform Dashboard

Key Features

  • Universal Test Aggregation - REST API accepts test results from any framework or CI/CD system
  • Flaky Test Detection - Automatically identifies tests that pass/fail intermittently
  • Performance Monitoring - Track test execution times and identify slow tests
  • Interactive Visualizations - Treemap view shows test suite health at a glance
  • Team-Based Access Control - OAuth/SSO with role-based permissions
  • Rich Querying - GraphQL API for complex test data analysis

Quick Start

Requirements

Choose based on your installation method:

For Docker:

  • Docker Engine 20.10+
  • PostgreSQL 14+ (external or containerized)
  • Redis 6+ (external or containerized)

For Kubernetes deployment:

  • Docker with buildx
  • k3d (lightweight Kubernetes)
  • kubectl
  • Go 1.21+ (used by Makefile for architecture detection)
  • Make
  • 8GB RAM minimum

Installation

Choose your preferred installation method:

Option 1: Docker (Coming Soon)

Docker images will be available after the v0.1.0 release:

  • GitHub Container Registry: ghcr.io/guidewire-oss/fern-platform:latest
  • Docker Hub: docker.io/guidewireoss/fern-platform:latest
# Future usage (not yet available):
docker run -d \
  --name fern-platform \
  -p 8080:8080 \
  -e DB_HOST=host.docker.internal \
  -e DB_USER=postgres \
  -e DB_PASSWORD=yourpassword \
  -e DB_NAME=fern_platform \
  -e REDIS_HOST=host.docker.internal \
  ghcr.io/guidewire-oss/fern-platform:latest

For now, please use Option 2 (Kubernetes deployment) or build from source.

Option 2: Kubernetes with OAuth (Full Features)

# Clone the repository
git clone https://github.com/guidewire-oss/fern-platform
cd fern-platform

# Add required hosts entries (for OAuth to work)
echo "127.0.0.1 fern-platform.local" | sudo tee -a /etc/hosts
echo "127.0.0.1 keycloak" | sudo tee -a /etc/hosts

# Deploy everything (takes ~15 minutes)
make deploy-all

Access the platform at http://fern-platform.local:8080

Default credentials: [email protected] / test123

Basic Usage

  1. Manager creates a project in the Fern Platform UI
  2. Developers install a client library for their test framework:

Official Client Libraries

Build Your Own Client

Missing your framework? Create your own client library! See our client development guide to:

  • Build clients for Python, Ruby, PHP, .NET, or any other language
  • Integrate with pytest, RSpec, PHPUnit, NUnit, or any test framework
  • Contribute back to the community
  1. Configure with your project ID:
export FERN_PROJECT_ID=my-project
export FERN_URL=http://fern-platform.local:8080

Test results are automatically sent to Fern Platform!

View results in the dashboard or query via GraphQL:

query {
  testRuns(projectId: "my-project", first: 10) {
    runs {
      id
      status
      duration
      gitCommit
    }
  }
}

Documentation

Quick Links by Role

For UsersUI Features GuideWorkflowsUse Cases

For DevelopersIntegration GuideAPI ReferenceGraphQL

For DevOpsInstallationConfigurationTroubleshooting

For ContributorsArchitectureContributingRFCs

All Documentation

See complete documentation index or browse docs/ directly.

Use Cases

Fern Platform helps engineering teams:

  • Identify flaky tests that waste CI time and erode confidence
  • Track test performance to find and fix slow tests
  • Monitor test health across multiple projects and teams
  • Debug failures with historical context and error patterns

See our use case guides for detailed examples.

Integration Examples

JavaScript/Jest

// jest.config.js
module.exports = {
  reporters: [
    'default',
    ['@guidewire/fern-jest-client', {
      url: process.env.FERN_URL,
      projectId: process.env.FERN_PROJECT_ID
    }]
  ]
};

Java/JUnit with Gradle

plugins {
  id 'com.guidewire.fern' version '1.0.0'
}

fern {
  url = System.getenv('FERN_URL')
  projectId = System.getenv('FERN_PROJECT_ID')
}

Go/Ginkgo

import "github.com/guidewire-oss/fern-ginkgo-client/reporter"

var _ = ginkgo.BeforeSuite(func() {
  ginkgo.RunSpecs(t, "My Suite", reporter.NewFernReporter())
})

See integration guide for more examples.

Architecture

Fern Platform uses domain-driven design with a hexagonal architecture:

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Web UI        │     │   REST API      │     │   GraphQL API   │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         └──────────────────────┬┴──────────────────────────┘
                                │
                    ┌───────────┴────────────┐
                    │   Business Domains     │
                    │  ┌─────┐ ┌─────────┐  │
                    │  │Tests│ │Analytics│  │
                    │  └─────┘ └─────────┘  │
                    └───────────┬────────────┘
                                │
                    ┌───────────┴────────────┐
                    │   Infrastructure       │
                    │  PostgreSQL + Redis    │
                    └────────────────────────┘

The Vision: Where We're Heading

While Fern Platform already provides powerful test analytics, we're building towards something bigger: an AI-powered test intelligence system that predicts failures before they happen.

🚀 Coming Soon

AI-Powered Intelligence (In Development)

  • Automatic root cause analysis for failures
  • Predictive test failure detection
  • Smart test selection for faster CI/CD
  • Natural language queries: "Why did the auth tests fail last week?"

Enhanced Integrations (Q1 2025)

  • Native plugins for Jest, pytest, Go, JUnit
  • GitHub Actions & GitLab CI apps
  • Slack/Teams notifications with insights
  • JIRA auto-ticket creation for failures

Real-Time Features (Q2 2025)

  • Live test execution monitoring
  • WebSocket subscriptions for dashboards
  • Streaming logs from CI/CD pipelines

See our RFCs for detailed technical proposals and join the discussion.

Project Status

Fern Platform is under active development with core features stable and used in production.

Ready Now: Test aggregation • Flaky detection • Performance tracking • OAuth • REST/GraphQL APIs
In Progress: AI insights • Webhook integrations • Enhanced visualizations
Exploring: ML-based test optimization • Distributed tracing for tests

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Areas where we need help:

  • Client libraries for new test frameworks (pytest, RSpec, PHPUnit, etc.)
  • Test framework integrations
  • UI/UX improvements
  • Documentation
  • Bug fixes

Creating Client Libraries

Building a client for your favorite test framework? Check our client development guide and join our growing ecosystem!

Community

License

Apache License 2.0 - see LICENSE for details.


About

Unified test intelligence platform with multi-format ingestion, real-time analytics, and AI-powered insights via LLM integration

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 13