reporting-labs 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/template.html +7 -1
- package/dist/template.js +7 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -606,7 +606,7 @@ Your Slack step can then read `results.json` for pass / fail counts and top fail
|
|
|
606
606
|
|
|
607
607
|
## Java teams
|
|
608
608
|
|
|
609
|
-
The same report, from Java: `dev.reportinglabs` on Maven Central, for TestNG and JUnit 5, with zero-code add-ons for Selenium
|
|
609
|
+
The same report, from Java: `dev.reportinglabs` on Maven Central, for TestNG and JUnit 5, with zero-code add-ons for Selenium, REST Assured and Playwright for Java, and a Cucumber JVM plugin (one row per scenario, Given/When/Then as steps). Source: [reporting-labs-java](https://github.com/naveenautomationlabs/reporting-labs-java). Guides: [reportinglabs.dev/get-started/java](https://reportinglabs.dev/get-started/java).
|
|
610
610
|
|
|
611
611
|
## Roadmap
|
|
612
612
|
|
package/dist/template.html
CHANGED
|
@@ -1405,11 +1405,16 @@ function projects(){
|
|
|
1405
1405
|
/* ---------- main ---------- */
|
|
1406
1406
|
function main(){
|
|
1407
1407
|
const projSel = h('select',{id:'projsel',onchange:e=>{state.project=e.target.value;refresh();}}, h('option',{value:'all'},'All projects'), data.projects.map(p=>h('option',{value:p},p)));
|
|
1408
|
+
// Status filter, the same state the Overview pills, the donut legend and the "f" key drive.
|
|
1409
|
+
const counts = {}; for(const t of data.tests){ const k=isFail(t.outcome)?'failed':t.outcome; counts[k]=(counts[k]||0)+1; }
|
|
1410
|
+
const statusSel = h('select',{id:'statussel','aria-label':'Status',onchange:e=>{state.status=e.target.value;refresh();}},
|
|
1411
|
+
h('option',{value:'all'},'Any status'),
|
|
1412
|
+
[['passed','Passed'],['failed','Failed'],['flaky','Flaky'],['skipped','Skipped']].map(([k,l])=>h('option',{value:k},l+(counts[k]?' ('+counts[k]+')':''))));
|
|
1408
1413
|
return h('div',{class:'main'},
|
|
1409
1414
|
h('aside',{class:'list'},
|
|
1410
1415
|
h('div',{class:'tools'}, h('input',{type:'search',placeholder:'Search tests, tags, files…',oninput:e=>{state.q=e.target.value.toLowerCase();refresh();}}), data.projects.length>1?projSel:null,
|
|
1411
1416
|
h('div',{class:'seg'}, [['file','Spec files'],['folder','Folders'],['flat','Flat']].map(([k,l])=>h('button',{'data-g':k,'aria-pressed':state.group===k,onclick:()=>{state.group=k;refresh();}},l))),
|
|
1412
|
-
|
|
1417
|
+
h('div',{class:'dims'}, statusSel, DIMS.map(d=>h('select',{'data-dim':d,onchange:e=>{state.dims[d]=e.target.value||null;refresh();}}, h('option',{value:''},'Any '+d), dimValues(d).map(v=>h('option',{value:v},v)))))),
|
|
1413
1418
|
h('div',{class:'items',id:'items'}),
|
|
1414
1419
|
h('div',{class:'hint-kbd'}, h('span',{class:'kbd'},'j'),' / ',h('span',{class:'kbd'},'k'),' next / prev · ',h('span',{class:'kbd'},'f'),' failed only · ',h('span',{class:'kbd'},'/'),' search · ',h('span',{class:'kbd'},'1'),'–',h('span',{class:'kbd'},'5'),' switch view')),
|
|
1415
1420
|
h('section',{class:'detail',id:'detail'}));
|
|
@@ -1428,6 +1433,7 @@ function refresh(){
|
|
|
1428
1433
|
document.querySelectorAll('.dim .row').forEach(r=>{ const card=r.closest('.card'); const d=card.querySelector('h2').textContent.replace(/^By /,''); r.setAttribute('aria-pressed', state.dims[d]===r.querySelector('.k').textContent); });
|
|
1429
1434
|
document.querySelectorAll('select[data-dim]').forEach(sel=>{ sel.value=state.dims[sel.dataset.dim]||''; });
|
|
1430
1435
|
const ps=$('#projsel'); if(ps) ps.value=state.project;
|
|
1436
|
+
const ss=$('#statussel'); if(ss) ss.value=state.status;
|
|
1431
1437
|
const vis=visible(), ids=new Set(vis.map(t=>t.id));
|
|
1432
1438
|
document.querySelectorAll('.cell').forEach(c=>c.classList.toggle('dim',!ids.has(c.dataset.id)));
|
|
1433
1439
|
const box=$('#items'); box.innerHTML='';
|
package/dist/template.js
CHANGED
|
@@ -1471,11 +1471,16 @@ function projects(){
|
|
|
1471
1471
|
/* ---------- main ---------- */
|
|
1472
1472
|
function main(){
|
|
1473
1473
|
const projSel = h('select',{id:'projsel',onchange:e=>{state.project=e.target.value;refresh();}}, h('option',{value:'all'},'All projects'), data.projects.map(p=>h('option',{value:p},p)));
|
|
1474
|
+
// Status filter, the same state the Overview pills, the donut legend and the "f" key drive.
|
|
1475
|
+
const counts = {}; for(const t of data.tests){ const k=isFail(t.outcome)?'failed':t.outcome; counts[k]=(counts[k]||0)+1; }
|
|
1476
|
+
const statusSel = h('select',{id:'statussel','aria-label':'Status',onchange:e=>{state.status=e.target.value;refresh();}},
|
|
1477
|
+
h('option',{value:'all'},'Any status'),
|
|
1478
|
+
[['passed','Passed'],['failed','Failed'],['flaky','Flaky'],['skipped','Skipped']].map(([k,l])=>h('option',{value:k},l+(counts[k]?' ('+counts[k]+')':''))));
|
|
1474
1479
|
return h('div',{class:'main'},
|
|
1475
1480
|
h('aside',{class:'list'},
|
|
1476
1481
|
h('div',{class:'tools'}, h('input',{type:'search',placeholder:'Search tests, tags, files…',oninput:e=>{state.q=e.target.value.toLowerCase();refresh();}}), data.projects.length>1?projSel:null,
|
|
1477
1482
|
h('div',{class:'seg'}, [['file','Spec files'],['folder','Folders'],['flat','Flat']].map(([k,l])=>h('button',{'data-g':k,'aria-pressed':state.group===k,onclick:()=>{state.group=k;refresh();}},l))),
|
|
1478
|
-
|
|
1483
|
+
h('div',{class:'dims'}, statusSel, DIMS.map(d=>h('select',{'data-dim':d,onchange:e=>{state.dims[d]=e.target.value||null;refresh();}}, h('option',{value:''},'Any '+d), dimValues(d).map(v=>h('option',{value:v},v)))))),
|
|
1479
1484
|
h('div',{class:'items',id:'items'}),
|
|
1480
1485
|
h('div',{class:'hint-kbd'}, h('span',{class:'kbd'},'j'),' / ',h('span',{class:'kbd'},'k'),' next / prev · ',h('span',{class:'kbd'},'f'),' failed only · ',h('span',{class:'kbd'},'/'),' search · ',h('span',{class:'kbd'},'1'),'–',h('span',{class:'kbd'},'5'),' switch view')),
|
|
1481
1486
|
h('section',{class:'detail',id:'detail'}));
|
|
@@ -1494,6 +1499,7 @@ function refresh(){
|
|
|
1494
1499
|
document.querySelectorAll('.dim .row').forEach(r=>{ const card=r.closest('.card'); const d=card.querySelector('h2').textContent.replace(/^By /,''); r.setAttribute('aria-pressed', state.dims[d]===r.querySelector('.k').textContent); });
|
|
1495
1500
|
document.querySelectorAll('select[data-dim]').forEach(sel=>{ sel.value=state.dims[sel.dataset.dim]||''; });
|
|
1496
1501
|
const ps=$('#projsel'); if(ps) ps.value=state.project;
|
|
1502
|
+
const ss=$('#statussel'); if(ss) ss.value=state.status;
|
|
1497
1503
|
const vis=visible(), ids=new Set(vis.map(t=>t.id));
|
|
1498
1504
|
document.querySelectorAll('.cell').forEach(c=>c.classList.toggle('dim',!ids.has(c.dataset.id)));
|
|
1499
1505
|
const box=$('#items'); box.innerHTML='';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reporting-labs",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.6",
|
|
4
4
|
"description": "reportingLabs – beautiful, customizable single-file HTML test reports. One line of config. Playwright adapter included, more runners on the way.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"test-report",
|