@Lorsque("Si '(.*)' vérifie '(.*)', je fais jusqu'à '(.*)' respecte '(.*)' avec '(.*)' essais maxi:")
    @Then("If '(.*)' matches '(.*)', I do until '(.*)' respects '(.*)' with '(.*)' max tries:")
    public void doUntil(String actual, String expected, String key, String breakCondition, int tries, List<GherkinConditionedLoopedStep> conditions) {
        try {
            if (new GherkinStepCondition("doUntilKey", expected, actual).checkCondition()) {
                int i = 0;
                do {
                    i++;
                    runAllStepsInLoop(conditions);
                } while (!Pattern.compile(breakCondition).matcher(Context.getValue(key) == null ? "" : Context.getValue(key)).find() && i <= tries);
            }
        } catch (final TechnicalException e) {
            throw new AssertError(Messages.getMessage(TechnicalException.TECHNICAL_SUBSTEP_ERROR_MESSAGE) + e.getMessage());
        }
    }
@ Lorsque ( "Si '(.*)' vérifie '(.*)', je fais jusqu'à '(.*)' respecte '(.*)' avec '(.*)' essais maxi:" ) @ Then ( "If '(.*)' matches '(.*)', I do until '(.*)' respects '(.*)' with '(.*)' max tries:" ) public void doUntil ( String actual , String expected , String key , String breakCondition , int tries , List < GherkinConditionedLoopedStep > conditions ) { try { if ( new GherkinStepCondition ( "doUntilKey" , expected , actual ) . checkCondition ( ) ) { int i = 0 ; do { i ++ ; runAllStepsInLoop ( conditions ) ; } while ( ! Pattern . compile ( breakCondition ) . matcher ( Context . getValue ( key ) == null ? "" : Context . getValue ( key ) ) . find ( ) && i <= tries ) ; } } catch ( final TechnicalException e ) { throw new AssertError ( Messages . getMessage ( TechnicalException . TECHNICAL_SUBSTEP_ERROR_MESSAGE ) + e . getMessage ( ) ) ; } }
Does steps execution until a given condition is unverified.

@param actual
actual value for global condition.
@param expected
expected value for global condition.
@param key
key of 'expected' values ('actual' values)
@param breakCondition
'expected' values
@param tries
number of max tries (no infinity loop).
@param conditions
list of steps run in a loop.