diff --git a/.github/workflows/debug-v1765-e2e.yml b/.github/workflows/debug-v1765-e2e.yml new file mode 100644 index 0000000..aefeb47 --- /dev/null +++ b/.github/workflows/debug-v1765-e2e.yml @@ -0,0 +1,56 @@ +name: Capture v17.6.5 E2E failures + +on: + push: + branches: + - feature/v17.6.5-stability + paths: + - .github/workflows/debug-v1765-e2e.yml + +permissions: + contents: write + +jobs: + debug: + if: github.actor != 'github-actions[bot]' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - run: npm install + - run: npx playwright install --with-deps chromium + - name: Capture failures + run: | + npx playwright test --config=tests/playwright.config.mjs --reporter=json > /tmp/pw.json || true + node <<'NODE' + const fs=require('fs'); + const r=JSON.parse(fs.readFileSync('/tmp/pw.json','utf8')); + const out=[]; + function walk(suite,path=[]){ + const here=[...path,(suite.title||'')].filter(Boolean); + for(const spec of suite.specs||[]){ + for(const test of spec.tests||[]){ + const bad=(test.results||[]).filter(x=>x.status==='failed'||x.status==='timedOut'); + if(!bad.length)continue; + out.push('TEST: '+[...here,spec.title].filter(Boolean).join(' > ')); + for(const res of bad){ + out.push('STATUS: '+res.status); + for(const e of res.errors||[])out.push(String(e.message||e.value||e).slice(0,6000)); + } + out.push('---'); + } + } + for(const child of suite.suites||[])walk(child,here); + } + for(const suite of r.suites||[])walk(suite,[]); + fs.writeFileSync('e2e-v1765-failures.txt',out.join('\n')||'NO FAILURES\n'); + NODE + - name: Commit diagnostics + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add e2e-v1765-failures.txt + git commit -m "Capture v17.6.5 E2E failures" + git push