diff --git a/src/layout/css/style.scss b/src/layout/css/style.scss index c0d4d224..5fa7be7f 100644 --- a/src/layout/css/style.scss +++ b/src/layout/css/style.scss @@ -183,23 +183,31 @@ div.media { flex: 0 0 25px; align-items: center; } - .collapsed { display: none; } -.expander::after { - content: ' (show details)'; +@mixin rowToggle { color: #bbb; font-style: italic; cursor: pointer; } -.collapser::after { - content: ' (hide details)'; - color: #bbb; - font-style: italic; +.col-result { cursor: pointer; + &:hover::after { + @include rowToggle; + } +} +.col-result.collapser { + &:hover::after { + content: ' (hide details)'; + } +} +.col-result.expander { + &:hover::after { + content: ' (show details)'; + } } /*------------------ diff --git a/src/pytest_html/nextgen.py b/src/pytest_html/nextgen.py index 9eba6f8b..278c58c1 100644 --- a/src/pytest_html/nextgen.py +++ b/src/pytest_html/nextgen.py @@ -123,13 +123,17 @@ def _data_content(self, *args, **kwargs): def _media_content(self, *args, **kwargs): pass - def _process_extras(self, report): - test_id = report.nodeid.encode("utf-8").decode("unicode_escape") + def _process_extras(self, report, test_id): test_index = hasattr(report, "rerun") and report.rerun + 1 or 0 report_extras = getattr(report, "extras", []) for extra_index, extra in enumerate(report_extras): content = extra["content"] - asset_name = self._asset_filename(test_id, extra_index, test_index, extra['extension']) + asset_name = self._asset_filename( + test_id.encode("utf-8").decode("unicode_escape"), + extra_index, + test_index, + extra['extension'] + ) if extra["format_type"] == extras.FORMAT_JSON: content = json.dumps(content) extra["content"] = self._data_content(content, asset_name=asset_name, mime_type=extra["mime_type"]) @@ -216,6 +220,11 @@ def pytest_runtest_logreport(self, report): config=self._config, report=report ) + test_id = report.nodeid + if report.when != "call": + test_id += f"::{report.when}" + data["nodeid"] = test_id + if report.longrepr: data["longreprtext"] = report.longreprtext @@ -229,7 +238,7 @@ def pytest_runtest_logreport(self, report): self._config.hook.pytest_html_results_table_html(report=report, data=table_html) data.update({"tableHtml": table_html}) - data.update({"extras": self._process_extras(report)}) + data.update({"extras": self._process_extras(report, test_id)}) self._report.data["tests"].append(data) self._generate_report() diff --git a/src/pytest_html/resources/index.jinja2 b/src/pytest_html/resources/index.jinja2 index 0d3b9e74..90a6b210 100644 --- a/src/pytest_html/resources/index.jinja2 +++ b/src/pytest_html/resources/index.jinja2 @@ -76,6 +76,14 @@