skills/e2e-ci-debug/SKILL.md
Debug CI E2E failures from pull requests by inspecting GitHub checks, downloading Playwright reports, and mapping failures to local Nx commands. Use when debugging failed E2E tests in PR workflows.
npx skillsauth add lgariv-dn/frontend-skills e2e-ci-debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Debug Playwright E2E test failures from CI with automated artifact downloading, intelligent failure parsing, and local reproduction guidance.
Full debugging workflow:
# 1. Download artifacts from failing CI run
.cursor/skills/e2e-ci-debug/scripts/download-artifacts.sh
# 2. Parse JUnit results to identify failures
.cursor/skills/e2e-ci-debug/scripts/parse-junit.py
# 3. Run local reproduction command (shown by parse-junit.py)
cd dap-workspace && nx affected -t e2e --base=origin/main
# 4. Clean up downloaded artifacts (Important!)
.cursor/skills/e2e-ci-debug/scripts/cleanup-artifacts.sh
Output: Failing spec name, error message, file location, stack trace, and local reproduction command.
dap-workspace/tests/workflow/typescript/playwright.config.tstests/e2e/
builder/ - Workflow builder tests (9 spec files)catalog/ - Catalog navigation tests (2 spec files)visual-diff/ - Visual regression tests (1 spec file)sanity → setup → e2e (dependency chain)reports/typescript-playwright/workflow/
playwright-report/junit.xmlWORKFLOW_BASE_URL env var or http://localhost:4200dap-workspace/libs/workflow/workflow-fe/workflow-fe-e2e/playwright.config.tssrc/workflow-root-fe on http://localhost:4200When they run:
dispatcher.yml → pr-core.yaml → pr-processor.ymlnx affected -t e2e)How to find them:
# List PR checks
gh pr checks
# View specific run
gh run view <run_id> --log
# Download PR E2E artifacts
gh run download <run_id> -n <artifact-name>
Workflow chain:
.github/workflows/dispatcher.yml - PR entry point.github/workflows/pr-core.yaml - Runs test, lint, docker, deploy jobspr-processor.yml (external) - Handles deployment and E2E executionRun workflow E2E tests locally before pushing to CI:
cd dap-workspace
# Run full workflow E2E suite (with project dependencies)
nx e2e tests-workflow-typescript --project=e2e
# Run only sanity tests
nx e2e tests-workflow-typescript --project=sanity
cd dap-workspace
# Compare against main branch
nx affected -t e2e --base=origin/main
# Compare against specific branch
nx affected -t e2e --base=origin/v4.0
cd dap-workspace/tests/workflow/typescript
# Run single spec
npx playwright test tests/e2e/builder/workflow-builder.e2e.spec.ts
# Run specific suite
npx playwright test tests/e2e/builder
# Run with UI mode for debugging
npx playwright test --ui
# Run with headed browser
npx playwright test --headed
cd dap-workspace
# Open HTML report for workflow tests
npx playwright show-report reports/typescript-playwright/workflow/playwright-report
Find failing E2E job:
gh pr checks
# Look for "Run E2E Tests" or similar job names
Download artifacts:
# Use the download-artifacts.sh script (auto-detects current PR)
.cursor/skills/e2e-ci-debug/scripts/download-artifacts.sh
# Or manually with run ID
.cursor/skills/e2e-ci-debug/scripts/download-artifacts.sh <run_id>
Parse failures:
.cursor/skills/e2e-ci-debug/scripts/parse-junit.py
Reproduce locally:
cd dap-workspace
nx affected -t e2e --base=origin/<base-branch>
# View test job logs
gh run view <run_id> --log --job <job_id>
# Find the specific test command in logs
# Usually: nx affected -t test --base=origin/<base-branch>
# Run locally
cd dap-workspace
nx affected -t test --base=origin/main
# View lint job logs
gh run view <run_id> --log --job <job_id>
# Run locally
cd dap-workspace
nx affected -t lint --base=origin/main
# Auto-fix many issues
nx affected -t lint --base=origin/main --fix
# View docker job logs
gh run view <run_id> --log --job <job_id>
# Look for:
# - Docker build errors
# - Missing dependencies
# - Build context issues
# - Registry authentication problems
All scripts are located in the skill's scripts/ directory. After installation via npx add-skill, they'll be at .cursor/skills/e2e-ci-debug/scripts/
Downloads Playwright test artifacts from GitHub Actions for the current PR.
Usage:
# Auto-detect from current PR
./download-artifacts.sh
# Specify run ID
./download-artifacts.sh <run_id>
# Specify run ID and artifact name
./download-artifacts.sh <run_id> <artifact_name>
What it does:
playwright-results/ directoryParses JUnit XML from Playwright results and extracts structured failure information, including paths to failure screenshots for AI model analysis.
Usage:
# Parse default location
./parse-junit.py
# Parse specific file
./parse-junit.py path/to/junit.xml
# Output as JSON (includes screenshot/trace/video paths)
./parse-junit.py --json
# Show screenshot paths for AI model analysis
./parse-junit.py --screenshots
# Open HTML report after parsing
./parse-junit.py --open-report
# Show help
./parse-junit.py --help
Output includes:
Output Formats:
--json): Structured output with screenshots, traces, and videos arrays per failureAI Model Integration: The screenshot paths are absolute, allowing AI models to directly read the images using the Read tool to visually analyze where Playwright failed.
Finds failing E2E jobs from recent PR workflow runs.
Usage:
# List recent PR workflow runs
./find-failing-job.sh
# Find specific workflow
./find-failing-job.sh "PR Deploy Core"
Output:
Removes all downloaded Playwright artifacts after debugging.
Usage:
./cleanup-artifacts.sh
What it removes:
playwright-results/ directory*-playwright-results.zip filesSafety:
Symptom: Test exceeds timeout (default: 30s for sanity, 120s for setup, 30s for e2e)
Solutions:
playwright.config.ts if legitimateawait on async operationsSymptom: Selector not found or Element is not visible
Solutions:
Symptom: setup project fails before e2e tests can run
Solutions:
tests/*/typescript/seed/*.setup.tsSymptom: Test passes locally but fails in CI (or vice versa)
Solutions:
page.waitForTimeout())For detailed workflow documentation, artifact paths, and Playwright configuration details, see reference.md.
Use this skill when:
development
Records scripted webreel demos of a PR's changes using the current branch's PR description, linked Jira ticket, reproduction artifacts, and newly-added Playwright E2E tests as the source of truth. Use when the user asks to "create a demo for this PR", "record a webreel for AR-XXXXX", "demo this fix/feature", "generate a demo video", "make a video of the E2E flow", "demo this epic", or "record a visual for this change". Handles single-concern PRs, large multi-concern PRs, and epic-level demos with one or many videos. Always plans scope, flow, data source, and format with the user via AskUserQuestion before recording — never records unprompted.
tools
Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).
development
Support local workflow platform development in the DAP workspace across frontend, backend, and infra teams. Provides access to Kubernetes (Kind), Tilt service management, database queries, and troubleshooting. Use when building backend/API features, adjusting infra configurations, checking logs, running tests, or debugging issues against locally deployed workflow engine components.
development
React performance optimization guidelines from Vercel Engineering. This skill should be used proactively when writing, reviewing, or refactoring React code to ensure optimal performance patterns. Triggers on tasks involving React components, bundle optimization, or performance improvements.