···220220 res = driver.polling_conditions.pop()
221221 assert res is self.condition
222222223223+ def wait(self, timeout: int = 900) -> None:
224224+ def condition(last: bool) -> bool:
225225+ if last:
226226+ rootlog.info(f"Last chance for {self.condition.description}")
227227+ ret = self.condition.check(force=True)
228228+ if not ret and not last:
229229+ rootlog.info(
230230+ f"({self.condition.description} failure not fatal yet)"
231231+ )
232232+ return ret
233233+234234+ with rootlog.nested(f"waiting for {self.condition.description}"):
235235+ retry(condition, timeout=timeout)
236236+223237 if fun_ is None:
224238 return Poll
225239 else:
···4949 start_all()
50505151 machine.wait_for_unit('graphical.target')
5252- machine.wait_until_succeeds('pgrep -x codium')
53525353+ codium_running.wait()
5454 with codium_running:
5555 # Wait until vscodium is visible. "File" is in the menu bar.
5656 machine.wait_for_text('Get Started')