diff --git a/src/pytest_html/basereport.py b/src/pytest_html/basereport.py
index 4d1700f4..e5e61591 100644
--- a/src/pytest_html/basereport.py
+++ b/src/pytest_html/basereport.py
@@ -77,7 +77,9 @@ def __init__(self, title, config):
collapsed = config.getini("render_collapsed")
if collapsed:
- self.set_data("collapsed", collapsed.split(","))
+ self.set_data(
+ "collapsed", [outcome.lower() for outcome in collapsed.split(",")]
+ )
@property
def title(self):
diff --git a/src/pytest_html/scripts/storage.js b/src/pytest_html/scripts/storage.js
index 7033ee48..5af8171a 100644
--- a/src/pytest_html/scripts/storage.js
+++ b/src/pytest_html/scripts/storage.js
@@ -64,17 +64,17 @@ const getCollapsedCategory = (config) => {
const url = new URL(window.location.href)
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
switch (true) {
- case collapsedItems === null:
- categories = config || ['passed'];
+ case !config && collapsedItems === null:
+ categories = ['passed'];
break;
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
categories = [];
break;
- case /^all$/.test(collapsedItems):
+ case /^all$/.test(collapsedItems) || (collapsedItems === null && /^all$/.test(config)):
categories = [...possibleFilters];
break;
default:
- categories = collapsedItems?.split(',').map(item => item.toLowerCase()) || [];
+ categories = collapsedItems?.split(',').map(item => item.toLowerCase()) || config;
break;
}
} else {
diff --git a/testing/test_integration.py b/testing/test_integration.py
index b94b70ee..079f738b 100644
--- a/testing/test_integration.py
+++ b/testing/test_integration.py
@@ -727,11 +727,12 @@ def test_falsy(self, pytester, test_file, param):
assert_that(is_collapsed(page, "test_fail")).is_false()
assert_that(is_collapsed(page, "test_error::setup")).is_false()
- def test_render_collapsed(self, pytester, test_file):
+ @pytest.mark.parametrize("param", ["failed,error", "FAILED,eRRoR"])
+ def test_render_collapsed(self, pytester, test_file, param):
pytester.makeini(
- """
+ f"""
[pytest]
- render_collapsed = failed,error
+ render_collapsed = {param}
"""
)
pytester.makepyfile(test_file)
diff --git a/testing/unittest.js b/testing/unittest.js
index 0b23171f..17d6543d 100644
--- a/testing/unittest.js
+++ b/testing/unittest.js
@@ -195,16 +195,29 @@ describe('Storage tests', () => {
expect(collapsedItems).to.eql(['failed', 'error', 'passed'])
})
- it('handles python config', () => {
- mockWindow()
- const collapsedItems = storageModule.getCollapsedCategory(['failed', 'error'])
- expect(collapsedItems).to.eql(['failed', 'error'])
+ const config = [
+ { value: ['failed', 'error'], expected: ['failed', 'error'] },
+ { value: ['all'], expected: storageModule.possibleFilters }
+ ]
+ config.forEach(({value, expected}) => {
+ it(`handles python config: ${value}`, () => {
+ mockWindow()
+ const collapsedItems = storageModule.getCollapsedCategory(value)
+ expect(collapsedItems).to.eql(expected)
+ })
})
- it('handles python config precedence', () => {
- mockWindow('collapsed=xpassed,xfailed')
- const collapsedItems = storageModule.getCollapsedCategory(['failed', 'error'])
- expect(collapsedItems).to.eql(['xpassed', 'xfailed'])
+ const precedence = [
+ {query: 'collapsed=xpassed,xfailed', config: ['failed', 'error'], expected: ['xpassed', 'xfailed']},
+ {query: 'collapsed=all', config: ['failed', 'error'], expected: storageModule.possibleFilters},
+ {query: 'collapsed=xpassed,xfailed', config: ['all'], expected: ['xpassed', 'xfailed']},
+ ]
+ precedence.forEach(({query, config, expected}, index) => {
+ it(`handles python config precedence ${index + 1}`, () => {
+ mockWindow(query)
+ const collapsedItems = storageModule.getCollapsedCategory(config)
+ expect(collapsedItems).to.eql(expected)
+ })
})
const falsy = [