Skip to content

Modern CI Pipeline: Playwright + GitHub Actions (replaces TestCafe/Sauce Labs) #2475

Description

@samuelfa

Summary

We've built a complete modern CI pipeline for Sortable in our fork (samuelfa/Sortable) that replaces the legacy TestCafe + Sauce Labs setup with Playwright + GitHub Actions.

What's Working in samuelfa/Sortable

Feature Status
Cross-browser testing ✅ Chromium, Firefox, WebKit, Mobile Chrome/Safari
Code coverage ✅ ~59% statements across 3 browsers (babel-plugin-istanbul)
Linting ✅ ESLint + Prettier
Security audit ✅ npm audit (0 vulnerabilities)
Unused code detection ✅ Knip
Dependency updates ✅ Dependabot + weekly check
Bundle size tracking ✅ Automated PR comments
Static analysis ✅ CodeQL SAST
Code coverage CI ✅ Weekly scheduled run with 80% thresholds

Key Improvements

  1. Playwright instead of TestCafe - Native cross-browser support, faster, better debugging
  2. GitHub Actions instead of Sauce Labs - Free for public repos, no external dependency
  3. Real code coverage - Fixed Istanbul instrumentation to work in browser (babel-plugin-istanbul with coverageGlobalScope: 'window')
  4. 108 tests passing on 4 browser projects
  5. Zero external dependencies - Everything runs on GitHub runners

PRs in samuelfa/Sortable

Proposal

We'd like to contribute this modern CI pipeline upstream. The changes are:

  1. Phase 1: Docs cleanup - Remove TestCafe/Sauce Labs references, update badges
  2. Phase 2: Toolchain migration - Actual CI workflow files and configuration

Would the maintainers be open to reviewing these changes? We can prepare clean PRs for each phase.

Demo

Run locally:

npm run test        # 108 tests on 4 browsers
npm run coverage    # ~59% cross-browser coverage
npm run lint        # passes
npm audit           # 0 vulnerabilities

See: https://github.com/samuelfa/Sortable/tree/ci/full-suite-coverage

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions