diff --git a/src/pytest_html/plugin.py b/src/pytest_html/plugin.py index 949a6ffa..f6df306f 100644 --- a/src/pytest_html/plugin.py +++ b/src/pytest_html/plugin.py @@ -72,6 +72,12 @@ def pytest_addoption(parser): default="result", help="column to initially sort on.", ) + parser.addini( + "expand_logs", + type="string", + default=False, + help="expand all logs by default.", + ) parser.addini( "generate_report_on_test", type="bool", diff --git a/src/pytest_html/report_data.py b/src/pytest_html/report_data.py index fd002099..9fc99941 100644 --- a/src/pytest_html/report_data.py +++ b/src/pytest_html/report_data.py @@ -61,6 +61,9 @@ def __init__(self, config): initial_sort = config.getini("initial_sort") self._data["initialSort"] = initial_sort + expand_logs = config.getini("expand_logs") + self._data["expandLogs"] = expand_logs + @property def additional_summary(self): return self._additional_summary diff --git a/src/pytest_html/scripts/datamanager.js b/src/pytest_html/scripts/datamanager.js index b95e95d9..3845d722 100644 --- a/src/pytest_html/scripts/datamanager.js +++ b/src/pytest_html/scripts/datamanager.js @@ -57,6 +57,10 @@ class DataManager { get initialSort() { return this.data.initialSort } + + get expandLogs() { + return this.data.expandLogs + } } module.exports = { diff --git a/src/pytest_html/scripts/main.js b/src/pytest_html/scripts/main.js index f01f2eac..d628fb30 100644 --- a/src/pytest_html/scripts/main.js +++ b/src/pytest_html/scripts/main.js @@ -6,6 +6,7 @@ const { getVisible, getCollapsedIds, setCollapsedIds, + getExpandLogs, getSort, getSortDirection, possibleFilters, @@ -47,10 +48,12 @@ const addItemToggleListener = (elem) => { const renderContent = (tests) => { const sortAttr = getSort(manager.initialSort) + const expandLogs = getExpandLogs(manager.expandLogs) const sortAsc = JSON.parse(getSortDirection()) const rows = tests.map(dom.getResultTBody) const table = document.getElementById('results-table') const tableHeader = document.getElementById('results-table-head') + const clickEvent = new Event('click') const newTable = document.createElement('table') newTable.id = 'results-table' @@ -70,6 +73,9 @@ const renderContent = (tests) => { find('.logexpander', row).addEventListener('click', (evt) => evt.target.parentNode.classList.toggle('expanded'), ) + if (expandLogs) { + find('.logexpander', row).dispatchEvent(clickEvent) + } newTable.appendChild(row) } }) diff --git a/src/pytest_html/scripts/storage.js b/src/pytest_html/scripts/storage.js index ac39c12b..f217f69a 100644 --- a/src/pytest_html/scripts/storage.js +++ b/src/pytest_html/scripts/storage.js @@ -47,6 +47,16 @@ const showCategory = (categoryToShow) => { window.history.pushState({}, null, unescape(url.href)) } +const getExpandLogs = (expandLogs) => { + if (expandLogs === 'true') { + return true + } + if (expandLogs) { + return true + } + return false +} + const getSort = (initialSort) => { const url = new URL(window.location.href) let sort = new URLSearchParams(url.search).get('sort') @@ -99,6 +109,7 @@ module.exports = { showCategory, getCollapsedIds, setCollapsedIds, + getExpandLogs, getSort, setSort, getSortDirection,