[Решено] Как отметить чексбокс из группы чекбоксов?

Пробую в функциональных тестах (yii2) в таком коде html:

<div id="bmessage-topicslinks">
<div class="checkbox"><label><input type="checkbox" name="BMessage[topicsLinks][]" value="1"> Предложения</label></div>
<div class="checkbox"><label><input type="checkbox" name="BMessage[topicsLinks][]" value="2"> Спрос</label></div>
<div class="checkbox"><label><input type="checkbox" name="BMessage[topicsLinks][]" value="3"> Совместная деятельность</label></div>
<div class="checkbox"><label><input type="checkbox" name="BMessage[topicsLinks][]" value="4"> Сайты</label></div>
</div>

Отметить один из пунктов:

$I->checkOption('#bmessage-topicslinks input[value="4"]');

В ответ, при выполнении теста получаю:

Couldn't check option "#bmessage-topicslinks input[value="4"]":
InvalidArgumentException: Malformed field path "BMessage[topicsLinks"

Подскажите, пожалуйста, что я делаю не так.

$I->checkOption("//input[@value=4]");

К сожалению, аналогичный результат:

Couldn't check option "//input[@value=4]":
InvalidArgumentException: Malformed field path "BMessage[topicsLinks"

Судя по всему, проблема в классе /codeception/src/Codeception/Lib/InnerBrowser.php, в функции checkOption (в uncheckOption
по идее та же проблема). Если эту строку:

$name = rtrim($name, '[]');

Заменить на:

$name = str_replace('[]', '', $name);

То все начинает прекрасно работать. С rtrim, мне кажется, получается не тот эффект который нужен, так как символы [] в строке “BMessage[topicsLinks][]” удаляются не корректно. В итоге имя поля получается таким “BMessage[topicsLinks”. С str_replace же удаляется исключительно последовательность [], не трогая лишние квадратные скобки.

Возможно кто-то сможет мне помочь чтобы создать issues в гите, а то с английским у меня проблемы (точно не смогу весь этот топик перевести корректно) :frowning:

Вы можете написать свой метод checkOption внутри класса FunctionalHelper, там вы можете применить свой фикс и подменить стандартный метод на свой.

Впринципе да, похоже на баг. Буду очень благодарен, если вы опишите эту проблему на английском с описанием предложенного фикса на гитхабе Issues · Codeception/Codeception · GitHub
Тогда будет намного больший шанс, что я про неё не забуду и починю в следующем релизе.

Большое спасибо! Локально проблему удалось решить через FunctionalHelper.
Issue создал I can`t mark a checkbox in the group of checkboxes (via PhpBrowser) · Issue #1535 · Codeception/Codeception · GitHub

Добавил фикс в 2.0.8. Собираюсь сегодня-завтра его зарелизить

Спасибо большое. Единственное, что, я так понял, в функции uncheckOption будет точно такая же проблема, (конкретно я эту функцию не использую еще, поэтому нужно будет проверить еще). Но уже имя пример как сделать тест правильно (на примере вашего фикса), я могу позже попробовать сделать pull request для правки этой функции

окей! всегда рад пул реквестам