Skip to content

Commit d7301b7

Browse files
authored
Chore: General JS cleanup (#700)
1 parent f740846 commit d7301b7

File tree

9 files changed

+40
-94
lines changed

9 files changed

+40
-94
lines changed

src/pytest_html/basereport.py

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,18 @@ def _asset_filename(self, test_id, extra_index, test_index, file_extension):
4646

4747
def _generate_report(self, self_contained=False):
4848
generated = datetime.datetime.now()
49-
rendered_report = self._render_html(
50-
generated.strftime("%d-%b-%Y"),
51-
generated.strftime("%H:%M:%S"),
52-
__version__,
53-
self.css,
49+
test_data = cleanup_unserializable(self._report.data)
50+
test_data = json.dumps(test_data)
51+
rendered_report = self._template.render(
52+
title=self._report.title,
53+
date=generated.strftime("%d-%b-%Y"),
54+
time=generated.strftime("%H:%M:%S"),
55+
version=__version__,
56+
styles=self.css,
5457
run_count=self._run_count(),
5558
self_contained=self_contained,
5659
outcomes=self._report.data["outcomes"],
57-
test_data=cleanup_unserializable(self._report.data),
60+
test_data=test_data,
5861
table_head=self._report.data["resultsTableHeader"],
5962
prefix=self._report.data["additionalSummary"]["prefix"],
6063
summary=self._report.data["additionalSummary"]["summary"],
@@ -118,36 +121,6 @@ def _process_extras(self, report, test_id):
118121

119122
return report_extras
120123

121-
def _render_html(
122-
self,
123-
date,
124-
time,
125-
version,
126-
styles,
127-
run_count,
128-
self_contained,
129-
outcomes,
130-
test_data,
131-
table_head,
132-
summary,
133-
prefix,
134-
postfix,
135-
):
136-
return self._template.render(
137-
date=date,
138-
time=time,
139-
version=version,
140-
styles=styles,
141-
run_count=run_count,
142-
self_contained=self_contained,
143-
outcomes=outcomes,
144-
test_data=json.dumps(test_data),
145-
table_head=table_head,
146-
summary=summary,
147-
prefix=prefix,
148-
postfix=postfix,
149-
)
150-
151124
def _write_report(self, rendered_report):
152125
with self._report_path.open("w", encoding="utf-8") as f:
153126
f.write(rendered_report)

src/pytest_html/report_data.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def __init__(self, config):
2929
}
3030

3131
self._data = {
32-
"title": "",
3332
"collectedItems": 0,
3433
"totalDuration": 0,
3534
"runningState": "not_started",

src/pytest_html/resources/index.jinja2

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html>
33
<head>
44
<meta charset="utf-8"/>
5-
<title id="head-title"></title>
5+
<title id="head-title">{{ title }}</title>
66
{%- if self_contained %}
77
<style type="text/css">
88
{{- styles|safe }}
@@ -12,7 +12,7 @@
1212
{%- endif %}
1313
</head>
1414
<body>
15-
<h1 id="title"></h1>
15+
<h1 id="title">{{ title }}</h1>
1616
<p>Report generated on {{ date }} at {{ time }} by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a>
1717
v{{ version }}</p>
1818
<div id="environment-header" class="collapser">
@@ -66,14 +66,6 @@
6666
<th colspan="4">No results found. Check the filters.</th>
6767
</tr>
6868
</template>
69-
<template id="template_table-colgroup">
70-
<colgroup>
71-
<col span="1" style="width: 25%;">
72-
<col span="1" style="width: 25%;">
73-
<col span="1" style="width: 25%;">
74-
<col span="1" style="width: 25%;">
75-
</colgroup>
76-
</template>
7769
<!-- END TEMPLATES -->
7870
<div class="summary">
7971
<div class="summary__data">

src/pytest_html/scripts/datamanager.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,21 @@ class DataManager {
1919
get allData() {
2020
return { ...this.data }
2121
}
22+
2223
resetRender() {
2324
this.renderData = { ...this.data }
2425
}
26+
2527
setRender(data) {
2628
this.renderData.tests = [...data]
2729
}
30+
2831
toggleCollapsedItem(id) {
2932
this.renderData.tests = this.renderData.tests.map((test) =>
3033
test.id === id ? { ...test, collapsed: !test.collapsed } : test,
3134
)
3235
}
36+
3337
set allCollapsed(collapsed) {
3438
this.renderData = { ...this.renderData, tests: [...this.renderData.tests.map((test) => (
3539
{ ...test, collapsed }
@@ -39,24 +43,10 @@ class DataManager {
3943
get testSubset() {
4044
return [...this.renderData.tests]
4145
}
42-
get allTests() {
43-
return [...this.data.tests]
44-
}
45-
get title() {
46-
return this.renderData.title
47-
}
46+
4847
get environment() {
4948
return this.renderData.environment
5049
}
51-
get collectedItems() {
52-
return this.renderData.collectedItems
53-
}
54-
get isFinished() {
55-
return this.data.runningState === 'Finished'
56-
}
57-
get formattedDuration() {
58-
return this.data.totalDuration.formatted
59-
}
6050
}
6151

6252
module.exports = {

src/pytest_html/scripts/dom.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
const mediaViewer = require('./mediaviewer.js')
2-
const templateEnvRow = document.querySelector('#template_environment_row')
3-
const templateCollGroup = document.querySelector('#template_table-colgroup')
4-
const templateResult = document.querySelector('#template_results-table__tbody')
5-
const listHeaderEmpty = document.querySelector('#template_results-table__head--empty')
2+
const templateEnvRow = document.getElementById('template_environment_row')
3+
const templateResult = document.getElementById('template_results-table__tbody')
4+
const listHeaderEmpty = document.getElementById('template_results-table__head--empty')
65

76
function htmlToElements(html) {
87
const temp = document.createElement('template')
@@ -39,7 +38,6 @@ const dom = {
3938
return envRow
4039
},
4140
getListHeaderEmpty: () => listHeaderEmpty.content.cloneNode(true),
42-
getColGroup: () => templateCollGroup.content.cloneNode(true),
4341
getResultTBody: ({ testId, id, log, duration, extras, resultsTableRow, tableHtml, result, collapsed }) => {
4442
const resultLower = result.toLowerCase()
4543
const resultBody = templateResult.content.cloneNode(true)

src/pytest_html/scripts/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const { redraw, bindEvents, renderStatic } = require('./main.js')
22
const { doInitFilter } = require('./filter.js')
33
const { doInitSort } = require('./sort.js')
44
const { manager } = require('./datamanager.js')
5-
const data = JSON.parse(document.querySelector('#data-container').dataset.jsonblob)
5+
const data = JSON.parse(document.getElementById('data-container').dataset.jsonblob)
66

77
function init() {
88
manager.setManager(data)

src/pytest_html/scripts/main.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,21 @@ const removeChildren = (node) => {
1111
}
1212

1313
const renderStatic = () => {
14-
const renderTitle = () => {
15-
const title = manager.title
16-
document.querySelector('#title').innerText = title
17-
document.querySelector('#head-title').innerText = title
18-
}
1914
const renderEnvironmentTable = () => {
2015
const environment = manager.environment
2116
const rows = Object.keys(environment).map((key) => dom.getStaticRow(key, environment[key]))
22-
const table = document.querySelector('#environment')
17+
const table = document.getElementById('environment')
2318
removeChildren(table)
2419
rows.forEach((row) => table.appendChild(row))
2520
}
26-
renderTitle()
2721
renderEnvironmentTable()
2822
}
2923

3024
const renderContent = (tests) => {
3125
const sortAttr = getSort(manager.allData.initialSort)
3226
const sortAsc = JSON.parse(getSortDirection())
3327
const rows = tests.map(dom.getResultTBody)
34-
const table = document.querySelector('#results-table')
28+
const table = document.getElementById('results-table')
3529
const tableHeader = document.getElementById('template_results-table__head').content.cloneNode(true)
3630

3731
removeChildren(table)
@@ -40,7 +34,6 @@ const renderContent = (tests) => {
4034
if (!rows.length) {
4135
tableHeader.appendChild(dom.getListHeaderEmpty())
4236
}
43-
table.appendChild(dom.getColGroup())
4437
table.appendChild(tableHeader)
4538

4639
rows.forEach((row) => !!row && table.appendChild(row))
@@ -66,7 +59,7 @@ const renderContent = (tests) => {
6659
})
6760
}
6861

69-
const renderDerived = (tests, collectedItems, isFinished, formattedDuration) => {
62+
const renderDerived = () => {
7063
const currentFilter = getVisible()
7164
possibleFilters.forEach((result) => {
7265
const input = document.querySelector(`input[data-test-result="${result}"]`)
@@ -83,9 +76,9 @@ const bindEvents = () => {
8376
redraw()
8477
}
8578

86-
const header = document.querySelector('#environment-header')
79+
const header = document.getElementById('environment-header')
8780
header.addEventListener('click', () => {
88-
const table = document.querySelector('#environment')
81+
const table = document.getElementById('environment')
8982
table.classList.toggle('hidden')
9083
header.classList.toggle('collapser')
9184
header.classList.toggle('expander')
@@ -94,21 +87,21 @@ const bindEvents = () => {
9487
findAll('input[name="filter_checkbox"]').forEach((elem) => {
9588
elem.addEventListener('click', filterColumn)
9689
})
97-
document.querySelector('#show_all_details').addEventListener('click', () => {
90+
document.getElementById('show_all_details').addEventListener('click', () => {
9891
manager.allCollapsed = false
9992
redraw()
10093
})
101-
document.querySelector('#hide_all_details').addEventListener('click', () => {
94+
document.getElementById('hide_all_details').addEventListener('click', () => {
10295
manager.allCollapsed = true
10396
redraw()
10497
})
10598
}
10699

107100
const redraw = () => {
108-
const { testSubset, allTests, collectedItems, isFinished, formattedDuration } = manager
101+
const { testSubset } = manager
109102

110103
renderContent(testSubset)
111-
renderDerived(allTests, collectedItems, isFinished, formattedDuration )
104+
renderDerived()
112105
}
113106

114107
module.exports = {

src/pytest_html/scripts/mediaviewer.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ class MediaViewer {
33
this.assets = assets
44
this.index = 0
55
}
6+
67
nextActive() {
78
this.index = this.index === this.assets.length - 1 ? 0 : this.index + 1
89
return [this.activeFile, this.index]
910
}
11+
1012
prevActive() {
1113
this.index = this.index === 0 ? this.assets.length - 1 : this.index -1
1214
return [this.activeFile, this.index]
@@ -15,6 +17,7 @@ class MediaViewer {
1517
get currentIndex() {
1618
return this.index
1719
}
20+
1821
get activeFile() {
1922
return this.assets[this.index]
2023
}

src/pytest_html/scripts/storage.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
const possibleResults = [
2-
{ result: 'passed', label: 'Passed' },
3-
{ result: 'skipped', label: 'Skipped' },
4-
{ result: 'failed', label: 'Failed' },
5-
{ result: 'error', label: 'Errors' },
6-
{ result: 'xfailed', label: 'Unexpected failures' },
7-
{ result: 'xpassed', label: 'Unexpected passes' },
8-
{ result: 'rerun', label: 'Reruns' },
1+
const possibleFilters = [
2+
'passed',
3+
'skipped',
4+
'failed',
5+
'error',
6+
'xfailed',
7+
'xpassed',
8+
'rerun',
99
]
10-
const possibleFilters = possibleResults.map((item) => item.result)
1110

1211
const getVisible = () => {
1312
const url = new URL(window.location.href)
@@ -113,5 +112,4 @@ module.exports = {
113112
setSortDirection,
114113
getCollapsedCategory,
115114
possibleFilters,
116-
possibleResults,
117115
}

0 commit comments

Comments
 (0)