Skip to content

Commit 301d52f

Browse files
committed
Fix collapsable bug
1 parent 0f6c16a commit 301d52f

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

pytest_html/plugin.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,13 @@ def __init__(self, outcome, report, logfile, config):
143143
)
144144

145145
if len(cells) > 0:
146-
td_class = "extra"
146+
tr_class = None
147147
if self.config.getini("render_collapsed"):
148-
td_class += " collapsed"
148+
tr_class = "collapsed"
149149
self.row_table = html.tr(cells)
150150
self.row_extra = html.tr(
151-
html.td(self.additional_html, class_=td_class, colspan=len(cells))
151+
html.td(self.additional_html, class_="extra", colspan=len(cells)),
152+
class_=tr_class,
152153
)
153154

154155
def __lt__(self, other):

pytest_html/resources/main.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ function add_collapse() {
8181
var collapsed = get_query_parameter('collapsed') || 'Passed';
8282
var extras = elem.parentNode.nextElementSibling;
8383
var expandcollapse = document.createElement("span");
84-
if (collapsed.includes(elem.innerHTML)) {
84+
if (extras.classList.contains("collapsed")) {
85+
expandcollapse.classList.add("expander")
86+
} else if (collapsed.includes(elem.innerHTML)) {
8587
extras.classList.add("collapsed");
8688
expandcollapse.classList.add("expander");
8789
} else {

testing/test_pytest_html.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -881,20 +881,26 @@ def test_pass(utf8):
881881
assert result.ret == 0
882882
assert r"\u6d4b\u8bd5\u7528\u4f8b\u540d\u79f0" not in html
883883

884-
@pytest.mark.parametrize("collapsed", [True, False])
885-
def test_collapsed_ini(self, testdir, collapsed):
886-
td_class = "extra"
887-
if collapsed:
888-
td_class += " collapsed"
889-
expected_html = f'<td class="{td_class}" colspan="4">'
884+
@pytest.mark.parametrize("is_collapsed", [True, False])
885+
def test_collapsed(self, testdir, is_collapsed):
886+
collapsed_html = '<tr class="collapsed">'
887+
expected_count = 2 if is_collapsed else 0
890888
testdir.makeini(
891889
f"""
892890
[pytest]
893-
render_collapsed = {collapsed}
891+
render_collapsed = {is_collapsed}
892+
"""
893+
)
894+
testdir.makepyfile(
895+
"""
896+
def test_fail():
897+
assert False
898+
899+
def test_pass():
900+
assert True
894901
"""
895902
)
896-
testdir.makepyfile("def test_fail(): assert False")
897903
result, html = run(testdir)
898904
assert result.ret == 1
899-
assert expected_html in html
900-
assert_results(html, tests=1, passed=0, failed=1)
905+
assert len(re.findall(collapsed_html, html)) == expected_count
906+
assert_results(html, tests=2, passed=1, failed=1)

0 commit comments

Comments
 (0)