Generate small reusable component partitions with explicit provider dependencies, GitHub-hosted concurrency, fail-closed evidence, and exact mobile store gates. Include the literal-i18n fix from #206 so validation covers the exact post-merge tree.
85 lines
2.5 KiB
YAML
85 lines
2.5 KiB
YAML
name: Dependency Graph Node
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
node:
|
|
description: Stable test-graph node identifier.
|
|
required: true
|
|
type: string
|
|
lane:
|
|
description: Contract or Playwright project lane.
|
|
required: true
|
|
type: string
|
|
partitions:
|
|
description: JSON array of one-based partition numbers.
|
|
required: false
|
|
default: "[1]"
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
test:
|
|
name: ${{ inputs.node }} / ${{ inputs.lane }} / ${{ matrix.partition }}
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 45
|
|
container:
|
|
image: mcr.microsoft.com/playwright:v1.58.2-noble
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 100
|
|
matrix:
|
|
partition: ${{ fromJSON(inputs.partitions) }}
|
|
env:
|
|
CI: "true"
|
|
PLAYWRIGHT_ARTIFACT_NAMESPACE: graph-${{ inputs.node }}-${{ inputs.lane }}-${{ matrix.partition }}
|
|
PLAYWRIGHT_REPORTER_MODE: line-html
|
|
PLAYWRIGHT_VIDEO_MODE: off
|
|
PLAYWRIGHT_WORKERS: 3
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v5
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
|
|
- name: Install dependencies
|
|
run: npm ci --legacy-peer-deps
|
|
|
|
- name: Run dependency graph node
|
|
run: >-
|
|
node scripts/test-graph/run-node-tests.mjs
|
|
--node "${{ inputs.node }}"
|
|
--lane "${{ inputs.lane }}"
|
|
--partition "${{ matrix.partition }}"
|
|
--partitions "${{ strategy.job-total }}"
|
|
|
|
- name: Upload dependency graph result
|
|
if: always()
|
|
continue-on-error: true
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-graph-result-${{ inputs.node }}-${{ inputs.lane }}-${{ matrix.partition }}-${{ github.run_id }}-${{ github.run_attempt }}
|
|
path: output/test-graph-results
|
|
if-no-files-found: warn
|
|
retention-days: 3
|
|
|
|
- name: Upload failure diagnostics
|
|
if: failure() || cancelled()
|
|
continue-on-error: true
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-graph-${{ inputs.node }}-${{ inputs.lane }}-${{ matrix.partition }}-${{ github.run_id }}-${{ github.run_attempt }}
|
|
path: |
|
|
output/playwright/${{ env.PLAYWRIGHT_ARTIFACT_NAMESPACE }}
|
|
output/playwright/${{ env.PLAYWRIGHT_ARTIFACT_NAMESPACE }}-*
|
|
if-no-files-found: ignore
|
|
retention-days: 3
|