Skip to content

Plotly graphs not rendered in extras data #931

Open
@Sauci

Description

@Sauci

I'm trying to add Plotly graphs in my test report, but they are somehow not visible when I open the report (either Chrome or Edge).

To reproduce, two files need to be created: conftest.py and test_dummy_plot.py. Bellow, the content of those two files, respectively:

import pytest
import pytest_html


@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    outcome = yield
    report = outcome.get_result()
    if call.when == 'call':
        extras = getattr(report, 'extras', [])
        fig = item.user_properties[0]
        c = fig.to_html(full_html=False, div_id='my_plot', include_plotlyjs='cdn')

        fig.write_html('my_plot.html', include_plotlyjs='cdn')  # export the figure to HTML to validate its content (just for debugging).

        extras.append(pytest_html.extras.html("<div>Additional HTML 1</div>"))  # only for debugging.
        extras.append(pytest_html.extras.html(c))
        extras.append(pytest_html.extras.html("<div>Additional HTML 2</div>"))  # only for debugging.
        report.extras = extras
import plotly.graph_objects as go
import pytest
from plotly.subplots import make_subplots


def test_example(request: pytest.FixtureRequest):
    fig = make_subplots()
    fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[1, 2, 4, 8]))
    request.node.user_properties.append(fig)

Now, when running the test by invoking python -m pytest --html=report.html --self-contained-html . in the folder containing those two files, two new files are generated:

  • my_plot.html
  • report.html

Here is a screenshot of the plot itself, when opening my_plot.html:
Image

And now, a screenshot of the test report, when opening report.html:
Image

We can see that the plot is not rendered, even if present in the HTML file, as depicted in the following screenshot:
Image

I'm not really sure why it is not rendered properly. I raised a question on StackOverflow and it seems that a solution exists, but I don't know how to integrate it properly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions