What's Changed
- Fix soft-navigation LCP for Chromium 151+ by @soulgalore in #2538
- Collect the browser's CPU Performance API device rating by @soulgalore in #2540
- ix Firefox --block and --appendToUserAgent being ignored by @soulgalore in #2542
- Fix broken proxy support for Edge by @soulgalore in #2543
- Restore soft handling of page-complete-check timeouts by @soulgalore in #2544
- Keep video and result pairing intact when visual metrics fail by @soulgalore in #2545
- Stop saving every screenshot twice when jimp is missing by @soulgalore in #2547
- Keep full request header values that contain a colon by @soulgalore in #2546
- Actually remove the recorded video from Android devices by @soulgalore in #2548
- Expose the documented wait commands in the TypeScript types by @soulgalore in #2549
- Support SPA navigations that make no requests by @soulgalore in #2550
- Fix network idle detection for pages without requests by @soulgalore in #2552
- Wait for delegate post work before finishing the iteration by @soulgalore in #2553
- Fall back to no crop when no viewport can be found by @soulgalore in #2554
- Annotate render blocking and LCP on the right HAR page by @soulgalore in #2551
- Stop --android from swallowing the next argument by @soulgalore in #2560
- Report INP as the p98 interaction like web-vitals by @soulgalore in #2556
- Stop dropping the built-in Chrome disable-features list by @soulgalore in #2557
- Reset trace state when an iteration fails by @soulgalore in #2558
- Make the stopWatch start and stop methods callable by @soulgalore in #2559
- Add SPA user journey tests for soft navigations by @soulgalore in #2561
Full Changelog: v28.2.0...v28.3.0