Company-wide quality tooling, centralized for reusability across all projects.
Automatically create Linear issues for failed Ginkgo/Gomega tests from nightly CI runs.
Location: .github/actions/linear-test-failures/
Usage:
- uses: nscaledev/quality-tooling/.github/actions/linear-test-failures@main
with:
test-results-path: path/to/test-results.json
workflow-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
linear-api-key: ${{ secrets.LINEAR_API_KEY }}
linear-team-id: ${{ vars.LINEAR_TEAM_ID }}
environment: devFeatures:
- Creates one issue per test failure
- Duplicate detection with comment updates
- Spam prevention (max 5 failures)
- Clear naming:
[Nightly-{env}] {TestSuite} - {TestName}
Send a Slack message summarising Ginkgo/Gomega test results — pass/fail counts, duration, and details of up to 5 failures.
Location: .github/actions/slack-test-notifications/
Usage:
- uses: nscaledev/quality-tooling/.github/actions/slack-test-notifications@main
with:
test-results-path: path/to/test-results.json
workflow-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
environment: dev
title: 'Compute API Test Results' # optional, defaults to "API Test Results"Features:
- Posts pass/fail/skip counts and test duration
- Lists up to 5 failures with error messages and file locations
- Configurable title per repository
- Runs even when tests fail (
if: ${{ !cancelled() }})
Analyze Ginkgo, JUnit, or Playwright JSON test results, write a GitHub Actions step summary, optionally compare against previous results, optionally run Claude failure analysis, and optionally notify Slack.
Location: .github/actions/test-results-report/
Usage:
- uses: nscaledev/quality-tooling/.github/actions/test-results-report@main
with:
test-results-path: path/to/results.xml
format: junit
title: E2E Test Results
environment: dev
report-url: ${{ steps.report-url.outputs.url }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
enable-ai-analysis: 'true'
claude-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}Features:
- Supports
auto,ginkgo-json,junit, andplaywright-json - Writes
$GITHUB_STEP_SUMMARYby default - Compares with previous results via
previous-results-path - Reports new, recurring, and resolved failures/skips
- Supports Slack notifications via incoming webhook
- Optionally adds Claude failure analysis when
enable-ai-analysisis true
Scans open PRs in uni-releases for a candidate constellation and outputs the pinned service tag. Used as a preflight step before UAT tests to ensure tests run against the version deployed to staging.
Location: .github/actions/uni-find-staging-constellation/
Usage:
- uses: nscaledev/quality-tooling/.github/actions/uni-find-staging-constellation@main
id: find
with:
service: uni-region
releases-read-token: ${{ secrets.RELEASES_READ_TOKEN }}Features:
- Paginates all open PRs in the releases repository
- Finds the constellation with
status: candidate - Strips short-SHA suffix from version:
v1.16.4-c2153ee→v1.16.4 - Outputs empty tag (skip UAT) when no candidate exists
- Create directory:
.github/actions/{action-name}/ - Add
action.ymlwith action definition - Add
README.mdwith usage documentation - Update this root README with action description
- Commit and push to main branch