Skip to content

Commit fe141ab

Browse files
committed
fix: Incorrect precedence render collapsed
1 parent faaa12f commit fe141ab

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

src/pytest_html/basereport.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ def __init__(self, title, config):
7777

7878
collapsed = config.getini("render_collapsed")
7979
if collapsed:
80-
self.set_data("collapsed", collapsed.split(","))
80+
self.set_data(
81+
"collapsed", [outcome.lower() for outcome in collapsed.split(",")]
82+
)
8183

8284
@property
8385
def title(self):

src/pytest_html/scripts/storage.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,17 @@ const getCollapsedCategory = (config) => {
6464
const url = new URL(window.location.href)
6565
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
6666
switch (true) {
67-
case collapsedItems === null:
68-
categories = config || ['passed'];
67+
case !config && collapsedItems === null:
68+
categories = ['passed'];
6969
break;
7070
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
7171
categories = [];
7272
break;
73-
case /^all$/.test(collapsedItems):
73+
case /^all$/.test(collapsedItems) || (collapsedItems === null && /^all$/.test(config)):
7474
categories = [...possibleFilters];
7575
break;
7676
default:
77-
categories = collapsedItems?.split(',').map(item => item.toLowerCase()) || [];
77+
categories = collapsedItems?.split(',').map(item => item.toLowerCase()) || config;
7878
break;
7979
}
8080
} else {

testing/test_integration.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -727,11 +727,12 @@ def test_falsy(self, pytester, test_file, param):
727727
assert_that(is_collapsed(page, "test_fail")).is_false()
728728
assert_that(is_collapsed(page, "test_error::setup")).is_false()
729729

730-
def test_render_collapsed(self, pytester, test_file):
730+
@pytest.mark.parametrize("param", ["failed,error", "FAILED,eRRoR"])
731+
def test_render_collapsed(self, pytester, test_file, param):
731732
pytester.makeini(
732-
"""
733+
f"""
733734
[pytest]
734-
render_collapsed = failed,error
735+
render_collapsed = {param}
735736
"""
736737
)
737738
pytester.makepyfile(test_file)

testing/unittest.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,29 @@ describe('Storage tests', () => {
195195
expect(collapsedItems).to.eql(['failed', 'error', 'passed'])
196196
})
197197

198-
it('handles python config', () => {
199-
mockWindow()
200-
const collapsedItems = storageModule.getCollapsedCategory(['failed', 'error'])
201-
expect(collapsedItems).to.eql(['failed', 'error'])
198+
const config = [
199+
{ value: ['failed', 'error'], expected: ['failed', 'error'] },
200+
{ value: ['all'], expected: storageModule.possibleFilters }
201+
]
202+
config.forEach(({value, expected}) => {
203+
it(`handles python config: ${value}`, () => {
204+
mockWindow()
205+
const collapsedItems = storageModule.getCollapsedCategory(value)
206+
expect(collapsedItems).to.eql(expected)
207+
})
202208
})
203209

204-
it('handles python config precedence', () => {
205-
mockWindow('collapsed=xpassed,xfailed')
206-
const collapsedItems = storageModule.getCollapsedCategory(['failed', 'error'])
207-
expect(collapsedItems).to.eql(['xpassed', 'xfailed'])
210+
const precedence = [
211+
{query: 'collapsed=xpassed,xfailed', config: ['failed', 'error'], expected: ['xpassed', 'xfailed']},
212+
{query: 'collapsed=all', config: ['failed', 'error'], expected: storageModule.possibleFilters},
213+
{query: 'collapsed=xpassed,xfailed', config: ['all'], expected: ['xpassed', 'xfailed']},
214+
]
215+
precedence.forEach(({query, config, expected}, index) => {
216+
it(`handles python config precedence ${index + 1}`, () => {
217+
mockWindow(query)
218+
const collapsedItems = storageModule.getCollapsedCategory(config)
219+
expect(collapsedItems).to.eql(expected)
220+
})
208221
})
209222

210223
const falsy = [

0 commit comments

Comments
 (0)