Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7583249
fix(console): hop the channel icon inlay to the EDT
roxblnfk Aug 14, 2026
7ecd8f8
chore(report): drop redundant comments from the EDT resolve fix
roxblnfk Aug 14, 2026
19445c8
test(coverage): add real Testo coverage report fixtures
roxblnfk Aug 14, 2026
86e4ebf
feat(coverage): add format-neutral coverage report parsers
roxblnfk Aug 14, 2026
814a028
feat(coverage): reimplement coverage on public platform API
roxblnfk Aug 14, 2026
40074d2
refactor(coverage): drop the php252/php262 coverage source split
roxblnfk Aug 14, 2026
9677e06
feat(coverage): per-test index, identity mapper and "covering tests" …
roxblnfk Aug 14, 2026
ec8d6d6
feat(coverage): "Show coverage" button to apply a report without a rerun
roxblnfk Aug 14, 2026
ca0cf7c
fix(coverage): don't persist applied-coverage suites into workspace.xml
roxblnfk Aug 14, 2026
89aa2fd
fix(coverage): resolve the coverage report off the EDT
roxblnfk Aug 14, 2026
9b2a629
docs(build): correct the two-variant rationale — module topology, not…
roxblnfk Aug 14, 2026
6fd98fe
feat(coverage): recover from stale coverage suites that block coverag…
roxblnfk Aug 14, 2026
ace47c3
fix(coverage): fill the coverage panel from the report, not the platf…
roxblnfk Aug 15, 2026
c66c460
fix(coverage): keep line-less files out of the coverage model
roxblnfk Aug 15, 2026
aed88b2
feat(coverage): paint per-line coverage in the editor gutter
roxblnfk Aug 15, 2026
af15869
feat(runs): archive every run and replay it as a full Testo console
roxblnfk Aug 15, 2026
5f98118
feat(console): rearrange the test toolbar and make history tabs act l…
roxblnfk Aug 15, 2026
b78399d
feat(runs): a Replay group per run — export, import, and what history…
roxblnfk Aug 15, 2026
07d929f
feat(runs): retention and run kinds where the history list is
roxblnfk Aug 15, 2026
3655239
fix(runs): let the Replay menu tell the truth after the history is cl…
roxblnfk Aug 15, 2026
11d8294
feat(coverage): run the tests that cover a line, a declaration, a fil…
roxblnfk Aug 15, 2026
7d9788e
fix(coverage): paint the editor on the first coverage run of a session
roxblnfk Aug 16, 2026
29861a8
feat(run): suite and group names as tags, groups picked from what the…
roxblnfk Aug 16, 2026
257dd09
feat(console): the Log Levels filter beside the output it filters
roxblnfk Aug 16, 2026
ec2488f
docs: comments cut to their constraints; CLAUDE.md and CHANGELOG cond…
roxblnfk Aug 16, 2026
80cc2c8
fix(runs): reject an imported run.json that omits the version
roxblnfk Aug 17, 2026
a912796
fix(runs): write run.json atomically so a concurrent reader never see…
roxblnfk Aug 17, 2026
fc2721c
fix(coverage): filter auto-apply reports by their checkboxes before t…
roxblnfk Aug 17, 2026
b1ebc0c
fix(runs): debounce the rerun buttons so a double-click cannot launch…
roxblnfk Aug 17, 2026
2335680
i18n(coverage): route the covering-tests lens and the runner error th…
roxblnfk Aug 17, 2026
2d9cdc4
refactor(coverage): collapse the duplicated covering-tests lookups an…
roxblnfk Aug 17, 2026
7d39be9
fix: assorted small cleanups from review
roxblnfk Aug 17, 2026
67362fa
feat(run): write HTML and JUnit reports into the run history on every…
roxblnfk Aug 17, 2026
71a4612
feat(coverage): auto level collects branches when Xdebug meets Cobertura
roxblnfk Aug 17, 2026
9d84123
fix(debug): keep the restart button on the debug toolbar
roxblnfk Aug 17, 2026
4432760
fix(debug): take the run descriptor off the session builder result
roxblnfk Aug 17, 2026
72369b0
feat(console): Log Levels filter is a minimum-level combo on the chan…
roxblnfk Aug 17, 2026
aae1aee
feat(coverage): run all covering tests from the per-test lens popup
roxblnfk Aug 17, 2026
feb5f97
fix(history): the Show history lens works and opens a run picker
roxblnfk Aug 17, 2026
c623132
fix(debug): reach newSessionBuilder by reflection so the 252 build co…
roxblnfk Aug 17, 2026
8b7b149
fix(console): keep the open channel across log-level and test changes…
roxblnfk Aug 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,74 @@

