JSPM

playwright-testrail-sync

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 22
  • Score
    100M100P100Q73133F
  • License MIT

TestRail Integration for Playwright with comprehensive logging and error handling

Package Exports

  • playwright-testrail-sync
  • playwright-testrail-sync/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (playwright-testrail-sync) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

playwright-testrail-sync

TypeScript integration to sync Playwright test results with TestRail, featuring automatic screenshot and ideo uploads, flexible configuration, comprehensive error handling, and clean logs.

Installation

# Using npm
npm install playwright-testrail-sync

# Using yarn
yarn add playwright-testrail-sync

Prerequisites

Before getting started, ensure you have the following:

🔑 TestRail Access

  • Active TestRail account with API access
  • TestRail project and suite IDs
  • API key generated from TestRail settings

⚙️ Environment Setup

Configure these environment variables in your system or .env file:

Variable Required Description Example
TESTRAIL_HOST Your TestRail instance URL https://yourcompany.testrail.io
TESTRAIL_USERNAME TestRail email address your-email@company.com
TESTRAIL_PASSWORD TestRail API key abc123def456
TESTRAIL_PROJECT_ID TestRail project ID 1
TESTRAIL_SUITE_ID TestRail suite ID 1
TESTRAIL_RUN_NAME Test run name template "Playwright Test Run"
TESTRAIL_RUN_ID Use existing run (optional) 12345
TESTRAIL_VERBOSE_LOGGING Enable debug logging true
TESTRAIL_SCREENSHOT_ON_FAILURE Auto-screenshot on test failure true
TESTRAIL_UPLOAD_VIDEOS Upload test videos to TestRail false

💡 Advanced Configuration: For more detailed settings like logging levels, attachment settings, and validation modes, use the Programmatic Configuration in your playwright.config.ts file.

📋 Getting Your TestRail IDs

  1. Project ID: Found in your TestRail URL: /index.php?/projects/overview/1 → ID is 1
  2. Suite ID: Navigate to your project → Test Suites → Click on suite → URL shows the ID
  3. API Key: Go to TestRail → My Settings → API Keys → Generate new key

Quick Start

1. Configure Playwright

Add the TestRail integration to your playwright.config.ts:

import { defineConfig } from '@playwright/test'

export default defineConfig({
  reporter: [
    ['html'],
    ['playwright-testrail-sync']
  ],
  // ... your other config
})

2. Add Test Case IDs

Include TestRail case IDs in your test titles using the C12345 format:

// Single case ID
test('C12345: User login with valid credentials', async ({ page }) => {
  // Your test code
})

// Multiple case IDs
test('C12345 C12346 C12347: Complex user workflow', async ({ page }) => {
  // Your test code
})

3. Run Your Tests

Execute your tests and watch the magic happen:

# Using npm
npx playwright test

# Using yarn
yarn playwright test

Features

🚀 Automatic Test Run Management

  • Creates new TestRail runs automatically
  • Links test results to existing runs
  • Handles run naming with timestamps

📊 Smart Test Case Matching

  • Extracts case IDs from test titles (C12345 format)
  • Supports multiple case IDs per test
  • Validates case existence before upload

📸 Rich Media Support

  • Automatic screenshot capture on failures
  • Video recording integration
  • Log file attachments
  • Custom file uploads

🔍 Advanced Logging

  • Clean, structured log output
  • Verbose mode for debugging
  • Error tracking and reporting
  • Performance metrics

⚙️ Flexible Configuration

  • Environment variable configuration
  • Programmatic options
  • Custom run naming
  • Attachment filtering

Configuration Options

Programmatic Configuration

// playwright.config.ts
export default defineConfig({
  reporter: [
    ['html'],
    ['playwright-testrail-sync', {
      // TestRail connection settings
      testRail: {
        host: 'https://your-instance.testrail.io',
        username: 'your-email@company.com',
        password: 'your-api-key',
        projectId: 1,
        suiteId: 1,
        testRunName: 'My Test Run', // Optional, otherwise uses a default name: Test Run - Date/Time stamp
        runId: 12345, // Optional: use existing run
        assignedToId: 1, // Optional: assign to user
        milestoneId: 1, // Optional: associate with milestone
        refs: 'v1.2.3', // Optional: test run references
      },
      
      // Logging configuration
      logging: {
        level: 'info', // debug, info, warn, error
        verbose: true,
      },
      
      // Attachment settings
      attachments: {
        enabled: true,
        maxSize: 10, // MB
        screenshotOnFailure: true,
        uploadVideos: true,
        allowedTypes: ['png', 'jpg', 'mp4', 'webm']
      },
      
      
      // Validation settings
      validation: {
        strictMode: true,
        validateCaseIds: true,
        validateRunId: true
      }
    }]
  ]
})

🔄 Configuration Priority

Environment variables always take precedence over configuration file settings:

# Environment variables override config file
export TESTRAIL_PASSWORD="different-password"
export TESTRAIL_VERBOSE_LOGGING="true"

This allows you to:

  • Override secrets without changing code
  • Use different settings per environment
  • Keep sensitive data in environment variables

Test Case ID Format

The integration recognizes TestRail case IDs in test titles using the C prefix:

// ✅ Valid formats
test('C12345: Test description', () => {})
test('C12345 C12346: Multiple cases', () => {})
test('Login C12345 should work', () => {})
test('C12345-C12346-C12347: Complex test', () => {})

// ❌ Invalid formats
test('12345: Missing C prefix', () => {})
test('TC12345: Wrong prefix', () => {})

Output Examples

Successful Test Run

[Playwright-TestRail-Sync] info: Test execution started 
[Playwright-TestRail-Sync] info: Creating new TestRail run... 
[Playwright-TestRail-Sync] info: Created new TestRail run: 12345 
[Playwright-TestRail-Sync] info: Test passed: C12345 should login with valid credentials 
[Playwright-TestRail-Sync] info: Test passed: C12346 should display user dashboard
[Playwright-TestRail-Sync] info: Test passed: C12347 should logout successfully  
[Playwright-TestRail-Sync] info: TestRail sync completed 
[Playwright-TestRail-Sync] info: testRailUrl: https://your-instance.testrail.io/index.php?/runs/view/12345 

Error Handling

The integration provides comprehensive error handling:

  • Invalid TestRail credentials → Clear error messages with setup instructions
  • Missing test case IDs → Warnings for tests without case IDs
  • Network failures → Clear error messages with actionable guidance
  • Invalid case IDs → Validation before upload attempts
  • Attachment failures → Graceful degradation without stopping tests

Troubleshooting

Common Issues

Issue: Configuration validation failed: TESTRAIL_HOST is required Solution: Ensure all required environment variables are set

Issue: TestRail case not found: C12345 Solution: Verify the case ID exists in your TestRail project

Issue: Failed to upload results: Invalid status Solution: Check that your TestRail instance supports the status being used

Debug Mode

Enable verbose logging to troubleshoot issues:

TESTRAIL_VERBOSE_LOGGING=true npx playwright test

License

This project is licensed under the MIT License - see the LICENSE file for details.