From cf05201b7065259eaf0218382f9e87cca6aa4568 Mon Sep 17 00:00:00 2001 From: Clark Boylan Date: Fri, 24 Jan 2025 08:38:55 -0800 Subject: [PATCH] Take screenshots of all grafana dashboards In our system-config-run-grafana job we were not taking screenshots of the dashboard pages. The project-config job does do this. Port over the listing of dashboards and screenshots of each dashboard into system-config so that we can be more confident in updating the grafana container image. In particular we are concerned about CORS issues and this should help us confirm that data loads from external sources (graphite) properly. Change-Id: Ib9b597fd724219bd8d3155515d954a44589b0b07 --- testinfra/test_grafana.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/testinfra/test_grafana.py b/testinfra/test_grafana.py index 4cde8c1e0f..8bfffeb11b 100644 --- a/testinfra/test_grafana.py +++ b/testinfra/test_grafana.py @@ -14,6 +14,8 @@ from util import take_screenshots +import json + testinfra_hosts = ['grafana01.opendev.org'] @@ -37,8 +39,16 @@ def test_grafana_api_denial(host): assert '403 Forbidden' in cmd.stdout def test_grafana_screenshots(host): - shots = ( + shots = [ ('https://localhost/', None, 'grafana-main-page.png'), ('https://localhost/dashboards', None, 'grafana-dashboards-page.png') - ) + ] + cmd = host.run("curl -s --insecure " + "--resolve grafana.opendev.org:443:127.0.0.1 " + "https://grafana.opendev.org/api/search") + j = json.loads(cmd.stdout) + for dashboard in j: + url = dashboard["url"] + name = dashboard["uri"].split("/")[-1] + shots.append(("https://localhost" + url, None, name + '.png')) take_screenshots(host, shots)