## [Unreleased]

### Added

- The run configuration writes an HTML report (`--log-html`, on by default) and a JUnit report (`--log-junit`, off)
into an IDE-managed folder on every run; both are kept in the run history, and HTML opens in a tab.
- The run configuration chooses which coverage reports a Coverage run asks Testo for: Clover, Cobertura, coverage-xml.
- A Coverage run applies every report it produced on its own, one per format.
- The Coverage button on the test toolbar gathers every announced report under one click, with a checkbox per report.
- The Coverage panel gained expand/collapse, an editor-highlighting switch, report-format badges, and a column
counting the tests that cover each file.
- *Run Covering Tests* on the Coverage panel runs, with coverage, the tests covering the selected file or directory.
- *Select Opened File* on the Coverage panel selects the file open in the editor.
- A gutter icon on every covered method, function and class lists its covering tests, runnable together or one at a
time, with a switch on the Coverage panel.
- The popup on a covered line highlights the row under the pointer and runs all of that line's covering tests.
- The covering-tests lens on a covered declaration leads its list with *Run all covering tests*, then a jump to each.
- Every run is archived — output, reports and parameters — and replays from *Test History* as a full Testo console.
- *Show history* above a test pops up the archived runs containing it (the one already open in a tab in bold); each
entry offers *Load replay* (opens the archive and selects the test's node) and *Repeat run* (re-executes it), so a
bare click never launches anything.
- How many runs the history keeps is set in *Tools | Testo* or from the history list itself, which also clears it.
- *Expand All* / *Collapse All* now sit on the toolbar itself, next to *Show Passed* / *Show Ignored*.
- A tab opened from the history reruns with the executor the archived run used.
- A *Replay* button exports the run as one archive, imports one back, reveals its folder, and sets what the history
may do with it: keep, drop or lock.
- Every report a run announces is archived with it — HTML with its assets — so a replay opens its own reports.
- The history list bolds the run the tab shows, marks locked runs, and gives each entry the icon of its kind.
- An imported run comes in locked, so retention never deletes it.
- The run configuration keeps its coverage settings in a group of their own: the analysis level (`--coverage-level`,
or *auto*) and coverage-only options (`--type=!bench` by default).
- Group and Exclude group are lists of tags, picked from the `#[Group]` names the project declares.
- Suite is a list of tags too; a run may narrow to several suites at once, one `--suite` flag each.
- The run configuration is laid out in groups: Parallel under Test Runner Options, then Run Options, Filter and
Coverage.

### Removed

- The Repeat field — Testo's command line has no `--repeat`.
- The Command field — a test run is always `testo run`; other subcommands are what *Run Anything* is for.
- Parallel no longer sends a flag Testo does not have: the field is parked at 1 until it does.

### Changed

- A Coverage run at level *auto* now collects branch coverage when the engine is Xdebug and a Cobertura report is on.
- The *Log Levels* filter is now a minimum-level picker: an `info +` combo box at the right of the channel tabs row
shows that level and everything above it (default `info`), instead of per-level checkboxes.
- The channel console keeps the open channel when you change the log level or switch tests, reselecting the same-named
tab after the rebuild; Output now leads the tabs, apart from the channel-aggregating *All*.

### Fixed

- The *Show history* lens shows again (it never did on Windows): the lens built its location from the OS-native path
(`D:\…`) while the archive stored Testo's `D:/…`, so nothing matched. Locations are now compared with unified path
separators, and the archive index is built when the lens is first asked rather than on a later repaint.
- The two Code Vision lenses (test history, covering tests) now carry a name and description in *Settings | Editor |
Inlay Hints | Code Vision* instead of showing up blank.
- The debug toolbar has its rerun/restart button back, during the session and after it ends; while the session runs
it wears the restart-debugger icon.
- Starting a debug session no longer logs a *split debugger* error: the run descriptor now comes off the session
builder's result instead of the deprecated `XDebugSession.getRunContentDescriptor()`.
- The Test Runner Options help button opens Testo's CLI reference.
- The channel console no longer throws an EDT-threading error while streaming live output into an aggregate tab.
- The report buttons no longer trigger a "slow operations on EDT" error.
- The elapsed time in the run summary no longer counts up forever when a run ends before the toolbar is wired.
- Clearing the history updates the *Replay* menu of the run it spares to *Do not keep in history*.
- The first coverage run of an IDE session paints the editor right away.
- Lists of covering tests name the test class without its namespace.
- Excluding a group runs again: it goes out as `--group=!name`.

## [2026.5.262] - 2026-08-12

### Added
Expand Down
Loading
Loading