QAlity - Playwright × Jira
Triggers Playwright automation from Jira issues and writes results back as comments.
- Playwright
- Python
- Jira API
Setup
- Problem
The manual regression-testing loop - file an issue → run → write results → move state - lives in separate places, which kills consistency. Runs happen locally, results live in memory, state transitions happen later, and records leak in between.
- Context
A workflow-integration demo: it treats a Jira Cloud (QAlity) issue as the unit of a test scenario, then posts the pytest + Playwright result back as a Jira comment and transitions the issue status. Naver search scenarios (QAP-1..3) show the round trip of issue → run → report → status transition.
- Users
Teams whose test runs and issue tracker live apart, and QA consulting situations that need to show, concretely, "how do you actually bring test automation into our workflow?"
Build
- What I did
- Treats a Jira (QAlity) issue as the scenario unit and runs pytest + Playwright
- Posts the result back to Jira as an ADF (Atlassian Document Format) comment
- Auto-transitions the Jira issue status by outcome
- Logs failures separately to
test_failures.log
- Product decisions
- Focus on showing the round trip, not the tool - keep the scenarios to three Naver searches and instead complete issue → run → report → status transition end-to-end
- Results as a Jira comment, not a human-read log - a QA artifact has to live inside the issue tracker to connect to the team's work
- Deliberately include a forced-failure case (QAP-2) to confirm the integration reports and transitions failures accurately too
- QA considerations
- Jira round-trip integrity - issue → run → comment reply → status transition runs end-to-end with nothing dropped in between
- Re-run idempotency - re-running the same issue doesn't double up comments/status or leave them inconsistent
- A forced-failure case (QAP-2) confirms that failures, not just successes, are reported and transitioned accurately
- Success/failure outcomes map to the correct Jira status transition - no mis-transition where a pass lands in a failed state
- The result comment conforms to the ADF (Atlassian Document Format) schema so it renders in Jira without breaking
- Flaky tests -
test_failures.loglets you tell a real regression from instability
Outcome
- Metrics
Portfolio/demo scale (a single Python piece, three scenarios). No team-adoption metrics - the point is to show the Jira ↔ Playwright workflow round trip itself.
- Retrospective
- Using Naver search as the scenario is fine for a demo, but in a real engagement the value only lands once it's swapped for the client's own regression scenarios. The integration skeleton is reusable; the scenarios are not - and that is stated plainly.
- Tech stack
- Python 3.11+
- Playwright
- Jira REST API