feat(ci): generates a GitHub QA Dashboard crossing Penpot issues with automated tests#772
Merged
Merged
Conversation
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
4 times, most recently
from
July 15, 2026 13:33
071a873 to
cec9d0a
Compare
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
2 times, most recently
from
July 15, 2026 14:19
bbd22d3 to
5104468
Compare
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
from
July 15, 2026 21:41
571570e to
9d30f78
Compare
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
from
July 15, 2026 21:50
9d30f78 to
1d3ea47
Compare
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
from
July 16, 2026 07:23
1d3ea47 to
e80d8d0
Compare
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
from
July 16, 2026 07:47
e80d8d0 to
6924ebf
Compare
daniel-herrero
marked this pull request as ready for review
July 16, 2026 07:49
daniel-herrero
force-pushed
the
dherrero/piweek/gihub-analytics-dashboard
branch
from
July 16, 2026 08:25
6924ebf to
3b557d2
Compare
estefafdez
approved these changes
Jul 16, 2026
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Taiga URL
Taiga Ticket: 1623
Description
This PR resolves the lack of visibility into how well our automated regression suite (Qase) actually covers the areas of Penpot where real bugs keep showing up (GitHub Issues).
What problem are you trying to solve?
Today, deciding "where should we invest in more automated tests?" is a judgment call — nobody can easily cross-reference the Qase test inventory against the volume of bugs/features reported per area of the app. This PR adds a standalone pipeline (
scripts/github-dashboard/) plus a scheduled GitHub Actions workflow that generates a self-contained HTML dashboard crossing:/v1/suite/PENPOTand/v1/case/PENPOT): test suite hierarchy, full test inventory, and regression/automation status.Statusfield): bugs/features/enhancements, labels, dates.... so we can see, per area, how many tests exist vs. how many bugs land there, and make a data-backed call on where to prioritize automation.
Solution
How did you solve the problem?
github_dashboard.ts— dependency-free TypeScript script (Node ≥18, nativefetch) that pulls both data sources, maps each GitHub issue to a Penpot "area" viamapping.json(exact label match → keyword regex → fallback), deduplicates entities (Qase pagination/export duplicates are a known issue, documented in the README), and writesdecision-matrix.csv,mapped-bugs.csv,mapped-features.csv,monthly-trend.csv,regression-tests.csv, and a self-containedYYYY-MM-DD-github-dashboard.htmlintoout/.mapping.json— all issue→area mapping logic lives here so it can be maintained without touching code (label map, keyword regexes, exclude labels).dashboard_template.html— the HTML/CSS/JS shell the script injects data into (no external dependencies, so it works as a plain file or from S3). It also includes links to the dashboards from previous weeks (past runs menu on the top right corner), and links to the test cases in Qase and GitHub issues (by clicking on the last table numbers)..github/workflows/github-dashboard.yml— runs every Monday 04:30 UTC (cron is always evaluated on the default branch) or on-demand viaworkflow_dispatch(any branch, with ans3_prefixinput to avoid clobbering the real report while testing). Installs deps, runs the script, zips the whole directory (inputs +out/) for a "download raw data" link, publishes both a dated snapshot and alatest/pointer to S3, maintains ahistory.jsonso the dashboard's own "past runs" dropdown can list previous weeks, and posts a Mattermost notification with the result.QA_GH_PROJECT_TOKENenvironment secret on PRE (it requires a project:read permisison), and reusing the already existingQASE_API_TOKEN.How to test
pull_requesttrigger commit is dropped before merging tomains3_prefix: github-dashboard-testto sanity-check the generated dashboard without touching the reallatest/outputScreenshots 📸 (optional)
The dashboard, the raw data CSVs in S3, and the MM message
Anything Else?
This is a standalone internal tooling script (not part of the Playwright test suite itself) — it lives under
scripts/github-dashboard/and requiresQASE_API_TOKEN/QASE_TOKENand a classicGITHUB_TOKEN/QA_GH_PROJECT_TOKENPAT withread:projectscope (the default Actions token can't read org Projects v2). Seescripts/github-dashboard/README.mdfor full setup, token scopes, and the "Possible Enhancements" / "Data Quality Notes" sections.