Skip to content

Expand CI to run static analysis and formatting checks in addition to tests #19

Description

@morcen

Summary

Expand CI so pull requests are validated with static analysis and formatting checks in addition to the current test suite.

Why

The package already defines local Composer scripts for:

  • composer test
  • composer analyse
  • composer format

But the current GitHub Actions workflow only runs Pest. That means PRs can still merge with PHPStan/Larastan issues or formatting drift even though those checks are already part of the local development workflow.

CI should reflect the quality bar the project expects locally.

Current Implementation Notes

Relevant files:

  • .github/workflows/tests.yml
  • composer.json

Current workflow behavior:

  • runs on pushes and pull requests to main
  • tests PHP 8.3 and 8.4
  • installs dependencies
  • runs vendor/bin/pest --ci

Current Composer scripts:

  • analyse: vendor/bin/phpstan analyse
  • test: vendor/bin/pest
  • format: vendor/bin/pint

Proposed Scope

Expand CI to include:

Static analysis

  • run the existing analysis command in CI
  • fail the workflow on PHPStan/Larastan errors

Formatting

  • run Pint in check mode rather than write mode
  • fail the workflow if formatting drift is present

Workflow structure

  • decide whether to keep one combined workflow or split checks into separate jobs
  • keep the workflow readable and reasonably fast
  • make sure the commands match the project's Composer scripts where practical

Acceptance Criteria

  • CI validates tests, static analysis, and formatting
  • pull requests fail when analysis or formatting checks fail
  • the workflow remains understandable and maintainable
  • CI behavior matches the project's documented local workflow

Nice To Have

  • use Composer script entry points in CI for consistency
  • surface job names clearly, for example tests, analysis, and format
  • consider dependency caching if CI time starts to grow

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions