UNPKG

newman-reporter-xunit

Version:

A Newman JUnit Reporter providing full reports (without aggregation of results) based on newman-reporter-junitfull package

1,262 lines (1,127 loc) 51.3 kB
<!DOCTYPE html> <html lang="en" style="overflow-y: scroll;"> <head> <meta charset="UTF-8"> <title>Newman Summary Report</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.2/styles/default.min.css"> <link rel="stylesheet" href="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.css"/> <style> .theme-dark { --background-color: #222; --bg-card-deck: #444444; --text-color: #ccd2d8; --tab-border: solid 1px #444; --success: #3c9372; --failure: #c24a3f; --warning: #d28c23; --info: #4083b6; --badge-outline: #3c9372; --badge-bg: #cdd3db; --badge-text: #ccd2d9; --failure-row: #c24a3f; --warning-row: #d28c23; --card-bg: #444; --card-footer: #4f5758; --form-input: #ececb5; --hov-text: #d2dae5; --h4-text: #ccd1d9; } .theme-light { --tab-border: solid 1px #fff; --text-color: #000000; --success: #42a745; --failure: #dc3544; --warning: #f4c10b; --info: #49a1b8; --badge-outline: #040411; --badge-bg: #f8f9fa; --badge-text: #fff; --failure-row: #f5c6cb; --warning-row: #ffeeba; --card-bg: #f7f7f7; --hov-text: #fff; --h4-text: #ffffff; } body { padding-top:30px; background-color: var(--background-color)!important; color: var(--text-color); } #execution-data { padding: 10px; border: var(--tab-border); border-top: none; } .nav-tabs { padding-top: 10px; height: 105px; overflow-y: auto; } body.theme-dark .card-header { background-color: #444; } body.theme-light .card-header { background-color: #f7f7f7; } .card-footer { padding: .75rem 1.25rem; background-color: var(--card-footer); } .card-deck { background-color: var(--bg-card-deck)!important; } .form-control { background: var(--form-input); } .custom-tab { padding: 10px 15px; margin-right: 0px; height: 46px; width: 59px; text-align: center; border: var(--tab-border); border-bottom: none; cursor:pointer; } body.theme-dark .text-white { color: #ccd2d9!important; } h4 { color: var(--h4-text); } body.theme-dark h1 { color: #ccd2da; } body.theme-dark .bg-light>td { background: #4f5858!important; } body.theme-dark .hljs { background: #0a0a0ab0!important; color: #8d8787!important; } .bg-info { background-color: var(--info)!important; } .bg-success { background-color: var(--success)!important; } .alert-success { background-color: var(--success)!important; } .alert-warning { background-color: var(--warning)!important; } .alert-info { background-color: var(--info)!important; } .bg-warning { background-color: var(--warning)!important; } .badge-warning { color: var(--badge-text)!important; background-color: var(--warning)!important; } .table-warning>td { background-color: var(--warning-row); } .alert-danger { background-color: var(--failure)!important; } body.theme-dark .alert-dark { background-color: #636467!important; } body.theme-dark .text-dark { color: #d1dae4!important; } body.theme-dark .badge-light { color: #212529; background-color: #cdd3db; } body.theme-light .badge-light { color: #212529; background-color: #f8f9fa; } body.theme-light .bg-danger { background-color: var(--failure)!important; } body.theme-dark .bg-danger { background-color: var(--failure)!important; } .table-danger>td { background-color: var(--failure-row); } body.theme-dark .table .thead-light th { background-color: #4f5858!important; border-color: #dee2e6!important; color: #ccd2d8!important; } .itPassed { background: var(--success); color: white; } .itFailed { background: var(--failure); color: white; } .resultsInfoPass { color: var(--success); padding-top: 4px; } .resultsInfoFail { color: var(--failure); padding-top: 4px; } .badge-outline-success { color: var(--success); border: 1px solid var(--success); background-color: transparent; } .badge-outline { color: var(--badge-outline); border: 1px solid var(--badge-outline); background-color: transparent; } .btn-outline-success { color: var(--success)!important; border-color: var(--success)!important; } .backToTop:hover { background-color: var(--success); border-color: var(--success); color: var(--hov-text)!important; } .btn-outline-success:hover { background-color: var(--success); border-color: var(--success); color: var(--hov-text)!important; } .btn-outline-secondary { background-color: var(--success)!important; color: var(--hov-text)!important; } body.theme-dark .env-heading { color: #ccd2d9!important; } body, html { height:100%; } .card { overflow:hidden; } body.theme-dark .card-body { background-color: #444; } body.theme-light .card-body { background-color: #f7f7f7; } body.theme-dark .card-body .bg-danger { background-color: var(--failure)!important; } body.theme-light .card-body .bg-danger { background-color: var(--failure)!important; } .card-body .rotate { z-index: 8; float: right; height: 100%; } .card-body .rotate i { color: #14141426; position: absolute; left: 0; left: auto; right: -10px; bottom: 0; display: block; -webkit-transform: rotate(-44deg); -moz-transform: rotate(-44deg); -o-transform: rotate(-44deg); -ms-transform: rotate(-44deg); transform: rotate(-44deg); } .dyn-height { max-height:350px; overflow-y:auto; } .nav-pills .nav-link.active { background-color: transparent!important; } .backToTop { display: none; position: fixed; bottom: 10px; right: 20px; z-index: 99; font-size: 15px; outline: none; cursor: pointer; padding: 15px; border-radius: 4px; } .card-header .fa { transition: .3s transform ease-in-out; } .card-header .collapsed .fa { transform: rotate(90deg); } .single-line-tabs { padding-top: 10px; height: 60px; } ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #888; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* The switch - the box around the slider */ .switch { position: relative; display: inline-block; width: 44px; height: 20px; } /* Hide default HTML checkbox */ .switch input { opacity: 0; width: 0; height: 0; } /* The slider */ .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: 0.4s; transition: 0.4s; } .slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 0px; bottom: 4px; top: 0; bottom: 0; margin: auto 0; -webkit-transition: 0.4s; transition: 0.4s; box-shadow: 0 0px 15px #2020203d; background: white; background-repeat: no-repeat; background-position: center; } input:checked + .slider { background-color: #4083b6; } input:focus + .slider { box-shadow: 0 0 1px #4083b6; } input:checked + .slider:before { -webkit-transform: translateX(24px); -ms-transform: translateX(24px); transform: translateX(24px); background: white; background-repeat: no-repeat; background-position: center; } /* Rounded sliders */ .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } table.dataTable td, table.dataTable tr { vertical-align: middle; } </style> </head> <body class=""> <div class="container"> <div class="container"> <label>Light</label> <label id="switch" class="switch"> <input type="checkbox" onchange="toggleTheme()" id="slider"> <span class="slider round"></span> </label> <label>Dark</label> </div> <div class="card"> <div class="card-header"> <ul class="nav nav-pills mb-3 nav-justified" id="pills-tab" role="tablist"> <li class="nav-item bg-info active" data-toggle="tooltip" title="Click to view the Summary"> <a class="nav-link text-white" id="pills-summary-tab" data-toggle="pill" href="#pills-summary" role="tab" aria-controls="pills-summary" aria-selected="true">Summary</a> </li> <li class="nav-item bg-success" data-toggle="tooltip" title="Click to view the Requests"> <a class="nav-link text-white" id="pills-requests-tab" data-toggle="pill" href="#pills-requests" role="tab" aria-controls="pills-requests" aria-selected="false">Total Requests <span class="badge badge-light">1</span></a> </li> <li class="nav-item bg-danger" data-toggle="tooltip" title="Click to view the Failed Tests"> <a class="nav-link text-white" id="pills-failed-tab" data-toggle="pill" href="#pills-failed" role="tab" aria-controls="pills-failed" aria-selected="false">Failed Tests <span class="badge badge-light">2</span></a> </li> <li class="nav-item bg-warning" data-toggle="tooltip" title="Click to view the Skipped Tests"> <a class="nav-link text-white" id="pills-skipped-tab" data-toggle="pill" href="#pills-skipped" role="tab" aria-controls="pills-skipped" aria-selected="false">Skipped Tests <span class="badge badge-light">0</span></a> </li> </ul> <div class="tab-content" id="pills-tabContent"> <div class="tab-pane fade show active" id="pills-summary" role="tabcard" aria-labelledby="pills-summary-tab"> <div class="row"> <div class="col-md-9 col-lg-12 main"> <h1 class="display-2 text-center">Newman Run Dashboard</h1> <h5 class="text-center">Tuesday, 23 February 2021 09:31:39</h5> <div class="row"> <div class="col-lg-3 col-md-6"> <div class="card text-white card-success"> <div class="card-body bg-danger"> <div class="rotate"> <i class="fa fa-retweet fa-5x"></i> </div> <h6 class="text-uppercase">Total Iterations</h6> <h1 class="display-1">1</h1> </div> </div> </div> <div class="col-lg-3 col-md-6"> <div class="card text-white card-danger"> <div class="card-body bg-success"> <div class="rotate"> <i class="fa fa-list fa-4x"></i> </div> <h6 class="text-uppercase">Total Assertions</h6> <h1 class="display-1">3</h1> </div> </div> </div> <div class="col-lg-3 col-md-6"> <div class="card text-white card-info"> <div class="card-body bg-danger"> <div class="rotate"> <i class="fa fa-plus-circle fa-5x"></i> </div> <h6 class="text-uppercase">Total Failed Tests</h6> <h1 class="display-1">2</h1> </div> </div> </div> <div class="col-lg-3 col-md-6"> <div class="card text-white card-warning"> <div class="card-body bg-success"> <div class="rotate"> <i class="fa fa-share fa-5x"></i> </div> <h6 class="text-uppercase">Total Skipped Tests</h6> <h1 class="display-1">0</h1> </div> </div> </div> </div> <hr> <div class="row"> <div class="col"> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card border-info"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">File Information</h5> <span><i class="fas fa-file-code"></i></span><strong> Collection:</strong> sonarcloud<br> </div> </div> </div> </div> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card border-info"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Timings and Data</h5> <span><i class="fas fa-stopwatch"></i></span><strong> Total run duration:</strong> 382ms<br> <span><i class="fas fa-database"></i></span><strong> Total data received:</strong> 492B<br> <span><i class="fas fa-stopwatch"></i></span><strong> Average response time:</strong> 310ms<br> </div> </div> </div> </div> <div class="row"> <div class="col-sm-12 mb-3"> <div class="table-responsive"> <table class="table table-striped table-bordered"> <thead class="thead-inverse"> <tr class="text-center"> <th class="text-uppercase">Summary Item</th> <th class="text-uppercase">Total</th> <th class="text-uppercase">Failed</th> </tr> </thead> <tbody> <tr> <td>Requests</td> <td class="text-center">1</td> <td class="text-center">0</td> </tr> <tr> <td>Prerequest Scripts</td> <td class="text-center">0</td> <td class="text-center">0</td> </tr> <tr> <td>Test Scripts</td> <td class="text-center">1</td> <td class="text-center">0</td> </tr> <tr class="table-danger"> <td>Assertions</td> <td class="text-center">3</td> <td class="text-center">2</td> </tr> <tr class=""> <td>Skipped Tests</td> <td class="text-center">0</td> <td class="text-center">-</td> </tr> </tbody> </table> </div> </div> </div> <hr> </div> </div> </div> </div> </div> <div class="tab-pane fade" id="pills-failed" role="tabcard" aria-labelledby="pills-failed-tab"> <button id="topOfFailuresScreen" class="btn btn-outline-success btn-sm backToTop" onclick="topFunction()">Go To Top</button> <div class="btn-group float-right" role="group" aria-label="Button Group"> <button id="openAllFailed" class="btn btn-outline-success btn-sm float-right" style="text-align: center; width: 185px;">Expand All Failed Tests</button> </div> <br> <br> <div class="alert alert-danger text-uppercase text-center"> <h4>Showing 2 Failures</h4> </div> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-danger"> <div class="card-header bg-danger"> <a data-toggle="collapse" href="#" data-target="#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" aria-expanded="false" aria-controls="collapse" id="fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapsed text-white z-block"> Iteration 1 - AssertionError - sonarcloud - measures <i class="float-lg-right fa fa-chevron-down" style="padding-top:5px;"></i> </a> </div> <div id="fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapse" aria-labelledby="fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba"> <div class="card-body"> <h5 ><strong>Failed Test:</strong> Status code is 201</h5> <hr> <h5 class="card-title text-uppercase text-white text-center bg-danger">Assertion Error Message</h5> <div> <pre><code >expected response to have status code 201 but got 200</code></pre> </div> </div> </div> </div> </div> </div> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-danger"> <div class="card-header bg-danger"> <a data-toggle="collapse" href="#" data-target="#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" aria-expanded="false" aria-controls="collapse" id="fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapsed text-white z-block"> Iteration 1 - AssertionError - sonarcloud - measures <i class="float-lg-right fa fa-chevron-down" style="padding-top:5px;"></i> </a> </div> <div id="fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapse" aria-labelledby="fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba"> <div class="card-body"> <h5 ><strong>Failed Test:</strong> at least one bug</h5> <hr> <h5 class="card-title text-uppercase text-white text-center bg-danger">Assertion Error Message</h5> <div> <pre><code >expected &#x27;0&#x27; to deeply equal &#x27;1&#x27;</code></pre> </div> </div> </div> </div> </div> </div> </div> <div class="tab-pane fade" id="pills-skipped" role="tabcard" aria-labelledby="pills-skipped-tab"> <button id="topOfSkippedScreen" class="btn btn-outline-success btn-sm backToTop" onclick="topFunction()">Go To Top</button> <div class="alert alert-success text-uppercase text-center"> <br><br><h1 class="text-center">There are no skipped tests <span><i class="far fa-thumbs-up"></i></span></h1><br><br> </div> </div> <div class="tab-pane fade" id="pills-requests" role="tabcard" aria-labelledby="pills-requests-tab"> <button id="topOfRequestsScreen" class="btn btn-outline-success btn-sm backToTop" onclick="topFunction()">Go To Top</button> <div class="btn-group float-right" role="group" aria-label="Button Group"> <button id="showOnlyFailures" class="btn btn-outline-success btn-sm float-right" style="text-align: center; width:160px;">Show Failed Iterations</button> <button id="openAll" class="btn btn-outline-success btn-sm float-right" style="text-align: center; width: 140px;">Expand Folders</button> <button id="openAllRequests" class="btn btn-outline-success btn-sm float-right" style="text-align: center; width: 140px;">Expand Requests</button> </div> <div class="text-uppercase" id="execution-menu"> <h5>1 Iteration available to view</h5> <nav class="table-responsive"> <ul class="nav single-line-tabs" id="iterationList"> </ul> </nav> </div> <h6 class="text-uppercase text-muted" id="iterationSelected" style="padding-top: 10px;"></h6> <div class="tab-content" id="execution-data"> <div id="folder-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="card-deck iteration-0"> <div class="row iteration-0"> <div class="col-sm-12 mb-3 iteration-0"> <div class="card iteration-0"> <div class="card-header bg-danger iteration-0"> <a data-toggle="collapse" href="#" data-target="#collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" aria-expanded="false" aria-controls="collapse" id="requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapsed text-white z-block"> Iteration: 1 - measures <i class="float-lg-right fa fa-chevron-down" style="padding-top: 5px;"></i> </a> </div> <div id="collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba" class="collapse" aria-labelledby="requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba"> <div class="card-body"> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-info" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Request Information</h5> <span><i class="fas fa-info-circle"></i></span><strong> Request Method:</strong> <span class="badge-outline-success badge badge-success"> GET</span><br> <span><i class="fas fa-info-circle"></i></span><strong> Request URL:</strong> <a href="https://sonarcloud.io/api/measures/component?component&#x3D;bhecquet_seleniumRobot&amp;metricKeys&#x3D;reliability_rating,bugs,vulnerabilities,security_hotspots" target="_blank">https://sonarcloud.io/api/measures/component?component&#x3D;bhecquet_seleniumRobot&amp;metricKeys&#x3D;reliability_rating,bugs,vulnerabilities,security_hotspots</a><br> </div> </div> <div class="card border-info" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Response Information</h5> <span><i class="fas fa-info-circle"></i></span><strong> Response Code:</strong> <span class="float-right badge-outline badge badge-success"> 200 - OK</span><br> <span><i class="fas fa-stopwatch"></i></span><strong> Mean time per request:</strong> <span class="float-right badge-outline badge badge-success"> 310ms</span><br> <span><i class="fas fa-database"></i></span><strong> Mean size per request:</strong> <span class="float-right badge-outline badge badge-success"> 492B</span><br> <hr> <h5 class="card-title text-uppercase text-white text-center bg-info">Test Pass Percentage</h5> <div> <div class="progress" style="height: 40px;"> <div class="progress-bar bg-danger" style="width: 100%" role="progressbar"> <h5 style="padding-top:5px;"><strong>33 %</strong></h5> </div> </div> </div> </div> </div> </div> </div> </div> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-info" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Request Headers</h5> <div class="table-responsive"> <table class="table table-bordered"> <thead class="thead-light text-center"><tr><th>Header Name</th><th>Header Value</th></tr></thead> <tbody> <tr> <td class="text-nowrap">User-Agent</td> <td>PostmanRuntime/7.20.1</td> </tr> <tr> <td class="text-nowrap">Accept</td> <td>*/*</td> </tr> <tr> <td class="text-nowrap">Cache-Control</td> <td>no-cache</td> </tr> <tr> <td class="text-nowrap">Postman-Token</td> <td>a355691f-b349-40bc-bbf5-a532347d3990</td> </tr> <tr> <td class="text-nowrap">Host</td> <td>sonarcloud.io</td> </tr> <tr> <td class="text-nowrap">Accept-Encoding</td> <td>gzip, deflate</td> </tr> <tr> <td class="text-nowrap">Connection</td> <td>keep-alive</td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-info" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Response Headers</h5> <div class="table-responsive"> <table class="table table-bordered"> <thead class="thead-light text-center"><tr><th>Header Name</th><th>Header Value</th></tr></thead> <tbody> <tr> <td class="text-nowrap">Date</td> <td>Tue, 23 Feb 2021 08:31:39 GMT</td> </tr> <tr> <td class="text-nowrap">Content-Type</td> <td>application/json</td> </tr> <tr> <td class="text-nowrap">Content-Length</td> <td>492</td> </tr> <tr> <td class="text-nowrap">Connection</td> <td>close</td> </tr> <tr> <td class="text-nowrap">X-Frame-Options</td> <td>SAMEORIGIN</td> </tr> <tr> <td class="text-nowrap">X-XSS-Protection</td> <td>1; mode&#x3D;block</td> </tr> <tr> <td class="text-nowrap">X-Content-Type-Options</td> <td>nosniff</td> </tr> <tr> <td class="text-nowrap">Cache-Control</td> <td>no-cache, no-store, must-revalidate</td> </tr> <tr> <td class="text-nowrap">Sonar-Version</td> <td>8.5.0.37579</td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class="row"> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-info" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Response Body</h5> <div class="dyn-height"> <pre><code id="copyText-48897851-b0b4-4c88-8181-8f9623e98746" class="prettyPrint">{&quot;component&quot;:{&quot;id&quot;:&quot;AXcGS4cCUqKOSEeXHtLQ&quot;,&quot;key&quot;:&quot;bhecquet_seleniumRobot&quot;,&quot;name&quot;:&quot;selenium robot&quot;,&quot;description&quot;:&quot;Step by step test reporting framework based on webdriver, cucumber and testng, based on project seleniumtestsframework&quot;,&quot;qualifier&quot;:&quot;TRK&quot;,&quot;measures&quot;:[{&quot;metric&quot;:&quot;reliability_rating&quot;,&quot;value&quot;:&quot;1.0&quot;,&quot;bestValue&quot;:true},{&quot;metric&quot;:&quot;bugs&quot;,&quot;value&quot;:&quot;0&quot;,&quot;bestValue&quot;:true},{&quot;metric&quot;:&quot;vulnerabilities&quot;,&quot;value&quot;:&quot;0&quot;,&quot;bestValue&quot;:true},{&quot;metric&quot;:&quot;security_hotspots&quot;,&quot;value&quot;:&quot;0&quot;,&quot;bestValue&quot;:true}]}}</code></pre> </div> <div class="card-footer"> <button class="btn btn-outline-secondary btn-sm copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText-48897851-b0b4-4c88-8181-8f9623e98746">Copy to Clipboard</button> </div> </div> </div> </div> </div> </div> <div class="row"> <div class="card border-info"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-info">Test Information</h5> <div class="table-responsive text-nowrap"> <table id="myTable-48897851-b0b4-4c88-8181-8f9623e98746" class="table table-hover"> <thead><tr class="text-center"><th>Name</th><th>Passed</th><th>Failed</th><th>Skipped</th></tr></thead> <tbody> <tr > <td >Status code is 201</td> <td class="text-center ">0</td> <td class="text-center bg-danger">1</td> <td class="text-center ">0</td> </tr> <tr > <td >at least one bug</td> <td class="text-center ">0</td> <td class="text-center bg-danger">1</td> <td class="text-center ">0</td> </tr> <tr > <td >A vulnerability rating</td> <td class="text-center bg-success">1</td> <td class="text-center ">0</td> <td class="text-center ">0</td> </tr> </tbody> <tfoot> <tr class="bg-light"> <td><strong>Total</strong></td> <td class="text-center">1</td> <td class="text-center">2</td> <td class="text-center">0</td> </tr> </tfoot> </table> </div> <div class="row "> <div class="col-sm-12 mb-3"> <div class="card-deck"> <div class="card border-danger" style="width: 50rem;"> <div class="card-body"> <h5 class="card-title text-uppercase text-white text-center bg-danger">Test Failures</h5> <div class="table-responsive"> <table class="table table-hover"> <thead><tr class="text-nowrap"><th>Test Name</th><th>Assertion Error</th></tr></thead> <tbody> <tr> <td class="w-45 text-nowrap ">Status code is 201</td> <td class="w-55"><pre><code >expected response to have status code 201 but got 200</code></pre></td> </tr> <tr> <td class="w-45 text-nowrap ">at least one bug</td> <td class="w-55"><pre><code >expected &#x27;0&#x27; to deeply equal &#x27;1&#x27;</code></pre></td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </body> </html> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.2.1/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/remarkable/1.7.1/remarkable.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.2/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> <!-- Data Table Configuration --> <script> $(document).ready( function () { $('#myTable-48897851-b0b4-4c88-8181-8f9623e98746').DataTable({ "retrieve": true, "paging": false, "info": false, "fixedColumns": { "heightMatch": 'none' } }); }); </script> <!-- Tooltip Configuration --> <script> $(document).ready(function() { $('[data-toggle="tooltip"]').tooltip({ trigger : 'hover' }) }) </script> <!-- Show/Hide The Folders --> <script> $('#openAll').on('click', function(e) { let clickCount = $(this).data("clickCount") || 1 switch (clickCount){ case 1: $('#folder-63efb600-a575-4061-9866-a4cb528f3860-iteration-0').removeClass('collapsed') $('#folder-collapse-63efb600-a575-4061-9866-a4cb528f3860-iteration-0').addClass('show') $('#openAll').html("Collapse Folders"); break; case 2: $('#folder-63efb600-a575-4061-9866-a4cb528f3860-iteration-0').addClass('collapsed') $('#folder-collapse-63efb600-a575-4061-9866-a4cb528f3860-iteration-0').removeClass('show') $('#openAll').html("Expand Folders"); break; } clickCount = clickCount > 1 ? 1 : ++clickCount; $(this).data("clickCount", clickCount) }) </script> <!-- Show/Hide The Requests --> <script> $('#openAllRequests').on('click', function(e) { let clickCount = $(this).data("clickCount") || 1 switch (clickCount){ case 1: $('#requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#openAllRequests').html("Collapse Requests"); break; case 2: $('#requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#requests-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#openAllRequests').html("Expand Requests"); break; } clickCount = clickCount > 1 ? 1 : ++clickCount; $(this).data("clickCount", clickCount) }) </script> <!-- Show/Hide The Skipped Tests --> <script> $('#openAllSkipped').on('click', function(e) { let clickCount = $(this).data("clickCount") || 1 switch (clickCount){ case 1: $('#skipped-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#skipped-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#skipped-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#skipped-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#openAllSkipped').html("Collapse All Skipped Tests"); break; case 2: $('#skipped-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#skipped-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#skipped-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#skipped-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#openAllSkipped').html("Expand All Skipped Tests"); break; } clickCount = clickCount > 1 ? 1 : ++clickCount; $(this).data("clickCount", clickCount) }) </script> <!-- Show/Hide The Failures --> <script> $('#openAllFailed').on('click', function(e) { let clickCount = $(this).data("clickCount") || 1 switch (clickCount){ case 1: $('#fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('collapsed') $('#fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('show') $('#openAllFailed').html("Collapse All Failed Tests"); break; case 2: $('#fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').addClass('collapsed') $('#fails-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#fails-collapse-bd1fec90-3753-434e-8fd7-d0c116e6eeba').removeClass('show') $('#openAllFailed').html("Expand All Failed Tests"); break; } clickCount = clickCount > 1 ? 1 : ++clickCount; $(this).data("clickCount", clickCount) }) </script> <!-- Pretty Print the Response Body--> <script> function isJSON(data) { var ret = true; try { JSON.parse(data); }catch(e) { ret = false; } return ret; } function isXML(data) { return (data.length > 0 && data[0] === '<'); } // see https://gist.github.com/sente/1083506/d2834134cd070dbcc08bf42ee27dabb746a1c54d#gistcomment-2254622 function formatXML(data) { const PADDING = ' '.repeat(2); // set desired indent size here const reg = /(>)(<)(\/*)/g; let pad = 0; xml = data.replace(reg, '$1\r\n$2$3'); return xml.split('\r\n').map((node, index) => { let indent = 0; if (node.match(/.+<\/\w[^>]*>$/)) { indent = 0; } else if (node.match(/^<\/\w/) && pad > 0) { pad -= 1; } else if (node.match(/^<\w[^>]*[^\/]>.*$/)) { indent = 1; } else { indent = 0; } pad += indent; return PADDING.repeat(pad - indent) + node; }).join('\r\n'); } $(".prettyPrint").each(function () { var data = $(this).text(); // Verify whether data is JSON if(isJSON(data)) { obj = JSON.parse(data); data = JSON.stringify(obj, null, 2); } else if(isXML(data)) { data = formatXML(data); } $(this).text(data); }); </script> <!-- Copy Response Body To Clipboard --> <script> var clipboard = new ClipboardJS('.copyButton'); clipboard.on('success', function(e) { e.clearSelection(); $(".copyButton").addClass("bg-success text-white") e.trigger.textContent = '✔ Copied!'; window.setTimeout(function() { $(".copyButton").removeClass("bg-success text-white") e.trigger.textContent = 'Copy to Clipboard'; }, 2000); }); clipboard.on('error', function(e) { e.clearSelection(); $(".copyButton").addClass("bg-danger text-white") e.trigger.textContent = '✗ Not Copied'; window.setTimeout(function() { $(".copyButton").removeClass("bg-danger text-white") e.trigger.textContent = 'Copy to Clipboard'; }, 2000); }); </script> <!-- Render the Description Markdown and link in the test failures --> <script> const remarkable = new Remarkable(); const descriptions = document.querySelectorAll(".renderMarkdown"); descriptions.forEach(description => { description.innerHTML = renderHtmlFromMarkdown(description.textContent); }); function renderHtmlFromMarkdown(markdown) { return remarkable.render(trim(markdown)); } function trim(string) { return string ? string.replace(/^ +| +$/gm, "") : string; } </script> <!-- Show/Hide The Toggles When Scrolling The Page --> <script> window.onscroll = function() {scrollFunction()}; function scrollFunction() { if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) { document.getElementById("topOfRequestsScreen").style.display = "block"; document.getElementById("topOfFailuresScreen").style.display = "block"; document.getElementById("topOfSkippedScreen").style.display = "block"; document.getElementById("openAll").style.display = "none"; document.getElementById("openAllRequests").style.display = "none"; document.getElementById("showOnlyFailures").style.display = "none"; document.getElementById("openAllFailed").style.display = "none"; } else { document.getElementById("topOfRequestsScreen").style.display = "none"; document.getElementById("topOfFailuresScreen").style.display = "none"; document.getElementById("topOfSkippedScreen").style.display = "none"; document.getElementById("openAll").style.display = "block"; document.getElementById("openAllRequests").style.display = "block"; document.getElementById("showOnlyFailures").style.display = "block"; document.getElementById("openAllFailed").style.display = "block"; } } function topFunction() { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; } </script> <!-- Creates The Iteration Tabs --> <script type="text/javascript"> "use strict"; window.onload = function () { // set display for all blocks of response var allItems = document.querySelectorAll('[class*=iteration-]'); allItems.forEach(function(elem){ elem.style.display = 'block'; }); let totalIterations = 1; let menu = document.querySelector('#execution-menu .nav'); for(var i = 0; i < totalIterations; i++) { let li = document.createElement('li'); li.appendChild(document.createTextNode((i + 1))); li.setAttribute('id', 'iteration-' + i); li.classList.add("custom-tab"); li.classList.add("itPassed"); li.addEventListener('click', function() { //set display to none for all except row let allItems = document.querySelectorAll('[class*=iteration-]:not(.row)'); allItems.forEach(function(elem) { elem.style.display = 'none'; }) let allMenus = document.querySelectorAll('[id*=iteration-]'); allMenus.forEach(function(elem){ elem.style.borderBottom = 'none'; }) this.style.borderBottom = 'solid 3px #032a33'; let items = document.querySelectorAll("." + this.id + ':not(.row)'); items.forEach(function(elem) { elem.style.display = elem.style.display == 'block' ? 'none' : 'block'; }) }); menu.appendChild(li); } //shows first tab data document.getElementById('iteration-0').click(); document.getElementById('iterationSelected').innerHTML = `Iteration ${document.getElementById('iteration-0').innerHTML} selected` $("#iteration-0").removeClass('itPassed').addClass('itFailed') } </script> <!-- Create the Selected Iteration Label --> <script> $(document).ready(function(){ $(function() { $("#iterationList li").click(function() { document.getElementById('iterationSelected').innerHTML = "Iteration " + this.innerHTML + " selected" }); }); }); </script> <!-- Filter Action for the Iterations --> <script> $(document).ready(function(){ $("#filterInput").on("input paste", function() { var value = $(this).val(); $("#iterationList li").filter(function() { $("#showOnlyFailures").data("clickCount") ? $("#showOnlyFailures").click():null; $(this).toggle($(this).text().indexOf(value) > -1) }); }); }); </script> <!-- Showing the Failed Interations --> <script> $(document).ready(function(){ if($("#iterationList li.itFailed").length){ $("#showOnlyFailures").data("clickCount", 0); $("#showOnlyFailures").on("click", function () { let clickCount = $(this).data("clickCount") $("#filterInput").val()!="" && clickCount==0 ? $("#filterInput").val('').trigger('input'): null; let selectedIteration = $('#iterationList li').filter(function () { return $(this).css('border-bottom').indexOf("solid") > -1 && $(this).hasClass('itFailed'); }); selectedIteration.length || clickCount ? null : $("#iterationList l