pollFrameAdvance, waitForText, waitFor, and waitForAbsent now spend one
budget across their requests, so a stalled app cannot hold them past their
timeout. Three paths in package:noir_driver are still unbounded.
- The input request itself.
sendBytes awaits the ext.noir.driver.* RPC
with no deadline. The settle window that follows it is bounded, but the send
is not, so a driven app that stops answering blocks before the bounded part
begins.
NoirDriver.launch. Process start and VM-service attach have no ceiling
of their own. awaitDriverReady is bounded, but only once it is reached.
quit and kill. Both await the process exit code. An app whose cleanup
hangs leaves the caller waiting with no timeout.
A test process that hangs in any of these is a hung suite rather than a failing
one, which is the outcome the wait budgets exist to avoid.
Suggested shape: extend the existing PollDeadline in
packages/noir_driver/lib/src/driver_polling.dart to cover a single request,
and give launch and quit explicit, documented ceilings. Decide separately
whether a launch timeout should kill the process it started.
pollFrameAdvance,waitForText,waitFor, andwaitForAbsentnow spend onebudget across their requests, so a stalled app cannot hold them past their
timeout. Three paths in
package:noir_driverare still unbounded.sendBytesawaits theext.noir.driver.*RPCwith no deadline. The settle window that follows it is bounded, but the send
is not, so a driven app that stops answering blocks before the bounded part
begins.
NoirDriver.launch. Process start and VM-service attach have no ceilingof their own.
awaitDriverReadyis bounded, but only once it is reached.quitandkill. Both await the process exit code. An app whose cleanuphangs leaves the caller waiting with no timeout.
A test process that hangs in any of these is a hung suite rather than a failing
one, which is the outcome the wait budgets exist to avoid.
Suggested shape: extend the existing
PollDeadlineinpackages/noir_driver/lib/src/driver_polling.dartto cover a single request,and give
launchandquitexplicit, documented ceilings. Decide separatelywhether a launch timeout should kill the process it started.