Skip to content

Escape HTML in the test id column#1036

Open
golikovichev wants to merge 1 commit into
pytest-dev:masterfrom
golikovichev:escape-html-test-id
Open

Escape HTML in the test id column#1036
golikovichev wants to merge 1 commit into
pytest-dev:masterfrom
golikovichev:escape-html-test-id

Conversation

@golikovichev

Copy link
Copy Markdown

The parametrized test id (report.nodeid) is interpolated into the results table cell in basereport.py without escaping:

f'<td class="col-testId">{test_id}</td>'

When a test parameter contains HTML, the value reaches the report data verbatim and the renderer inserts it with innerHTML, so it shows as live markup instead of text. Reproduction from #1024 is a parametrized value such as a span tag with inline style.

Fix: escape the test id, the same way the log cell already is (escape on report.longreprtext). One line.

Test: added test_html_in_test_id_is_escaped in testing/test_unit.py. It runs a session with an HTML test id, reads the report data blob, and asserts the test id cell contains the escaped form rather than the raw tags.

Closes #1024

The parametrized test id (report.nodeid) was interpolated into the
results table cell without escaping, so a test parameter containing
HTML rendered as live markup in the report. Escape it the same way
the log cell already is.

Closes pytest-dev#1024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pytest-html does not escape HTML in testId (v4.2.0)

1 participant