Software Testing Artifacts: Store, Share & Analyze Test Results

Software testing artifacts are the outputs generated during test execution - reports, logs, screenshots, coverage data, and more. These artifacts are essential for debugging failures, meeting compliance requirements, and understanding the health of your test suite over time.

Playwright HTML Test Report Example

What Are Software Testing Artifacts?

Test artifacts in software testing include any file or data produced during test execution:

  • Test Reports - HTML, JSON, or XML summaries of test results (Playwright, Jest, Vitest, pytest, JUnit)
  • Screenshots & Videos - Visual evidence of test failures, especially for E2E tests
  • Log Files - Console output, stack traces, and debugging information
  • Coverage Reports - Code coverage data showing which lines were tested
  • Performance Metrics - Timing data, memory usage, and resource consumption

These artifacts are crucial for debugging, but they’re often difficult to access, share, and retain.

The CI Artifact Expiration Problem

Most CI/CD platforms (GitHub Actions, GitLab CI, CircleCI) automatically delete test artifacts after a retention period - typically 30-90 days. This creates real problems:

  • Debugging old failures - When a bug resurfaces, the original test artifacts are gone
  • Compliance audits - Regulated industries need to retain test evidence for years, not months
  • Onboarding engineers - New team members can’t see historical context for test behavior
  • Flaky test analysis - Understanding intermittent failures requires data across many runs

Even worse, accessing artifacts while they exist is painful. You have to navigate to the CI provider, find the right workflow run, download a zip file, and extract it locally.

How Gaffer Solves Test Artifact Management

Gaffer provides permanent, searchable storage for your test artifacts with instant team access:

Automatic Upload from CI

Add one step to your CI pipeline and Gaffer captures your test artifacts automatically:

- name: Upload to Gaffer
  uses: gaffer-sh/gaffer-uploader@v2
  with:
    api-key: ${{ secrets.GAFFER_API_KEY }}
    report-path: ./test-results

Instant Team Sharing

Every test run gets a permanent URL. Share it in Slack, add it to a bug ticket, or bookmark it for later. No downloads, no zip files, no expired links.

Slack Notifications

Get notified in Slack when tests fail, with a direct link to the full report. Filter notifications by branch so you only hear about failures that matter.

Historical Analytics

Track test health over time with pass rate trends, flaky test detection, and AI-powered insights into failure patterns.

Supported Test Frameworks

Gaffer works with the test artifacts you already generate:

FrameworkReport Types
PlaywrightHTML reports, traces, screenshots
JestJSON output, jest-html-reporter
VitestHTML reports, JSON output
pytestpytest-html, JUnit XML
Any frameworkJUnit XML, CTRF JSON

Test Artifacts Best Practices

  1. Generate structured reports - HTML or JSON reports are more useful than plain text logs
  2. Include screenshots on failure - Visual evidence makes debugging faster
  3. Store artifacts permanently - Don’t rely on CI retention policies
  4. Make artifacts accessible - If your team can’t find artifacts easily, they won’t use them
  5. Track trends over time - Individual test runs matter less than patterns across runs

Get Started

Gaffer’s free tier includes 500 MB of artifact storage with 7-day retention. Paid plans offer extended retention (with unlimited option) and up to 50 GB of storage.