Skip to content

v0.41.0

Choose a tag to compare

@PhenX PhenX released this 28 Sep 21:45
36dcdf9

This release follows a bug from the page to the fix — Piwi Picker records it, Piwi keeps it as a failing Playwright test and follows that test until the fix holds — brings Piwi into VS Code and JetBrains IDEs, predicts the locators a change breaks before you push, and starts the Flake Lab, which ranks a flaky test's suspects from its history and replays them to make it fail on demand.

Full diff: v0.40.0…v0.41.0

✨ Highlights

  • 🐞 Bug reports as failing tests — A bug sent from Piwi Picker is kept in Piwi with its steps and evidence, written as a failing Playwright test, filed in Jira if you want, and followed until the fix holds — with the reason the suite missed it, counted as an escape.
  • 🧑‍💻 Piwi in your editor — A VS Code extension and a JetBrains plugin, built on one Piwi editor service, show CI failures, heal locators in place, open evidence and run status, apply fix plans and complete locators.
  • 🔮 Preflight — piwi preflight lists the test locators a change breaks before you push and applies the likely rewrites; pull requests list the locators they break and heal them from the rename.
  • 🧪 Flake Lab — A flaky test's suspects are ranked from its history and shown on the test page, the flaky list and the attempts diff; flake-lab arms replay one suspect condition next to a control.
  • 🧭 Code reach — The reporter records the source files each test executes, which widens impact analysis on unmapped files.
  • 🛠️ Piwi Picker in DevTools — A Piwi panel follows recordings and replays, ranks the selected element, and slows, fails or throttles any request — or writes a page.route mock from it; replays use trusted input through the debugging protocol.
  • 🌐 Five languages in Piwi Picker — The extension's interface and generated bug reports come in English and French, with German, Spanish and Brazilian Portuguese as drafts.
  • 🔌 One-step connection — Piwi Picker connects to an instance or pairs with the desktop app in one step, confirmed by a code, and reads each project's URL patterns and tests' path prefix from it.

Features

Bug reports from Piwi Picker

  • bug reports as failing tests, trusted replay, the suite in the editor and five languages (39a08cb)
  • app: keep bug reports sent from Piwi Picker and follow their tests (5d067f8)
  • app: file bug reports in Jira from the send, the report's page or for every report (93de9ff)
  • app: say why the suite missed a reported bug and count it as an escape (cf84233)
  • app: run a bug report with Playwright in the desktop app from Piwi Picker (e2678d9)
  • reporter: send expectedStatus and read an expected failure that passed as looks fixed (9dcfef9)
  • extension: collect a bug report's evidence through the debugging protocol (6bf725b)
  • extension: replay a bug report in the tab, with a cursor showing each step (d0ea8a7)
  • extension: replay with trusted input through the debugging protocol (85c5cf8)
  • extension: start a replay from the tab's page instead of the recorded one (29da6fb)
  • extension: show what the page showed during a replay, and share its verdict on the report (427a99e)

Recording

  • extension: record file choices, double clicks and drags (f4ae632)
  • extension: record and replay the hovers a click depends on, with a hover step in the steps format, the converter and the phrasebooks (24964ee, 1b517fd)
  • extension: save a site's login as a Playwright storageState file (9365c45)
  • extension: open a page at a Playwright project's viewport (09bc921)
  • extension: label the page as a Playwright test sees it with the Playwright view (8c233e3)

Piwi Picker in DevTools

  • extension: a popup that fits, developer tools in DevTools, settings in sections (fc1e49c)
  • extension: follow the recording and the replay in a Piwi panel in DevTools (d874fb2)
  • extension: lay the DevTools pages out as DevTools does, and add Locators and Session tabs (f5c4887)
  • extension: rank the element selected in DevTools in a Piwi pane of the Elements panel (6b2c139)
  • extension: slow down, fail and throttle any request from DevTools, and replay under it (3ec59f0, a86b3b1)
  • extension: write a page.route mock from a request in the Piwi panel's Network tab (67bcfb6)

Languages

  • extension: translate the in-page tools, in English and French (43ed1f4)
  • extension: translate the popup and the settings page, with a Language setting (0158c23)
  • extension: write bug reports and core's texts in the interface language (e9c1151)
  • extension: add German, Spanish and Brazilian Portuguese as drafts, including the start-here replay texts (c096c4b, 6823a70)

Connecting Piwi Picker & URL patterns

  • app, extension: connect the browser extension in one step and keep URL patterns per project, read from the instance (22db7a5, 475a7e9)
  • db: add extension connect requests and project URL patterns (a273137)
  • app: let Piwi Picker pair with the desktop app from its window (30821f4)
  • db: add an optional tests' path prefix to project URL patterns (e21ab4a, ed365d1)
  • app: edit a URL pattern's tests' path prefix and key bug reports without it (ad0fe62, e2fc997)
  • extension: put the tests' path prefix in front of the page's path, and remove it before comparing pages (0eea7ac, 57688b3)

Piwi in your editor

  • ide: add the Piwi editor service, a language server for VS Code and JetBrains (799e5e6)
  • ide: add the VS Code extension, with CI failures, heal in place, evidence, run status and MCP (2b6db46)
  • ide: add the JetBrains plugin, with CI failures, heal in place, evidence, run status and MCP (285dcf0)
  • ide: apply a fix plan, copy context for an agent and complete locators in the editors (64932ca)
  • ide: flaky, quarantine, timeout, issue, page and selection answers in the editors (da3fad1)
  • ide: locator breaks ahead, code reach, and Piwi in VS Code and JetBrains IDEs (8f612c2)
  • ide: send locators and recorded steps from Piwi Picker to the editor (decaa7f)

