cicd-testing-integration — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cicd-testing-integration (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Expert skill for integrating automated testing into CI/CD pipelines and enabling continuous quality feedback.
Use this skill when you need to:
/\
/UI\ 10% - E2E/UI Tests (slow, brittle)
/────\
/ API \ 30% - Integration/API Tests
/────────\
/ UNIT \ 60% - Unit Tests (fast, stable)
/────────────\Principle: More fast tests at bottom, fewer slow tests at top
1. Pre-Commit
- Unit tests (developer runs)
- Linting/static analysis
2. Commit Stage (Fast - <5 min)
- Unit tests
- Basic smoke tests
- Code coverage check
3. Acceptance Stage (Medium - 15-30 min)
- Integration tests
- API tests
- Component tests
4. Deployment Stage (Slower - 30-60 min)
- E2E tests
- Security scans
- Performance tests
5. Production Monitoring
- Synthetic tests
- Health checks
- User monitoringname: CI Testing Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Run unit tests
run: npm run test:unit
- name: Check coverage
run: npm run test:coverage
- name: Upload coverage
uses: codecov/codecov-action@v3
integration-tests:
needs: unit-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Start services
run: docker-compose up -d
- name: Run integration tests
run: npm run test:integration
- name: Stop services
run: docker-compose down
e2e-tests:
needs: integration-tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run E2E tests
run: npm run test:e2e
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-report
path: playwright-report/pipeline {
agent any
stages {
stage('Unit Tests') {
steps {
sh 'npm run test:unit'
}
post {
always {
junit 'test-results/unit/*.xml'
}
}
}
stage('Integration Tests') {
steps {
sh 'docker-compose up -d'
sh 'npm run test:integration'
}
post {
always {
sh 'docker-compose down'
junit 'test-results/integration/*.xml'
}
}
}
stage('E2E Tests') {
when {
branch 'main'
}
steps {
sh 'npm run test:e2e'
}
post {
always {
publishHTML([
reportDir: 'playwright-report',
reportFiles: 'index.html',
reportName: 'E2E Test Report'
])
}
}
}
stage('Deploy to QA') {
when {
branch 'develop'
}
steps {
sh './deploy-qa.sh'
}
}
}
post {
failure {
mail to: '[email protected]',
subject: "Pipeline Failed: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: "Check ${env.BUILD_URL}"
}
}
}{
"summary": {
"total": 250,
"passed": 245,
"failed": 3,
"skipped": 2,
"duration": "12m 34s",
"passRate": "98%"
},
"failures": [
{
"test": "Login with invalid password",
"error": "Expected 401, got 500",
"screenshot": "failure-1.png",
"trace": "error.log"
}
]
}Track and display:
Critical Alerts:
- Build fails on main branch → Slack + Email
- Test pass rate < 95% → Team notification
- Security vulnerability found → Immediate action
Warning Alerts:
- Build duration > 30 minutes → Optimize
- Code coverage decreased → Review
- Flaky test detected → Investigate# Parallelize test suites
jobs:
test:
strategy:
matrix:
shard: [1, 2, 3, 4]
steps:
- run: npm run test:e2e -- --shard=${{ matrix.shard }}/4- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}# Only run tests affected by changes
changed_files=$(git diff --name-only HEAD~1)
npm run test:selective --files="$changed_files"# Optimize Docker builds
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
# Dependencies cached hereDevelopment → Integration → QA → Staging → Production
↓ ↓ ↓ ↓ ↓
Unit Tests API Tests E2E Tests Smoke Monitoring// config/test.env.js
module.exports = {
qa: {
apiUrl: 'https://api-qa.company.com',
dbHost: 'db-qa.company.com'
},
staging: {
apiUrl: 'https://api-staging.company.com',
dbHost: 'db-staging.company.com'
}
};PR Created → Run unit & integration tests
→ Pass? Merge allowed : Block mergeCommit → Build → Test → Deploy QA → E2E Tests → Deploy StagingScheduled: 2 AM → Full test suite → Report to teamManual Trigger → Select test suite → Run → Report resultsMonitor:
Regular activities:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.