diff --git a/src/pytest_html/basereport.py b/src/pytest_html/basereport.py
index 50b17e57..6d8e1563 100644
--- a/src/pytest_html/basereport.py
+++ b/src/pytest_html/basereport.py
@@ -53,6 +53,7 @@ def _generate_report(self, self_contained=False):
self.css,
self_contained=self_contained,
test_data=cleanup_unserializable(self._report.data),
+ table_head=self._report.data["resultsTableHeader"],
prefix=self._report.data["additionalSummary"]["prefix"],
summary=self._report.data["additionalSummary"]["summary"],
postfix=self._report.data["additionalSummary"]["postfix"],
@@ -123,6 +124,7 @@ def _render_html(
styles,
self_contained,
test_data,
+ table_head,
summary,
prefix,
postfix,
@@ -134,6 +136,7 @@ def _render_html(
styles=styles,
self_contained=self_contained,
test_data=json.dumps(test_data),
+ table_head=table_head,
summary=summary,
prefix=prefix,
postfix=postfix,
diff --git a/src/pytest_html/resources/index.jinja2 b/src/pytest_html/resources/index.jinja2
index 878d04e1..5e8369a0 100644
--- a/src/pytest_html/resources/index.jinja2
+++ b/src/pytest_html/resources/index.jinja2
@@ -55,6 +55,9 @@
+ {% for th in table_head %}
+ {{ th|safe }}
+ {% endfor %}
diff --git a/src/pytest_html/scripts/dom.js b/src/pytest_html/scripts/dom.js
index a3a13578..0d522827 100644
--- a/src/pytest_html/scripts/dom.js
+++ b/src/pytest_html/scripts/dom.js
@@ -1,9 +1,7 @@
-const storageModule = require('./storage.js')
const mediaViewer = require('./mediaviewer.js')
const templateEnvRow = document.querySelector('#template_environment_row')
const templateCollGroup = document.querySelector('#template_table-colgroup')
const templateResult = document.querySelector('#template_results-table__tbody')
-const listHeader = document.querySelector('#template_results-table__head')
const listHeaderEmpty = document.querySelector('#template_results-table__head--empty')
function htmlToElements(html) {
@@ -40,21 +38,6 @@ const dom = {
return envRow
},
- getListHeader: ({ initialSort, resultsTableHeader }) => {
- const header = listHeader.content.cloneNode(true)
- const sortAttr = storageModule.getSort(initialSort)
- const sortAsc = JSON.parse(storageModule.getSortDirection())
-
- resultsTableHeader.forEach((html) => {
- const t = document.createElement('template')
- t.innerHTML = html
- header.querySelector('#results-table-head > tr').appendChild(t.content)
- })
-
- header.querySelector(`.sortable[data-column-type="${sortAttr}"]`)?.classList.add(sortAsc ? 'desc' : 'asc')
-
- return header
- },
getListHeaderEmpty: () => listHeaderEmpty.content.cloneNode(true),
getColGroup: () => templateCollGroup.content.cloneNode(true),
getResultTBody: ({ testId, id, log, duration, extras, resultsTableRow, tableHtml, result, collapsed }) => {
diff --git a/src/pytest_html/scripts/main.js b/src/pytest_html/scripts/main.js
index 83204dc7..24005dac 100644
--- a/src/pytest_html/scripts/main.js
+++ b/src/pytest_html/scripts/main.js
@@ -2,7 +2,7 @@ const { dom, findAll } = require('./dom.js')
const { manager } = require('./datamanager.js')
const { doSort } = require('./sort.js')
const { doFilter } = require('./filter.js')
-const { getVisible, possibleResults } = require('./storage.js')
+const { getVisible, getSort, getSortDirection, possibleResults } = require('./storage.js')
const removeChildren = (node) => {
while (node.firstChild) {
@@ -28,10 +28,15 @@ const renderStatic = () => {
}
const renderContent = (tests) => {
+ const sortAttr = getSort(manager.allData.initialSort)
+ const sortAsc = JSON.parse(getSortDirection())
const rows = tests.map(dom.getResultTBody)
const table = document.querySelector('#results-table')
+ const tableHeader = document.getElementById('template_results-table__head').content.cloneNode(true)
+
removeChildren(table)
- const tableHeader = dom.getListHeader(manager.renderData)
+
+ tableHeader.querySelector(`.sortable[data-column-type="${sortAttr}"]`)?.classList.add(sortAsc ? 'desc' : 'asc')
if (!rows.length) {
tableHeader.appendChild(dom.getListHeaderEmpty())
}
diff --git a/testing/unittest.js b/testing/unittest.js
index 540777ca..cb44eb25 100644
--- a/testing/unittest.js
+++ b/testing/unittest.js
@@ -7,7 +7,7 @@ const storageModule = require('../src/pytest_html/scripts/storage.js')
const setTestData = () => {
- const jsonDatan = {
+ const jsonData = {
'tests':
[
{
@@ -36,7 +36,17 @@ const setTestData = () => {
},
],
}
- dataModule.manager.setManager(jsonDatan)
+ dataModule.manager.setManager(jsonData)
+}
+
+const mockWindow = (queryParam) => {
+ const mock = {
+ location: {
+ href: `https://example.com/page?${queryParam}`,
+ },
+ }
+ originalWindow = global.window
+ global.window = mock
}
describe('Filter tests', () => {
@@ -190,16 +200,6 @@ describe('Sort tests', () => {
})
})
-const mockWindow = (queryParam) => {
- const mock = {
- location: {
- href: `https://example.com/page?${queryParam}`,
- },
- }
- originalWindow = global.window
- global.window = mock
-}
-
describe('Storage tests', () => {
describe('getCollapsedCategory', () => {
let originalWindow