Loading...
Loading...
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 skill4agent add lgariv-dn/frontend-skills e2e-ci-debug# 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.shdap-workspace/tests/workflow/typescript/playwright.config.tstests/e2e/builder/catalog/visual-diff/sanitysetupe2ereports/typescript-playwright/workflow/playwright-report/junit.xmlWORKFLOW_BASE_URLhttp://localhost:4200dap-workspace/libs/workflow/workflow-fe/workflow-fe-e2e/playwright.config.tssrc/workflow-root-fehttp://localhost:4200dispatcher.ymlpr-core.yamlpr-processor.ymlnx affected -t e2e# 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>.github/workflows/dispatcher.yml.github/workflows/pr-core.yamlpr-processor.ymlcd 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=sanitycd dap-workspace
# Compare against main branch
nx affected -t e2e --base=origin/main
# Compare against specific branch
nx affected -t e2e --base=origin/v4.0cd 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 --headedcd dap-workspace
# Open HTML report for workflow tests
npx playwright show-report reports/typescript-playwright/workflow/playwright-reportgh pr checks
# Look for "Run E2E Tests" or similar job names# 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>.cursor/skills/e2e-ci-debug/scripts/parse-junit.pycd 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 problemsscripts/npx add-skill.cursor/skills/e2e-ci-debug/scripts/# 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>playwright-results/# 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--jsonscreenshotstracesvideos# List recent PR workflow runs
./find-failing-job.sh
# Find specific workflow
./find-failing-job.sh "PR Deploy Core"./cleanup-artifacts.shplaywright-results/*-playwright-results.zipplaywright.config.tsawaitSelector not foundElement is not visiblesetupe2etests/*/typescript/seed/*.setup.tspage.waitForTimeout()