feat: allow clip animation + ship <hyperframes-player> web component #1649
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: regression | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| changes: | |
| name: Detect changes | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| outputs: | |
| code: ${{ steps.filter.outputs.code }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| code: | |
| - "packages/core/**" | |
| - "packages/producer/**" | |
| - "packages/engine/**" | |
| - "Dockerfile*" | |
| regression-shards: | |
| needs: changes | |
| if: needs.changes.outputs.code == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - shard: fast | |
| args: "--sequential --exclude-tags slow" | |
| - shard: styles-a | |
| args: "style-1-prod style-2-prod style-3-prod" | |
| - shard: styles-b | |
| args: "style-4-prod style-5-prod style-6-prod" | |
| - shard: styles-c | |
| args: "style-7-prod style-8-prod style-9-prod" | |
| - shard: styles-d | |
| args: "style-10-prod style-11-prod style-12-prod" | |
| - shard: styles-e | |
| args: "style-13-prod style-15-prod style-16-prod" | |
| - shard: styles-f | |
| args: "style-17-prod style-18-prod" | |
| - shard: styles-g | |
| args: "overlay-montage-prod" | |
| steps: | |
| - name: Checkout (with LFS) | |
| uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - name: Validate LFS files | |
| run: | | |
| echo "Checking golden baseline MP4s are real files (not LFS pointers)..." | |
| for mp4 in packages/producer/tests/*/output/output.mp4; do | |
| if [ -f "$mp4" ]; then | |
| size=$(stat --format=%s "$mp4") | |
| if [ "$size" -lt 1000 ]; then | |
| echo "ERROR: $mp4 appears to be an LFS pointer ($size bytes)" | |
| exit 1 | |
| fi | |
| echo "OK: $mp4 ($size bytes)" | |
| fi | |
| done | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build test Docker image (cached) | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: Dockerfile.test | |
| load: true | |
| tags: hyperframes-producer:test | |
| cache-from: type=gha,scope=regression-test-image | |
| cache-to: type=gha,mode=max,scope=regression-test-image | |
| - name: "Run regression shard: ${{ matrix.shard }}" | |
| run: | | |
| echo "Shard: ${{ matrix.shard }}" | |
| echo "Args: ${{ matrix.args }}" | |
| docker run --rm \ | |
| --security-opt seccomp=unconfined \ | |
| --shm-size=4g \ | |
| -v ${{ github.workspace }}/packages/producer/tests:/app/packages/producer/tests \ | |
| hyperframes-producer:test \ | |
| ${{ matrix.args }} | |
| - name: Upload failure artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: regression-failures-${{ matrix.shard }} | |
| path: packages/producer/tests/*/failures/ | |
| if-no-files-found: ignore | |
| # Summary job — matches the required check name in branch protection | |
| regression: | |
| runs-on: ubuntu-latest | |
| needs: [changes, regression-shards] | |
| if: always() | |
| steps: | |
| - name: Check results | |
| run: | | |
| if [ "${{ needs.changes.outputs.code }}" != "true" ]; then | |
| echo "No code changes — skipping regression (auto-pass)" | |
| exit 0 | |
| fi | |
| if [ "${{ needs.regression-shards.result }}" != "success" ]; then | |
| echo "One or more regression shards failed" | |
| exit 1 | |
| fi |