Skip to content

Commit

Permalink
[JENKINS-69656] Un-inlining AbstractTestResultAction/summary.jelly fo…
Browse files Browse the repository at this point in the history
…r CSP compliance (#444)
  • Loading branch information
aneveux authored Oct 13, 2022
1 parent c4c2e37 commit 1c24f1a
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* Displays all the tests failures, and hides the link allowing to display them from UI.
*/
function showFailures() {
// Displaying all the hidden elements from the page (those are the failed tests)
let hiddenElements = document.getElementsByClassName("hidden");

// DEV MEMO:
// hiddenElements is not an array but an HTMLCollection.
// To allow using forEach, we need an array, so I'm using the spread operator below to get that.
[...hiddenElements].forEach(element => { element.style.display = ""; });

// Now hiding the link from UI allowing to show all failed tests
let showFailuresLink = document.getElementById("showLink");
showFailuresLink.style.display = "none";
}

// Adding an onclick listener to the link in UI allowing to display all failed tests
// DEV MEMO:
// We are doing it after DOM content is loaded as a good practice to ensure we are not slowing down
// the page rendering. In that particular situation the addition of the onclick handler shouldn't
// really impact the page performances, but rather stick with good practices.

document.addEventListener('DOMContentLoaded', (event) => {

// Retrieving the link from UI allowing to show all failed tests
// Note: we are retrieving the link by its ID to match how it was already done
// in the showFailures method above.
const showFailuresLink = document.getElementById("showLink");

showFailuresLink.onclick = (_) => showFailures();

});
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:test="/lib/hudson/test" xmlns:f="/lib/form" xmlns:i="jelly:fmt">

<script type="text/javascript">
function showFailures() {

var elms = document.getElementsByClassName("hidden");
for(var i = 0; i &lt; elms.length; i++) {
elms[i].style.display = "";
}
elm = document.getElementById("showLink");
elm.style.display = "none";
}
</script>
<st:adjunct includes="hudson.tasks.test.AbstractTestResultAction.show-failures" />

<!-- summary -->
<t:summary icon="clipboard.png">
Expand Down Expand Up @@ -75,8 +65,7 @@ THE SOFTWARE.
<!-- Show failures link -->
<j:if test="${displayedCount &lt; failedTests.size() }">
<a id="showLink" name="editFailuresLink"
href="#showFailuresLink"
onclick="javascript:showFailures()">${%Show all failed tests} ${">>>"}</a>
href="#showFailuresLink">${%Show all failed tests} ${">>>"}</a>
</j:if>
</j:if>

Expand Down

0 comments on commit 1c24f1a

Please sign in to comment.