Preflight & code reach

  • reporter: predict the test locators a diff breaks, in core (efef759)
  • reporter: add piwi preflight, the test locators a change breaks (19cc5c3)
  • app: list the locators a pull request breaks, and heal them from the rename (043a5f0)
  • reporter: record the source files each test executes (code reach) (91ab7a6)

Flake Lab

  • app: rank a flaky test's suspects from its history (2a87eaf, 6650530)
  • app: show flake suspects on the test page, the flaky list and the attempts diff (1f2c96d)
  • app: add the known-flake-suspect clue (373110f)
  • reporter: add flake plans, lab verdicts and shared error signatures to core (b9732f4)
  • reporter: add flake mode for flake-lab arms (2daa770)
  • reporter: apply a flake-lab arm's conditions to one test (f83b5a3)
  • app: keep flake-lab runs out of every analysis of the suite (9c189c4)
  • demo: seed a flaky test whose failures wait on a slow cart (333c473)

Attempts, requests & hooks

  • app: compare request durations in the attempts diff, keyed by route pattern (c01812b, 0529d85)
  • reporter: record requests that fail without a response (35e48e7)
  • db: store why a network request failed (b183bad)
  • app: show a failed request with the error the browser reported (01e3a1d)
  • reporter: record which hooks each hook section ran and why it failed (a20ec58)
  • ui: show hooks by default in the run timeline, name what ran in them and explain the gaps between bars (8645e7a, ca05735)

Desktop

  • desktop: install .exe updates silently and notify at startup when one is available (90441cc, 463aed1)

Performance Improvements

  • app: skip the flake profile in clues when a test's history cannot name a suspect (501f8d7)
  • reporter: bound code reach's per-worker script and map caches (dc4f0a3)
  • ui: make hovering and zooming the run timeline fast again (17dc7d5, 4d6f410)
  • app: speed up the dev server start (e1a792b, b6d3a1e)

Bug Fixes

Bug reports

  • app: close the review's findings on bug reports, repro runs and sign-in redirects (f2e3e02)
  • app: check a reproduction's run and page bug reports in SQL (baafdd4)
  • app: key a bug report's steps through its URL mapping wherever it finished (88bc8e1)
  • app: read a ticket move only between two known status categories (1de3f93)
  • notifications: send bug.looks_fixed once per branch (30a6590)
  • reporter: write piwi bug --write under the repository root (ca0f854)
  • auth: ask to confirm the code before allowing Piwi Picker to connect (608bdaa)

Flaky tests

  • app: classify flaky root causes from every recent attempt (342ad58)
  • app: classify a rare flake from its recent failures, not a window of passes (1855a46)
  • app: count stored timedout finals in the flaky leaderboard (a4d03f4)
  • app: read a test's last attempt per browser project (0bd1165)
  • app: read the same-worker neighbors from the execution's own shard (3a3f160)
  • reporter: route the target's page in every flake arm, the control included (071ec9d)

Preflight & code reach

  • app: offer a diff rename only for a likely locator break (43b167e)
  • reporter: apply only likely breaks' rewrites with preflight --fix (207dbc7)
  • app: widen impact on any unmapped source file and merge a run's code reach (b4b2ca3)
  • app: keep code reach out of the scenario gap detectors (996dd10)
  • reporter: map code reach correctly on Vite, Next.js and webpack builds (bf40925)
  • reporter: typecheck the code reach spec, and keep the extension page within its budget (505772f)
  • reporter: leave requests the page cancelled out of the network failures (c713bdb)

Editors

  • ide: close the review's findings on the editor service, code reach and auto-heal (ea9a720)
  • ide: take the API key from the source that names the server URL (d57a7d8)
  • ide: keep CRLF line endings in the JetBrains plugin's gradlew.bat (89d87a5)

Dashboard & demo

  • ui: keep a restarted worker on its lane and explain the timeline's gaps (915e59c)
  • ui: remove the hydration mismatches on the project, run, cluster and report pages (688c1ad, 118d8bd)
  • demo: close the holes skipped tests left in seeded worker lanes (40f6165)
  • demo: prerender the demo on Windows (fa09a46, 7889e1b)
Piwi Picker recording, replay and build fixes — the details that make a recorded bug replay the same way in the tab and in Playwright
  • extension: record locators that find the element in the replay and in Playwright (b38e521)
  • extension: offer locators Playwright resolves to the picked element in every tool (ed2844b)
  • extension: rank recorded elements with rankElement, as the other tools do (349f0cb)
  • extension: record and replay a page's keyboard shortcuts, and no fill on a checkbox (31d352d)
  • extension: never record AltGr or Option typing, or modified keys in a password field (1211af6)
  • extension: keep what is typed in the extension's panels away from the page (d7ea085)
  • extension: let trusted input through every Piwi surface over the page (c5870f8)
  • extension: replay once the page is ready, with the pointer events a mouse sends (062bac8)
  • extension: a replay never waits for a Next already given (16ddfc6)
  • extension: show the replay panel before waiting for the page (288d4e9)
  • extension: generated specs wait for each new page and its element (1cd9871)
  • extension: release debugging sessions and their emulation completely (a8e79de)
  • extension: say why a tool cannot open in the tab, such as an error page (2ce9306)
  • extension: open the Piwi panel's tab clicked while its texts load (7e1dbae)
  • extension: give no mapped page key to a URL that is not a page (f14e537)
  • extension: map the site's root to the tests' path prefix without a trailing slash (8c9c7fa)
  • extension: unregister only the recording scripts that are registered (2a963c9)
  • extension: build Chrome and Edge without Firefox's background script key (6c4a780)
  • extension: rebuild in dev and watch mode when the build script, core or picker-dom changes (eec9e7c, 134ade5)
  • extension: stop dev mode rebuilding forever after a save (cbf758e, 7202f4c)