🎯 Signoff

A comprehensive Playwright-based testing framework for web page load performance, visual regression, and link validation

What is Signoff?

Signoff is a robust testing framework built with Playwright that ensures your web pages load correctly, perform well, and maintain quality across deployments. It's designed for continuous integration and supports both production and staging environments.

Fast Testing
📸
Visual Regression
🔗
Link Validation
🚀
CI/CD Ready

Key Capabilities

  • Page load performance testing with network idle detection
  • Automatic screenshot generation for visual regression testing
  • Comprehensive link validation (finds 404s and broken links)
  • Support for both production and staging environments
  • GitHub Actions integration for automated testing
  • Configurable test workers and request delays
  • Known issues management via YAML configuration
View on GitHub Get Started

Features

🎯 Page Load Testing

Tests page loading with network idle detection, ensuring all resources are fully loaded before validation.

📷 Screenshot Capture

Automatically captures both standard and full-page screenshots for visual regression testing.

🔍 Link Validation

Crawls all links on each page and validates them, reporting 404s and connection issues.

🌍 Multi-Environment

Supports testing across production and staging environments with automatic URL transformation.

⚙️ Configurable Testing

Flexible configuration for test workers, request delays, and URL sources (files or GitHub Gists).

🤖 CI/CD Integration

Built-in GitHub Actions workflows with support for self-hosted runners and manual triggers.

Advanced Features

  • Dynamic Content Loading: Scrolls through pages to trigger lazy-loading content
  • Custom User Agents: Configurable user agent strings for testing
  • Known Issues Management: YAML-based exclusion of known broken links
  • Parallel Execution: Configurable worker threads for faster testing
  • Artifact Collection: Automatic collection of screenshots and test results

Getting Started

Installation

npm install

Basic Usage

1. Configure your test URLs in urls.yml:

- https://example.com - https://example.com/about - https://example.com/contact

2. Run the tests locally:

npm test

3. Run with custom workers:

npx playwright test --workers 3

Configuration Options

Environment Variables

  • GIST_URLS - GitHub Gist ID or direct URL
  • ENVIRONMENT - 'prod' or 'stage'
  • REQUEST_DELAY - Delay between requests (ms)
  • USER_AGENT_SUFFIX - Custom user agent suffix

Files

  • urls.yml - List of URLs to test
  • urls_known_issues.yml - Known broken links to ignore
  • screenshots/ - Generated screenshots directory

Integration Testing

For visual component testing:

npm run int

Watch mode for development:

npm run int:file:watch

GitHub Actions Integration

Signoff includes a comprehensive GitHub Actions workflow for automated testing. The workflow supports both GitHub-hosted and self-hosted runners.

Workflow Features

Manual Triggers

Trigger tests manually with custom parameters including test branch, environment, worker count, and request delays.

Environment Support

Automatic routing to GitHub-hosted runners for production and self-hosted runners for staging environments.

Browser Installation

Automatic Playwright browser installation with dependency management and caching.

Artifact Collection

Automatic collection and upload of screenshots and test results for analysis.

Workflow Parameters

testCodeBranch: main # Test code branch environment: prod # prod or stage workers: 3 # Number of test workers delay: 0 # Delay between requests (ms) gist_urls: abc123 # Gist ID for URL list hostsHack: "1.2.3.4 example.com" # Optional hosts file override

Running the Workflow

  1. Go to your repository's Actions tab
  2. Select "Test Page Load" workflow
  3. Click "Run workflow"
  4. Configure parameters as needed
  5. View results and download artifacts
View Actions

Latest Test Results

This section shows the results of your daily automated tests. Tests run every day at 6:00 AM UTC.

⏳ Loading test results...

📊 How to interpret results:

  • ✅ Success: All pages loaded correctly, no broken links found
  • ❌ Failure: Issues detected - click to view details
  • ⏳ In Progress: Test is currently running

Note: To view this data, the repository needs to be public or you need to configure GitHub API access. Results are fetched from the GitHub Actions API in real-time.